在BLE的广告部分,蓝牙SIG定义“标志”
有这些以及更多。
我遇到的问题是CSR芯片组设计不支持GATT over BR / EDR。
Apple效果很好,因为它始终与LE连接。
..但是如果音频已经启动,Android设备会持续尝试通过BR / EDR连接GATT;因此失败,因为CSR无法处理GATT的BR / EDR传输。
我认为这些标志是问题的核心。
在CSR的演示代码中,他们不会设置上述标志中的“任何”标志。通过设置“不支持”标志,我在某些手机上的问题取得了有限的成功。
问题是另外两个标志。 Controller / Host如何与其他LE术语相关。例如Central / Peripheral或更高版本的Master / Slave。
我不知道为我的用例设置了什么标志。有什么建议欢迎吗?
答案 0 :(得分:1)
您可以对所有LE操作使用静态随机地址。这样,Android设备认为它与使用公共BD_ADDR时通过蓝牙经典通话的设备不同。
或者,connectGatt
的一个变体采用transport
参数,您可以将其设置为TRANSPORT_LE
以强制通过BLE进行通信。
如果您的设备同时支持BLE和BR / EDR,您应该设置这些标志:
BR/EDR Not Supported=0
Simultaneous LE and BR/EDR to Same Device Capable (Controller)=1
Simultaneous LE and BR/EDR to Same Device Capable (Host)=1
如果标志数据完全丢失,则与所有字段均为零相同。