我正在尝试连接蓝牙LE设备。偶尔我会观察到以下行为:
onClientConnectionState表示已建立连接,我调用discoverServices。但永远不会调用onServicesDiscoverd回调,并且连接在30秒后丢失,状态为8 = LINK_LOSS,表示客户端超时。尝试重新连接会一次又一次地导致相同的行为。
D/BluetoothAdapter: STATE_ON
D/BluetoothGatt: connect() - device: 5C:31:3E:84:F3:A8, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=f7d6124f-2987-46dc-8c23-9b03397fa010
D/BluetoothGatt: onClientRegistered() - status=0 clientIf=5
D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=5 device=5C:31:3E:84:F3:A8
D/BluetoothGatt: discoverServices() - device: 5C:31:3E:84:F3:A8
... about 30s
D/BluetoothGatt: onClientConnectionState() - status=8 clientIf=5 device=5C:31:3E:84:F3:A8
D/BluetoothGatt: cancelOpen() - device: 5C:31:3E:84:F3:A8
D/BluetoothGatt: close()
D/BluetoothGatt: unregisterApp() - mClientIf=5
取消配对设备并重新启动blootooth将恢复正常行为,但这似乎不是一个好的解决方案。
较低的Android版本有threads,因此这是一个难以解决的硬件问题吗?