我正在使用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,并且我使用MediaSessionConnector
和TimelineQueueNavigator
来构建锁定屏幕的通知和锁定屏幕的背景图像。
这是我与 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