在使用Auracast的过程中,通常需要通过手机向连接的设备发送指令,以连接到指定的广播源。然而,这种操作方式略显繁琐。此前,我们曾在一篇博文中介绍过如何通过设备自身搜索广播并连接的方法,详情请参考蓝牙|软件 QCC51xx系列开发之LE AUDIO Auracast进阶使用 - 大大通(简体站)。该方法通过选择信号最强的源进行播放,但如果目标信号源较弱,该如何处理呢?本篇博文将详细介绍相关的处理逻辑。
处理逻辑步骤
-
扫描并保存广播源
首先,设备需要扫描附近的广播源。与以往不同的是,扫描结果将被保存下来。在leBroadcastManager_SelfScanSendDiscoveredSourceInd函数中记录目标音源的ID,可以将其存储为一个较长的数组。可设置一个UI按键,扫描结束后,用于触发循环连接数组中的ID。 -
判断当前广播状态
在按键处理逻辑中,需先判断当前是否有接收广播。可通过LeBroadcastManager_IsAnySourceSyncedToPa函数进行判断。 - 暂停当前广播
如果当前有广播正在同步,需要先暂停该广播的同步操作,使用以下指令:leAudioTest_BassModifySource(source_id,0) - 切换广播源
切换广播源有两种方案:
方案A:清除当前广播并切换
1. 从管理器列表中清除当前广播,需注意与暂停同步操作间隔一定时间,并确保清除成功:
leAudioTest_BassRemoveSource (source_id)
2. 读取保存的数组中的下一个广播ID,添加并同步广播:
leAudioTest_BassAddSource(sid,broadcast_id,2)
方案B:直接切换管理器列表中的广播
1. 不清除管理器列表,直接通过以下指令切换:leAudioTest_BassModifySource(source_id,2)
2. 需注意,默认情况下管理器列表仅支持存储两个设备,可通过修改BROADCAST_MANAGER_MAX_BROADCAST_SOURCES参数增加容量。
3. 若采用此方法,扫描结束后需一次性将所有广播通过leAudioTest_BassAddSource添加到管理器列表。重新扫描时,需通过leAudioTest_BassRemoveSource移除全部广播源。
通过这种方法就可以通过按键方式,循环选择附近的广播源去播放。以上是本期博文的全部内容,如有疑问就在博文下方评论留言,或者联系我们,我们会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。
FAQ 1:如何确保扫描到的广播源信号质量?
A1:可以通过信号强度(RSSI)排序,优先选择信号较强的广播源。
FAQ 2:如何筛选扫描到的广播源信号?
A2:扫描结果里面有名字,地址,rssi,有需要可以通过这些参数去筛选
FAQ 3:为什么使用测试函数?
A3:测试函数有详细的使用代码,如果自己定义的代码可以参考测试函数的代码来实现
FAQ 4:广播源切换时是否会影响音频播放的连续性?
A4:切换过程中可能会短暂中断音频播放,建议优化切换逻辑以减少延迟。
FAQ 5:信号较弱的广播源是否可以强制连接?
A5:可以通过手动选择目标广播源的ID并强制连接,但音频质量可能受信号强度影响。