У меня есть приложение для управления несколькими лампами Bluetooth 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, но проблема все еще существует.
Как я могу исправить эту проблему?
НаконецЯ решил эту проблему.Причина в том, что я не могу подключить несколько устройств одновременно.Поэтому я использовал очередь для подключения устройств одно за другим.