【问题标题】:Android Bluetooth LE unplugged device write succeeds (Faster disconnected method?)Android蓝牙LE拔出设备写入成功(更快的断开方法?)
【发布时间】:2017-04-05 06:26:05
【问题描述】:

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

如果用户尝试更改 BLE 设备上的某些内容并且其写入失败 2-3 次,我将使用它,然后显示断开连接的屏幕(或失去连接以便用户获得更快的反馈),但这并没有似乎它会起作用。是否有更快的方法来检查 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!");
        }
    }

【问题讨论】:

标签: android bluetooth bluetooth-lowenergy


【解决方案1】:

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

【讨论】:

  • 感谢您的建议,这似乎是唯一可行的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2016-06-29
  • 2022-01-04
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
相关资源
最近更新 更多