前言
本文章的目标是首先了解Android中音频焦点的基本概念,理解代码中相关音频焦点的使用方法。其次理解AAOS 中相关交互矩阵概念,理解其实现焦点管理的流程。
基本概念
-
音频焦点的目标是 是确保在多个应用程序同时播放音频时,用户能够顺利地听到他们想要听的声音,并防止多个应用同时混合输出声音,造成用户困扰。也就是每次要去播放某个声音的时候 先去请求焦点,请求到焦点 后才能开始播放。
-
音频焦点是在Android API 8中引入的一个概念。它用于表示用户一次只能专注于一个音频流,比如听音乐或播客,但不能同时进行。在某些情况下,多个音频流可以同时播放,但用户只会真正聆听(专注于)其中一个,而其他音频在后台播放。例如,在导航提示播放时,同时降低音量播放音乐。当应用程序请求音频焦点时,它表示希望“拥有”音频焦点来播放音频。
提供给应用来获取音频焦点的api
android 的audioManager 提供了requestAudioFocus 的接口来获取焦点
AudioFocusRequest mFocusRequest = new AudioFocusRequest.Builder(focusRequest)
.setAudioAttributes(mAttrib)
.setOnAudioFocusChangeListener(mFocusListener)
.setForceDucking(false)
.setWillPauseWhenDucked(false)
.setAcceptsDelayedFocusGain