三星AOD和锁屏媒体元数据未知

时间:2018-05-22 14:01:35

标签: android

我有自己的媒体播放应用程序 - 它使用MediaSessionCompat(与ExoPlayer及其MediaSessionConnector插件结合使用)。

在三星手机上,我遇到AOD(Always On Display)和锁定屏幕的小问题。两者都包含一个小媒体控制器(三个按钮)和曲目标题和专辑 - 我认为它适用于MediaSession。

我的问题是它总是显示标题/专辑的未知/未知(但按钮工作正常)。我确信我正确地提供MediaSession元数据,因为它在“活动”中使用,其中使用onMetadataChange回调且包含正确的标题。

我不知何故失去了,不确定在哪里寻找问题和修复。它显然在我的应用程序中,因为其他玩家工作正常(在AOD上显示标题),但我不知道除了MediaSession中的设置元数据我还需要做什么?

2 个答案:

答案 0 :(得分:3)

很快

Exoplayer使用MediaDescriptionCompat从播放队列中获取元数据。然后将其映射到MediaMetadataCompat,并将标题映射到密钥MEDIA_KEY_DISPLAY_TITLE,其中三星仅使用密钥MEDIA_KEY_TITLE。 解决方法是将MEDIA_KEY_TITLE添加到MediaDescriptionCompat.extras

三星AOD中显示的另一个项目,锁定屏幕为MediaMetadataCompat.METADATA_KEY_ARTIST

Android中无用复杂性的另一个例子 - 为什么我们需要两个元数据类,几乎相同MediaMetadataCompat vs MediaDescriptionCompat

答案 1 :(得分:0)

@Ivan 的回答对我有用。这是 Kotlin 中的一个示例:

   mediaSessionConnector = MediaSessionConnector(mediaSession).also {
        it.setPlayer(player)
    }
    mediaSessionConnector.setQueueNavigator(object : TimelineQueueNavigator(mediaSession){
        override fun getMediaDescription(player: Player, windowIndex: Int): MediaDescriptionCompat {
            val extra = Bundle()
            extra.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, "podcastEpisode")
            return MediaDescriptionCompat.Builder().setExtras(extra).setTitle("podcastTitle").build()
        }
    })

这个issue也很有帮助。