Update playlist UI when playlist is updated

When changing the playlist on Android Auto the UI of the
activity needs to be kept in sync.

PiperOrigin-RevId: 569528785
(cherry picked from commit 52d9fbff73cddd5c0881f6fd53a6ba35220d0ed1)
This commit is contained in:
bachinger 2023-09-29 10:34:24 -07:00 committed by oceanjules
parent 12332a4afc
commit 4acce9bcae

View File

@ -32,7 +32,9 @@ import androidx.media3.common.C.TRACK_TYPE_TEXT
import androidx.media3.common.MediaItem import androidx.media3.common.MediaItem
import androidx.media3.common.MediaMetadata import androidx.media3.common.MediaMetadata
import androidx.media3.common.Player import androidx.media3.common.Player
import androidx.media3.common.Tracks import androidx.media3.common.Player.EVENT_MEDIA_ITEM_TRANSITION
import androidx.media3.common.Player.EVENT_TRACKS_CHANGED
import androidx.media3.common.Timeline
import androidx.media3.common.util.UnstableApi import androidx.media3.common.util.UnstableApi
import androidx.media3.session.MediaController import androidx.media3.session.MediaController
import androidx.media3.session.SessionToken import androidx.media3.session.SessionToken
@ -113,12 +115,19 @@ class PlayerActivity : AppCompatActivity() {
controller.addListener( controller.addListener(
object : Player.Listener { object : Player.Listener {
override fun onMediaItemTransition(mediaItem: MediaItem?, reason: Int) { override fun onTimelineChanged(timeline: Timeline, reason: Int) {
updateMediaMetadataUI(mediaItem?.mediaMetadata ?: MediaMetadata.EMPTY) if (reason == Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED) {
updateCurrentPlaylistUI()
}
} }
override fun onTracksChanged(tracks: Tracks) { override fun onEvents(player: Player, events: Player.Events) {
playerView.setShowSubtitleButton(tracks.isTypeSupported(TRACK_TYPE_TEXT)) if (events.contains(EVENT_MEDIA_ITEM_TRANSITION)) {
updateMediaMetadataUI(player.currentMediaItem?.mediaMetadata ?: MediaMetadata.EMPTY)
}
if (events.contains(EVENT_TRACKS_CHANGED)) {
playerView.setShowSubtitleButton(player.currentTracks.isTypeSupported(TRACK_TYPE_TEXT))
}
} }
} }
) )