Microphone Permission est une autorisation système nécessaire à une application pour accéder au microphone de l'appareil. Elle est requise pour l'enregistrement audio, les messages vocaux, les appels vidéo et la reconnaissance vocale. Selon la Apple Developer Documentation, 2024, toutes les applications utilisant la capture audio sont tenues de demander le consentement explicite de l'utilisateur via une boîte de dialogue système.
Points clés
Microphone Permission est un mécanisme de protection de la vie privée qui empêche l'enregistrement audio non autorisé depuis le microphone de l'appareil. Les plateformes mobiles considèrent le microphone comme l'une des ressources les plus sensibles, car l'enregistrement audio peut capturer des conversations personnelles, l'environnement environnant et des informations confidentielles.
Android classe RECORD_AUDIO comme une autorisation dangereuse, et iOS exige l'ajout obligatoire de la clé NSMicrophoneUsageDescription dans Info.plist. Sur les deux plateformes, la demande est effectuée à l'exécution et l'utilisateur peut révoquer l'autorisation à tout moment via les paramètres système. L'indicateur système d'enregistrement (point orange sur iOS, indicateur vert sur Android 12+) signale à l'utilisateur que l'application utilise le microphone à ce moment.
Selon une étude du Pew Research Center (2024), 54 % des utilisateurs d'appareils mobiles ont refusé l'accès au microphone à une application au moins une fois. La raison principale est de ne pas comprendre pourquoi l'application a besoin d'enregistrer de l'audio. Par conséquent, le développeur doit expliquer l'objectif de l'utilisation du microphone de la manière la plus transparente possible.
L'autorisation du microphone sur Android est demandée en déclarant RECORD_AUDIO dans le manifeste et en effectuant une demande à l'exécution dans le code de l'application. À partir d'Android 10, l'accès au microphone est en outre réglementé par des restrictions pour les applications en arrière-plan.
La première étape consiste à déclarer l'autorisation RECORD_AUDIO dans le fichier manifeste. Sans cette déclaration, la demande à l'exécution n'aura aucun effet et l'application ne pourra pas accéder au microphone.
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
CAPTURE_AUDIO_OUTPUT est une autorisation système non disponible pour les applications tierces. Elle est utilisée uniquement par les applications système pour capturer la sortie audio. Les applications normales n'ont besoin que de RECORD_AUDIO pour enregistrer avec le microphone.
Après la déclaration dans le manifeste, vous devez effectuer une demande à l'exécution. Considérons un exemple utilisant AudioRecord pour enregistrer l'audio depuis le microphone.
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()
// Enregistrement des données audio dans le tampon
}
Il est important de gérer correctement le cycle de vie de l'enregistrement audio. Lorsque l'application passe en arrière-plan sur Android 9 et supérieur, l'enregistrement du microphone peut être mis en pause par le système. À partir d'Android 10, l'accès au microphone en arrière-plan est en outre restreint : une application en arrière-plan ne peut pas démarrer l'enregistrement et l'enregistrement actif est mis en pause. L'enregistrement en arrière-plan nécessite MediaProjection ou un Service avec notification.
L'autorisation du microphone sur iOS est configurée via la clé NSMicrophoneUsageDescription dans Info.plist et l'appel de la méthode AVAudioSession.requestRecordPermission. Apple exige une explication obligatoire de la raison d'utilisation du microphone dans la boîte de dialogue de demande.
La clé NSMicrophoneUsageDescription est obligatoire pour toute application qui demande l'accès au microphone. Sans elle, l'application plantera lors de la tentative d'enregistrement audio.
<key>NSMicrophoneUsageDescription</key>
<string>L'application a besoin d'accéder au microphone pour enregistrer des notes vocales et envoyer des messages audio.</string>
La demande d'accès au microphone sur iOS s'effectue via AVAudioSession. Après avoir reçu la réponse, l'application configure la session audio et commence l'enregistrement.
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)")
}
}
Sous iOS 14 et supérieur, une application utilisant le microphone affiche un indicateur orange dans la barre d'état. L'utilisateur peut voir quelle application enregistre actuellement de l'audio. Si l'application utilise le microphone en arrière-plan sans raison valable, Apple peut rejeter la mise à jour. AVAudioSession permet de configurer la catégorie et le mode de la session audio, déterminant le comportement de l'application lors du passage en arrière-plan.
Les scénarios d'utilisation du microphone dans les applications mobiles sont variés : de l'enregistrement vocal simple au traitement complexe de flux audio en temps réel.
Les applications de messagerie et de prise de notes utilisent le microphone pour enregistrer des messages vocaux. Dans ce cas, Microphone Permission est demandé lors de l'appui sur le bouton d'enregistrement. Après la fin de l'enregistrement, il est important d'arrêter la session audio pour que d'autres applications puissent utiliser le microphone. AVAudioSession sur iOS et AudioManager sur Android gèrent le focus audio.
Les applications avec saisie vocale (recherche, dictée, assistants vocaux) utilisent le microphone en conjonction avec des API de reconnaissance vocale. Sur Android, il s'agit de SpeechRecognizer d'android.speech, sur iOS — SFSpeechRecognizer du framework Speech. La reconnaissance vocale peut nécessiter une autorisation supplémentaire pour les services de reconnaissance (SPEECH sur Android, SFSpeechRecognizer.requestAuthorization sur iOS).
Les applications d'appels vidéo (WebRTC, Zoom, Telegram) demandent Microphone Permission en même temps que Camera Permission. Dans ce contexte, il est important de demander les deux autorisations séquentiellement, et non simultanément, pour ne pas submerger l'utilisateur de boîtes de dialogue. WebRTC utilise getUserMedia pour la capture audio et vidéo, mais sur les plateformes mobiles, les autorisations système sont d'abord requises.
Pour un enregistrement de qualité, vous devez configurer correctement les paramètres de la session audio. Sur iOS, la catégorie .playAndRecord permet de lire et d'enregistrer le son simultanément. Sur Android, le choix d'AudioSource.MIC assure la capture depuis le microphone principal, tandis qu'AudioSource.VOICE_COMMUNICATION optimise l'enregistrement pour la communication vocale. De plus, vous pouvez définir une fréquence d'échantillonnage de 44100 Hz et un format PCM 16 bits pour une qualité CD standard.
Pendant l'enregistrement audio, des interruptions système peuvent survenir : appel entrant, déclenchement d'alarme, notification d'une autre application. Sur iOS, AVAudioSessionDelegate gère beginInterruption et endInterruption. Sur Android, AudioManager.OnAudioFocusChangeListener notifie l'application de la perte ou du retour du focus audio. Une gestion correcte des interruptions permet de sauvegarder l'enregistrement lors d'événements inattendus et d'éviter la perte de données. Il est recommandé de mettre en pause l'enregistrement lors de la perte de focus et de le reprendre après son retour avec une notification à l'utilisateur.
L'optimisation de la capture audio comprend la configuration de la fréquence d'échantillonnage, de la taille du tampon et du format d'encodage. Pour les messages vocaux, une fréquence de 44100 Hz et un canal mono sont suffisants. Pour la reconnaissance vocale, une fréquence de 16000 Hz peut être nécessaire.
Sur iOS, utilisez AVAudioSession.setPreferredIOBufferDuration pour configurer la latence d'enregistrement. Un tampon plus petit réduit la latence mais augmente la charge du processeur. Sur Android, AudioRecord.getMinBufferSize renvoie la taille minimale du tampon pour les paramètres donnés. Il est recommandé d'utiliser un tampon au moins égal à ce minimum pour éviter la perte de données lors de l'enregistrement sous charge système élevée.
Les bonnes pratiques pour Microphone Permission visent à accroître la confiance de l'utilisateur et à respecter les exigences des plateformes.
Avant de demander Microphone Permission, affichez un écran expliquant pourquoi l'application a besoin du microphone et comment l'enregistrement sera utilisé. Indiquez si l'audio est transmis au serveur ou traité localement. Les utilisateurs sont nettement plus susceptibles d'accorder l'accès s'ils comprennent que l'enregistrement ne quitte pas l'appareil. Le traitement local (ASR sur l'appareil) est un argument fort pour la confiance.
Si l'application ne nécessite pas d'enregistrement audio en arrière-plan, assurez-vous d'arrêter le microphone lors du passage en arrière-plan. Cela permet non seulement d'économiser la batterie, mais aussi d'éviter une réaction négative de l'utilisateur voyant l'indicateur d'enregistrement. Sur iOS, utilisez les méthodes de UIApplicationDelegate applicationDidEnterBackground pour mettre en pause l'enregistrement. Sur Android, gérez onPause et onStop dans l'Activity ou le Service.
Affichez votre propre indicateur d'enregistrement (icône de microphone animée ou forme d'onde) pendant la capture audio. Cela informe l'utilisateur que le microphone est actif et réduit le risque de réaction négative. Apple et Google recommandent de dupliquer l'indicateur système avec votre propre élément d'interface utilisateur pour une transparence maximale.
Questions fréquentes
Non, l'autorisation du microphone n'est requise que pour la capture audio depuis le microphone. La lecture du son via le haut-parleur ou les écouteurs ne nécessite pas Microphone Permission. Pour la lecture, il suffit de configurer la session audio sur iOS ou AudioTrack sur Android.
Utilisez ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). La méthode retourne PackageManager.PERMISSION_GRANTED ou PERMISSION_DENIED. Vérifiez également si le microphone est disponible sur l'appareil via PackageManager.hasSystemFeature.
Proposez un scénario alternatif : saisie textuelle au lieu de la voix, envoi d'un message sans audio, visionnage d'une vidéo sans son. Si la fonction de saisie vocale est critique, affichez un écran avec des instructions sur la façon d'activer l'autorisation dans les paramètres système et un bouton pour y accéder.
À partir d'Android 12, une application en arrière-plan ne peut pas accéder au microphone. L'enregistrement actif est mis en pause lors du passage en arrière-plan. De plus, l'indicateur Privacy Chip est apparu — une icône verte dans la barre d'état montrant qu'une application utilise le microphone.
Les raisons les plus courantes : absence de la clé NSMicrophoneUsageDescription, description non spécifique de la raison (« pour améliorer le service » au lieu de « pour enregistrer des messages vocaux »), demande d'autorisation sans action explicite de l'utilisateur, ou utilisation du microphone en arrière-plan sans fonctionnalité justifiée.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi