我通过以下方式连接到ble设备:

 mBluetoothGatt = device.connectGatt(this.context, false, mGattCallback);

然后
 mBluetoothGatt.disconnect();

但是,如果我快速进行操作,则会收到status=BluetoothGatt.GATT_FAILUREonConnectionStateChange中的mGattCallback
然后即使关闭/打开蓝牙,我也无法再次连接到GATT。

只有应用程序的“强制停止”才能解决问题

最佳答案

通过在状态为mBluetoothGatt.close();时添加STATE_DISCONNECTED进行修复

private final BluetoothGattCallback mGattCallback =
            new BluetoothGattCallback() {
                @Override
                public void onConnectionStateChange(BluetoothGatt gatt, int status,int newState) {
                    String intentAction;

                    if (newState == BluetoothProfile.STATE_CONNECTED) {

                    } else if (status==133&&newState == BluetoothProfile.STATE_DISCONNECTED) {
                        mBluetoothGatt.close();
                    }else if (status==BluetoothGatt.GATT_FAILURE&&newState == BluetoothProfile.STATE_DISCONNECTED){

                    } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                        mBluetoothGatt.close();
                    }
                }

09-30 23:09