0

我正在使用 aVideoview在循环中播放动画视频。我注意到,每当视频播放时,如果任何其他音乐应用正在播放音频并且我点击headset buttons(pause/play),媒体按钮事件都不会发送到音乐播放应用。相反,它被分派到 my ExampleServicewhich extends from MediaBrowserServiceCompatVideoview正在窃取那些媒体按钮事件。我正在使用偶数AudioManager.AUDIO_FOCUS_NONE

我注意到当我的应用程序打开并播放视频时,我可以在堆栈跟踪中看到一个日志

D/MediaSessionService: Media button session is changed to com.example.mediasessiontest/ExampleService (userId=0)

有没有办法在不请求Mediabutton事件的情况下播放视频?

  1. 如果我不在我的应用中播放视频,耳机事件会正确路由到正在播放音乐的应用
  2. 这仅发生在Android 8 and 9. 工作正常Android 10
  3. 甚至尝试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
    }
    

    也尝试使用Surfaceviewwith Mediaplayer。但同样的结果。看起来像操作系统中的错误8 and 9

4

0 回答 0