一、焦点分析
1、申请焦点
源码位置:frameworks/base/services/core/java/com/android/server/audio/MediaFocusControl.java
申请焦点时都会调用 MediaFocusControl 中的 requestAudioFocus() 函数,打印下面 Log:
I MediaFocusControl: requestAudioFocus() from uid/pid …… callingPack=com.app.voiceadapter req=2 flags=0x0 sdk=29 usage=1
uid/pid:用来识别应用信息。
clientId:请求焦点的客户端ID,通常是应用程序的包名。
callingPack=com.app.voiceadapter:调用申请音频焦点方法的应用程序的包名。
req:申请的焦点类型。
- AUDIOFOCUS_NONE = 0:未获得焦点。
- AUDIOFOCUS_GAIN = 1:长期持有焦点。
- AUDIOFOCUS_GAIN_TRANSIENT = 2:暂时焦点。如电话等。
- AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3:暂时焦点。允许混音,如导航等。