Microphone Permission: innebörd, åtkomsttyper och funktionsprincip

Författare: IT Sectr Publicerad: 2026-05-21 Lästid: 8 min

Microphone Permission — är en systembehörighet som appen behöver för att få åtkomst till enhetens mikrofon. Det krävs för ljudinspelning, röstmeddelanden, videosamtal och taligenkänning. Enligt Apple Developer Documentation, 2024, är alla appar som använder ljudinspelning skyldiga att begära uttryckligt samtycke från användaren via en systemdialogruta.

Huvudpunkter

  • Microphone Permission är en obligatorisk behörighet för alla appar som spelar in ljud på en mobil enhet.
  • Android använder Manifest.permission.RECORD_AUDIO med en begäran vid körning från och med API 23.
  • iOS kräver nyckeln NSMicrophoneUsageDescription i Info.plist och anrop av AVAudioSession.requestRecordPermission.
  • Begäran i ögonblicket när mikrofonen aktiveras (knappen “Spela in röstmeddelande”) ökar chansen för godkännande.
  • Arbete i bakgrunden med mikrofonen kräver ytterligare behörigheter och strikt motivering.

Innebörden av Microphone Permission

Microphone Permission är en integritetsskyddsmekanism som förhindrar obehörig ljudinspelning från enhetens mikrofon. Mobila plattformar klassificerar mikrofonen som en av de mest känsliga resurserna, eftersom ljudinspelning kan fånga privata samtal, omgivningen och konfidentiell information.

Android klassificerar RECORD_AUDIO som en farlig behörighet och iOS kräver obligatorisk tilläggning av nyckeln NSMicrophoneUsageDescription i Info.plist. På båda plattformarna utförs begäran vid körning och användaren kan när som helst återkalla behörigheten via systeminställningarna. Systemindikatorn för inspelning (orange prick på iOS, grön indikator på Android 12+) signalerar till användaren att appen för tillfället använder mikrofonen.

Enligt forskning från Pew Research Center (2024) har 54% av mobilanvändarna minst en gång nekat en app åtkomst till mikrofonen. Den främsta orsaken är att man inte förstår varför appen behöver ljudinspelning. Därför måste utvecklaren förklara syftet med mikrofonanvändningen så transparent som möjligt.

Mikrofonbehörighet på Android

Mikrofonbehörighet på Android begärs genom att deklarera RECORD_AUDIO i manifestet och göra en begäran vid körning i appens kod. Från och med Android 10 regleras åtkomsten till mikrofonen ytterligare av begränsningar för bakgrundsappar.

Deklaration i AndroidManifest.xml

Första steget är att deklarera behörigheten RECORD_AUDIO i manifestfilen. Utan denna deklaration kommer begäran vid körning inte att ha någon effekt och appen kommer inte att få åtkomst till mikrofonen.

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

CAPTURE_AUDIO_OUTPUT är en systembehörighet som inte är tillgänglig för tredjepartsappar. Den används endast av systemappar för att fånga ljudutgång. Vanliga appar behöver bara RECORD_AUDIO för inspelning från mikrofonen.

Begäran vid körning i Kotlin

Efter deklaration i manifestet måste begäran vid körning utföras. Låt oss titta på ett exempel på hur man använder AudioRecord för att spela in ljud från mikrofonen.

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()
    // Spela in ljuddata till buffert
}

Hantering av inspelningsstatus

Det är viktigt att hantera livscykeln för ljudinspelning korrekt. När appen växlar till bakgrundsläge på Android 9 och nyare kan inspelningen från mikrofonen pausas av systemet. Från och med Android 10 är bakgrundsåtkomst till mikrofonen ytterligare begränsad: en app i bakgrunden kan inte påbörja inspelning och aktiv inspelning pausas. För inspelning i bakgrunden krävs MediaProjection eller en Service med notifiering.

Mikrofonbehörighet på iOS

Mikrofonbehörighet på iOS konfigureras via nyckeln NSMicrophoneUsageDescription i Info.plist och anrop av metoden AVAudioSession.requestRecordPermission. Apple kräver obligatorisk angivelse av orsaken till mikrofonanvändning i begärandialogrutan.

Konfiguration av Info.plist

Nyckeln NSMicrophoneUsageDescription är obligatorisk för alla appar som begär åtkomst till mikrofonen. Utan den kommer appen att krångla vid försök att spela in ljud.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Appen behöver åtkomst till mikrofonen för att spela in röstanteckningar och skicka ljudmeddelanden.</string>

Begäran i Swift

Begäran om åtkomst till mikrofonen på iOS utförs via AVAudioSession. Efter att ha fått svar konfigurerar appen ljudsessionen och påbörjar inspelningen.

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

Inspelningsindikator

På iOS 14 och nyare visar en app som använder mikrofonen en orange indikator i statusfältet. Användaren ser vilken app som för tillfället spelar in ljud. Om appen använder mikrofonen i bakgrunden utan giltig anledning kan Apple avvisa uppdateringen. AVAudioSession gör det möjligt att konfigurera kategori och läge för ljudsessionen, vilket bestämmer appens beteende när den växlar till bakgrundsläge.

Scenarier för ljudinspelning

Användningsscenarier för mikrofonen i mobilappar är varierande: från enkel röstinspelning till komplex realtidsbearbetning av ljudströmmar.

Röstmeddelanden och anteckningar

Meddelandetjänster och anteckningsappar använder mikrofonen för att spela in röstmeddelanden. I detta fall begärs Microphone Permission när inspelningsknappen trycks in. Efter inspelningens slut är det viktigt att stoppa ljudsessionen så att andra appar kan använda mikrofonen. AVAudioSession på iOS och AudioManager på Android hanterar ljudfokus.

Taligenkänning

Appar med röstinmatning (sökning, diktamen, röstassistenter) använder mikrofonen i kombination med taligenkännings-API:er. På Android är detta SpeechRecognizer från android.speech, på iOS — SFSpeechRecognizer från Speech framework. För taligenkänning kan ytterligare behörighet för åtkomst till igenkänningstjänster krävas (SPEECH på Android, SFSpeechRecognizer.requestAuthorization på iOS).

Videosamtal och streaming

Appar för videosamtal (WebRTC, Zoom, Telegram) begär Microphone Permission samtidigt som Camera Permission. I detta sammanhang är det viktigt att begära båda behörigheterna sekventiellt, inte samtidigt, för att inte överbelasta användaren med dialogrutor. WebRTC använder getUserMedia för att fånga ljud och video, men på mobila plattformar krävs först systembehörigheter.

Konfiguration av ljudsession

För högkvalitativ inspelning krävs korrekt konfiguration av ljudsessionens parametrar. På iOS möjliggör kategorin .playAndRecord samtidig uppspelning och inspelning av ljud. På Android säkerställer valet AudioSource.MIC inspelning från huvudmikrofonen och AudioSource.VOICE_COMMUNICATION optimerar inspelningen för röstkommunikation. Dessutom kan samplingsfrekvensen 44100 Hz och PCM 16-bitars format konfigureras för att uppnå standard CD-kvalitet.

Hantering av inspelningsavbrott

Under ljudinspelning kan systemavbrott inträffa: inkommande samtal, väckarklocka, notifiering från en annan app. På iOS hanterar AVAudioSessionDelegate beginInterruption och endInterruption. På Android informerar AudioManager.OnAudioFocusChangeListener appen om förlust eller återkomst av ljudfokus. Korrekt hantering av avbrott gör det möjligt att bevara inspelningen vid oväntade händelser och förhindra dataförlust. Det rekommenderas att pausa inspelningen vid fokusförlust och återuppta efter återkomst med meddelande till användaren.

Optimering av ljudinspelning

Optimering av ljudinspelning omfattar konfiguration av samplingsfrekvens, buffertstorlek och kodningsformat. För röstmeddelanden räcker frekvensen 44100 Hz och monokanal. För taligenkänning kan frekvensen 16000 Hz krävas.

På iOS använder du AVAudioSession.setPreferredIOBufferDuration för att konfigurera inspelningsfördröjning. En mindre buffert minskar fördröjningen men ökar CPU-belastningen. På Android returnerar AudioRecord.getMinBufferSize den minsta buffertstorleken för angivna parametrar. Det rekommenderas att använda en buffert som inte är mindre än detta minimum för att förhindra dataförlust under inspelning vid hög systembelastning.

Bästa praxis för att arbeta med mikrofonen

Bästa praxis för att arbeta med Microphone Permission syftar till att öka användarens förtroende och efterlevnad av plattformskraven.

Förklara syftet före inspelning

Innan du begär Microphone Permission, visa en skärm som förklarar varför appen behöver mikrofonen och hur inspelningen kommer att användas. Ange om ljudet skickas till servern eller bearbetas lokalt. Användare är mycket mer benägna att godkänna åtkomst om de förstår att inspelningen inte lämnar enheten. Lokal bearbetning (on-device ASR) är ett starkt argument för förtroende.

Stoppa inspelning i bakgrunden

Om appen inte kräver bakgrundsinspelning av ljud, stoppa mikrofonen när du växlar till bakgrundsläge. Detta sparar inte bara batteri utan förhindrar också negativa reaktioner från användaren som ser inspelningsindikatorn. På iOS använder du UIApplicationDelegate-metoderna applicationDidEnterBackground för att pausa inspelningen. På Android hanterar du onPause och onStop i Activity eller Service.

Använd inspelningsindikatorer

Visa din egen inspelningsindikator (animerad mikrofonikon eller våg) under ljudinspelning. Detta informerar användaren om att mikrofonen är aktiv och minskar risken för negativa reaktioner. Apple och Google rekommenderar att du duplicerar systemindikatorn med ditt eget UI-element för maximal transparens.

Vanliga frågor

Krävs Microphone Permission för uppspelning av ljud?

Nej, mikrofonbehörighet krävs endast för infångning av ljud från mikrofonen. Uppspelning av ljud genom högtalare eller hörlurar kräver inte Microphone Permission. För uppspelning räcker det att konfigurera ljudsessionen på iOS eller AudioTrack på Android.

Hur kontrollerar jag status för Microphone Permission på Android?

Använd ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). Metoden returnerar PackageManager.PERMISSION_GRANTED eller PERMISSION_DENIED. Kontrollera dessutom om mikrofonen är tillgänglig på enheten via PackageManager.hasSystemFeature.

Vad gör jag om användaren har nekat Microphone Permission?

Föreslå ett alternativt scenario: textinmatning istället för röst, skicka meddelande utan ljud, titta på video utan ljud. Om röstfunktionen är kritisk, visa en skärm med instruktioner för att aktivera behörigheten i systeminställningarna och en navigeringsknapp.

Hur fungerar Microphone Permission på Android 12+?

Från och med Android 12 kan en app i bakgrunden inte få åtkomst till mikrofonen. Aktiv inspelning pausas när du växlar till bakgrundsläge. Dessutom har indikatorn Privacy Chip dykt upp — en grön ikon i statusfältet som visar att appen använder mikrofonen.

Varför avvisade App Store appen med Microphone Permission?

De vanligaste orsakerna: saknad av nyckeln NSMicrophoneUsageDescription, ospecifik beskrivning av orsaken (“för att förbättra tjänsten” istället för “för att spela in röstmeddelanden”), begäran om behörighet utan tydlig användaråtgärd eller användning av mikrofonen i bakgrunden utan berättigad funktionalitet.

Sammanfattning

  • Microphone Permission är en systembehörighet för ljudinspelning, obligatorisk på båda mobila plattformarna.
  • Android använder RECORD_AUDIO med begäran vid körning och begränsning av bakgrundsåtkomst från och med Android 10.
  • iOS kräver NSMicrophoneUsageDescription i Info.plist och anrop av AVAudioSession.requestRecordPermission med obligatorisk beskrivning av orsaken.
  • Systemindikatorer (orange prick på iOS, Privacy Chip på Android) informerar användaren om mikrofonaktivitet.
  • Användningsscenarier omfattar röstmeddelanden, taligenkänning, videosamtal och ljudinspelning.
  • Bakgrundsinspelning är strikt begränsad på båda plattformarna och kräver ytterligare behörigheter och motivering.
  • Alternativa scenarier vid nekande (textinmatning, skicka utan ljud) är obligatoriska för att appen ska fungera korrekt.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också