在Android系统中可能会有多个应用程序会播放音频,所以需要考虑他们之间该如何交互,为了避免多个应用程序同时播放音乐,Android 系统使用音频焦点来进行统一管理,即只有获得了音频焦点的应用程序才可以播放音乐。
我们的应用在开始播放音频文件前,首先应该请求获得音频焦点,并且应该同时注册监听音频焦点的丢失通知,即如果音频焦点被系统或其他的应用程序抢占时,应该做出什么响应。
“音频焦点”这个翻译可能有点难以理解。其实audio focus的本意是说用户在同一时刻只能聚焦(focus on)在一个音频流的播放上,不可能同时听两个播放的音频流,由此演化出了audio focus的概念。
Android平台上的音频焦点分为以下四类
AudioManager#AUDIOFOCUS_GAIN 永久性的音频焦点。
AudioManager#AUDIOFOCUS_GAIN_TRANSIENT 暂时性的音频焦点。
AudioManager#AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 请求附带“降低音量”的暂时性焦点,表示您只希望在短时间内播放音频,并允许前一个持有焦点的应用在降低其音量输出的情况下继续播放,也就是允许两个音频流同时出声。特别适合于语音导航、语音助手的场景使用。
AudioManager#AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE 请求暂时性的音频焦点&#x