筆記Android — PlayerNotificationManager 監聽系統播放器ControlDispatcher方法

--

工作需求在播放功能中,需要設定GA Tracking在監聽系統播放器Action,這邊使用了MediaBrowserServiceCompat + PlayerNotificationManager來實踐音頻背景播放需求,另外要監聽系統播放器需要設定ControlDispatcher方法來實踐。

系統播放器其實是一種”Notification”依照這個思路可以確定我們要監聽的設置會在PlayerNotificationManager的方法裡面。如果使用的是自己客制的View那就需要用CustomAction,目前這邊用到的是原生的。

首先New一個PlayerNotificationManager之後設置相關設定

val notificationManager: PlayerNotificationManagernotificationManager = PlayerNotificationManager.createWithNotificationChannel(context, channelId, R.string.notification_channel, R.string.notification_channel_description, notificationId, DescriptionAdapter(mediaController), notificationListener).apply {
setMediaSessionToken(sessionToken)
setSmallIcon(R.drawable.ic_svg_play)
setUseNextAction(true)
setUsePreviousAction(true)
setUsePlayPauseActions(true)
//監聽系統播放器
controlDispatcher
}

ControlDispatcher設定如下:

private val controlDispatcher = object  : ControlDispatcher {
override fun dispatchPrepare(player: Player): Boolean {
return false
}

override fun dispatchSetPlayWhenReady(player: Player,
playWhenReady: Boolean): Boolean {
if (playWhenReady) {
//可執行播放事件
} else {
//可執行暫停事件
}
return false
}

override fun dispatchSeekTo(player: Player, windowIndex: Int,
positionMs: Long): Boolean {
return false
}

override fun dispatchPrevious(player: Player): Boolean {
//可執行播放上一首事件
return false
}

override fun dispatchNext(player: Player): Boolean {
//可執行播放下一首事件
return false
}

override fun dispatchRewind(player: Player): Boolean {
return false
}

override fun dispatchFastForward(player: Player): Boolean {
return false
}

override fun dispatchSetRepeatMode(player: Player, repeatMode:
Int): Boolean {
return false
}

override fun dispatchSetShuffleModeEnabled(player: Player,
shuffleModeEnabled: Boolean): Boolean {
return false
}

override fun dispatchStop(player: Player, reset: Boolean):
Boolean {
return false
}

override fun isRewindEnabled(): Boolean {
return false
}

override fun isFastForwardEnabled(): Boolean {
return false
}

}

上面只有用到幾種目前實作到的方法,其他例如快進、倒退等在系統播放器上的按鈕都有相對應的事件可以取得。

--

--

Mina 's code note 老闆娘的程式筆記.

Android Developer | Florish Accessories品牌合夥人| Workout | Alcohol | Life ✨✨✨