【问题标题】:Android BLE onCharacteristicChanged stop firing after restarting the appAndroid BLE onCharacteristicChanged 重启应用后停止触发
【发布时间】:2015-07-22 06:35:47
【问题描述】:

退出应用并重新启动后,我不再收到onCharacteristicChanged

这是我与 ble 设备配对的步骤。

  1. 我有一个包含 ble 逻辑并持久化 bluetoothGatth obj 的服务,我在应用启动时在此处执行 blueToothGatt.connect
  2. 一旦我得到onConnectionStateChangeSTATE_CONNECTED,我就会打电话给blueToothGatt.discover
  3. onServicesDiscovered 回调中,我将获取并持久化我关心的服务和特征。然后我会调用blueToothGatt.setCharacteristicNotification 并写入描述符以启用通知。
  4. 现在我执行写操作,然后我会收到onCharacteristicChange 的回调就好了。
  5. 之后,假设我退出了应用程序(设备仍然配对)。最后一个活动的onDestroy,我的BLE设备服务被解除绑定......我将在unbind回调上执行关闭并调用selfstop停止服务。现在,如果我重新启动该应用程序。我将执行相同的步骤 1-4,但是这次 onCharacteristicChange 没有接到电话,我也尝试在关闭之前断开连接...但这没有帮助

(我确实注意到的一件事是,如果设备在重新启动时未配对/断开连接,则会出现问题,但是如果我关闭 BLE 设备的电源并在重新启动应用程序之前将其重新打开,那么我会得到回调onCharacteristicChanged 就好了。这似乎是设备保留了一些阻止onCharacteristics 接听电话的设置。)

对此的任何见解将不胜感激。谢谢!

【问题讨论】:

    标签: android bluetooth bluetooth-lowenergy


    【解决方案1】:

    我找到了解决方案。基本上蓝牙会缓存最后一个句柄,因此永远不会触发发现服务。连接后需要清除设备缓存。

    How to programmatically force bluetooth low energy service discovery on Android without using cache

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多