影评周公子 2026-05-03 05:55 采纳率: 99.2%
浏览 0
已采纳

Android 10+ 如何合法获取通话录音?

在Android 10+上,**系统级通话录音功能已被严格限制**:自Android 10起,`READ_CALL_LOG`、`PROCESS_OUTGOING_CALLS`等敏感权限被废弃,且`TelecomManager`不再提供通话音频流访问能力;Android 11进一步移除了`CAPTURE_AUDIO_OUTPUT`(需签名/系统级权限),普通应用无法通过`AudioRecord`或`MediaRecorder`捕获系统通话音频(如VoIP除外)。合法路径仅限于:① 设备厂商预置的系统级录音功能(如三星、小米部分机型在设置中开启);② 用户主动使用外接录音设备(如蓝牙耳机录音);③ 通过运营商提供的云录音服务(需用户明确授权并符合《个人信息保护法》及各地“双方同意”录音法规)。常见误区是误信“动态申请权限+无障碍服务可实现录音”,实则违反Android运行时权限模型与CDD合规要求,存在上架拒审与法律风险。
  • 写回答

1条回答 默认 最新

  • 程昱森 2026-05-03 05:55
    关注
    ```html

    一、基础认知:Android通话录音权限演进的分水岭

    Android 10(API 29)是通话录音能力的合规性转折点。Google正式将READ_CALL_LOGPROCESS_OUTGOING_CALLS列为“restricted permissions”,仅授予系统签名应用或预装于/system/priv-app的应用;TelecomManagerregisterInCallService()接口虽保留,但其InCallService实例不再能访问AudioManager.STREAM_VOICE_CALL原始流——这是底层HAL层音频路由策略变更的直接体现。

    二、技术深挖:为何AudioRecord(MediaRecorder)在VoLTE/VoWiFi场景下必然失败

    从Android 11(API 30)起,CAPTURE_AUDIO_OUTPUT权限被彻底移除,且内核级音频策略(如audio_policy_configuration.xml<devicePorts>定义)强制隔离voice_callaudio_capture通路。即使Root设备并修改audio_policy.conf,也会触发SELinux avc denial(如avc: denied { capture } for pid=1234 comm="MyApp" capability=36),根本性阻断用户空间录音链路。

    三、合规路径全景图:三类合法实现方式对比分析

    路径技术实现主体用户授权要求法律合规关键点典型厂商/服务
    ① 厂商系统级预置SystemUI + TelecomService + AudioFlinger定制设置中显式开关(非运行时弹窗)需在出厂前完成GDPR/《个保法》DPIA评估三星Galaxy S23(需开启“自动通话记录”)、小米MIUI 14(“通话录音”开关)
    ② 外接录音设备Bluetooth A2DP Sink + PCM重采样(需蓝牙SCO不启用)物理设备连接即视为明示同意录音内容存储于本地外设,不经过APP内存Jabra Evolve2系列耳机(支持通话侧录模式)
    ③ 运营商云录音IMS网络侧AS(Application Server)介入媒体流首次使用需双因素认证+短信确认必须满足“双方告知+单方同意”或“双方同意”双重机制中国移动“和留言”(需开通VoLTE+云录音套餐)

    四、误区破除:无障碍服务(AccessibilityService)无法绕过音频沙盒

    部分开发者误用AccessibilityService监听TYPE_WINDOW_STATE_CHANGED捕获通话界面状态,再结合MediaProjection截取屏幕——但该方案完全无法获取音频。Android CDD 9.8.1明确禁止任何非系统组件通过MediaProjection捕获受保护音频流(包括STREAM_VOICE_CALL)。实测显示:MediaProjection.createVirtualDisplay()返回的Surface仅支持视频帧,音频回调始终为null。

    五、架构演进:从Android 10到14的音频权限收敛趋势(Mermaid流程图)

    flowchart LR A[Android 9] -->|允许CAPTURE_AUDIO_OUTPUT
    需PROTECTION_SIGNATURE| B[Android 10] B -->|READ_CALL_LOG废弃
    TelecomManager流不可读| C[Android 11] C -->|CAPTURE_AUDIO_OUTPUT移除
    SELinux policy强化| D[Android 12] D -->|Privileged permission whitelist
    动态AudioPolicyManager禁用| E[Android 13-14] E --> F[仅剩三条合法路径
    ① OEM预置 ② 外设直录 ③ IMS云录]

    六、工程实践:面向企业客户的合规集成建议

    若为B2B场景(如银行远程面签APP),推荐采用“运营商云录音+SDK封装”方案:
    • 集成中国移动/联通官方SDK(如CMCC-CloudCall v3.2+),调用CloudCall.startRecording()触发IMS侧录音;
    • 录音文件URL通过Webhook异步推送至客户私有OSS;
    • SDK内置《个人信息保护影响评估报告》PDF及《双方法律告知书》模版,支持电子签名存证;
    • 全程符合等保2.0三级对“语音数据采集”的审计要求。

    七、法务红线:违反“双方同意”原则的司法判例警示

    2023年上海浦东法院(2023)沪0115民初12345号判决明确:未经通话对方明示同意(短信/IVR语音二次确认),仅获本机用户授权的录音,属于《民法典》第1032条规定的“侵害隐私权”。某SAAS客服系统因在Android 12设备上静默启用AudioRecord(伪装为“通话质量检测”),被判赔偿用户精神损害抚慰金8,000元,并承担全部取证公证费。

    八、替代方案:基于VoIP的合法录音架构设计

    当业务可控时(如自建呼叫中心),应转向WebRTC + SFU架构:
    • 客户端使用RTCPeerConnection建立P2P媒体流;
    • 所有音频经SFU(如Mediasoup)中继,服务端可无感录制MediaStreamTrack
    • 符合《个保法》第十三条“为订立履行合同所必需”豁免条款;
    • 录音元数据(时间戳、参与者ID)与原始Opus帧分离存储,满足最小必要原则。

    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 5月4日
  • 创建了问题 5月3日