Microphone Permission: суть, типы доступа и принцип работы

Автор: IT Sectr Опубликовано: 2026-05-21 Время чтения: 8 мин

Microphone Permission — это системное разрешение, необходимое приложению для доступа к микрофону устройства. Оно требуется для записи аудио, голосовых сообщений, видеозвонков и распознавания речи. По данным Apple Developer Documentation, 2024, все приложения, использующие аудиозахват, обязаны запрашивать явное согласие пользователя через системный диалог.

Главное

  • Microphone Permission — обязательное разрешение для любого приложения, записывающего аудио на мобильном устройстве.
  • Android использует Manifest.permission.RECORD_AUDIO с рантайм-запросом начиная с API 23.
  • iOS требует ключ NSMicrophoneUsageDescription в Info.plist и вызова AVAudioSession.requestRecordPermission.
  • Запрос в момент активации микрофона (кнопка «Записать голосовое сообщение») повышает шансы на одобрение.
  • Работа в фоне с микрофоном требует дополнительных разрешений и строгого обоснования.

Суть Microphone Permission

Microphone Permission — это механизм защиты конфиденциальности, который предотвращает несанкционированную запись аудио с микрофона устройства. Мобильные платформы относят микрофон к наиболее чувствительным ресурсам, поскольку запись звука может захватывать личные разговоры, окружающую обстановку и конфиденциальную информацию.

Android классифицирует RECORD_AUDIO как опасное разрешение, а iOS требует обязательного добавления ключа NSMicrophoneUsageDescription в Info.plist. На обеих платформах запрос выполняется в рантайме, а пользователь может в любой момент отозвать разрешение через системные настройки. Системный индикатор записи (оранжевая точка на iOS, зелёный индикатор на Android 12+) сигнализирует пользователю о том, что приложение использует микрофон в данный момент.

По данным исследования Pew Research Center (2024), 54% пользователей мобильных устройств хотя бы раз отказывали приложению в доступе к микрофону. Основная причина — непонимание, зачем приложению запись аудио. Поэтому разработчику необходимо максимально прозрачно объяснять цель использования микрофона.

Разрешение на микрофон на Android

Разрешение на микрофон на Android запрашивается через объявление RECORD_AUDIO в манифесте и рантайм-запрос в коде приложения. Начиная с Android 10, доступ к микрофону дополнительно регулируется ограничениями для фоновых приложений.

Объявление в AndroidManifest.xml

Первый шаг — объявить разрешение RECORD_AUDIO в файле манифеста. Без этого объявления рантайм-запрос не будет иметь эффекта, и приложение не сможет получить доступ к микрофону.

xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />

CAPTURE_AUDIO_OUTPUT — это системное разрешение, недоступное сторонним приложениям. Оно используется только системными приложениями для захвата аудиовыхода. Обычным приложениям достаточно RECORD_AUDIO для записи с микрофона.

Рантайм-запрос на Kotlin

После объявления в манифесте необходимо выполнить рантайм-запрос. Рассмотрим пример с использованием AudioRecord для записи аудио с микрофона.

kotlin
private val recordAudioPermission =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        startRecording()
    } else {
        showMicrophoneExplanation()
    }
}

fun startRecording() {
    val sampleRate = 44100
    val bufferSize = AudioRecord.getMinBufferSize(sampleRate,
        AudioFormat.CHANNEL_IN_MONO,
        AudioFormat.ENCODING_PCM_16BIT)
    val recorder = AudioRecord(MediaRecorder.AudioSource.MIC,
        sampleRate, AudioFormat.CHANNEL_IN_MONO,
        AudioFormat.ENCODING_PCM_16BIT, bufferSize)
    recorder.startRecording()
    // Запись аудиоданных в буфер
}

Обработка состояния записи

Важно корректно обрабатывать жизненный цикл записи аудио. При переходе приложения в фоновый режим на Android 9 и выше запись с микрофона может быть приостановлена системой. Начиная с Android 10, фоновый доступ к микрофону дополнительно ограничен: приложение в фоне не может начать запись, а активная запись приостанавливается. Для фоновой записи требуется MediaProjection или Service с уведомлением.

Разрешение на микрофон на iOS

Разрешение на микрофон на iOS настраивается через ключ NSMicrophoneUsageDescription в Info.plist и вызов метода AVAudioSession.requestRecordPermission. Apple требует обязательного указания причины использования микрофона в диалоге запроса.

Настройка Info.plist

Ключ NSMicrophoneUsageDescription обязателен для любого приложения, которое запрашивает доступ к микрофону. Без него приложение аварийно завершится при попытке записи аудио.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Приложению нужен доступ к микрофону для записи голосовых заметок и отправки аудиосообщений.</string>

Запрос на Swift

Запрос доступа к микрофону на iOS выполняется через AVAudioSession. После получения ответа приложение настраивает аудиосессию и начинает запись.

swift
import AVFAudio

func requestMicrophoneAccess() {
    AVAudioSession.sharedInstance().requestRecordPermission { granted in
        DispatchQueue.main.async {
            if granted {
                self.configureAudioSession()
                self.startAudioRecording()
            } else {
                self.redirectToSettings()
            }
        }
    }
}

private func configureAudioSession() {
    let session = AVAudioSession.sharedInstance()
    do {
        try session.setCategory(.playAndRecord, mode: .default)
        try session.setActive(true)
    } catch {
        print("Audio session error: \(error)")
    }
}

Индикатор записи

На iOS 14 и выше приложение, использующее микрофон, отображает оранжевый индикатор в строке состояния. Пользователь видит, какое приложение в данный момент записывает аудио. Если приложение использует микрофон в фоне без веской причины, Apple может отклонить обновление. AVAudioSession позволяет настроить категорию и режим аудиосессии, определяя поведение приложения при переходе в фоновый режим.

Сценарии захвата аудио

Сценарии использования микрофона в мобильных приложениях разнообразны: от простой записи голоса до сложной обработки аудиопотока в реальном времени.

Голосовые сообщения и заметки

Мессенджеры и приложения для заметок используют микрофон для записи голосовых сообщений. В этом случае Microphone Permission запрашивается при нажатии кнопки записи. После завершения записи важно остановить аудиосессию, чтобы другие приложения могли использовать микрофон. AVAudioSession на iOS и AudioManager на Android управляют фокусом аудио.

Распознавание речи

Приложения с голосовым вводом (поиск, диктовка, голосовые помощники) используют микрофон в связке с API распознавания речи. На Android это SpeechRecognizer из android.speech, на iOS — SFSpeechRecognizer из Speech framework. Для распознавания речи может потребоваться дополнительное разрешение на доступ к сервисам распознавания (SPEECH на Android, SFSpeechRecognizer.requestAuthorization на iOS).

Видеозвонки и стриминг

Приложения для видеозвонков (WebRTC, Zoom, Telegram) запрашивают Microphone Permission одновременно с Camera Permission. В этом контексте важно запрашивать оба разрешения последовательно, а не одновременно, чтобы пользователь не был перегружен диалогами. WebRTC использует getUserMedia для захвата аудио и видео, но на мобильных платформах предварительно требуются системные разрешения.

Настройка аудиосессии конфигурации

Для качественной записи требуется правильно настроить параметры аудиосессии. На iOS категория .playAndRecord позволяет одновременно воспроизводить и записывать звук. На Android выбор AudioSource.MIC обеспечивает захват с основного микрофона, а AudioSource.VOICE_COMMUNICATION оптимизирует запись для голосовой связи. Дополнительно можно настроить частоту дискретизации 44100 Гц и формат PCM 16 бит для достижения стандартного качества CD.

Обработка прерываний записи

При записи аудио могут возникать системные прерывания: входящий звонок, срабатывание будильника, уведомление от другого приложения. На iOS AVAudioSessionDelegate обрабатывает beginInterruption и endInterruption. На Android AudioManager.OnAudioFocusChangeListener уведомляет приложение о потере или возврате аудиофокуса. Корректная обработка прерываний позволяет сохранить запись при неожиданных событиях и избежать потери данных. Рекомендуется приостанавливать запись при потере фокуса и возобновлять после его возврата с уведомлением пользователя.

Оптимизация захвата аудио

Оптимизация захвата аудио включает настройку частоты дискретизации, размера буфера и формата кодирования. Для голосовых сообщений достаточно частоты 44100 Гц и моно-канала. Для распознавания речи может потребоваться частота 16000 Гц.

На iOS используйте AVAudioSession.setPreferredIOBufferDuration для настройки задержки записи. Меньший буфер снижает задержку, но увеличивает нагрузку на процессор. На Android AudioRecord.getMinBufferSize возвращает минимальный размер буфера для заданных параметров. Рекомендуется использовать буфер не менее этого минимума для предотвращения потери данных при записи в условиях высокой нагрузки на систему.

Лучшие практики работы с микрофоном

Лучшие практики работы с Microphone Permission направлены на повышение доверия пользователя и соответствие требованиям платформ.

Объясняйте цель до записи

Перед запросом Microphone Permission покажите экран, на котором объясните, зачем приложению микрофон и как будет использоваться запись. Укажите, передаётся ли аудио на сервер или обрабатывается локально. Пользователи значительно чаще соглашаются на доступ, если понимают, что запись не покидает устройство. Локальная обработка (on-device ASR) — сильный аргумент в пользу доверия.

Прекращайте запись при фоне

Если приложение не требует фоновой записи аудио, обязательно останавливайте микрофон при переходе в фоновый режим. Это не только экономит батарею, но и предотвращает негативную реакцию пользователя, увидевшего индикатор записи. На iOS используете UIApplicationDelegate методы applicationDidEnterBackground для приостановки записи. На Android обрабатывайте onPause и onStop в Activity или Service.

Используйте индикаторы записи

Показывайте собственный индикатор записи (анимированную иконку микрофона или волну) во время захвата аудио. Это информирует пользователя о том, что микрофон активен, и снижает риск негативной реакции. Apple и Google рекомендуют дублировать системный индикатор собственным UI-элементом для максимальной прозрачности.

Часто задаваемые вопросы

Нужно ли Microphone Permission для воспроизведения звука?

Нет, разрешение на микрофон требуется только для захвата аудио с микрофона. Воспроизведение звука через динамик или наушники не требует Microphone Permission. Для воспроизведения достаточно настроить аудиосессию на iOS или AudioTrack на Android.

Как проверить статус Microphone Permission на Android?

Используйте ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). Метод возвращает PackageManager.PERMISSION_GRANTED или PERMISSION_DENIED. Дополнительно проверьте, доступен ли микрофон на устройстве через PackageManager.hasSystemFeature.

Что делать, если пользователь отказал в Microphone Permission?

Предложите альтернативный сценарий: текстовый ввод вместо голосового, отправка сообщения без аудио, просмотр видео без звука. Если функция голосового ввода критична, покажите экран с инструкцией по включению разрешения в системных настройках и кнопкой перехода.

Как работает Microphone Permission на Android 12+?

Начиная с Android 12, приложение в фоне не может получить доступ к микрофону. Активная запись приостанавливается при переходе в фоновый режим. Кроме того, появился индикатор Privacy Chip — зелёная иконка в строке состояния, показывающая, что приложение использует микрофон.

Почему App Store отклонил приложение с Microphone Permission?

Наиболее частые причины: отсутствие ключа NSMicrophoneUsageDescription, неконкретное описание причины («для улучшения сервиса» вместо «для записи голосовых сообщений»), запрос разрешения без явного действия пользователя или использование микрофона в фоне без обоснованной функциональности.

Итоги

  • Microphone Permission — системное разрешение для захвата аудио, обязательное на обеих мобильных платформах.
  • Android использует RECORD_AUDIO с рантайм-запросом и ограничением фонового доступа начиная с Android 10.
  • iOS требует NSMicrophoneUsageDescription в Info.plist и вызова AVAudioSession.requestRecordPermission с обязательным описанием причины.
  • Системные индикаторы (оранжевая точка на iOS, Privacy Chip на Android) информируют пользователя об активности микрофона.
  • Сценарии использования включают голосовые сообщения, распознавание речи, видеозвонки и аудиозапись.
  • Фоновая запись строго ограничена на обеих платформах и требует дополнительных разрешений и обоснования.
  • Альтернативные сценарии при отказе (текстовый ввод, отправка без аудио) обязательны для корректной работы приложения.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также