gpt4 book ai didi

Android - 具有音频焦点的 SimpleExoPlayer

转载 作者:太空狗 更新时间:2023-10-29 13:09:55 31 4
gpt4 key购买 nike

我使用 SimpleExoPlayer 实现了一个测试应用,效果很好。我现在想将 audiofocus 添加到我的应用中。

在用户启动应用程序时开始播放音频焦点很容易。在 onCreate() 末尾添加常用代码:

        if (AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.requestAudioFocus(...

工作正常。

但是当用户按下播放按钮时,我无法请求 audiofocus,我记得这是由 PlaybackControlView 封装的。

也就是说,在使用SimpleExoPlayer和SimpleExoPlayerView(PlaybackControlView)时,如何捕捉播放按钮的点击事件?

重新定义 simpleExoPlayer.setPlayWhenReady() 似乎是不可能的,因为 SimpleExoPlayer 的实例是由工厂提供的,而不是来自带有 new 关键字的实例。

simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(...)

除了使用播放按钮解决这个问题,还有其他想法吗?提前致谢。

更新(17/02/17):

github.com/google/ExoPlayer 上的这个问题被标记为增强。 here

他们第一个回答是:

You can do this by adding a listener to the ExoPlayer instance (ExoPlayer.addListener) and implementing the listener's onPlayerStateChanged to obtain or release audio focus as necessary. Note that onPlayerStateChanged will be called whenever playWhenReady is changed.

此解决方案的一个小问题是 onPlayerStateChanged() 是在音频/视频开始播放之后调用的,而不是之前。我实现了它,当两个音频同时播放时,非常短的重叠当然从耳朵上看不出来。因此,如果您需要,它可以被视为一个很好的解决方案。 ExoPlayer 团队何时/如果有更好的解决方案,我会通知您。

最佳答案

您可以使用 setAudioArttribute 在 exo 播放器中轻松管理您的音频焦点。这是代码:

AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(C.USAGE_MEDIA)
.setContentType(C.CONTENT_TYPE_MOVIE)
.build();

然后将此 AudioAttributes 设置为播放器 player.setAudioAttributes(audioAttributes, true);

这里的 true 代表处理音频焦点,如果它是 true。

关于Android - 具有音频焦点的 SimpleExoPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42228156/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com