我正在使用 aVideoview
在循环中播放动画视频。我注意到,每当视频播放时,如果任何其他音乐应用正在播放音频并且我点击headset buttons(pause/play)
,媒体按钮事件都不会发送到音乐播放应用。相反,它被分派到 my ExampleService
which extends from MediaBrowserServiceCompat
。Videoview
正在窃取那些媒体按钮事件。我正在使用偶数AudioManager.AUDIO_FOCUS_NONE
。
我注意到当我的应用程序打开并播放视频时,我可以在堆栈跟踪中看到一个日志
D/MediaSessionService: Media button session is changed to com.example.mediasessiontest/ExampleService (userId=0)
有没有办法在不请求Mediabutton
事件的情况下播放视频?
- 如果我不在我的应用中播放视频,耳机事件会正确路由到正在播放音乐的应用
- 这仅发生在
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
withMediaplayer
。但同样的结果。看起来像操作系统中的错误8 and 9
?