You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新版Android系统下能否检测非通话类应用的麦克风使用情况?

Android 10+ 检测非通话类麦克风录制应用的可行方案

在Android 10及以上系统中,仍然可以检测到正在主动录制音频且未使用VOICE_CALL/VOICE_COMMUNICATION音频来源的应用,但需要适配新版系统的API和权限规则,以下是具体实现方案:

1. 利用AudioRecordingCallback监听录制状态

Android 10(API 29)引入了AudioManager.AudioRecordingCallback,可以监听系统内所有音频录制的状态变化,包括录制的启动、停止,以及录制使用的音频源信息。通过过滤掉通话类音频源,即可定位到目标应用。

核心代码示例

val audioManager = getSystemService(AUDIO_SERVICE) as AudioManager
val recordingCallback = object : AudioManager.AudioRecordingCallback() {
    override fun onRecordingConfigChanged(configs: MutableList<AudioRecordingConfiguration>) {
        super.onRecordingConfigChanged(configs)
        configs.forEach { config ->
            // 排除通话类音频源的录制
            if (config.clientAudioSource != MediaRecorder.AudioSource.VOICE_CALL &&
                config.clientAudioSource != MediaRecorder.AudioSource.VOICE_COMMUNICATION) {
                val packageName = packageManager.getPackagesForUid(config.clientUid)?.firstOrNull()
                val isActiveRecording = config.isActive
                if (isActiveRecording && packageName != null) {
                    // 这里处理检测到的录制应用逻辑
                    Log.d("MicMonitor", "检测到应用 [$packageName] 正在使用麦克风录制")
                }
            }
        }
    }
}
// 注册监听,指定主线程Handler处理回调
audioManager.registerAudioRecordingCallback(recordingCallback, Handler(Looper.getMainLooper()))

权限要求

  • 在AndroidManifest.xml中声明危险权限:
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    
  • 运行时动态请求RECORD_AUDIO权限,只有获取该权限后,才能监听其他应用的录制状态;无权限时仅能监听自身应用的录制。

2. 适配系统机制变化

Android 10+对前台服务和麦克风抢占逻辑的调整,不影响该方案的有效性:

  • 麦克风抢占规则:非通话类录制无法抢占正在进行的通话类录制,但会被通话类录制抢占;非通话类录制之间会互相抢占,AudioRecordingCallback会在录制状态变更时及时触发,确保能捕捉到当前活跃的录制应用。
  • 前台服务限制:如果需要持续后台检测,需将应用设为前台服务,避免被系统回收监听回调。

3. 兼容性与注意事项

  • 版本适配:该API仅支持Android 10及以上,需通过Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q做版本判断。
  • ROM兼容性:部分定制ROM可能对该API做了限制,需在目标设备上进行测试验证。
  • 资源释放:不再需要监听时,调用audioManager.unregisterAudioRecordingCallback(recordingCallback)释放资源。

内容的提问来源于stack exchange,提问作者Gustafah88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 07:16:08