Android: 如何捕捉蓝牙耳机的按键事件?
Android: How to capture key events from Bluetooth headphones?
我正在尝试从蓝牙头phone 捕获KEYCODE_MEDIA_PLAY_PAUSE 关键事件。我试图覆盖 MainActivity 中的 onKeyDown 以获取 keyCode,但我只从 phone 获取事件,从未从蓝牙头 phone 获取事件。我发现了一些类似的问题,但找不到任何解决方案。谢谢!
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
Timber.d("$keyCode")
when (keyCode) {
KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE -> {
Timber.d("Received")
return true
}
}
return super.onKeyDown(keyCode, event)
}
如果有人面临同样的问题,这就是现在对我有用的方法:
fun configureMediaSession(){
s_mediaSession = MediaSession(this, "MyMediaSession")
s_mediaSession.setCallback(object : MediaSession.Callback() {
override fun onMediaButtonEvent(mediaButtonIntent: Intent): Boolean {
val ke: KeyEvent? = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT)
if (ke != null && ke.action == KeyEvent.ACTION_DOWN) {
// Calling my method
return true
}
return super.onMediaButtonEvent(mediaButtonIntent)
}
})
}
如果有人能分享更好的解决方案那就太好了。
我正在尝试从蓝牙头phone 捕获KEYCODE_MEDIA_PLAY_PAUSE 关键事件。我试图覆盖 MainActivity 中的 onKeyDown 以获取 keyCode,但我只从 phone 获取事件,从未从蓝牙头 phone 获取事件。我发现了一些类似的问题,但找不到任何解决方案。谢谢!
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
Timber.d("$keyCode")
when (keyCode) {
KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE -> {
Timber.d("Received")
return true
}
}
return super.onKeyDown(keyCode, event)
}
如果有人面临同样的问题,这就是现在对我有用的方法:
fun configureMediaSession(){
s_mediaSession = MediaSession(this, "MyMediaSession")
s_mediaSession.setCallback(object : MediaSession.Callback() {
override fun onMediaButtonEvent(mediaButtonIntent: Intent): Boolean {
val ke: KeyEvent? = mediaButtonIntent.getParcelableExtra(Intent.EXTRA_KEY_EVENT)
if (ke != null && ke.action == KeyEvent.ACTION_DOWN) {
// Calling my method
return true
}
return super.onMediaButtonEvent(mediaButtonIntent)
}
})
}
如果有人能分享更好的解决方案那就太好了。