Я использую Videoview
для воспроизведения анимационного видео в l oop. Я заметил, что всякий раз, когда воспроизводится видео, если любое другое приложение musi c воспроизводит звук, и я нажимаю headset buttons(pause/play)
, события мультимедийных кнопок не отправляются в приложение воспроизведения musi c. Вместо этого он отправляется на мой ExampleService
, который простирается от MediaBrowserServiceCompat
. Videoview
крадет эти события медиа-кнопки. Я использую даже AudioManager.AUDIO_FOCUS_NONE
.
Я заметил, что когда мое приложение открывается и воспроизводится видео, я вижу журнал в трассировке стека, который
D/MediaSessionService: Media button session is changed to com.example.mediasessiontest/ExampleService (userId=0)
Есть ли способ воспроизвести видео без запроса для события Mediabutton
?
- Если я не воспроизводю видео в своем приложении, события гарнитуры будут правильно перенаправлены в приложение, которое воспроизводит музыку c
- Это происходит только на
Android 8 and 9
. Работает нормально на Android 10
. Пробовал даже Surfaceview
с Mediaplayer
для воспроизведения видео. Но заметил ту же проблему.
private val VIDEO_BASE_PATH = "android.resource://"
videoView.setAudioFocusRequest(AudioManager.AUDIOFOCUS_NONE)
videoView.setMediaController(null)
videoView.setVideoPath(VIDEO_BASE_PATH + packageName + "/" + R.raw.test_video)
videoView.setOnPreparedListener { player ->
player.isLooping = true
player.start() //This causes the media button sesssion to be changed
}
Пробовал использовать Surfaceview
с Mediaplayer
. Но результат тот же. Похоже на ошибку в ОС 8 and 9
?