Fix:Android seeking from notification widget on multi-track books #894

This commit is contained in:
advplyr 2023-10-31 16:20:28 -05:00
parent dc8178769b
commit 04e468b43d
2 changed files with 9 additions and 4 deletions

View file

@ -86,7 +86,8 @@ class MediaSessionCallback(var playerNotificationService:PlayerNotificationServi
} }
override fun onSeekTo(pos: Long) { override fun onSeekTo(pos: Long) {
playerNotificationService.seekPlayer(pos) val currentTrackStartOffset = playerNotificationService.getCurrentTrackStartOffsetMs()
playerNotificationService.seekPlayer(currentTrackStartOffset + pos)
} }
private fun onChangeSpeed() { private fun onChangeSpeed() {

View file

@ -652,16 +652,20 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
} }
} }
fun getCurrentTime() : Long { fun getCurrentTrackStartOffsetMs() : Long {
return if (currentPlayer.mediaItemCount > 1) { return if (currentPlayer.mediaItemCount > 1) {
val windowIndex = currentPlayer.currentMediaItemIndex val windowIndex = currentPlayer.currentMediaItemIndex
val currentTrackStartOffset = currentPlaybackSession?.getTrackStartOffsetMs(windowIndex) ?: 0L val currentTrackStartOffset = currentPlaybackSession?.getTrackStartOffsetMs(windowIndex) ?: 0L
currentPlayer.currentPosition + currentTrackStartOffset currentTrackStartOffset
} else { } else {
currentPlayer.currentPosition 0
} }
} }
fun getCurrentTime() : Long {
return currentPlayer.currentPosition + getCurrentTrackStartOffsetMs()
}
fun getCurrentTimeSeconds() : Double { fun getCurrentTimeSeconds() : Double {
return getCurrentTime() / 1000.0 return getCurrentTime() / 1000.0
} }