Я хочу проверить уровень шума с помощью микрофона Android. Однако перед доступом к микрофону я хочу знать, обращается ли к микрофону другое приложение. Как проверить, используется ли микрофон другим приложением?
Проверьте, не используется ли микрофон Android другим приложением
Ответы (2)
Информация об активных входных потоках и о том, куда они направляются, хранится экземплярами AudioFlinger
, AudioPolicyManager
и AudioHardware
, которые не передают эту информацию приложениям.
Класс AudioManager предоставляет приложениям метод isMicrophoneMute()
, но микрофон вполне может быть включен, пока он не используется, поэтому этот метод на самом деле ничего не говорит вам о том, используется ли микрофон в данный момент или нет.
Один из возможных способов выяснить, есть ли какие-либо входные потоки, направленные на микрофон, — это выполнить dumpsys для media.audio_policy
и media.audio_flinger
и проанализировать вывод. Но риск заключается в том, что вывод будет выглядеть по-разному на разных устройствах, плюс я не знаю, разрешено ли вам сбрасывать состояние этих служб на устройстве без рута.
Я думаю, что Майкл прав, но мы не можем использовать dumpsys на Android 2.3 и более поздних версиях для некоторых сервисов.