在ExoPlayer通知中设置内容意图

时间:2018-10-05 09:10:31

标签: android kotlin android-notifications exoplayer

我正在使用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托管的通知上(按钮之外)点击时,我可以设置要执行的操作吗?

0 个答案:

没有答案