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)
        }
    })
}

如果有人能分享更好的解决方案那就太好了。