Microphone Permission: bản chất, các loại truy cập và nguyên lý hoạt động

Tác giả: IT Sectr Đã đăng: 2026-05-21 Thời gian đọc: 8 phút

Microphone Permission là quyền hệ thống cần thiết để ứng dụng truy cập vào micrô của thiết bị. Quyền này được yêu cầu để ghi âm, tin nhắn thoại, cuộc gọi video và nhận dạng giọng nói. Theo Apple Developer Documentation, 2024, tất cả các ứng dụng sử dụng tính năng thu âm đều phải yêu cầu sự đồng ý rõ ràng của người dùng thông qua hộp thoại hệ thống.

Những điểm chính

  • Microphone Permission là quyền bắt buộc đối với bất kỳ ứng dụng nào ghi âm trên thiết bị di động.
  • Android sử dụng Manifest.permission.RECORD_AUDIO với yêu cầu thời gian chạy từ API 23.
  • iOS yêu cầu khóa NSMicrophoneUsageDescription trong Info.plist và gọi AVAudioSession.requestRecordPermission.
  • Yêu cầu tại thời điểm kích hoạt micrô (nút “Ghi tin nhắn thoại”) làm tăng khả năng được chấp thuận.
  • Làm việc trong nền với micrô yêu cầu các quyền bổ sung và sự biện minh chặt chẽ.

Bản chất của Microphone Permission

Microphone Permission là cơ chế bảo vệ quyền riêng tư ngăn chặn việc ghi âm trái phép từ micrô của thiết bị. Các nền tảng di động coi micrô là một trong những tài nguyên nhạy cảm nhất, vì ghi âm có thể thu được các cuộc trò chuyện cá nhân, môi trường xung quanh và thông tin bảo mật.

Android phân loại RECORD_AUDIO là quyền nguy hiểm, còn iOS yêu cầu bắt buộc thêm khóa NSMicrophoneUsageDescription vào Info.plist. Trên cả hai nền tảng, yêu cầu được thực hiện tại thời gian chạy và người dùng có thể thu hồi quyền bất kỳ lúc nào thông qua cài đặt hệ thống. Chỉ báo hệ thống khi ghi âm (chấm màu cam trên iOS, chỉ báo màu xanh lá trên Android 12+) báo hiệu cho người dùng rằng ứng dụng đang sử dụng micrô tại thời điểm đó.

Theo nghiên cứu của Pew Research Center (2024), 54% người dùng thiết bị di động đã từ chối quyền truy cập micrô cho ứng dụng ít nhất một lần. Lý do chính là không hiểu tại sao ứng dụng cần ghi âm. Vì vậy, nhà phát triển cần giải thích mục đích sử dụng micrô một cách minh bạch nhất có thể.

Quyền micrô trên Android

Quyền micrô trên Android được yêu cầu bằng cách khai báo RECORD_AUDIO trong tệp kê khai (manifest) và thực hiện yêu cầu thời gian chạy trong mã ứng dụng. Từ Android 10, quyền truy cập micrô được điều chỉnh thêm bởi các hạn chế đối với ứng dụng chạy nền.

Khai báo trong AndroidManifest.xml

Bước đầu tiên là khai báo quyền RECORD_AUDIO trong tệp kê khai. Nếu không có khai báo này, yêu cầu thời gian chạy sẽ không có hiệu lực và ứng dụng sẽ không thể truy cập micrô.

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

CAPTURE_AUDIO_OUTPUT là quyền hệ thống không khả dụng cho các ứng dụng của bên thứ ba. Nó chỉ được sử dụng bởi các ứng dụng hệ thống để thu âm đầu ra. Các ứng dụng thông thường chỉ cần RECORD_AUDIO để ghi âm từ micrô.

Yêu cầu thời gian chạy trong Kotlin

Sau khi khai báo trong tệp kê khai, bạn cần thực hiện yêu cầu thời gian chạy. Hãy xem xét ví dụ sử dụng AudioRecord để ghi âm từ micrô.

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()
    // Đang ghi dữ liệu âm thanh vào bộ đệm
}

Xử lý trạng thái ghi âm

Điều quan trọng là xử lý đúng vòng đời ghi âm. Khi ứng dụng chuyển sang nền trên Android 9 trở lên, việc ghi âm từ micrô có thể bị tạm dừng bởi hệ thống. Từ Android 10, quyền truy cập micrô nền bị hạn chế thêm: ứng dụng trong nền không thể bắt đầu ghi âm và việc ghi âm đang hoạt động sẽ bị tạm dừng. Ghi âm trong nền yêu cầu MediaProjection hoặc Service có thông báo.

Quyền micrô trên iOS

Quyền micrô trên iOS được cấu hình thông qua khóa NSMicrophoneUsageDescription trong Info.plist và gọi phương thức AVAudioSession.requestRecordPermission. Apple yêu cầu giải thích bắt buộc về lý do sử dụng micrô trong hộp thoại yêu cầu.

Cấu hình Info.plist

Khóa NSMicrophoneUsageDescription là bắt buộc đối với bất kỳ ứng dụng nào yêu cầu quyền truy cập micrô. Nếu không có nó, ứng dụng sẽ bị treo khi cố gắng ghi âm.

xml
<key>NSMicrophoneUsageDescription</key>
<string>Ứng dụng cần quyền truy cập micrô để ghi ghi chú thoại và gửi tin nhắn âm thanh.</string>

Yêu cầu trong Swift

Việc yêu cầu quyền truy cập micrô trên iOS được thực hiện thông qua AVAudioSession. Sau khi nhận được phản hồi, ứng dụng cấu hình phiên âm thanh và bắt đầu ghi âm.

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

Chỉ báo ghi âm

Trên iOS 14 trở lên, ứng dụng sử dụng micrô sẽ hiển thị chỉ báo màu cam trên thanh trạng thái. Người dùng có thể thấy ứng dụng nào đang ghi âm tại thời điểm đó. Nếu ứng dụng sử dụng micrô trong nền mà không có lý do chính đáng, Apple có thể từ chối bản cập nhật. AVAudioSession cho phép bạn cấu hình danh mục và chế độ của phiên âm thanh, xác định hành vi của ứng dụng khi chuyển sang nền.

Các kịch bản thu âm

Các kịch bản sử dụng micrô trong ứng dụng di động rất đa dạng: từ ghi âm giọng nói đơn giản đến xử lý luồng âm thanh phức tạp theo thời gian thực.

Tin nhắn thoại và ghi chú

Ứng dụng nhắn tin và ghi chú sử dụng micrô để ghi lại tin nhắn thoại. Trong trường hợp này, Microphone Permission được yêu cầu khi nhấn nút ghi âm. Sau khi hoàn tất ghi âm, điều quan trọng là dừng phiên âm thanh để các ứng dụng khác có thể sử dụng micrô. AVAudioSession trên iOS và AudioManager trên Android quản lý tiêu điểm âm thanh.

Nhận dạng giọng nói

Các ứng dụng có đầu vào giọng nói (tìm kiếm, đọc chính tả, trợ lý giọng nói) sử dụng micrô kết hợp với API nhận dạng giọng nói. Trên Android, đó là SpeechRecognizer từ android.speech, trên iOS — SFSpeechRecognizer từ framework Speech. Nhận dạng giọng nói có thể yêu cầu quyền bổ sung cho các dịch vụ nhận dạng (SPEECH trên Android, SFSpeechRecognizer.requestAuthorization trên iOS).

Cuộc gọi video và phát trực tiếp

Các ứng dụng gọi video (WebRTC, Zoom, Telegram) yêu cầu Microphone Permission cùng với Camera Permission. Trong bối cảnh này, điều quan trọng là yêu cầu cả hai quyền một cách tuần tự, không đồng thời, để người dùng không bị quá tải bởi các hộp thoại. WebRTC sử dụng getUserMedia để thu âm thanh và video, nhưng trên nền tảng di động, cần có quyền hệ thống trước tiên.

Cấu hình phiên âm thanh

Để ghi âm chất lượng cao, bạn cần cấu hình đúng các tham số phiên âm thanh. Trên iOS, danh mục .playAndRecord cho phép phát lại và ghi âm đồng thời. Trên Android, chọn AudioSource.MIC cung cấp khả năng thu từ micrô chính, trong khi AudioSource.VOICE_COMMUNICATION tối ưu hóa ghi âm cho giao tiếp thoại. Ngoài ra, bạn có thể đặt tần số lấy mẫu 44100 Hz và định dạng PCM 16 bit để đạt chất lượng CD tiêu chuẩn.

Xử lý gián đoạn ghi âm

Trong quá trình ghi âm, có thể xảy ra gián đoạn hệ thống: cuộc gọi đến, báo thức kích hoạt, thông báo từ ứng dụng khác. Trên iOS, AVAudioSessionDelegate xử lý beginInterruption và endInterruption. Trên Android, AudioManager.OnAudioFocusChangeListener thông báo cho ứng dụng về việc mất hoặc lấy lại tiêu điểm âm thanh. Xử lý gián đoạn đúng cách cho phép lưu bản ghi trong các sự kiện bất ngờ và tránh mất dữ liệu. Bạn nên tạm dừng ghi âm khi mất tiêu điểm và tiếp tục sau khi tiêu điểm quay lại kèm thông báo cho người dùng.

Tối ưu hóa thu âm

Tối ưu hóa thu âm bao gồm cấu hình tần số lấy mẫu, kích thước bộ đệm và định dạng mã hóa. Đối với tin nhắn thoại, tần số 44100 Hz và kênh đơn là đủ. Đối với nhận dạng giọng nói, có thể cần tần số 16000 Hz.

Trên iOS, sử dụng AVAudioSession.setPreferredIOBufferDuration để cấu hình độ trễ ghi âm. Bộ đệm nhỏ hơn giảm độ trễ nhưng tăng tải CPU. Trên Android, AudioRecord.getMinBufferSize trả về kích thước bộ đệm tối thiểu cho các tham số đã cho. Bạn nên sử dụng bộ đệm không nhỏ hơn mức tối thiểu này để tránh mất dữ liệu khi ghi âm dưới tải hệ thống cao.

Thực tiễn tốt nhất khi làm việc với micrô

Thực tiễn tốt nhất cho Microphone Permission nhằm tăng niềm tin của người dùng và đáp ứng các yêu cầu của nền tảng.

Giải thích mục đích trước khi ghi âm

Trước khi yêu cầu Microphone Permission, hãy hiển thị màn hình giải thích tại sao ứng dụng cần micrô và bản ghi sẽ được sử dụng như thế nào. Cho biết âm thanh được truyền đến máy chủ hay xử lý cục bộ. Người dùng có nhiều khả năng cấp quyền hơn nếu họ hiểu rằng bản ghi không rời khỏi thiết bị. Xử lý cục bộ (ASR trên thiết bị) là một lập luận mạnh mẽ cho sự tin tưởng.

Dừng ghi âm khi ở nền

Nếu ứng dụng không yêu cầu ghi âm trong nền, hãy đảm bảo dừng micrô khi chuyển sang nền. Điều này không chỉ tiết kiệm pin mà còn ngăn phản ứng tiêu cực của người dùng khi thấy chỉ báo ghi âm. Trên iOS, sử dụng các phương thức UIApplicationDelegate applicationDidEnterBackground để tạm dừng ghi âm. Trên Android, xử lý onPause và onStop trong Activity hoặc Service.

Sử dụng chỉ báo ghi âm

Hiển thị chỉ báo ghi âm của riêng bạn (biểu tượng micrô hoạt hình hoặc dạng sóng) trong khi thu âm. Điều này thông báo cho người dùng rằng micrô đang hoạt động và giảm nguy cơ phản ứng tiêu cực. Apple và Google khuyên bạn nên nhân đôi chỉ báo hệ thống bằng thành phần giao diện người dùng của riêng mình để đạt độ minh bạch tối đa.

Câu hỏi thường gặp

Có cần Microphone Permission để phát lại âm thanh không?

Không, quyền micrô chỉ cần thiết cho việc thu âm từ micrô. Phát âm thanh qua loa hoặc tai nghe không yêu cầu Microphone Permission. Để phát lại, chỉ cần cấu hình phiên âm thanh trên iOS hoặc AudioTrack trên Android.

Làm thế nào để kiểm tra trạng thái Microphone Permission trên Android?

Sử dụng ContextCompat.checkSelfPermission(context, Manifest.permission.RECORD_AUDIO). Phương thức trả về PackageManager.PERMISSION_GRANTED hoặc PERMISSION_DENIED. Ngoài ra, hãy kiểm tra xem micrô có khả dụng trên thiết bị hay không qua PackageManager.hasSystemFeature.

Làm gì nếu người dùng từ chối Microphone Permission?

Đưa ra kịch bản thay thế: nhập văn bản thay vì giọng nói, gửi tin nhắn không có âm thanh, xem video không có tiếng. Nếu tính năng nhập giọng nói là quan trọng, hãy hiển thị màn hình hướng dẫn cách bật quyền trong cài đặt hệ thống và nút để điều hướng đến đó.

Microphone Permission hoạt động như thế nào trên Android 12+?

Từ Android 12, ứng dụng trong nền không thể truy cập micrô. Việc ghi âm đang hoạt động sẽ bị tạm dừng khi chuyển sang nền. Ngoài ra, chỉ báo Privacy Chip đã xuất hiện — biểu tượng màu xanh lá trên thanh trạng thái cho thấy ứng dụng đang sử dụng micrô.

Tại sao App Store từ chối ứng dụng có Microphone Permission?

Các lý do phổ biến nhất: thiếu khóa NSMicrophoneUsageDescription, mô tả lý do không cụ thể (“để cải thiện dịch vụ” thay vì “để ghi tin nhắn thoại”), yêu cầu quyền mà không có hành động rõ ràng của người dùng hoặc sử dụng micrô trong nền mà không có chức năng hợp lý.

Tóm tắt

  • Microphone Permission là quyền hệ thống để thu âm, bắt buộc trên cả hai nền tảng di động.
  • Android sử dụng RECORD_AUDIO với yêu cầu thời gian chạy và hạn chế truy cập nền từ Android 10.
  • iOS yêu cầu NSMicrophoneUsageDescription trong Info.plist và gọi AVAudioSession.requestRecordPermission với mô tả lý do bắt buộc.
  • Chỉ báo hệ thống (chấm cam trên iOS, Privacy Chip trên Android) thông báo cho người dùng về hoạt động của micrô.
  • Các kịch bản sử dụng bao gồm tin nhắn thoại, nhận dạng giọng nói, cuộc gọi video và ghi âm.
  • Ghi âm trong nền bị hạn chế nghiêm ngặt trên cả hai nền tảng và yêu cầu quyền bổ sung và biện minh.
  • Các kịch bản thay thế khi từ chối (nhập văn bản, gửi không có âm thanh) là bắt buộc để ứng dụng hoạt động chính xác.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm