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

Android 13下自研Kotlin应用能否实现通话录音?

Android 13下通话录音实现方案解析

你的代码问题分析

你提供的MediaRecorder代码片段存在关键缺失,这是生成空白文件的直接原因——缺少输出路径配置、录制准备与启动的核心步骤。补全后的完整代码示例如下:

val mediaRecorder = MediaRecorder(this).apply {
    setAudioSource(MediaRecorder.AudioSource.MIC)
    setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
    setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
    // 必须指定输出文件路径
    setOutputFile("${externalCacheDir?.absolutePath}/call_recording.3gp")
    prepare()
    start()
}

但即使补全代码,在Android 13下也只能录制你自己的麦克风声音,无法捕获通话对方的音频——这是Android 10以来的系统限制:普通第三方应用被音频隔离,无法直接获取通话的双向音频流。

应用商店中通话录音应用的实现方式

这些应用能实现完整通话录音,主要依赖以下几种方案:

  • 适配厂商私有API:国内主流品牌(小米、华为、OPPO、vivo等)都有未公开的私有通话录音接口,应用通过适配这些接口调用系统原生的通话录音能力,录制文件由系统生成后交付应用处理。这类接口无官方文档,需开发者逆向适配或与厂商合作获取方案。
  • 系统级权限与签名:部分应用是系统预装应用,或获取了设备厂商的系统签名,从而获得普通应用无法申请的特殊权限(如android.permission.RECORD_AUDIO_CALL),这类权限允许直接捕获通话双向音频流。普通开发者无法获取此类权限,需厂商授权系统签名。
  • 辅助功能+音频路由调整:通过辅助功能(Accessibility Service)监听通话状态,在通话建立时尝试调整系统音频路由,将对方通话音频导向麦克风输入。这种方式效果不稳定,受系统版本和厂商定制限制较大,部分系统会禁止此类路由修改。
  • 屏幕录制捕获内部音频:利用MediaProjection API申请屏幕录制权限,同时捕获系统内部音频(通话音频属于内部音频)。这种方式会录制设备所有内部声音,需后期剪辑提取通话内容,且需要用户手动授权屏幕录制权限,体验不如专业通话录音方案。

自研应用的可行方向

普通第三方自研应用在Android 13下无法实现完整的双向通话录音,仅能录制己方麦克风声音。若要实现类似商店应用的功能,优先考虑适配主流厂商的私有API,或针对特定定制设备申请系统级权限(仅适用于小众场景)。

内容的提问来源于stack exchange,提问作者Imran Khan Saifi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 02:07:22