From 96dde8cf319a096d5c0d60c66bc751add05866fb Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 4 Dec 2022 16:57:03 -0600 Subject: [PATCH] Fix:Android seeking to invalid times --- .../app/player/PlayerNotificationService.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index db844340..5d674b9a 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -694,14 +694,23 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { } fun seekPlayer(time: Long) { - Log.d(tag, "seekPlayer mediaCount = ${currentPlayer.mediaItemCount} | $time") + var timeToSeek = time + Log.d(tag, "seekPlayer mediaCount = ${currentPlayer.mediaItemCount} | $timeToSeek") + if (timeToSeek < 0) { + Log.w(tag, "seekPlayer invalid time ${timeToSeek} - setting to 0") + timeToSeek = 0L + } else if (timeToSeek > getDuration()) { + Log.w(tag, "seekPlayer invalid time ${timeToSeek} - setting to MAX - 2000") + timeToSeek = getDuration() - 2000L + } + if (currentPlayer.mediaItemCount > 1) { - currentPlaybackSession?.currentTime = time / 1000.0 + currentPlaybackSession?.currentTime = timeToSeek / 1000.0 val newWindowIndex = currentPlaybackSession?.getCurrentTrackIndex() ?: 0 val newTimeOffset = currentPlaybackSession?.getCurrentTrackTimeMs() ?: 0 currentPlayer.seekTo(newWindowIndex, newTimeOffset) } else { - currentPlayer.seekTo(time) + currentPlayer.seekTo(timeToSeek) } }