Microphone Permission: podstata, typy přístupu a princip fungování

Autor: IT Sectr Publikováno: 2026-05-21 Doba čtení: 8 min

Microphone Permission — je systémové oprávnění, které aplikace potřebuje pro přístup k mikrofonu zařízení. Je vyžadováno pro nahrávání zvuku, hlasových zpráv, videohovorů a rozpoznávání řeči. Podle Apple Developer Documentation, 2024, všechny aplikace používající záznam zvuku jsou povinny vyžádat výslovný souhlas uživatele prostřednictvím systémového dialogu.

Hlavní body

  • Microphone Permission je povinné oprávnění pro jakoukoli aplikaci nahrávající zvuk na mobilním zařízení.
  • Android používá Manifest.permission.RECORD_AUDIO s žádostí za běhu od API 23.
  • iOS vyžaduje klíč NSMicrophoneUsageDescription v Info.plist a volání AVAudioSession.requestRecordPermission.
  • Žádost v okamžiku aktivace mikrofonu (tlačítko „Nahrát hlasovou zprávu“) zvyšuje šance na schválení.
  • Práce na pozadí s mikrofonem vyžaduje další oprávnění a přísné odůvodnění.

Podstata Microphone Permission

Microphone Permission je mechanismus ochrany soukromí, který zabraňuje neautorizovanému nahrávání zvuku z mikrofonu zařízení. Mobilní platformy klasifikují mikrofon jako jeden z nejcitlivějších zdrojů, protože nahrávání zvuku může zachytit soukromé rozhovory, okolní prostředí a důvěrné informace.

Android klasifikuje RECORD_AUDIO jako nebezpečné oprávnění a iOS vyžaduje povinné přidání klíče NSMicrophoneUsageDescription v Info.plist. Na obou platformách je žádost provedena za běhu a uživatel může kdykoli odvolat oprávnění prostřednictvím systémových nastavení. Systémový indikátor nahrávání (oranžová tečka na iOS, zelený indikátor na Android 12+) signalizuje uživateli, že aplikace aktuálně používá mikrofon.

Podle výzkumu Pew Research Center (2024) 54% uživatelů mobilních zařízení alespoň jednou odmítlo přístup k mikrofonu aplikaci. Hlavním důvodem je nepochopení, proč aplikace potřebuje nahrávání zvuku. Proto musí vývojář co nejtransparentněji vysvětlit účel použití mikrofonu.

Oprávnění k mikrofonu na Androidu

Oprávnění k mikrofonu na Androidu se žádá prostřednictvím deklarace RECORD_AUDIO v manifestu a žádosti za běhu v kódu aplikace. Od Androidu 10 je přístup k mikrofonu dodatečně regulován omezeními pro aplikace na pozadí.

Deklarace v AndroidManifest.xml

Prvním krokem je deklarovat oprávnění RECORD_AUDIO v souboru manifestu. Bez této deklarace nebude žádost za běhu účinná a aplikace nezíská přístup k mikrofonu.

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

CAPTURE_AUDIO_OUTPUT je systémové oprávnění, které není dostupné aplikacím třetích stran. Používá se pouze systémovými aplikacemi pro záznam zvukového výstupu. Běžné aplikace potřebují pouze RECORD_AUDIO pro nahrávání z mikrofonu.

Žádost za běhu v Kotlinu

Po deklaraci v manifestu je třeba provést žádost za běhu. Podívejme se na příklad použití AudioRecord pro nahrávání zvuku z mikrofonu.

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()
    // Nahrávání zvukových dat do bufferu
}

Zpracování stavu nahrávání

Je důležité správně zpracovávat životní cyklus nahrávání zvuku. Když aplikace přejde do režimu na pozadí na Androidu 9 a novějších, nahrávání z mikrofonu může být systémem pozastaveno. Od Androidu 10 je přístup k mikrofonu na pozadí dále omezen: aplikace na pozadí nemůže zahájit nahrávání a aktivní nahrávání je pozastaveno. Pro nahrávání na pozadí je vyžadován MediaProjection nebo Service s upozorněním.

Oprávnění k mikrofonu na iOS

Oprávnění k mikrofonu na iOS se konfiguruje prostřednictvím klíče NSMicrophoneUsageDescription v Info.plist a volání metody AVAudioSession.requestRecordPermission. Apple vyžaduje povinné uvedení důvodu použití mikrofonu v dialogu žádosti.

Konfigurace Info.plist

Klíč NSMicrophoneUsageDescription je povinný pro jakoukoli aplikaci, která žádá o přístup k mikrofonu. Bez něj aplikace spadne při pokusu o nahrávání zvuku.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Aplikace potřebuje přístup k mikrofonu pro nahrávání hlasových poznámek a odesílání zvukových zpráv.</string>

Žádost ve Swiftu

Žádost o přístup k mikrofonu na iOS se provádí prostřednictvím AVAudioSession. Po obdržení odpovědi aplikace nakonfiguruje audio relaci a zahájí nahrávání.

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)")
    }
}

Indikátor nahrávání

Na iOS 14 a novějších aplikace používající mikrofon zobrazuje oranžový indikátor ve stavovém řádku. Uživatel vidí, která aplikace aktuálně nahrává zvuk. Pokud aplikace používá mikrofon na pozadí bez platného důvodu, Apple může aktualizaci odmítnout. AVAudioSession umožňuje konfigurovat kategorii a režim audio relace, čímž určuje chování aplikace při přechodu do režimu na pozadí.

Scénáře záznamu zvuku

Scénáře použití mikrofonu v mobilních aplikacích jsou různorodé: od jednoduchého nahrávání hlasu po složité zpracování audio streamu v reálném čase.

Hlasové zprávy a poznámky

Messengery a aplikace pro poznámky používají mikrofon pro nahrávání hlasových zpráv. V tomto případě se Microphone Permission žádá při stisknutí tlačítka nahrávání. Po dokončení nahrávání je důležité zastavit audio relaci, aby ostatní aplikace mohly používat mikrofon. AVAudioSession na iOS a AudioManager na Androidu spravují audio fokus.

Rozpoznávání řeči

Aplikace s hlasovým vstupem (vyhledávání, diktování, hlasoví asistenti) používají mikrofon v kombinaci s API pro rozpoznávání řeči. Na Androidu je to SpeechRecognizer z android.speech, na iOS — SFSpeechRecognizer ze Speech frameworku. Pro rozpoznávání řeči může být vyžadováno další oprávnění pro přístup ke službám rozpoznávání (SPEECH na Androidu, SFSpeechRecognizer.requestAuthorization na iOS).

Videohovory a streamování

Aplikace pro videohovory (WebRTC, Zoom, Telegram) žádají Microphone Permission současně s Camera Permission. V tomto kontextu je důležité žádat o obě oprávnění postupně, nikoli současně, aby nebyl uživatel zahlcen dialogy. WebRTC používá getUserMedia pro záznam zvuku a videa, ale na mobilních platformách jsou nejprve vyžadována systémová oprávnění.

Konfigurace audio relace

Pro kvalitní nahrávání je třeba správně nakonfigurovat parametry audio relace. Na iOS kategorie .playAndRecord umožňuje současné přehrávání a nahrávání zvuku. Na Androidu výběr AudioSource.MIC zajišťuje záznam z hlavního mikrofonu a AudioSource.VOICE_COMMUNICATION optimalizuje nahrávání pro hlasovou komunikaci. Dodatečně lze nakonfigurovat vzorkovací frekvenci 44100 Hz a formát PCM 16 bitů pro dosažení standardní kvality CD.

Zpracování přerušení nahrávání

Během nahrávání zvuku mohou nastat systémová přerušení: příchozí hovor, budík, upozornění z jiné aplikace. Na iOS AVAudioSessionDelegate zpracovává beginInterruption a endInterruption. Na Androidu AudioManager.OnAudioFocusChangeListener informuje aplikaci o ztrátě nebo návratu audio fokusu. Správné zpracování přerušení umožňuje zachovat nahrávku při neočekávaných událostech a zabránit ztrátě dat. Doporučuje se pozastavit nahrávání při ztrátě fokusu a obnovit po jeho návratu s upozorněním uživatele.

Optimalizace záznamu zvuku

Optimalizace záznamu zvuku zahrnuje konfiguraci vzorkovací frekvence, velikosti bufferu a formátu kódování. Pro hlasové zprávy stačí frekvence 44100 Hz a mono kanál. Pro rozpoznávání řeči může být vyžadována frekvence 16000 Hz.

Na iOS použijte AVAudioSession.setPreferredIOBufferDuration pro konfiguraci zpoždění nahrávání. Menší buffer snížuje zpoždění, ale zvyšuje zatížení procesoru. Na Androidu AudioRecord.getMinBufferSize vrací minimální velikost bufferu pro zadané parametry. Doporučuje se používat buffer ne menší než toto minimum, aby se předešlo ztrátě dat během nahrávání při vysokém zatížení systému.

Nejlepší postupy práce s mikrofonem

Nejlepší postupy práce s Microphone Permission jsou zaměřeny na zvýšení důvěry uživatele a soulad s požadavky platformy.

Vysvětlete účel před nahráváním

Před žádostí o Microphone Permission zobrazte obrazovku, na které vysvětlíte, proč aplikace potřebuje mikrofon a jak bude nahrávka použita. Uveďte, zda je zvuk odesílán na server nebo zpracován lokálně. Uživatelé mnohem častěji souhlasí s přístupem, pokud chápou, že nahrávka neopouští zařízení. Lokální zpracování (on-device ASR) je silným argumentem pro důvěru.

Zastavte nahrávání na pozadí

Pokud aplikace nevyžaduje nahrávání zvuku na pozadí, nezapomeňte zastavit mikrofon při přechodu do režimu na pozadí. To nejen šetří baterii, ale také brání negativní reakci uživatele, který vidí indikátor nahrávání. Na iOS použijte metody UIApplicationDelegate applicationDidEnterBackground pro pozastavení nahrávání. Na Androidu zpracovávejte onPause a onStop v Activity nebo Service.

Používejte indikátory nahrávání

Zobrazujte vlastní indikátor nahrávání (animovanou ikonu mikrofonu nebo vlnu) během záznamu zvuku. To informuje uživatele, že mikrofon je aktivní, a snižuje riziko negativní reakce. Apple a Google doporučují duplikovat systémový indikátor vlastním prvkem UI pro maximální transparentnost.

Často kladené otázky

Je Microphone Permission nutné pro přehrávání zvuku?

Ne, oprávnění k mikrofonu je vyžadováno pouze pro záznam zvuku z mikrofonu. Přehrávání zvuku reproduktorem nebo sluchátky nevyžaduje Microphone Permission. Pro přehrávání stačí nakonfigurovat audio relaci na iOS nebo AudioTrack na Androidu.

Jak zkontrolovat stav Microphone Permission na Androidu?

Použijte ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). Metoda vrací PackageManager.PERMISSION_GRANTED nebo PERMISSION_DENIED. Dodatečně zkontrolujte, zda je mikrofon k dispozici na zařízení pomocí PackageManager.hasSystemFeature.

Co dělat, pokud uživatel odmítl Microphone Permission?

Nabídněte alternativní scénář: textový vstup místo hlasového, odeslání zprávy bez zvuku, sledování videa bez zvuku. Pokud je hlasová funkce kritická, zobrazte obrazovku s návodem na povolení oprávnění v systémových nastaveních a tlačítkem pro přechod.

Jak funguje Microphone Permission na Android 12+?

Od Androidu 12 aplikace na pozadí nemůže získat přístup k mikrofonu. Aktivní nahrávání je pozastaveno při přechodu do režimu na pozadí. Kromě toho se objevil indikátor Privacy Chip — zelená ikona ve stavovém řádku, která ukazuje, že aplikace používá mikrofon.

Proč App Store odmítl aplikaci s Microphone Permission?

Nejčastější důvody: chybějící klíč NSMicrophoneUsageDescription, nespecifický popis důvodu („pro nahrávání hlasových zpráv“ místo „pro zlepšení služby“), žádost o oprávnění bez výslovné akce uživatele nebo používání mikrofonu na pozadí bez odůvodněné funkčnosti.

Shrnutí

  • Microphone Permission je systémové oprávnění pro záznam zvuku, povinné na obou mobilních platformách.
  • Android používá RECORD_AUDIO s žádostí za běhu a omezením přístupu na pozadí od Androidu 10.
  • iOS vyžaduje NSMicrophoneUsageDescription v Info.plist a volání AVAudioSession.requestRecordPermission s povinným popisem důvodu.
  • Systémové indikátory (oranžová tečka na iOS, Privacy Chip na Androidu) informují uživatele o aktivitě mikrofonu.
  • Scénáře použití zahrnují hlasové zprávy, rozpoznávání řeči, videohovory a nahrávání zvuku.
  • Nahrávání na pozadí je přísně omezeno na obou platformách a vyžaduje další oprávnění a odůvodnění.
  • Alternativní scénáře při odmítnutí (textový vstup, odeslání bez zvuku) jsou povinné pro správnou funkci aplikace.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také