Android-приложение теряет звук / время, когда телефон находится в режиме ожидания / ожидания - PullRequest
0 голосов
/ 27 января 2019

Несколько лет назад я написал приложение для Android, которое выполняет довольно простой процесс.Я установил ряд условий, состоящий из различных шагов (ходьба, бег трусцой, спринт) со временем, связанным с каждым сегментом: прогулка 1 мин, работа 2 мин, спринт 3 мин.Когда я нажимаю кнопку «Перейти», приложение отображает таймер обратного отсчета для каждого сегмента, полный таймер времени и темп (с использованием GPS).Дисплей есть, но главная особенность заключается в том, что приложение использует звук, чтобы сказать мне долго и долго до следующего перехода и что будет дальше.

Например, когда он запускается, он издает звук каждую секунду для5 секунд, затем говорит «2 минуты».На отметке 30 секунд будет слышен звук.Через 1 минуту он скажет «1 минута», другой звук через 30 секунд, затем за 10 секунд до изменения темпа, он скажет «Следующая нога (бег) (или прогулка или спринт)» и воспроизведет звук последние 5 секунд.Таким образом, мне не нужно смотреть на дисплей, чтобы узнать, где я нахожусь в созданной мной программе условия.

проблема: Когда я создал это и запустил его, я использовал две версии Android позади текущейодин у меня теперь (8.1.0), и теперь я запускаю его на LG Stylo 4. тогда устройство перешло бы в режим ожидания / ожидания, экран потемнел автоматически или я нажал кнопку питания, и приложение продолжило бы работатьпросто хорошо.Время тянет время, звуки будут издаваться вовремя.

Это первый раз, когда я установил и запустил свое приложение на новом телефоне / ОС, и скажем, что оно не прошло нормально.В какой-то момент мне показалось, что у меня осталось 30 секунд, и я не слышал ничего больше минуты.Похоже, что приложение теперь наполовину приостанавливается, например, 30 секунд превращаются в более чем 1 минуту, и при переходах нет звука.

Что-то изменилось с Android, похоже, этого не происходило в прошлых выпусках.Я хочу, чтобы программа продолжала работать в режиме реального времени, когда устройство переключается в спящий режим, и пока я читал об исключении приложения из режима экономии заряда аккумулятора, это не сработало.

Каким образом я могу сохранить это?приложение работает в фоновом режиме, производит обратный отсчет и издает звуки, даже когда телефон находится в спящем режиме.

  • Версия ОС составляет 8.1.0
  • Ядро 3.18.71
  • build OPM1.171019.019
  • Устройство: LM-Q710TS (LG Stylo 4)

Конкретный рассматриваемый код таков:

    //runs without a timer by reposting this handler at the end of the runnable
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {

    @Override
    public void run() {

        // do something here to display

        processTime();    // process what to be done on a sec by sec basis
        try {
            timerHandler.postDelayed(this, 1000);
        } catch (Exception ex){

        }

    }
};

Я видел сообщениеэто относится к использованию частичного wakelock или, возможно, другой версии таймера, но не может найти его сейчас.Надеюсь, что есть прямой ответ на эту загадку.

...