u2g*_*les 5 audio android android-audiomanager exoplayer
我使用 SimpleExoPlayer 实现了一个测试应用程序,效果很好。我现在想将音频焦点添加到我的应用程序中。
当用户启动应用程序时开始使用音频焦点播放很容易。在 onCreate() 末尾添加常用代码:
if (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.requestAudioFocus(...
Run Code Online (Sandbox Code Playgroud)
工作正常。
但是当用户按下播放按钮时,我无法请求音频焦点,这是我记得的 PlaybackControlView 封装的。
换句话说,使用SimpleExoPlayer和SimpleExoPlayerView(PlaybackControlView)时如何捕获播放按钮单击事件?
重新定义 simpleExoPlayer.setPlayWhenReady() 似乎不可能,因为 SimpleExoPlayer 的实例是由 Factory 给出的,而不是使用 new 关键字实例化的。
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(...)
Run Code Online (Sandbox Code Playgroud)
除了使用播放按钮解决这个问题之外,还有其他想法吗?提前致谢。
更新(17/02/17):
github.com/google/ExoPlayer 上的此问题被标记为“增强”。 这里
他们的第一个回答是:
您可以通过向 ExoPlayer 实例 (ExoPlayer.addListener) 添加侦听器并实现侦听器的 onPlayerStateChanged 以根据需要获取或释放音频焦点来实现此目的。请注意,每当 playWhenReady 发生更改时,都会调用 onPlayerStateChanged。
这个解决方案的小问题是 onPlayerStateChanged() 在音频/视频开始播放之后调用,而不是之前。我实现了它,当两个音频同时播放时,非常短的重叠从耳朵中当然是察觉不到的。因此,如果您需要的话,它可以被认为是一个很好的解决方案。当 ExoPlayer 团队提供更好的解决方案时,我会通知您。
| 归档时间: |
|
| 查看次数: |
5036 次 |
| 最近记录: |