Microphone Permission: esenţa, tipurile de acces şi principiul de funcţionare

Autor: IT Sectr Publicat: 2026-05-21 Timp de citire: 8 min

Microphone Permission este o permisiune de sistem necesară aplicației pentru a accesa microfonul dispozitivului. Este necesară pentru înregistrarea audio, mesaje vocale, apeluri video și recunoaștere vocală. Conform Apple Developer Documentation, 2024, toate aplicațiile care utilizează captura audio sunt obligate să solicite consimțământul explicit al utilizatorului printr-un dialog de sistem.

Principalele

  • Microphone Permission este o permisiune obligatorie pentru orice aplicație care înregistrează audio pe un dispozitiv mobil.
  • Android utilizează Manifest.permission.RECORD_AUDIO cu solicitare la runtime începând cu API 23.
  • iOS necesită cheia NSMicrophoneUsageDescription în Info.plist și apelul AVAudioSession.requestRecordPermission.
  • Solicitarea în momentul activării microfonului (butonul „Înregistrează mesaj vocal") crește șansele de aprobare.
  • Lucrul în fundal cu microfonul necesită permisiuni suplimentare și justificare strictă.

Esența Microphone Permission

Microphone Permission este un mecanism de protecție a confidențialității care previne înregistrarea neautorizată a audio de la microfonul dispozitivului. Platformele mobile consideră microfonul una dintre cele mai sensibile resurse, deoarece înregistrarea sunetului poate capta conversații personale, mediul înconjurător și informații confidențiale.

Android clasifică RECORD_AUDIO ca permisiune periculoasă, iar iOS necesită adăugarea obligatorie a cheii NSMicrophoneUsageDescription în Info.plist. Pe ambele platforme, solicitarea se execută la runtime, iar utilizatorul poate oricând revoca permisiunea prin setările sistemului. Indicatorul de sistem al înregistrării (punct portocaliu pe iOS, indicator verde pe Android 12+) semnalează utilizatorului că aplicația folosește microfonul în acel moment.

Conform studiului Pew Research Center (2024), 54% dintre utilizatorii de dispozitive mobile au refuzat cel puțin o dată accesul la microfon unei aplicații. Motivul principal — neînțelegerea scopului pentru care aplicația are nevoie de înregistrare audio. Prin urmare, dezvoltatorul trebuie să explice cât mai transparent scopul utilizării microfonului.

Permisiunea microfonului pe Android

Permisiunea microfonului pe Android se solicită prin declararea RECORD_AUDIO în manifest și solicitarea la runtime în codul aplicației. Începând cu Android 10, accesul la microfon este suplimentar reglementat de restricții pentru aplicațiile de fundal.

Declararea în AndroidManifest.xml

Primul pas este declararea permisiunii RECORD_AUDIO în fișierul manifest. Fără această declarație, solicitarea la runtime nu va avea efect, iar aplicația nu va putea accesa microfonul.

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

CAPTURE_AUDIO_OUTPUT este o permisiune de sistem indisponibilă aplicațiilor terțe. Este folosită doar de aplicațiile de sistem pentru capturarea ieșirii audio. Aplicațiile obișnuite au nevoie doar de RECORD_AUDIO pentru înregistrarea de la microfon.

Solicitarea la runtime în Kotlin

După declararea în manifest, trebuie executată solicitarea la runtime. Să analizăm un exemplu de utilizare a AudioRecord pentru înregistrarea audio de la microfon.

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()
    // Înregistrarea datelor audio în buffer
}

Gestionarea stării de înregistrare

Este important să gestionați corect ciclul de viață al înregistrării audio. Când aplicația trece în modul fundal pe Android 9 și versiuni ulterioare, înregistrarea de la microfon poate fi suspendată de sistem. Începând cu Android 10, accesul la microfon în fundal este suplimentar restricționat: aplicația în fundal nu poate începe înregistrarea, iar înregistrarea activă este suspendată. Pentru înregistrarea în fundal este necesar MediaProjection sau un Service cu notificare.

Permisiunea microfonului pe iOS

Permisiunea microfonului pe iOS se configurează prin cheia NSMicrophoneUsageDescription în Info.plist și apelul metodei AVAudioSession.requestRecordPermission. Apple solicită indicarea obligatorie a motivului utilizării microfonului în dialogul de solicitare.

Configurarea Info.plist

Cheia NSMicrophoneUsageDescription este obligatorie pentru orice aplicație care solicită acces la microfon. Fără ea, aplicația se va bloca la încercarea de înregistrare audio.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Aplicaţia are nevoie de acces la microfon pentru înregistrarea notiţelor vocale şi trimiterea mesajelor audio.</string>

Solicitarea în Swift

Solicitarea accesului la microfon pe iOS se execută prin AVAudioSession. După primirea răspunsului, aplicația configurează sesiunea audio și începe înregistrarea.

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

Indicatorul de înregistrare

Pe iOS 14 și versiuni ulterioare, aplicația care folosește microfonul afișează un indicator portocaliu în bara de stare. Utilizatorul vede ce aplicație înregistrează audio în acel moment. Dacă aplicația folosește microfonul în fundal fără un motiv întemeiat, Apple poate respinge actualizarea. AVAudioSession permite configurarea categoriei și modului sesiunii audio, determinând comportamentul aplicației la trecerea în modul fundal.

Scenarii de captură audio

Scenariile de utilizare a microfonului în aplicațiile mobile sunt variate: de la simpla înregistrare a vocii până la procesarea complexă a fluxului audio în timp real.

Mesaje vocale și notițe

Mesageriile și aplicațiile de notițe folosesc microfonul pentru înregistrarea mesajelor vocale. În acest caz, Microphone Permission se solicită la apăsarea butonului de înregistrare. După finalizarea înregistrării, este important să opriți sesiunea audio pentru ca alte aplicații să poată folosi microfonul. AVAudioSession pe iOS și AudioManager pe Android gestionează focalizarea audio.

Recunoașterea vorbirii

Aplicațiile cu introducere vocală (căutare, dictare, asistenți vocali) folosesc microfonul împreună cu API-ul de recunoaștere a vorbirii. Pe Android este SpeechRecognizer din android.speech, pe iOS — SFSpeechRecognizer din Speech framework. Pentru recunoașterea vorbirii poate fi necesară o permisiune suplimentară de acces la serviciile de recunoaștere (SPEECH pe Android, SFSpeechRecognizer.requestAuthorization pe iOS).

Apeluri video și streaming

Aplicațiile pentru apeluri video (WebRTC, Zoom, Telegram) solicită Microphone Permission simultan cu Camera Permission. În acest context, este important să solicitați ambele permisiuni secvențial, nu simultan, pentru a nu copleși utilizatorul cu dialoguri. WebRTC utilizează getUserMedia pentru captura audio și video, dar pe platformele mobile sunt necesare permisiunile de sistem în prealabil.

Configurarea sesiunii audio

Pentru o înregistrare de calitate, este necesară configurarea corectă a parametrilor sesiunii audio. Pe iOS, categoria .playAndRecord permite redarea și înregistrarea simultană a sunetului. Pe Android, selectarea AudioSource.MIC asigură captura de la microfonul principal, iar AudioSource.VOICE_COMMUNICATION optimizează înregistrarea pentru comunicarea vocală. Adițional, se poate configura frecvența de eșantionare 44100 Hz și formatul PCM 16 biți pentru a atinge calitatea standard CD.

Gestionarea întreruperilor înregistrării

În timpul înregistrării audio pot apărea întreruperi de sistem: apel primit, alarmă, notificare de la altă aplicație. Pe iOS, AVAudioSessionDelegate gestionează beginInterruption și endInterruption. Pe Android, AudioManager.OnAudioFocusChangeListener notifică aplicația despre pierderea sau redobândirea focalizării audio. Gestionarea corectă a întreruperilor permite păstrarea înregistrării la evenimente neașteptate și evitarea pierderii de date. Se recomandă suspendarea înregistrării la pierderea focalizării și reluarea după redobândirea acesteia cu notificarea utilizatorului.

Optimizarea capturii audio

Optimizarea capturii audio include configurarea frecvenței de eșantionare, dimensiunii bufferului și formatului de codare. Pentru mesajele vocale este suficientă frecvența 44100 Hz și canalul mono. Pentru recunoașterea vorbirii poate fi necesară frecvența 16000 Hz.

Pe iOS utilizați AVAudioSession.setPreferredIOBufferDuration pentru configurarea întârzierii de înregistrare. Un buffer mai mic reduce întârzierea, dar crește încărcarea procesorului. Pe Android, AudioRecord.getMinBufferSize returnează dimensiunea minimă a bufferului pentru parametrii specificați. Se recomandă utilizarea unui buffer nu mai mic decât acest minim pentru a preveni pierderea datelor în timpul înregistrării în condiții de încărcare ridicată a sistemului.

Cele mai bune practici cu microfonul

Cele mai bune practici de lucru cu Microphone Permission au scopul de a crește încrederea utilizatorului și conformitatea cu cerințele platformelor.

Explicați scopul înainte de înregistrare

Înainte de a solicita Microphone Permission, afișați un ecran pe care să explicați de ce aplicația are nevoie de microfon și cum va fi utilizată înregistrarea. Indicați dacă audio este transmis pe server sau procesat local. Utilizatorii sunt mult mai dispuși să accepte accesul dacă înțeleg că înregistrarea nu părăsește dispozitivul. Procesarea locală (on-device ASR) este un argument puternic pentru încredere.

Opriți înregistrarea în fundal

Dacă aplicația nu necesită înregistrare audio în fundal, opriți microfonul la trecerea în modul fundal. Acest lucru nu doar economisește bateria, dar și previne reacția negativă a utilizatorului care vede indicatorul de înregistrare. Pe iOS utilizați metodele UIApplicationDelegate applicationDidEnterBackground pentru suspendarea înregistrării. Pe Android gestionați onPause și onStop în Activity sau Service.

Utilizați indicatoare de înregistrare

Afișați propriul indicator de înregistrare (pictograma animată a microfonului sau undă) în timpul capturii audio. Acesta informează utilizatorul că microfonul este activ și reduce riscul unei reacții negative. Apple și Google recomandă duplicarea indicatorului de sistem cu propriul element UI pentru maximă transparență.

Întrebări frecvente

Este necesar Microphone Permission pentru redarea sunetului?

Nu, permisiunea microfonului este necesară doar pentru captura audio de la microfon. Redarea sunetului prin difuzor sau căști nu necesită Microphone Permission. Pentru redare este suficientă configurarea sesiunii audio pe iOS sau AudioTrack pe Android.

Cum verific starea Microphone Permission pe Android?

Utilizați ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). Metoda returnează PackageManager.PERMISSION_GRANTED sau PERMISSION_DENIED. Adițional, verificați dacă microfonul este disponibil pe dispozitiv prin PackageManager.hasSystemFeature.

Ce fac dacă utilizatorul a refuzat Microphone Permission?

Propuneți un scenariu alternativ: introducere text în loc de vocală, trimiterea mesajului fără audio, vizionarea video fără sunet. Dacă funcția vocală este critică, afișați un ecran cu instrucțiuni de activare a permisiunii în setările de sistem și un buton de navigare.

Cum funcționează Microphone Permission pe Android 12+?

Începând cu Android 12, aplicația în fundal nu poate accesa microfonul. Înregistrarea activă este suspendată la trecerea în modul fundal. În plus, a apărut indicatorul Privacy Chip — o pictogramă verde în bara de stare care arată că aplicația folosește microfonul.

De ce a respins App Store aplicația cu Microphone Permission?

Cele mai frecvente motive: lipsa cheii NSMicrophoneUsageDescription, descrierea nespecifică a motivului („pentru înregistrarea mesajelor vocale" în loc de „pentru îmbunătățirea serviciului"), solicitarea permisiunii fără o acțiune explicită a utilizatorului sau utilizarea microfonului în fundal fără funcționalitate justificată.

Rezumat

  • Microphone Permission este o permisiune de sistem pentru captura audio, obligatorie pe ambele platforme mobile.
  • Android utilizează RECORD_AUDIO cu solicitare la runtime și restricție de acces în fundal începând cu Android 10.
  • iOS necesită NSMicrophoneUsageDescription în Info.plist și apelul AVAudioSession.requestRecordPermission cu descrierea obligatorie a motivului.
  • Indicatorii de sistem (punct portocaliu pe iOS, Privacy Chip pe Android) informează utilizatorul despre activitatea microfonului.
  • Scenariile de utilizare includ mesaje vocale, recunoașterea vorbirii, apeluri video și înregistrare audio.
  • Înregistrarea în fundal este strict restricționată pe ambele platforme și necesită permisiuni suplimentare și justificare.
  • Scenariile alternative la refuz (introducere text, trimitere fără audio) sunt obligatorii pentru funcționarea corectă a aplicației.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și