Microphone Permission: özü, erişim türleri ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-05-21 Okuma süresi: 8 dk

Microphone Permission, bir uygulamanın cihaz mikrofonuna erişmesi için gerekli olan bir sistem iznidir. Ses kaydı, sesli mesajlar, görüntülü aramalar ve konuşma tanıma için gereklidir. Apple Developer Documentation, 2024'e göre, ses yakalama kullanan tüm uygulamalar, bir sistem diyalogu aracılığıyla kullanıcının açık onayını almak zorundadır.

Önemli Noktalar

  • Microphone Permission, mobil cihazda ses kaydeden her uygulama için zorunlu bir izindir.
  • Android, API 23'ten itibaren çalışma zamanı talebiyle Manifest.permission.RECORD_AUDIO kullanır.
  • iOS, Info.plist'te NSMicrophoneUsageDescription anahtarı ve AVAudioSession.requestRecordPermission çağrısı gerektirir.
  • Mikrofon etkinleştirme anında talep (“Sesli mesaj kaydet” düğmesi) onay alma şansını artırır.
  • Mikrofonla arka planda çalışma ek izinler ve sıkı gerekçelendirme gerektirir.

Microphone Permission'ın Özü

Microphone Permission, cihazın mikrofonundan yetkisiz ses kaydını önleyen bir gizlilik koruma mekanizmasıdır. Mobil platformlar, mikrofonu en hassas kaynaklardan biri olarak kabul eder çünkü ses kaydı kişisel konuşmaları, çevredeki ortamı ve gizli bilgileri yakalayabilir.

Android, RECORD_AUDIO'yu tehlikeli bir izin olarak sınıflandırır ve iOS, Info.plist'e NSMicrophoneUsageDescription anahtarının zorunlu olarak eklenmesini gerektirir. Her iki platformda da talep çalışma zamanında yapılır ve kullanıcı izni sistem ayarları aracılığıyla istediği zaman iptal edebilir. Sistem kayıt göstergesi (iOS'ta turuncu nokta, Android 12+'da yeşil gösterge), kullanıcıya uygulamanın o anda mikrofonu kullandığını bildirir.

Pew Research Center (2024) tarafından yapılan bir araştırmaya göre, mobil cihaz kullanıcılarının %54'ü en az bir kez bir uygulamanın mikrofon erişimini reddetmiştir. Ana neden, uygulamanın neden ses kaydına ihtiyaç duyduğunu anlamamaktır. Bu nedenle, geliştiricinin mikrofon kullanım amacını mümkün olduğunca şeffaf bir şekilde açıklaması gerekir.

Android'de Mikrofon İzni

Android'de mikrofon izni, manifest'te RECORD_AUDIO bildirilerek ve uygulama kodunda çalışma zamanı talebi yapılarak istenir. Android 10'dan itibaren mikrofon erişimi, arka plan uygulamaları için kısıtlamalarla ek olarak düzenlenir.

AndroidManifest.xml'de Bildirim

İlk adım, manifest dosyasında RECORD_AUDIO iznini bildirmektir. Bu bildirim olmadan, çalışma zamanı talebinin bir etkisi olmaz ve uygulama mikrofonua erişemez.

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

CAPTURE_AUDIO_OUTPUT, üçüncü taraf uygulamalar için kullanılamayan bir sistem iznidir. Yalnızca sistem uygulamaları tarafından ses çıkışını yakalamak için kullanılır. Normal uygulamaların mikrofon kaydı için yalnızca RECORD_AUDIO'ya ihtiyacı vardır.

Kotlin'de Çalışma Zamanı Talebi

Manifest'te bildirimden sonra, çalışma zamanı talebi yapmak gerekir. Mikrofondan ses kaydetmek için AudioRecord kullanan bir örneği inceleyelim.

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()
    // Ses verilerini arabelleğe kaydetme
}

Kayıt Durumunun Yönetimi

Ses kaydı yaşam döngüsünü doğru şekilde yönetmek önemlidir. Android 9 ve üzerinde uygulama arka plana geçtiğinde, mikrofon kaydı sistem tarafından duraklatılabilir. Android 10'dan itibaren, arka plan mikrofon erişimi ek olarak kısıtlanmıştır: arka plandaki bir uygulama kayıt başlatamaz ve aktif kayıt duraklatılır. Arka plan kaydı için MediaProjection veya bildirimli bir Service gereklidir.

iOS'ta Mikrofon İzni

iOS'ta mikrofon izni, Info.plist'te NSMicrophoneUsageDescription anahtarı ve AVAudioSession.requestRecordPermission yöntemi çağrısı aracılığıyla yapılandırılır. Apple, talep diyalogunda mikrofon kullanım nedeninin zorunlu olarak açıklanmasını gerektirir.

Info.plist Yapılandırması

NSMicrophoneUsageDescription anahtarı, mikrofon erişimi talep eden her uygulama için zorunludur. Bu anahtar olmadan, uygulama ses kaydetmeye çalıştığında çökecektir.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Uygulamanın sesli notlar kaydetmek ve sesli mesajlar göndermek için mikrofon erişimine ihtiyacı var.</string>

Swift'te Talep

iOS'ta mikrofon erişimi talebi AVAudioSession aracılığıyla yapılır. Yanıt alındıktan sonra, uygulama ses oturumunu yapılandırır ve kayda başlar.

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

Kayıt Göstergesi

iOS 14 ve üzerinde, mikrofon kullanan bir uygulama durum çubuğunda turuncu bir gösterge görüntüler. Kullanıcı, hangi uygulamanın o anda ses kaydettiğini görebilir. Uygulama geçerli bir neden olmadan arka planda mikrofon kullanırsa, Apple güncellemeyi reddedebilir. AVAudioSession, ses oturumunun kategorisini ve modunu yapılandırmanıza olanak tanır ve arka plana geçerken uygulamanın davranışını belirler.

Ses Yakalama Senaryoları

Mobil uygulamalarda mikrofon kullanım senaryoları çeşitlidir: basit ses kaydından gerçek zamanlı karmaşık ses akışı işlemeye kadar.

Sesli Mesajlar ve Notlar

Mesajlaşma ve not alma uygulamaları, sesli mesajları kaydetmek için mikrofonu kullanır. Bu durumda, kayıt düğmesine basıldığında Microphone Permission talep edilir. Kayıt tamamlandıktan sonra, diğer uygulamaların mikrofonu kullanabilmesi için ses oturumunu durdurmak önemlidir. iOS'ta AVAudioSession ve Android'de AudioManager ses odağını yönetir.

Konuşma Tanıma

Ses girişi olan uygulamalar (arama, dikte, sesli asistanlar), konuşma tanıma API'leri ile birlikte mikrofonu kullanır. Android'de bu, android.speech'ten SpeechRecognizer, iOS'ta — Speech framework'ünden SFSpeechRecognizer'dır. Konuşma tanıma, tanıma hizmetleri için ek izin gerektirebilir (Android'de SPEECH, iOS'ta SFSpeechRecognizer.requestAuthorization).

Görüntülü Aramalar ve Yayın

Görüntülü arama uygulamaları (WebRTC, Zoom, Telegram), Camera Permission ile birlikte Microphone Permission talep eder. Bu bağlamda, kullanıcının diyaloglarla boğulmaması için her iki izni aynı anda değil, sırayla talep etmek önemlidir. WebRTC, ses ve video yakalama için getUserMedia kullanır, ancak mobil platformlarda önce sistem izinleri gereklidir.

Ses Oturumu Yapılandırma Ayarları

Kaliteli kayıt için ses oturumu parametrelerini doğru yapılandırmak gerekir. iOS'ta .playAndRecord kategorisi, aynı anda ses çalma ve kaydetmeye olanak tanır. Android'de AudioSource.MIC seçimi ana mikrofondan yakalama sağlarken, AudioSource.VOICE_COMMUNICATION sesli iletişim için kaydı optimize eder. Ayrıca, standart CD kalitesi için 44100 Hz örnekleme hızı ve PCM 16 bit formatı ayarlanabilir.

Kayıt Kesintilerinin Yönetimi

Ses kaydı sırasında sistem kesintileri oluşabilir: gelen arama, alarm etkinleştirme, başka bir uygulamadan bildirim. iOS'ta AVAudioSessionDelegate, beginInterruption ve endInterruption'ı işler. Android'de AudioManager.OnAudioFocusChangeListener, uygulamaya ses odağının kaybı veya iadesi hakkında bildirimde bulunur. Doğru kesinti yönetimi, beklenmedik olaylar sırasında kaydı kaydetmeye ve veri kaybını önlemeye olanak tanır. Odak kaybedildiğinde kaydı duraklatmak ve odağın geri dönüşünden sonra kullanıcıya bildirimde bulunarak devam etmek önerilir.

Ses Yakalama Optimizasyonu

Ses yakalama optimizasyonu, örnekleme hızı, arabellek boyutu ve kodlama formatının yapılandırılmasını içerir. Sesli mesajlar için 44100 Hz frekansı ve mono kanal yeterlidir. Konuşma tanıma için 16000 Hz frekansı gerekebilir.

iOS'ta, kayıt gecikmesini yapılandırmak için AVAudioSession.setPreferredIOBufferDuration kullanın. Daha küçük bir arabellek gecikmeyi azaltır ancak CPU yükünü artırır. Android'de, AudioRecord.getMinBufferSize belirtilen parametreler için minimum arabellek boyutunu döndürür. Yüksek sistem yükü altında kayıt yaparken veri kaybını önlemek için bu minimumdan daha küçük olmayan bir arabellek kullanılması önerilir.

Mikrofonla Çalışmak İçin En İyi Uygulamalar

En iyi uygulamalar, kullanıcı güvenini artırmayı ve platform gereksinimlerini karşılamayı amaçlar.

Kayıttan Önce Amacı Açıklayın

Microphone Permission talep etmeden önce, uygulamanın neden mikrofona ihtiyacı olduğunu ve kaydın nasıl kullanılacağını açıklayan bir ekran gösterin. Sesin sunucuya mı gönderildiğini yoksa yerel olarak mı işlendiğini belirtin. Kaydın cihazdan ayrılmadığını anlarlarsa, kullanıcılar erişime izin vermeye önemli ölçüde daha yatkındır. Yerel işleme (cihaz içi ASR) güven için güçlü bir argümandır.

Arka Planda Kaydı Durdurun

Uygulama arka plan ses kaydı gerektirmiyorsa, arka plana geçerken mikrofonu durdurduğunuzdan emin olun. Bu yalnızca pil tasarrufu sağlamakla kalmaz, aynı zamanda kullanıcının kayıt göstergesini görmesi durumunda oluşabilecek olumsuz tepkiyi de önler. iOS'ta, kaydı duraklatmak için UIApplicationDelegate yöntemleri applicationDidEnterBackground'ı kullanın. Android'de, Activity veya Service'te onPause ve onStop'u işleyin.

Kayıt Göstergeleri Kullanın

Ses yakalama sırasında kendi kayıt göstergenizi (canlandırılmış mikrofon simgesi veya dalga formu) gösterin. Bu, kullanıcıya mikrofonun aktif olduğunu bildirir ve olumsuz tepki riskini azaltır. Apple ve Google, maksimum şeffaflık için sistem göstergesini kendi UI öğenizle çoğaltmanızı önerir.

Sıkça Sorulan Sorular

Ses çalmak için Microphone Permission gerekli mi?

Hayır, mikrofon izni yalnızca mikrofondan ses yakalamak için gereklidir. Hoparlör veya kulaklık aracılığıyla ses çalmak Microphone Permission gerektirmez. Çalma için, iOS'ta ses oturumunu veya Android'de AudioTrack'i yapılandırmak yeterlidir.

Android'de Microphone Permission durumu nasıl kontrol edilir?

ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO) kullanın. Yöntem, PackageManager.PERMISSION_GRANTED veya PERMISSION_DENIED döndürür. Ayrıca, PackageManager.hasSystemFeature aracılığıyla cihazda mikrofonun mevcut olup olmadığını kontrol edin.

Kullanıcı Microphone Permission'ı reddederse ne yapmalı?

Alternatif bir senaryo sunun: ses yerine metin girişi, ses olmadan mesaj gönderme, sessiz video izleme. Ses girişi özelliği kritikse, sistem ayarlarında izni etkinleştirme talimatları ve oraya gitmek için bir düğme içeren bir ekran gösterin.

Android 12+'da Microphone Permission nasıl çalışır?

Android 12'den itibaren, arka plandaki bir uygulama mikrofonua erişemez. Arka plana geçildiğinde aktif kayıt duraklatılır. Ayrıca, Privacy Chip göstergesi ortaya çıkmıştır — durum çubuğunda bir uygulamanın mikrofonu kullandığını gösteren yeşil bir simge.

App Store neden Microphone Permission içeren bir uygulamayı reddetti?

En yaygın nedenler: NSMicrophoneUsageDescription anahtarının eksikliği, spesifik olmayan neden açıklaması (“sesli mesaj kaydetmek için” yerine “hizmeti iyileştirmek için”), açık kullanıcı eylemi olmadan izin talep etme veya gerekçelendirilmiş işlevsellik olmadan arka planda mikrofon kullanma.

Özet

  • Microphone Permission, ses yakalama için bir sistem iznidir ve her iki mobil platformda da zorunludur.
  • Android, Android 10'dan itibaren çalışma zamanı talebi ve arka plan erişim kısıtlamalarıyla RECORD_AUDIO kullanır.
  • iOS, Info.plist'te NSMicrophoneUsageDescription ve zorunlu neden açıklamasıyla AVAudioSession.requestRecordPermission çağrısı gerektirir.
  • Sistem göstergeleri (iOS'ta turuncu nokta, Android'de Privacy Chip) kullanıcıyı mikrofon etkinliği hakkında bilgilendirir.
  • Kullanım senaryoları sesli mesajlar, konuşma tanıma, görüntülü aramalar ve ses kaydını içerir.
  • Arka plan kaydı her iki platformda da sıkı bir şekilde kısıtlanmıştır ve ek izinler ve gerekçelendirme gerektirir.
  • Ret durumunda alternatif senaryolar (metin girişi, ses olmadan gönderme) uygulamanın doğru çalışması için zorunludur.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun