diff --git a/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/notification/NotificationManager.kt b/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/notification/NotificationManager.kt index 1f4563a3..65e54c8d 100644 --- a/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/notification/NotificationManager.kt +++ b/kotlin-audio/src/main/java/com/doublesymmetry/kotlinaudio/notification/NotificationManager.kt @@ -30,6 +30,7 @@ import com.doublesymmetry.kotlinaudio.models.MediaSessionCallback import com.doublesymmetry.kotlinaudio.models.NotificationState import com.doublesymmetry.kotlinaudio.models.filterForNotification import com.doublesymmetry.kotlinaudio.players.components.getAudioItemHolder +import com.google.android.exoplayer2.C import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector import com.google.android.exoplayer2.ext.mediasession.TimelineQueueNavigator @@ -194,7 +195,12 @@ class NotificationManager internal constructor( private fun getDuration(index: Int? = null): Long { val mediaItem = if (index == null) player.currentMediaItem else player.getMediaItemAt(index) - return mediaItem?.getAudioItemHolder()?.audioItem?.duration ?: -1 + + return if (player.isCurrentMediaItemDynamic || player.duration == C.TIME_UNSET) { + mediaItem?.getAudioItemHolder()?.audioItem?.duration ?: -1 + } else { + player.duration + } } private fun getUserRating(index: Int? = null): RatingCompat? { @@ -353,12 +359,25 @@ class NotificationManager internal constructor( } public fun getMediaMetadataCompat(): MediaMetadataCompat { + val currentItemMetadata = player.currentMediaItem?.mediaMetadata + return MediaMetadataCompat.Builder().apply { getArtist()?.let { putString(MediaMetadataCompat.METADATA_KEY_ARTIST, it) } getTitle()?.let { putString(MediaMetadataCompat.METADATA_KEY_TITLE, it) + putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, it) + } + currentItemMetadata?.subtitle?.let { + putString( + MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, it.toString() + ) + } + currentItemMetadata?.description?.let { + putString( + MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION, it.toString() + ) } getAlbumTitle()?.let { putString(MediaMetadataCompat.METADATA_KEY_ALBUM, it)