暂停视频时,ExoPlayer不会保持音频焦点

时间:2019-06-13 21:38:27

标签: java android

我在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);

3 个答案:

答案 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.