【中科蓝讯】ANC 模式是怎样切换的

最开始看原厂 SDK 时,我觉得它的切换很简单:确定关闭、降噪或通透,再调用模式接口即可。 随着 App 控制、按键配置、单双耳记忆和出入盒切换逐渐加进来,我才发现应用层维护的并不只是一个 ANC 模式。提示音何时播放、左右耳怎样同步、状态什么时候保存和上报,也都在这条链路里。 一、先把 ANC 的几条链路放在一起 ANC 模式可能因为三类事件发生变化: App 下发一个明确的目标模式; 用户通过耳机按键切换模式; 耳机出入盒或 TWS 连接状态变化,需要重新选择单双耳记忆。 把三个入口放在一起,我目前是这样理解的: %%{init: {"flowchart": {"htmlLabels": true, "wrappingWidth": 1000, "rankSpacing": 30}, "themeVariables": {"lineColor": "#71829a"}}}%% flowchart TB subgraph R0["① 确定目标模式"] direction LR R0N0["收到 ANC 相关事件<br/>App 指令、按键事件<br/>出入盒或 TWS 状态变化"] R0N1["确定当前使用场景<br/>单耳、双耳<br/>或者双耳都在盒内"] R0N2["得到本次目标模式<br/>关闭、通透、不同等级的降噪<br/>或自适应降噪"] R0N0 --> R0N1 --> R0N2 end class R0N0,R0N1,R0N2 blue; style R0 fill:#f1f6fd,stroke:#b8cfe8,color:#23456b subgraph R1["② 同步并应用"] direction LR R1N0["更新并同步状态<br/>选择或更新单耳、双耳记忆<br/>必要时通知对耳"] R1N1["处理提示音并应用模式<br/>按触发来源处理提示音<br/>再转换成 SDK 模式"] R1N2["保存并更新 App<br/>写入记忆;按键或状态变化时<br/>更新 App 显示"] R1N0 --> R1N1 --> R1N2 end class R1N0,R1N1,R1N2 green; style R1 fill:#f0f8f3,stroke:#b9d7c4,color:#24563a R0 --> R1 classDef blue fill:#e8f2ff,stroke:#7ba4d8,color:#23456b,stroke-width:1.5px; classDef green fill:#e7f4ec,stroke:#78aa8b,color:#24563a,stroke-width:1.5px; classDef amber fill:#fff3df,stroke:#d5a25b,color:#72501e,stroke-width:1.5px; 这是一条方便理解的主线。实际代码里,App、按键和状态变化的处理顺序并不完全相同,后面再分别展开。 ...

【中科蓝讯】TWS 耳机 ANC 问题单复盘

写在开始 这篇文章整理项目中比较有代表性的 ANC 问题单,并按问题现象归为五类。 有些问题标题虽然带有 ANC,但最后确认是电量、功耗或连接问题,这里不展开。本文只保留能够放回 ANC 控制链路解释的问题,没有明确结论的地方也不补充猜测。 先把 ANC 控制流程简化成四步: 1. 收到切换请求 ↓ 2. 确定并同步目标模式 ↓ 3. 加载参数,更新实际效果 ↓ 4. 保存状态并上报 App 本文围绕下面五类问题,整理对应的问题现象和排查思路: 实际模式正常,App 显示却不对 ; 单耳和双耳切换后,ANC 状态混乱 ; 按键或 App 操作后,ANC 没有切换 ; 模式切换成功,降噪效果却不对 ; 切换 ANC 时出现杂音、短暂无声或突变 。 一、实际模式正常,App 显示却不对 问题现象 1 从耳长按切换 ANC 后,耳机实际已经切换,App 仍显示原来的模式; 排查思路 1 先确认三个结果:从耳是否识别到长按、左右耳实际模式是否变化、主耳是否向 App 上报了新状态。 如果从耳和两耳实际模式都正常,重点查主耳是否收到新的目标模式、更新本地状态并上报 App。问题单中,从耳已经完成 ANC 切换,但主耳没有更新状态并发送新模式,因此问题出在主耳的状态同步和上报链路。 问题现象 2 耳机实际是高降噪,App 却显示低降噪;重新进入 App 后,等级还会发生跳变。 排查思路 2 对照耳机内部等级、协议值和 App 显示值是否一致。问题单中,耳机使用 1 表示低降噪、3 表示高降噪,App 却映射成1是高降噪,3是低降噪,导致高低等级颠倒。这是状态映射错误,不是 ANC 参数没有生效。 ...