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或其他特殊权限,用于获取通话音频访问权限:
- 需要在谷歌开发者控制台提交申请,提供应用的企业用途证明、用户隐私协议等材料。
- 审核流程严格,仅针对合规的企业应用开放。
现有代码优化建议
- 权限处理:除了
RECORD_AUDIO,还需动态申请READ_PHONE_STATE、POST_NOTIFICATIONS(Android 13+)权限,且必须在用户明确同意后再启动录音。 - 前台服务配置:Android 8+后台服务会被系统限制,录音Service必须改为前台服务,启动时显示通知:
startForeground(NOTIFICATION_ID, buildNotification()); - 音源调整:Android 10+禁止使用
MediaRecorder.AudioSource.VOICE_CALL,改用AudioSource.MIC或AudioSource.VOICE_COMMUNICATION。
合规提醒
谷歌Play商店对通话录音应用有严格审核要求:
- 必须在应用内显著位置告知用户录音行为,获取用户明确的书面同意。
- 录音文件仅能用于CRM业务需求,不得泄露或用于其他用途。
内容的提问来源于stack exchange,提问作者Muhammad Sabeel Ahmed
相关产品推荐
相关产品推荐

