蓝牙连接挂在第一个蓝牙加密狗(Android 应用程序)
Bluetooth connection is hanged on first Bluetooth dongle (Android App)
我在使用通过 BT LE(低功耗蓝牙)连接的多个设备时遇到问题。
工作流程如下:
处理步骤:
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.Loop 所有设备通过第 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() 但第一个蓝牙加密狗连接总是挂起,即使我关闭应用程序,蓝牙加密狗的蓝色 LED 也不会闪烁。
工作完成后,只有最后一个蓝牙适配器可以释放连接。
我的问题是为什么我调用了 disconnect() 和 close() 但它们不起作用?
build.gradle: minSdkVersion 21, targetSdkVersion 28
否则,此问题仅出现在某些类型的 Android 设备上,并非所有设备。例如,它在三星设备 (Android 7) 上运行良好,但在其他设备上运行不佳。
如有任何帮助,我们将不胜感激。
经过多次尝试。我通过在 ICU 连接之间添加空闲时间解决了这个问题。
步骤如下。
1.连接到设备1
2.传输数据
3. 断开设备 1
4. Thread.sleep 几秒钟
5.连接到设备2
...
希望这对像我一样有问题的人有所帮助。
我在使用通过 BT LE(低功耗蓝牙)连接的多个设备时遇到问题。
工作流程如下:
处理步骤: 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.Loop 所有设备通过第 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() 但第一个蓝牙加密狗连接总是挂起,即使我关闭应用程序,蓝牙加密狗的蓝色 LED 也不会闪烁。
工作完成后,只有最后一个蓝牙适配器可以释放连接。
我的问题是为什么我调用了 disconnect() 和 close() 但它们不起作用?
build.gradle: minSdkVersion 21, targetSdkVersion 28
否则,此问题仅出现在某些类型的 Android 设备上,并非所有设备。例如,它在三星设备 (Android 7) 上运行良好,但在其他设备上运行不佳。
如有任何帮助,我们将不胜感激。
经过多次尝试。我通过在 ICU 连接之间添加空闲时间解决了这个问题。
步骤如下。 1.连接到设备1 2.传输数据 3. 断开设备 1 4. Thread.sleep 几秒钟 5.连接到设备2 ...
希望这对像我一样有问题的人有所帮助。