首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三星Galaxy S7上的connectGatt通过蓝牙经典而不是BLE创建连接

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

Stack Overflow用户
提问于 2016-10-19 17:17:08
回答 3查看 866关注 0票数 1

我有一个运行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,还是我漏掉了什么?

EN

回答 3

Stack Overflow用户

发布于 2017-04-21 19:52:48

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

票数 0
EN

Stack Overflow用户

发布于 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。

票数 0
EN

Stack Overflow用户

发布于 2018-02-27 15:39:20

一个古老的问题,但没有得到回答..。

您可能在GATT设备上的广告数据包上有错误的标志。此外,由您的实现的Classic部分传输的EIR (扩展查询响应)数据包。

在这两种情况下,有一个"BR/EDR不受支持“标志可能会对您有所帮助。

由于CSR提供的ADK代码中的默认设置,此问题在CSR芯片组中很常见。有没有可能你正在使用CSR芯片?你的问题可能不在android设备上?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40127107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档