Мне нужно позвонить в звонок, когда таймер закончится. Я запускаю таймер с setInterval()
. Он работает нормально, когда экран включен, и приложение не дает экрану автоматически выключаться. Однако, если пользователь поворачивает экран с помощью кнопки питания, таймер просто перестанет тикать через 3 минуты и не запустит звук. Это связано с Android спящим режимом и отсутствием wake-lock, я полагаю. Если я снова включу экран, он снова заработает. Как включить wake-lock?
Я пробовал:
- response-native-background-timer - помогает держать галочку, если приложение находится в фоновом режиме, но не с выключенным экраном
- реагировать-родной-видео, воспроизводящий некоторый аудиофайл. Звук продолжает воспроизводиться с выключенным экраном, но таймер все еще останавливается, когда экран выключен на 3 минуты
Вот (рабочий) пример кода функции в моем классе таймера:
play = () => {
if (this.timeLeft != 0) {
this.paused = false
this.running = BackgroundTimer.setInterval(() => {
if (!this.paused) {
this.timePassed++
this.timeLeft = this.duration - this.timePassed
}
if(this.timeLeft <= 0) {
BackgroundTimer.clearInterval(this.running)
this.playBell()
}
}, 1000)
} else {
this.stopped = true
}
}
Как я могу обеспечить выполнение кода с помощью wake-lock?