三星Galaxy S7上的connectGatt通过蓝牙经典而不是BLE创建连接

时间:2016-10-19 09:17:08

标签: android bluetooth bluetooth-lowenergy android-bluetooth gatt

我有一台运行GATT服务器的双模(BR / EDR + BLE)设备。地址是公开的,BLE和BD / EDR也是如此 当我使用Android 6.0.1(API级别23)在Galaxy S7上调用connectGatt并将传输参数设置为" TRANSPORT_LE"手机仍然试图通过BD / EDR建立连接。看起来问题与BLE的公共地址有关,因为如果我将其设置为私有,则按预期在BLE上完成连接。

此问题仅在Galaxy S7上观察到,在其他手机(即Nexus 6P)上,始终通过BLE正确完成连接。

这是一个Android错误还是我错过了什么?

2 个答案:

答案 0 :(得分:0)

蓝牙4.0规范规定,如果两个设备都支持Classic和LEW,则必须通过Classic进行连接。 Android堆栈倾向于遵循这一点。让你的其他设备不可连接,在查询中不可见,它应该可以正常工作

答案 1 :(得分:0)

GATT不是特定于传输的,它是在属性协议(ATT)之上实现的框架。如果外围设备是双模设备并且支持GATT over BR / EDR,则可以通过BR / EDR访问GATT。蓝牙4.X核心规范不要求通过GATT访问连接承载。一些Android手机尝试使用GATT over BR / EDR,应用程序无法控制它。我还在联想TAB 2 A8-50F中观察了关于BR / EDR的GATT。