书接上回,设备实现传统蓝牙转auracast的功能后,就会失去播放高品质音乐的能力。本着破玩意那么多限制热爱研究代码的态度和弘扬不服就干刻苦专研的精神,通过逼良为娼,强人所难动态切换decoder支持列表的方法,实现在不做中转时也可以使用高品质音乐的功能。
前提:先确认高通当前版本有没有实现这个功能,目前实现代码版本的784.1
首先我们要理解实现这个功能的逻辑,简单了解下这个逻辑,其实和Biu~笔记:高通蓝牙ADK(19)--SBC被强制营业的游戏模式 - 大大通(简体站) (wpgdadatong.com.cn)这篇博文的逻辑是一样的,那我就不重复了。
实现方法:
- 我们先要将之前删了的aptx相关的宏给加上,然后把那烦人的报错给屏蔽掉
同时也有很多用了下面宏去屏蔽的代码,也要把这个宏去掉
#if !(defined (INCLUDE_LE_AUDIO_BROADCAST_SOURCE) && defined (ENABLE_SIMPLE_SPEAKER))
2. 在avInterface_InitSepDataBlock函数中设置两套sep表,在蓝牙连接之后,设备会提供这个表的信息给手机,手机根据这个表去选择a2dp编码格式。设置两套表就是为了auracast sender模式和正常模式切换时去更新对应的表,这也是这个方法的中心思想3. 因为这个sep是在连接时交互的,所以更新表之后需要重连一次,后面的逻辑就是怎么去实现切换模式和重连:
- 这里触发切换模式时,分两种情况,一种是正常模式切到auracast sender模式,直接改变sep;重连a2dp, avrcp;播放音乐;常规进入auracast sender
b. 另一种就是auracast sender模式回到正常模式,这里顺序不一样是因为要先停止auracast sender功能(这个实现写在前面的函数了);才能去改变sep;再重连a2dp, avrcp;最后需不需重新播放就看各位需求了
大致处理流程就是这样,接收器怎么操作还是按照老样子操作。当然参考代码也是有的啦 (=´ω`=),请到附件下载,但是不要照抄,参考代码的一些参数例如消息延时,这个可以自行修改,最好是做成依赖关系。另外前往手机开发者选项页面就能看到蓝牙当前用了什么编码格式。
以上是本期博文的全部内容,如有疑问就在博文下方评论留言,或者联系我们,我们会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。
FAQ 1:有官方文档?
A1:这个诡计没有文档,80-42385-1这编号的官方文档可以参考为使用方法
FAQ 2:一定要先播放音乐吗?
A2:加了这个方法后可以不用,因为更改模式之后会自动开启音乐(这也算是没用的bug,看需求吧→_→)
FAQ 3:方法对LDAC等外来高品质编码有帮助吗?
A3:没问题,将两个sep的内容区分开就好了
FAQ 4: 听音乐时,切换会停一下,有办法改善吗?
A4: a2dp都断开了,耶稣来了都救不了,我说的
FAQ 5:加了这个方法之后如何使用?
A5: 和上篇博文一样
评论