运行时与集成

Android 来电中断本地 AI:录音、推理与播报恢复测试

将系统通话与音频焦点/外设路由/应用取消区分,并为每个阶段制定恢复状态。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-04 · Fact IDs: COVE-LIFECYCLE-01, ANDROID-AUDIO-01

直接回答

来电应视为可能影响本地 AI 任务多个阶段的系统中断,而不只是一次简单的音频路由变化。应用可能正在采集麦克风、处理已缓存分段,也可能在播放语音结果;这些资源都有不同所有者和中断策略。Android 音频输入共享文档说明,多应用同时请求录音时系统有输入优先级规则,并指出活动语音通话获得通话音频输入。这并不表示普通应用可以录制通话;本文不作此类主张。应测试应用自身录音会话的表现以及用户能看到什么状态。 音频焦点关注输出播放,与麦克风输入共享是两个不同概念。Android 音频焦点指南说明,通话期间焦点可能被锁定;通话结束后也可能延迟授予并回调通知应用。本地转写任务可能完全不请求音频焦点,而可选的文字转语音功能可能会请求。要记录具体功能是否请求焦点,以及平台实际通知了什么状态。不能假设焦点变化会自动停止采集、取消推理、释放缓冲或恢复播报。 将完整任务建模为明确状态:录音中、分段结束、推理排队/执行、部分结果、播报、被中断、已取消、可恢复。来电开始时按产品策略停止采集,保留已确认完成的片段;如有需要,将当前活动段标记不确定;适当暂停或放弃播报焦点。如果平台拒绝或抑制输入,不要继续静默采集。通话结束后,除非用户操作与产品设计明确允许,否则不要自动重启麦克风;显示当前状态,必要时请求用户确认恢复。 在多个边界测试来电:麦克风采集中、两个分段之间、本地推理中、流式输出中、语音播放中,以及用户已经按下取消时。记录应用观察到的通话状态、录音权限/前台状态、录音结果、使用焦点时的回调、分段 ID、部分输出、资源清理和下一任务行为。使用合成音频和固定文本夹具。Android 版本、应用角色、录音源和前台状态会影响表现,报告不能从一个配置泛化。 恢复必须保护数据并避免会话串线。来电前完成的分段应与来电中断段保持区别。取消后才返回的推理结果不能覆盖新的任务。按所有权契约释放或保留缓冲;页面消失不等于原生推理停止。可选 TTS 应通过文档化路径重新请求焦点,并遵循真实返回结果。项目没有完整的来电中断设备数据集,因此本文是测试协议,不是兼容或可靠性保证。 界面应让用户知道哪些内容已保存、当前录音是否暂停、哪个分段不确定、可以采取什么动作。来电可能影响应用任务,即使系统没有直接结束进程也应记录。对用户的隐私边界要明确:测试的是应用自己采集的输入,不是电话对方或系统通话音频。诊断日志不保存语音和转写,只记录错误类别、阶段、路由/焦点状态和会话 ID。 恢复测试要防止双录音会话。旧录音器回调可能在新会话建立后才到达;应检查会话 ID,只允许当前所有者写入新片段。若旧资源不能安全关闭,界面应先显示恢复等待或失败,而不是并发打开第二个麦克风流。每次自动或用户触发恢复都要记录开始与结果,形成可复现的状态转换。

离线语音笔记录制中来电

用户正在录制一条私密语音笔记,应用已处理完多个分段。本地推理仍在工作时来电到达,应用还可能在播放上一段的翻译结果。团队必须保留笔记,又不能假设麦克风持续可用。

决策

把采集、推理和播放拆成独立中断状态;保留已完成段、标记不确定工作,并在恢复前让用户明确选择。

预期结果

用户看得到哪些内容已保存以及录音/播放是否停止;旧回调不能写入恢复后的新会话。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • COVE-LIFECYCLE-01:当前 ModelManager 有显式模型生命周期状态;它不定义来电时录音策略。
  • ANDROID-AUDIO-01:Android 媒体文档定义平台录音 API,应用仍需负责权限、生命周期和格式边界。

只有记录了模型身份、构建配置、实际后端、任务样例和失败情况,运行时比较才可复核。

实施流程

  1. 盘点活动音频和任务所有权. 记录谁拥有麦克风采集、音频缓冲、推理分段、播报和 UI 状态。注明可选播放是否请求音频焦点;不能把焦点与输入采集权限混为一谈。
  2. 定义来电开始时的策略. 选择如何停止或暂停采集、完成确定分段、标记活动段、暂停/停止播报并告知用户。不能声称应用采集通话音频。
  3. 在任务边界注入中断. 测试录音中、分段间、推理中、流式输出中、TTS 播放中和用户同时取消。记录系统/应用状态、录音结果、适用焦点回调及分段标识。
  4. 验证通话结束和恢复. 通话结束后检查真实录音与焦点状态。不要静默重启麦克风或重播语音;按产品策略要求用户确认,并阻止旧会话回调写入新任务。
  5. 检查清理、隐私和数据连续性. 断言完成文本保留、不确定音频有标记、临时缓冲由其所有者释放,也不会采集或记录通话音频。恢复后再测试下一条语音任务并保留失败结果。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 麦克风采集、模型推理和语音播放具有独立中断状态及清理所有者。
  • 应用不声称或尝试录制电话通话内容,只记录自己任务的实际观察行为。
  • 已完成段与中断段可区分,迟到回调不能覆盖恢复后的请求。
  • 恢复状态可见且必要时由用户控制;结论注明准确 Android/应用配置。

决策对照表

维度选择或证据解读方式
音频路由变化外接麦克风/耳机接入或断开改变采集路由证据,不等同系统来电取得输入优先级。
来电中断系统通话影响输入共享、焦点与生命周期预期需分别测采集、进行中任务和播放;不能假设应用会获得通话音频。
用户取消用户明确停止本应用任务应遵守应用自己的取消契约,不能从来电或焦点回调推断已取消。

需要避免的失败模式

  • 假设来电时麦克风采集或推理会自动停止并清理。
  • 把音频焦点当作麦克风输入权限,或暗示普通应用可录制通话内容。

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

普通应用能在通话时继续录麦克风吗?

不要这样假设。Android 说明了音频输入优先级,并指出通话会获得通话输入;应针对应用录音源、角色、系统及前台状态测试自身采集结果。

丢失音频焦点会自动取消模型推理吗?

不会。音频焦点针对输出播放。推理和采集需要各自的任务状态与取消处理,并分别验证资源清理;通话也可能改变输入优先级,需按系统版本记录。

通话结束后要自动恢复录音吗?

应有明确产品策略和用户可见状态。除非自动继续已经经过设计与测试,否则应先询问用户,再重新打开麦克风或播放语音。