私のアプリは BLE ペリフェラルと通信します。場合によっては、その周辺機器が既に接続されている状態でアプリが起動されることがあります。次のように呼び出してデバイスを取得できます。
BluetoothManager manager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
List<BluetoothDevice> connectedDevices = manager.getConnectedDevices(BluetoothProfile.GATT);
次に、アドレスまたは UUID に基づいて connectedDevices をフィルタリングできます。ただし、BluetoothDevice には切断メソッドがありません。切断するには、BluetoothGATT インスタンスが必要です。しかし、BluetoothGATT インスタンスを取得するために私が見ることができる唯一の方法は、呼び出すことです
connectedDevice.connectGatt(Context, boolean, BluetoothGattCallback)
これには非常に長い時間がかかります。これに加えて、connectGatt を呼び出した後に返される BluetoothGatt インスタンスは、disconnect() を呼び出したときに実際に周辺機器を切断しているようには見えません。
だから私の質問は:
- connectGattを呼び出さずに接続されたBluetoothDeviceを切断する方法はありますか?
- すでに接続されているデバイスの connectGatt に時間がかかるのはなぜですか?
- 接続された BluetoothDevice で connectGatt を呼び出すことは有効ですか?
ありがとうございました