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

Несколько лет назад я написал приложение для 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
  • сборка 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 или, возможно, другой версии таймера, но я не могу найти его сейчас. Надеюсь, есть прямой ответ на эту загадку.

0 ответов

Другие вопросы по тегам