【中科蓝讯】TWS 耳机提示音是怎样播放出来的
在 TWS 耳机里,开机、蓝牙连接、低电量和降噪模式切换,通常都会伴随一段提示音。 从表面看,提示音像是准备一个音频文件,需要时调用播放函数即可。实际上,一段提示音从代码触发到左右耳真正出声,中间还要经过资源查找、播放排队、双耳同步和音频恢复。 本文以中科蓝讯 BT891x 原厂 SDK 的实现为例,重点分析提示音播放的核心流程。不同 SDK 的接口名称可能不一样,但整体思路通常可以互相参考。 一、提示音播放的完整链路 一段提示音的完整流程,可以先简化成下面五步: %%{init: {"flowchart": {"htmlLabels": true, "wrappingWidth": 1000, "rankSpacing": 30}, "themeVariables": {"lineColor": "#71829a"}}}%% flowchart TB subgraph R0["① 准备播放请求"] direction LR R0N0["业务触发"] R0N1["找到对应的提示音资源"] R0N2["把播放请求加入队列"] R0N0 --> R0N1 --> R0N2 end class R0N0,R0N1,R0N2 blue; style R0 fill:#f1f6fd,stroke:#b8cfe8,color:#23456b subgraph R1["② 同步与播放"] direction LR R1N0["确定哪只耳机播放<br/>并完成双耳同步"] R1N1["解码播放<br/>结束后恢复原来的音频状态"] R1N0 --> R1N1 end class R1N0,R1N1 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; 比如手机连接耳机成功以后,蓝牙业务只需要提出“播放连接成功提示音”这个请求。至于提示音文件放在哪里、左右耳什么时候开始播放、当前音乐要不要降低音量,都会继续交给提示音模块处理。 ...