我正在使用Exoplayer的PlayerNotificationManager,在Android 10及以下版本中,使用startForeground()方法时通知栏是可见的,但在我的一部升级到Android 11的手机上,媒体播放器的通知栏不再显示。
请帮忙解决!
我在Google Pixel上进行了调试:
在Google Pixel Android 11上可以工作,但在三星G973F上无法正常工作。为什么会出现这种情况?
我正在使用Exoplayer的PlayerNotificationManager,在Android 10及以下版本中,使用startForeground()方法时通知栏是可见的,但在我的一部升级到Android 11的手机上,媒体播放器的通知栏不再显示。
请帮忙解决!
我在Google Pixel上进行了调试:
在Google Pixel Android 11上可以工作,但在三星G973F上无法正常工作。为什么会出现这种情况?
这里提出了在git ExoPlayer中的一个设备特定问题,以下是该问题的链接:
https://github.com/google/ExoPlayer/issues/8500
使用MediaSessionConnector与ExoPlayer PlayerNotificationManager和MediaSessions:
https://github.com/google/ExoPlayer/tree/release-v2/extensions/mediasession
这里更详细地介绍了如何使用MediaSession和MediaSessionConnector:
https://developer.android.com/codelabs/supporting-mediasession
给你,我还没有测试过但是我认为这会有效。
// Create a media session. NotificationCompat.MediaStyle
// PlayerService is your own Service or Activity responsible for media playback.
val mediaSession = MediaSessionCompat(this, "PlayerService")
// Create a MediaStyle object and supply your media session token to it.
val mediaStyle = Notification.MediaStyle().setMediaSession(mediaSession.sessionToken)
// Create a Notification which is styled by your MediaStyle object.
// This connects your media session to the media controls.
// Don't forget to include a small icon.
val notification = Notification.Builder(this@PlayerService, CHANNEL_ID)
.setStyle(mediaStyle)
.setSmallIcon(R.drawable.ic_app_logo)
.build()
// Specify any actions which your users can perform, such as pausing and skipping to
the next track.
val pauseAction: Notification.Action = Notification.Action.Builder(
pauseIcon, "Pause", pauseIntent
).build()
notification.addAction(pauseAction)
请查看此链接以获取完整指南 https://android-developers.googleblog.com/2020/08/playing-nicely-with-media-controls.html