diff --git a/readium/navigators/media/tts/src/main/java/org/readium/navigator/media/tts/session/TtsSessionAdapter.kt b/readium/navigators/media/tts/src/main/java/org/readium/navigator/media/tts/session/TtsSessionAdapter.kt index 0649af6839..201cf0d178 100644 --- a/readium/navigators/media/tts/src/main/java/org/readium/navigator/media/tts/session/TtsSessionAdapter.kt +++ b/readium/navigators/media/tts/src/main/java/org/readium/navigator/media/tts/session/TtsSessionAdapter.kt @@ -157,7 +157,8 @@ internal class TtsSessionAdapter( COMMAND_SET_SPEED_AND_PITCH, COMMAND_GET_CURRENT_MEDIA_ITEM, COMMAND_GET_METADATA, - COMMAND_GET_TEXT + COMMAND_GET_TEXT, + COMMAND_GET_TIMELINE ).build() override fun getApplicationLooper(): Looper { @@ -457,11 +458,16 @@ internal class TtsSessionAdapter( override fun getCurrentTimeline(): Timeline { // MediaNotificationManager requires a non-empty timeline to start foreground playing. - return TtsTimeline(mediaItems) + // Report a single-item timeline in order to show a notification, but without skip buttons. + return if (mediaItems.isNotEmpty()) { + TtsTimeline(listOf(mediaItems[currentMediaItemIndex])) + } else { + TtsTimeline(emptyList()) + } } override fun getCurrentPeriodIndex(): Int { - return ttsPlayer.utterance.value.position.resourceIndex + return 0 } @Deprecated("Deprecated in Java", ReplaceWith("currentMediaItemIndex")) @@ -470,7 +476,8 @@ internal class TtsSessionAdapter( } override fun getCurrentMediaItemIndex(): Int { - return ttsPlayer.utterance.value.position.resourceIndex + // Reporting a single-item timeline, so index is always 0. + return 0 } @Deprecated("Deprecated in Java", ReplaceWith("nextMediaItemIndex")) @@ -575,7 +582,7 @@ internal class TtsSessionAdapter( override fun isCurrentMediaItemLive(): Boolean { val timeline = currentTimeline - return !timeline.isEmpty && timeline.getWindow(currentMediaItemIndex, window).isLive() + return !timeline.isEmpty && timeline.getWindow(currentMediaItemIndex, window).isLive } override fun getCurrentLiveOffset(): Long {