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 Hz и формат PCM 16 бита за постигане на стандартно CD качество.

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

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

Оптимизация на заснемането на аудио

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

На 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също