【问题标题】:Samsung AOD and lock screen media metadata Unknown三星 AOD 和锁屏媒体元数据未知
【发布时间】:2018-05-22 14:01:35
【问题描述】:

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

在三星手机上,我遇到了 AOD(始终显示)和锁定屏幕的小问题。两者都包含一个小型媒体控制器(三个按钮)以及曲目标题和专辑 - 我假设它可以与 MediaSession 一起使用。

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

我不知何故迷路了,不知道在哪里寻找问题和修复。这显然在我的应用程序中,因为其他播放器工作正常(在 AOD 上显示标题),但我不知道除了 MediaSession 中的设置元数据之外我还需要做什么?

【问题讨论】:

    标签: android


    【解决方案1】:

    很快

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

    Samsung AOD 中显示的另一个项目,锁屏是MediaMetadataCompat.METADATA_KEY_ARTIST

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

    【讨论】:

    【解决方案2】:

    @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也很有帮助。

    【讨论】:

    • 我在媒体会话实例上设置元数据,但在切换视频时显示未知/未提供。 setQueueNavigator 允许我为这种状态定义一个“加载”占位符。
    猜你喜欢
    • 2021-11-12
    • 2015-08-03
    • 1970-01-01
    • 2016-02-06
    • 2013-10-17
    • 1970-01-01
    • 2013-02-14
    • 2013-02-15
    相关资源
    最近更新 更多