Эмулятор Android не получает обратных вызовов мультимедийных кнопок - PullRequest
0 голосов
/ 28 ноября 2018

Я установил приложение на свой телефон, и обратные вызовы выполняются, как и предполагалось, при нажатии кнопки на моей гарнитуре, но на эмуляторе это ничего не делает.

Нажатие кнопок мультимедиа генерируется с помощью этого кода:

adb shell input keyevent 126

Интересно, что я могу остановить исходящие вызовы с помощью этой команды.

Я даже нашел в выходных данных Logcat кнопку нажатия журналов:

I/Input: injectKeyEvent: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_MEDIA_PLAY, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=46647423, downTime=46647423, deviceId=-1, source=0x101 }
I/Input: injectKeyEvent: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_MEDIA_PLAY, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=46647423, downTime=46647423, deviceId=-1, source=0x101 }

Код, который создает MediaSession:

val callback = object : MediaSession.Callback() {
        override fun onPlay() = pressCounter.press()
        override fun onPause() = pressCounter.press()
        override fun onStop() = pressCounter.press()
    }

    mediaSession = MediaSession(applicationContext, "MYMS")

    mediaSession.setCallback(callback)
    mediaSession.setPlaybackState(
            PlaybackState.Builder().setActions(PlaybackState.ACTION_PLAY or
                    PlaybackState.ACTION_PAUSE or
                    PlaybackState.ACTION_PLAY_PAUSE)
                    .setState(PlaybackState.STATE_PLAYING,
                            0,
                            1f).build())
    mediaSession.isActive = true
...