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

3

我正在使用Exoplayer的PlayerNotificationManager,在Android 10及以下版本中,使用startForeground()方法时通知栏是可见的,但在我的一部升级到Android 11的手机上,媒体播放器的通知栏不再显示。

请帮忙解决!

我在Google Pixel上进行了调试:

在Google Pixel Android 11上可以工作,但在三星G973F上无法正常工作。为什么会出现这种情况?


要在通知栏中显示媒体控件,您需要在设置中为每个应用程序打开播放通知。 - Mubashir Murtaza
请查看此链接:https://support.google.com/pixelphone/thread/70400876?hl=en。 - Mubashir Murtaza
已经访问过,通知播放已经打开 - DeePanShu
请检查我的答案,如果不行的话,我会为您进行更多的搜索。 - Mubashir Murtaza
好的,让我试试你的答案。 - DeePanShu
2个回答

3

0

给你,我还没有测试过但是我认为这会有效。

// 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


1
我正在使用ExoPlayer的“PlayerNotificationManager”,它已经在内部执行了你在这里提到的代码。 - DeePanShu
检查您是否正在使用最新版本的lib!?您还可以将此报告给GitHub上的Expo Player! - Mubashir Murtaza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接