#android
#Android
Вопрос:
Я создал таймер, используя CountDownTimer
. Кроме того, когда до завершения таймера остается 5 секунд, звуковой сигнал воспроизводится каждую секунду до его завершения (доходит до 0 секунды).
Я тестирую на устройстве Android, где я установил время ожидания экрана равным 15 секундам.
Я обнаружил, что по истечении времени ожидания экрана таймер приостанавливается и не завершается. Кроме того, звук не воспроизводится.
Я использую следующий код для управления питанием / блокировки пробуждения, но это не решает проблему.
private PowerManager.WakeLock wl;
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "SampleScreen");
Однако при использовании следующего кода
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "SampleScreen");
он работает нормально, но я хочу избежать использования FULL_WAKE_LOCK
, который потребляет много заряда батареи.
Требование заключается в том, что при выключенном экране таймер должен продолжать работать, а также звуковой файл должен воспроизводиться каждую секунду, за 5 секунд до завершения работы таймера.
Пожалуйста, предоставьте свои входные данные / пример кода о том, как обращаться.
Ответ №1:
Вы должны использовать PowerManager.PARTIAL_WAKE_LOCK
вместо PowerManager.FULL_WAKE_LOCK
Комментарии:
1. Я использовал этот код .. он приведен в прилагаемом примере исходного кода выше… необходимо прокрутить вправо .. отступ был неправильным
2. Итак, что происходит, когда вы используете частичную блокировку пробуждения? Добавили ли вы инструкции отладки в свою активность?
3. При использовании PowerManager. PARTIAL_WAKE_LOCK, таймер останавливается после истечения времени ожидания экрана мобильного устройства. При использовании инструкций отладки кажется, что компонент Timer не отвечает на параметр PowerManager. PARTIAL_WAKE_LOCK для продолжения работы при истечении времени ожидания экрана.
4. Это странно, можете ли вы опубликовать, где вы снимаете блокировку?
5. @Override protected аннулирует onPause() { super.onPause(); wl.release(); } Я снимаю блокировку, используя приведенный выше код в том же классе Activity. Пожалуйста, сообщите, если мне нужно внести какие-либо изменения.