如何使用ExoPlayer在锁屏上放置媒体按钮



我正在使用ExoPlayer(https://github.com/google/ExoPlayer(和自定义通知。

我想从锁定屏幕和耳机访问我的音乐播放器,就像在谷歌播放音乐和 wync 中一样。
请帮助我。

对于锁定屏幕上的播放控件,您需要执行 MediaStyle 通知。

如果要将图稿作为锁屏背景,则需要支持 MediaSession 并正确维护会话的元数据:

new MediaMetadata.Builder(track)
   .putBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART, bitmap)
   .putBitmap(MediaMetadata.METADATA_KEY_DISPLAY_ICON, bitmap) 
   .build();

我也在PlayerNotificationManager中使用Exoplayer,并且我使用MediaSessionConnectorTimelineQueueNavigator来构建锁定屏幕的通知和锁定屏幕的背景图像。

这是我与 Exoplayer 团队的问题,该团队已针对 android 11 及更高版本解决,关于如何使用MediaSessionConnector

为什么 PlayerNotificationManager 在 Android 11(R( 中没有在 startForeground 上显示通知?

现在,我刚刚为MediaDescriptionCompact的当前会话轨道添加了一个位图(使用putParcelable(((,该轨道将在内部设置为当前MediaSession

这是代码:

val mediaSession = MediaSessionCompat(serviceContext, "DPS_APP")
mediaSession.isActive = true
mediaSessionConnector = MediaSessionConnector(mediaSession).also {
                it.setQueueNavigator(
                    object : TimelineQueueNavigator(mediaSession) {
                        override fun getMediaDescription(
                            player: Player,
                            windowIndex: Int
                        ): MediaDescriptionCompat {
                            val data: MediaMetaData =
                                getEmptyOfNullMedia(player)
                            isBitmapAvailable(getCurrentMediaArt(data))
                            val extras = Bundle().apply {
                                putString(
                                    MediaMetadataCompat.METADATA_KEY_TITLE,
                                    getCurrentTitle(data)
                                )
                                putString(
                                    MediaMetadataCompat.METADATA_KEY_ARTIST,
                                    getMediaTitle(data)
                                )
                                putParcelable(
                                    MediaMetadataCompat.METADATA_KEY_ALBUM_ART,
                                    sessionCurrentBitmap
                                )
                            }
                            return MediaDescriptionCompat.Builder()
                                .setIconBitmap(sessionCurrentBitmap)
                                .setExtras(extras)
                                .build()
                        }
                it.setPlayer(mPlayer)
            }

以下是有关如何在GitHub上给定的以下问题中刷新或使MediaSession失效的小简报:

https://github.com/google/ExoPlayer/issues/5494

最新更新