我在Android应用中使用ExoPlayer播放了一些教程视频,并且当我暂停视频时,音频焦点被放弃了,并且用户无法通过设备的物理按钮控制媒体音量(因为音频焦点已丢失,这些按钮现在可以控制铃声音量),即使用户暂停了视频,我也希望保持音频焦点,并且我只希望在用户退出本教程后丢失音频焦点。
我已经尝试将“ exoPlayer.setAudioAttributes”设置为null,这是为了防止exoplayer使用其默认音频焦点设置,但是当该选项设置为null时,ExoPlayer将根本无法播放...(我也尝试过为其设置实际的AudioAttributes,如这篇文章:https://medium.com/google-exoplayer/easy-audio-focus-with-exoplayer-a2dcbbe4640e 但这没有任何作用
我也尝试设置AudioManager(内置的)并请求音频焦点,但是每次设置它时,它的侦听器都会立即返回“ AUDIOFOCUS_LOSS”(我尝试在设置ExoPlayer之前和之后对其进行设置,也尝试再次进行设置)每次ExoPlayer的状态更改时,但每次它立即返回“ AUDIOFOCUS_LOSS”。
这是我的代码:
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(C.USAGE_MEDIA)
.setContentType(C.CONTENT_TYPE_MOVIE)
.build();
exoPlayer.setAudioAttributes(audioAttributes, true);
答案 0 :(得分:0)
在这种情况下,我无法提供太多帮助。但是,为了帮助您获得解决方案的机会,请附上一些代码以供我们查看和检查。祝你好运。
答案 1 :(得分:0)
问题是我没有为活动设置流类型,这就是为什么在视频暂停时硬件按钮不能控制音乐音量的原因(Credit转到reddit用户以在此发布解决方案)< / p>
activity.setVolumeControlStream(AudioManager.{INSERT YOUR STREAM TYPE})
Android文档: https://developer.android.com/reference/android/app/Activity.html#setVolumeControlStream(int)
答案 2 :(得分:0)
您必须使用setAudioAttributes
来聚焦音频。这是适用于我的项目的代码:
val audioAttributes: AudioAttributes = AudioAttributes.Builder()
.setUsage(C.USAGE_MEDIA)
.setContentType(C.CONTENT_TYPE_MOVIE)
.build()
simpleExoPlayer.setAudioAttributes(audioAttributes, true)
如果您想详细了解,可以阅读this article.