前面音频焦点申请时,在 MediaFocusControl 中有一个重要的函数 notifyExtFocusPolicyFocusRequest_syncAf(),其中的注释信息是 对外的焦点策略,其实就是对外通知焦点变化情况,由 APP 来处理焦点变化所带来的业务需求。
源码位置:/frameworks/base/services/core/java/com/android/server/audio/MediaFocusControl.java
- @Nullable private IAudioPolicyCallback mFocusPolicy = null;
-
- boolean notifyExtFocusPolicyFocusRequest_syncAf(AudioFocusInfo afi, IAudioFocusDispatcher fd, @NonNull IBinder cb) {
- synchronized (mExtFocusChangeLock) {
- afi.setGen(mExtFocusChangeCounter++);
- }
- ……
- try {
- //oneway
- mFocusPolicy.notifyAudioFocusRequest(afi, AudioManager.AUDIOFOCUS_REQUEST_GRANTED);
- return true;
- } catch (RemoteException e) {
- }
- return false;
- }
这里调用了 IAudioPolicyCallback 中的 notifyAudioFocusRequest() 方法,而 IAudioPolicyCallback 是通过 AudioPolicy 类实现的。通过