Android 调用stopForeground时通知颜色会更改

Android 调用stopForeground时通知颜色会更改,android,exoplayer2.x,Android,Exoplayer2.x,我正在使用exoplayer构建音频播放器。当我的音频播放器启动时,我会附上一个通知。使用“通知暂停”按钮暂停/停止播放机时,通知背景颜色会发生变化。这是测试代码 当调用停止前景(false)时,我尝试在playerNotificationManager上再次设置通知颜色,但没有任何帮助 if (it == StreamState.STOPPED) { this.stopForeground(false) }

我正在使用
exoplayer
构建音频播放器。当我的音频播放器启动时,我会附上一个通知。使用“通知暂停”按钮暂停/停止播放机时,通知背景颜色会发生变化。这是测试代码

当调用
停止前景(false)
时,我尝试在
playerNotificationManager
上再次设置通知颜色,但没有任何帮助

            if (it == StreamState.STOPPED) {
                this.stopForeground(false)
            }

            else if (it == StreamState.STARTED) {
                    val channelId = "media_playback_channel"
                    exoNotificationListener = ExoNotificationListener(onNotificationPosted, onNotificationCancelled)
                    playerNotificationManager = playerNotificationManager ?: PlayerNotificationManager.createWithNotificationChannel(
                        application.applicationContext,
                        channelId,
                        R.string.media_playback_notification,
                        R.string.media_playback_notification_id,
                        mcNotificationManager,
                        exoNotificationListener
                    )
                    playerNotificationManager?.setFastForwardIncrementMs(0)
                    playerNotificationManager?.setRewindIncrementMs(0)
                    playerNotificationManager?.setUseNavigationActions(false)
                    // Here I am setting the color which works fine when content is playing.
                    playerNotificationManager?.setColor(notificationColor)
                    bindPlayer(playerNotificationManager)
            }
当我再次开始播放时,通知颜色再次出现。我不想在停止前景时更改通知颜色。
你能告诉我我做错了什么吗。

我想我明白了,我必须将mediaSession附加到它上。看下面的博文对我很有帮助。

更新代码:

    val session = MediaSessionCompat(application.applicationContext, channelId)
    val connector = MediaSessionConnector(session)
    connector.setPlayer(exoPlayer)
    playerNotificationManager?.setMediaSessionToken(session.sessionToken)
实际上,这些文档帮助了我: 设置此通知是否应着色。设置后,带有setColor(int)的颜色集将用作此通知的背景色

这只能用于高优先级的持续任务,如导航、持续呼叫或用户的其他类似高优先级事件

对于大多数样式,仅当通知用于前台服务通知时,才会应用颜色

但是,对于连接了媒体会话的MediaStyle和DecoratedMediaCustomViewStyle通知,没有此类要求

在O之前的任何版本上调用此方法都不会对通知产生影响