【中科蓝讯】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、按键和状态变化的处理顺序并不完全相同,后面再分别展开。 ...