我正在使用ExoPlayer在后台播放音频。服务利用ExoPlayer的PlayerNotificationManager来显示通知。
playerNotificationManager = PlayerNotificationManager.createWithNotificationChannel(
this,
"Playback",
R.string.notification_channel_playback,
R.id.playback_notification,
DescriptionProvider()
)
我想在通知上设置contentIntent
,以便在按钮外的任何地方点击都会启动活动(在正在播放的媒体上显示其他信息)。
但是我没有访问实际的通知生成器的权限。相反,我得到的只是通知本身,在通知实例上设置contentIntent
似乎没有任何作用(这似乎是可以预期的)。
playerNotificationManager.setNotificationListener(object: PlayerNotificationManager.NotificationListener {
override fun onNotificationStarted(notificationId: Int, notification: Notification) {
val intent = intentFor<MyActivity>()
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
val pending = PendingIntent.getForegroundService(
applicationContext,
1,
intent,
0
)
notification.contentIntent = pending
}
override fun onNotificationCancelled(notificationId: Int) {
stopSelf()
}
})
为排除启动活动的任何问题,我还尝试了一种意图,用于播放/暂停媒体播放,但此方法也无法正常工作。
我可能会花费很多精力,切换到自定义通知,但是如果有某种方法可以使用ExoPlayer真的很方便。
我调查过的某些东西不起作用:
playerNotificationManager.invalidate()
playerNotificationManager.setStopAction()
我不需要额外的按钮!playerNotificationManager.setUseNavigationAction()
是跳过按钮或者,作为一个问题:在ExoPlayer托管的通知上(按钮之外)点击时,我可以设置要执行的操作吗?