Я реализовал следующий код для mediaButtonevent, но он не работает.
Я пытался использовать mediaSessionConnector для обработки события mediabutton.
Он не отражает никаких намерений со стороны оборудования.
Может ли кто-нибудь помочь мне обработать следующий код?
private var mediaButtonEvent = object : MediaSessionConnector.MediaButtonEventHandler {
override fun onMediaButtonEvent(
player: Player?,
controlDispatcher: ControlDispatcher?,
mediaButtonEvent: Intent?
): Boolean {
Log.d(TAG, "mediaButtonEvent : $mediaButtonEvent")
if (Intent.ACTION_MEDIA_BUTTON == mediaButtonEvent?.action) {
val keyEvent =
mediaButtonEvent.getParcelableExtra<KeyEvent>(Intent.EXTRA_KEY_EVENT)
Log.d(TAG, "KeyEvent : $keyEvent")
if (keyEvent?.action == KeyEvent.ACTION_UP) {
when (keyEvent.keyCode) {
KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE -> {
Log.d(
TAG,
"KeyEvent PLAY_PAUSE : " + mediaController.playbackState.state
)
if (mediaController.playbackState.state == PlaybackStateCompat.STATE_PLAYING) {
player?.playWhenReady = true
} else {
player?.playWhenReady = false
}
return true
}
KeyEvent.KEYCODE_MEDIA_PLAY -> {
Log.d(
TAG,
"KeyEvent KEYCODE_MEDIA_PLAY : " + mediaController.playbackState.state
)
if (mediaController.playbackState.state == PlaybackStateCompat.STATE_PAUSED) {
player?.playWhenReady = true
}
return true
}
}
}
}
return false
}
}
}
Соединиться с mediaSessionConnetor
connector.setMediaButtonEventHandler(mediaButtonEvent)
кто-нибудь подскажет, что аппаратная кнопка не работает для меня?