深圳罗湖的网站建设,2345浏览器电脑版首页,电脑网站怎样给网页做适配,搭建网站源码1 媒体音频#xff1a;
播放蓝牙音乐的数据#xff0c;这种音频对质量要求高#xff0c;数据发送有重传机制#xff0c;从而以l2cap的数据形式走ACL链路。编码方式有#xff1a;SBC、AAC、APTX、APTX_HD、LDAC这五种编码方式#xff0c;最基础的编码方式是SBC#xff0…1 媒体音频
播放蓝牙音乐的数据这种音频对质量要求高数据发送有重传机制从而以l2cap的数据形式走ACL链路。编码方式有SBC、AAC、APTX、APTX_HD、LDAC这五种编码方式最基础的编码方式是SBC支持蓝牙多媒体播放的设备必须支持该编码方式编码质量最好的是LDAC。编码方式的选取需要蓝牙连接设备间的互相协商确定。
2 电话音频
蓝牙通话过程的语音数据这种音频对时效性有高要求一般通过特殊的SCO或eSCO链路传输数据。编码方式有CVSD、mSBC。最基础的编码方式为CVSD免提蓝牙设备都需支持该编码方式支持宽带语音的设备可选mSBC编码数据。
1 编码格式 CVSD该编码方式的数据传输使用SCO或eSCO链路。链路的选取是根据本端Controller是否支持Enhanced Setup Synchronous Connection指令来决定的如果支持该命令则创建语音音频链路时使用eSCO否则创建SCO链路。
mSBC该编码方式的数据传输只能使用eSCO链路。
2 安卓策略
音频链路SCO或eSCO创建成功后蓝牙系统会以 AUDIO_STATE_CHANGED 的广播通知注册过的应用并且HF侧的蓝牙芯片会将接收到的语音数据通过PCM接口送入audio系统那系统的audio模块是如何操作避免多音源输出呢
这其实还是和蓝牙电话应用密切相关的蓝牙电话收到音频链路创建成功的广播后通过AudioManager.requestAudioFocus()申请到系统的音频焦点后audio模块会根据申请焦点的stream type判断其级别高级别的音源可以打断低级别的音源比如听音乐时打电话会先暂停掉音乐。蓝牙电话还需要通过AudioManager.setMode()接口通知audio底层打开通话通道从而播放出通话语音。
蓝牙电话一般还会有个电话静音功能开启静音功能后本端可以听到对方的语音但对方听不到本端的语音这样一个功能其实只需要将本端的收音设备给静音掉就可实现。AudioManager.setMicrophoneMute()设置true将Mic静音。
由于蓝牙电话语音的传输途径为phone Audio - PCM - AG基带 - HF基带 - PCM - Audio,以及反方向。那么语音数据都是在底层传输的上层基本涉及不到从而开发蓝牙电话时获取语音数据就显得尤为困难但方法也是有的。
3 sco 与 esco
sco 不支持重传esco支持重传 Android 蓝牙 HFP sco 和esco链路的异同分析
4 HFP协议
目前HFP的使用场景有车载蓝牙耳机和PDA定义了AG和HFP两种角色。
AGAudio Gate音频网关—音频设备输入输出网关 HFHands Free免提—该设备作为音频网关的远程音频输入/输出机制并可提供若干遥控功能。 在车载蓝牙中手机侧是AG车载蓝牙侧是HF在android源代码中将AG侧称为HFP/AG将HF侧称为HFPClient/HF。 蓝牙协议–HFP协议–转