diff --git a/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt b/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt index 7d31d2f6..b4a97f97 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/managers/SleepTimerManager.kt @@ -20,7 +20,6 @@ class SleepTimerManager constructor(val playerNotificationService: PlayerNotific private var sleepTimerEndTime:Long = 0L private var sleepTimerLength:Long = 0L private var sleepTimerElapsed:Long = 0L - private var sleepTimerExtensionTime:Long = 0L private var sleepTimerFinishedAt:Long = 0L private fun getCurrentTime():Long { @@ -74,7 +73,6 @@ class SleepTimerManager constructor(val playerNotificationService: PlayerNotific } sleepTimerEndTime = time sleepTimerLength = 0 - sleepTimerExtensionTime = SLEEP_EXTENSION_TIME if (sleepTimerEndTime > getDuration()) { sleepTimerEndTime = getDuration() @@ -82,7 +80,6 @@ class SleepTimerManager constructor(val playerNotificationService: PlayerNotific } else { sleepTimerLength = time sleepTimerEndTime = 0L - sleepTimerExtensionTime = time if (sleepTimerLength + getCurrentTime() > getDuration()) { sleepTimerLength = getDuration() - getCurrentTime() @@ -123,6 +120,12 @@ class SleepTimerManager constructor(val playerNotificationService: PlayerNotific return true } + // Called when playing audio and only applies to regular timer + fun resetSleepTimer() { + if (!sleepTimerRunning || sleepTimerLength <= 0L) return + setSleepTimer(sleepTimerLength, false) + } + private fun clearSleepTimer() { sleepTimerTask?.cancel() sleepTimerTask = null @@ -177,7 +180,7 @@ class SleepTimerManager constructor(val playerNotificationService: PlayerNotific return } - val newSleepTime = if (sleepTimerExtensionTime >= 0) sleepTimerExtensionTime else SLEEP_EXTENSION_TIME + val newSleepTime = if (sleepTimerLength >= 0) sleepTimerLength else SLEEP_EXTENSION_TIME vibrate() setSleepTimer(newSleepTime, false) play() @@ -187,7 +190,7 @@ class SleepTimerManager constructor(val playerNotificationService: PlayerNotific // Does not apply to chapter sleep timers and timer must be running for at least 3 seconds if (sleepTimerEndTime == 0L && sleepTimerElapsed > 3000L) { vibrate() - setSleepTimer(sleepTimerExtensionTime, false) + setSleepTimer(sleepTimerLength, false) } } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerListener.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerListener.kt index a1ec4665..3191e69d 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerListener.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerListener.kt @@ -92,6 +92,7 @@ class PlayerListener(var playerNotificationService:PlayerNotificationService) : // Start/stop progress sync interval if (isPlaying) { + playerNotificationService.sleepTimerManager.resetSleepTimer() // Reset sleep timer if running and not a chapter timer player.volume = 1F // Volume on sleep timer might have decreased this val playbackSession: PlaybackSession? = playerNotificationService.mediaProgressSyncer.currentPlaybackSession ?: playerNotificationService.currentPlaybackSession playbackSession?.let { playerNotificationService.mediaProgressSyncer.play(it) }