蓝牙连接已挂在第一个蓝牙加密狗上(Android App)

时间:2018-08-18 07:51:23

标签: android bluetooth bluetooth-lowenergy android-bluetooth bluetooth-gatt

在使用通过BT LE(低功耗蓝牙)连接的多个设备时,我遇到问题。

工作流程如下: enter image description here

处理步骤: 1.扫描所有蓝牙设备以获取地址。

BluetoothAdapter btAdapter = ((BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter();
BluetoothLeScanner bluetoothLeScanner = mBtAdapter.getBluetoothLeScanner();
ScanSettings settings = new ScanSettings.Builder()
                .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
                .build();
if (btAdapter .isEnabled()) {
    bluetoothLeScanner.startScan(filters, settings, mScanCallback);
}

2。循环所有设备,直到步骤1为止。对于每个设备:

BluetoothDevice btDevice = bluetoothAdapter.getRemoteDevice(deviceAddress);
BluetoothGatt bluetoothGatt = mBluetoothDevice.connectGatt(context, false, btCallback); 

在btCallBack的onConnectionStateChange()上,我调用bluetoothGatt .discoverServices();当连接状态为STATE_CONNECTED时。

与设备进行数据交换之后。我打电话

bluetoothGatt.disconnect();
Thread.sleep(500);
bluetoothGatt.close();

处理下一个设备

问题是,当我分别调用bluetoothGatt.disconnect()和bluetoothGatt.close()时,第一个Bluetooth Dongle连接始终挂起,并且即使我杀死了该应用程序,蓝牙加密狗的蓝色指示灯也从未闪烁。

工作完成后,只有最后一个蓝牙加密狗可以释放连接。

我的问题是为什么我分别调用Disconnect()和close()但它不起作用?

build.gradle:minSdkVersion 21,targetSdkVersion 28

否则,此问题仅在某些Android设备上才会发生,而不是在所有设备上都发生。例如,它在Samsung设备(Android 7)上运行良好,但在其他设备上则无法运行。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试了很多之后。我通过在ICU连接之间增加空闲时间来解决此问题。

步骤如下。 1.连接到设备1 2.传输数据 3.断开设备1 4. Thread.sleep几秒钟 5.连接到设备2 ...

希望这可以帮助某人像我一样遇到问题。