我的应用程序与 BLE 外围设备通信。有时,应用程序在该外围设备已连接的情况下启动。我可以通过调用来检索设备:
BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
List<BluetoothDevice> connectedDevices = manager.getConnectedDevices(BluetoothProfile.GATT);
然后我可以根据地址或 UUID 过滤 connectedDevices。但是,BluetoothDevice 没有断开连接的方法。要断开连接,我需要一个 BluetoothGATT 实例。但我能看到获取 BluetoothGATT 实例的唯一方法是调用
connectedDevice.connectGatt(Context, boolean, BluetoothGattCallback)
这需要很长时间。最重要的是,当我调用 disconnect() 时,我在调用 connectGatt 后返回的 BluetoothGatt 实例似乎并没有真正断开外围设备。
所以我的问题是:
- 有没有办法在不调用 connectGatt 的情况下断开连接的蓝牙设备?
- 为什么 connectGatt 对于已经连接的设备需要这么长时间?
- 在连接的蓝牙设备上调用 connectGatt 是否有效?
谢谢