Проверьте, не используется ли микрофон Android другим приложением

Я хочу проверить уровень шума с помощью микрофона Android. Однако перед доступом к микрофону я хочу знать, обращается ли к микрофону другое приложение. Как проверить, используется ли микрофон другим приложением?


person user340    schedule 18.08.2012    source источник


Ответы (2)


Информация об активных входных потоках и о том, куда они направляются, хранится экземплярами AudioFlinger, AudioPolicyManager и AudioHardware, которые не передают эту информацию приложениям.
Класс AudioManager предоставляет приложениям метод isMicrophoneMute(), но микрофон вполне может быть включен, пока он не используется, поэтому этот метод на самом деле ничего не говорит вам о том, используется ли микрофон в данный момент или нет.

Один из возможных способов выяснить, есть ли какие-либо входные потоки, направленные на микрофон, — это выполнить dumpsys для media.audio_policy и media.audio_flinger и проанализировать вывод. Но риск заключается в том, что вывод будет выглядеть по-разному на разных устройствах, плюс я не знаю, разрешено ли вам сбрасывать состояние этих служб на устройстве без рута.

person Michael    schedule 18.08.2012
comment
dumpsys не выглядит решением. Есть ли другой способ, кроме isMicrophoneMute()? - person user340; 19.08.2012
comment
Нет, о чем я знаю. Но я не знаком со всеми уловками, которые используют разработчики приложений, так как я принадлежу к другой стороне (я работаю с HAL и фреймворком). - person Michael; 20.08.2012

Я думаю, что Майкл прав, но мы не можем использовать dumpsys на Android 2.3 и более поздних версиях для некоторых сервисов.

person user1402643    schedule 24.08.2012