Android蓝牙低功耗有时会锁定

时间:2014-10-16 11:36:20

标签: android bluetooth bluetooth-lowenergy android-bluetooth

我有一个完整的应用程序,准备发货,连接到我们已经制作的自定义蓝牙外设。 但是我刚刚发现了一个我无法确定的应用程序问题。

我正在Service运行所有蓝牙操作,有时当我希望蓝牙操作结束时,我最终还是连接了1个外围设备,但我已经丢失了所有指针。而且整个蓝牙堆栈似乎都会锁定,并且需要重新启动手机。

我认为在我停止扫描后尝试清除任何连接的设备时会出现问题。 我有这种清理方法

private void clearAllDevices() {
        Log.e(TAG, "Clear all devices");
        for (int i = 0; i < _connectedPeripherals.size(); i++) {
            Log.e(TAG, "int i:" + i + " _connectedPeripherals size:" + _connectedPeripherals.size());
            BluetoothGatt gatt = (BluetoothGatt) _connectedPeripherals.get(i);
            gatt.disconnect();
        }
}

但是,我认为有时外围设备在断开与连接的所有连接的同时连接到一半。

是否有更好的方法来清除所有正在连接的连接设备或设备?

1 个答案:

答案 0 :(得分:5)

仅仅{p> bluetoothGatt.disconnect()是不够的。您还应该致电bluetoothGatt.close()

  

一旦您的应用程序使用完BLE设备,就应该调用 close() ,以便系统可以正确释放资源。

请参阅:API Guides > Bluetooth Low Energy

您可以通过bluetoothGatt.disconnect()回调查看BluetoothGattCallback.onConnectionStateChange的结果。