我有一个运行GATT服务器的双模(BR/EDR + BLE)设备。该地址是公共地址,对于BLE和BD/EDR是相同的。
当我在Android 6.0.1 (API level 23)的Galaxy S7上调用connectGatt并将传输参数设置为"TRANSPORT_LE“时,手机仍然尝试通过BD/EDR建立连接。看起来问题与BLE的公共地址有关,因为如果我将其设置为私有,则连接是通过BLE完成的,正如预期的那样。
这个问题只在银河S7上观察到,在其他手机(即Nexus6P)上,连接总是通过BLE正确完成。
这是Android的bug,还是我漏掉了什么?
发布于 2017-04-21 19:52:48
蓝牙4.0规范规定,如果两个设备都支持Classic和LEW,则必须通过Classic进行连接。而Android的堆栈往往会遵循这一点。使您的其他设备不可连接,并且在查询中不可见,它应该工作正常
发布于 2017-10-26 22:14:35
GATT不是特定于传输的,它是在属性协议(ATT)之上实现的框架。如果外围设备是双模器件并支持BR/EDR上的GATT,则可以通过BR/EDR访问GATT。蓝牙4.X核心规范不强制通过GATT访问连接承载。一些android手机尝试通过BR/EDR使用GATT,但应用程序无法控制它。我还在Lenovo TAB 2 A8-50F中观察到GATT高于BR/EDR。
发布于 2018-02-27 15:39:20
一个古老的问题,但没有得到回答..。
您可能在GATT设备上的广告数据包上有错误的标志。此外,由您的实现的Classic部分传输的EIR (扩展查询响应)数据包。
在这两种情况下,有一个"BR/EDR不受支持“标志可能会对您有所帮助。
由于CSR提供的ADK代码中的默认设置,此问题在CSR芯片组中很常见。有没有可能你正在使用CSR芯片?你的问题可能不在android设备上?
https://stackoverflow.com/questions/40127107
复制相似问题