diff --git a/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt b/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt index 05be319345..af1f15c7d8 100644 --- a/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt +++ b/demos/session/src/main/java/androidx/media3/demo/session/PlayerActivity.kt @@ -30,11 +30,11 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.media3.common.C.TRACK_TYPE_TEXT import androidx.media3.common.MediaItem -import androidx.media3.common.MediaMetadata import androidx.media3.common.Player import androidx.media3.common.Player.EVENT_MEDIA_ITEM_TRANSITION +import androidx.media3.common.Player.EVENT_MEDIA_METADATA_CHANGED +import androidx.media3.common.Player.EVENT_TIMELINE_CHANGED import androidx.media3.common.Player.EVENT_TRACKS_CHANGED -import androidx.media3.common.Timeline import androidx.media3.common.util.UnstableApi import androidx.media3.session.MediaController import androidx.media3.session.SessionToken @@ -96,6 +96,7 @@ class PlayerActivity : AppCompatActivity() { SessionToken(this, ComponentName(this, PlaybackService::class.java)) ) .buildAsync() + updateMediaMetadataUI() controllerFuture.addListener({ setController() }, MoreExecutors.directExecutor()) } @@ -110,37 +111,43 @@ class PlayerActivity : AppCompatActivity() { playerView.player = controller updateCurrentPlaylistUI() - updateMediaMetadataUI(controller.mediaMetadata) + updateMediaMetadataUI() playerView.setShowSubtitleButton(controller.currentTracks.isTypeSupported(TRACK_TYPE_TEXT)) controller.addListener( object : Player.Listener { - override fun onTimelineChanged(timeline: Timeline, reason: Int) { - if (reason == Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED) { - updateCurrentPlaylistUI() - } - } - override fun onEvents(player: Player, events: Player.Events) { - 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)) } + if (events.contains(EVENT_TIMELINE_CHANGED)) { + updateCurrentPlaylistUI() + } + if (events.contains(EVENT_MEDIA_METADATA_CHANGED)) { + updateMediaMetadataUI() + } + if (events.contains(EVENT_MEDIA_ITEM_TRANSITION)) { + // Trigger adapter update to change highlight of current item. + mediaItemListAdapter.notifyDataSetChanged() + } } } ) } - private fun updateMediaMetadataUI(mediaMetadata: MediaMetadata) { + private fun updateMediaMetadataUI() { + val controller = this.controller + if (controller == null || controller.mediaItemCount == 0) { + findViewById(R.id.media_title).text = getString(R.string.waiting_for_metadata) + findViewById(R.id.media_artist).text = "" + return + } + + val mediaMetadata = controller.mediaMetadata val title: CharSequence = mediaMetadata.title ?: "" findViewById(R.id.media_title).text = title findViewById(R.id.media_artist).text = mediaMetadata.artist - - // Trick to update playlist UI - mediaItemListAdapter.notifyDataSetChanged() } private fun updateCurrentPlaylistUI() { diff --git a/demos/session/src/main/res/values/strings.xml b/demos/session/src/main/res/values/strings.xml index 727772e190..632e2ce602 100644 --- a/demos/session/src/main/res/values/strings.xml +++ b/demos/session/src/main/res/values/strings.xml @@ -19,9 +19,6 @@ Click to view your play list Added %1$s to playlist Shuffle - Repeat Play - - "! No media in the play list !\nPlease try to add more from browser" - + Waiting for playlist to load…