@@ -157,7 +157,8 @@ internal class TtsSessionAdapter<E : TtsEngine.Error>(
157157 COMMAND_SET_SPEED_AND_PITCH ,
158158 COMMAND_GET_CURRENT_MEDIA_ITEM ,
159159 COMMAND_GET_METADATA ,
160- COMMAND_GET_TEXT
160+ COMMAND_GET_TEXT ,
161+ COMMAND_GET_TIMELINE
161162 ).build()
162163
163164 override fun getApplicationLooper (): Looper {
@@ -457,11 +458,16 @@ internal class TtsSessionAdapter<E : TtsEngine.Error>(
457458
458459 override fun getCurrentTimeline (): Timeline {
459460 // MediaNotificationManager requires a non-empty timeline to start foreground playing.
460- return TtsTimeline (mediaItems)
461+ // Report a single-item timeline in order to show a notification, but without skip buttons.
462+ return if (mediaItems.isNotEmpty()) {
463+ TtsTimeline (listOf (mediaItems[currentMediaItemIndex]))
464+ } else {
465+ TtsTimeline (emptyList())
466+ }
461467 }
462468
463469 override fun getCurrentPeriodIndex (): Int {
464- return ttsPlayer.utterance.value.position.resourceIndex
470+ return 0
465471 }
466472
467473 @Deprecated(" Deprecated in Java" , ReplaceWith (" currentMediaItemIndex" ))
@@ -470,7 +476,8 @@ internal class TtsSessionAdapter<E : TtsEngine.Error>(
470476 }
471477
472478 override fun getCurrentMediaItemIndex (): Int {
473- return ttsPlayer.utterance.value.position.resourceIndex
479+ // Reporting a single-item timeline, so index is always 0.
480+ return 0
474481 }
475482
476483 @Deprecated(" Deprecated in Java" , ReplaceWith (" nextMediaItemIndex" ))
@@ -575,7 +582,7 @@ internal class TtsSessionAdapter<E : TtsEngine.Error>(
575582
576583 override fun isCurrentMediaItemLive (): Boolean {
577584 val timeline = currentTimeline
578- return ! timeline.isEmpty && timeline.getWindow(currentMediaItemIndex, window).isLive()
585+ return ! timeline.isEmpty && timeline.getWindow(currentMediaItemIndex, window).isLive
579586 }
580587
581588 override fun getCurrentLiveOffset (): Long {
0 commit comments