Android蓝牙LE拔出设备写入成功(更快的断开方法?)

时间:2017-04-04 16:06:21

标签: android bluetooth bluetooth-lowenergy

我正在创建一个连接蓝牙LE设备的应用。一切正常,但如果设备被拔掉,应用程序需要10-15秒才能发送STATE_DISCONNECTED广播。如果我在拔掉它后尝试写入设备,我仍然将其视为我的BluetoothGattCallback中的GATT_SUCCESS。

如果用户尝试更改BLE设备上的某些内容并且其写入失败2-3次,然后显示断开连接的屏幕(或丢失连接以便用户获得更快的反馈),那么我将会使用,但这并不是&#39看起来好像它会起作用。有没有更快的方法来检查是否再也看不到BLE设备?

@Override
    public void onCharacteristicWrite(BluetoothGatt gatt,
                                     BluetoothGattCharacteristic characteristic,
                                     int status)
    {
        if (status == BluetoothGatt.GATT_SUCCESS)
        {
            // Is true even if the device has been unplugged?
            Log.i(TAG, "onCharacteristicWrite Success!");
        } else {
            Log.i(TAG, "onCharacteristicWrite Failed!");
        }
    }

1 个答案:

答案 0 :(得分:1)

我在为客户端应用程序工作时遇到了类似的问题。应用程序仍会显示它已连接到Ble设备,即使它已断开连接约10-15秒。应用程序不会知道设备已断开连接,它仍然会尝试让连接保持打开状态,并且会在一段时间后超时。幸运的是,我们的Ble设备在每次从应用程序写入后都会响应。因此即使writhecharcetersitc说写入成功,我也会等待Ble设备告诉我它成功接收了我的写入,这解决了我的问题。如果您可以更改固件代码,我建议您遵循相同的方法。