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之前的任何版本上调用此方法都不会对通知产生影响