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

Android 10及以上版本通话录音功能实现技术求助

Android 10+ CRM通话录音解决方案

Android 10(API 29)及以上系统出于隐私安全考虑,禁止第三方应用直接获取通话的双向音频流,MediaProjectionManager是屏幕录制专属API,无法用于通话录音,因此你之前的尝试无效是正常的。针对CRM应用的刚需,以下是几种可行的解决方案:

1. 适配厂商原生通话录音接口

部分国内厂商(小米、华为、OPPO等)针对企业级应用开放了自有通话录音API,你可以针对不同品牌做适配:

  • 小米:使用TelecomManager的startCallRecording()方法,需要在Manifest中添加com.android.telephony.permission.CALL_RECORD权限,同时引导用户开启系统设置中的通话录音权限。
  • 华为:调用CallRecorder类相关接口,需要申请com.huawei.permission.CALL_RECORD权限,且需通过华为开发者联盟的权限审核。
  • 注意:不同厂商的接口差异极大,需要单独适配,且部分厂商仅向企业开发者开放该权限。

2. 基于无障碍服务实现间接录音

通过无障碍服务监听通话状态,当通话接通时启动录音(仅能录制手机扬声器播放的声音,需用户开启免提):

  • 在Manifest中注册无障碍服务:
    <service
        android:name=".CallRecordAccessibilityService"
        android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
        <intent-filter>
            <action android:name="android.accessibilityservice.AccessibilityService" />
        </intent-filter>
        <meta-data
            android:name="android.accessibilityservice"
            android:resource="@xml/accessibility_service_config" />
    </service>
    
  • 在accessibility_service_config.xml中配置监听事件:
    <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
        android:accessibilityEventTypes="typeNotificationStateChanged|typeCallStateChanged"
        android:accessibilityFeedbackType="feedbackGeneric"
        android:accessibilityFlags="flagDefault"
        android:description="@string/accessibility_desc" />
    
  • 在无障碍服务类中监听通话状态变化,触发录音逻辑(使用MediaRecorder.AudioSource.MIC作为音源)。

3. 切换为VoIP通话模式

如果CRM应用的通话是通过自有VoIP通道发起(而非系统原生通话),可以直接录制APP内部的音频流:

  • 使用WebRTC或其他VoIP框架实现通话,在音频采集环节同时保存录音文件。
  • 这种方式不受系统通话录音限制,是最稳定的方案,但需要重构现有通话模块。

4. 申请谷歌特殊权限(企业级应用)

若你的CRM是面向企业客户的应用,可以向谷歌申请MANAGE_MEDIA或其他特殊权限,用于获取通话音频访问权限:

  • 需要在谷歌开发者控制台提交申请,提供应用的企业用途证明、用户隐私协议等材料。
  • 审核流程严格,仅针对合规的企业应用开放。

现有代码优化建议

  1. 权限处理:除了RECORD_AUDIO,还需动态申请READ_PHONE_STATE、POST_NOTIFICATIONS(Android 13+)权限,且必须在用户明确同意后再启动录音。
  2. 前台服务配置:Android 8+后台服务会被系统限制,录音Service必须改为前台服务,启动时显示通知:
    startForeground(NOTIFICATION_ID, buildNotification());
    
  3. 音源调整:Android 10+禁止使用MediaRecorder.AudioSource.VOICE_CALL,改用AudioSource.MIC或AudioSource.VOICE_COMMUNICATION。

合规提醒

谷歌Play商店对通话录音应用有严格审核要求:

  • 必须在应用内显著位置告知用户录音行为,获取用户明确的书面同意。
  • 录音文件仅能用于CRM业务需求,不得泄露或用于其他用途。

内容的提问来源于stack exchange,提问作者Muhammad Sabeel Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:18:18