1. Анализ фокуса
1. Фокус на применении
Расположение исходного кода: frameworks/base/services/core/java/com/android/server/audio/MediaFocusControl.java
При подаче заявки на фокус вызывается функция requestAudioFocus() в MediaFocusControl и печатается следующий журнал:
I MediaFocusControl: requestAudioFocus() from uid/pid …… callingPack=com.app.voiceadapter req=2 flags=0x0 sdk=29 usage=1
uid/pid: используется для идентификации информации приложения.
clientId: идентификатор клиента, запрашивающего фокус, обычно имя пакета приложения.
CallingPack=com.app.voiceadapter: имя пакета приложения, которое вызывает метод фокусировки звука.
req: Заявленный тип фокуса.
- AUDIOFOCUS_NONE = 0: фокус не получен.
- AUDIOFOCUS_GAIN = 1: удерживать фокус в течение длительного времени.
- AUDIOFOCUS_GAIN_TRANSIENT = 2: Временный фокус. Например, телефонные звонки и т. д.
- AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK = 3: Временный фокус. Позволяет выполнять ремиксы, например, навигацию и т. д.