问题: Android应用程序(GATT客户端)和两个TI板(CC2640R2F,GATT服务器)之间的蓝牙连接不稳定。当Android应用程序连接到两个板时,两个板的蓝牙连接状态在连接和断开状态之间快速切换。结果,服务发现过程受到影响,有时没有发现GATT特征(GATT服务只是空的)。只有运行marshmallow(6.0+)及以上版本的Android设备才会出现此问题。 此问题也发生在Play商店中可用的其他第三方应用程序上,例如在这些Android设备上运行的BLE扫描程序,sensorTag和nrf连接。
在Android方面尝试修复: 在Android方面尝试了以下修复,但这些都没有成功。 在连接成功事件和gatt.discoverServices()请求之间设置了时间延迟(尝试高达2000毫秒)。 对于棉花糖(6.0)以下的设备,请使用单独的device.gattConnect(...)方法。棉花糖上方的设备需要TRANSPORT参数。 切换GATT服务器之间的连接,以确保在给定时间只连接一台服务器。 为两个服务器创建单独的Gatt回调,并为涉及两个服务器的所有操作创建单独的线程。 唯一成功的修复是将一台服务器连接到客户端。要连接其他服务器,需要重新打开该应用程序。如果同时连接了另一台设备,则问题仍然存在。
收集的数据: 蓝牙嗅探器日志是从android端收集并附加的。 'btsnoop_hci_success.log'文件处理运行marshmallow(6.0.1)的android设备(三星galaxy s7 edge)与仅一台服务器(净化器)之间的成功BLE连接。 'btsnoop_hci_fail.log'文件处理同一个Android设备和两个服务器(传感器和净化器)之间有问题的BLE连接。