我有一个用于控制多个蓝牙LE灯的应用程序。
当我想同时断开所有设备的连接时,我将其称为BluetoothGatt断开连接,并从onConnectionStateChange关闭,getConnectionState将返回STATE_DISCONNECTED,但有时某些设备的连接仍然有效。
我可以看到关闭的日志。
BluetoothGatt: close()
unregisterApp() - mClientIf=xx
但是我看不到断开的日志。
onReceive: android.bluetooth.device.action.ACL_DISCONNECTED
TrustAgent.Tracker: [BluetoothConnectionTracker] Bluetooth disconnect broadast for xxx
我使用ReentrantLock来确保每个设备只有一个Gatt,并通过MainThread注释在主线程上执行控制功能,但是问题仍然存在。
如何解决此问题?
最后,我解决了这个问题。 原因是我不能同时连接多个设备。 因此,我使用了一个队列来逐一连接设备。