android - Android 6.0.1 中的 Gatt 缓存

标签 android bluetooth-lowenergy gatt

我继承了一个读取特征然后关闭连接的 Android 应用程序。对于版本 4 和 5 的 Android Gatt 缓存服务和特征,并在后续连接上使用缓存。这对我的应用程序有好处,尽管我知道它会导致其他问题。

最近在 MOTO Play 上使用 Android 6.0.1 进行的测试表明,Gatt 没有使用缓存,而是在每个连接上请求服务和特性。我的应用程序仍然可以工作,但它需要时间并且会耗电,这很糟糕。

谷歌搜索后,我不清楚 Gatt 缓存是在配对/绑定(bind)后启用还是刚连接后启用。我的应用程序不配对或绑定(bind)。

最佳答案

它与配对/绑定(bind)或连接无关。一旦您在连接后执行发现,Android 就会缓存服务和特征。

根据我的经验,我发现一些设备总是进行发现,而另一些不进行 GATT 缓存的设备节省了大量时间。外设更改其服务或特性的情况并不常见,因此缓存始终是一种不错的方法。然而不幸的是,您无法通过 Android API 进行管理,这完全取决于 Android 和设备的 BLE 堆栈固件。

关于android - Android 6.0.1 中的 Gatt 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511225/

相关文章:

linux - 在 Bluez 中编写 Gatt 服务器应用程序

android - 未调用蓝牙 GATT 断开 onConnectionStateChange

java - 无法解析滑动菜单 fragment 中的符号 'TabLayout'

Android服务器http连接

ios - 在 BLE 中读取和写入数据以快速打开/关闭 LED

ios - 是否可以使用 HM-10 或 HM-11 BLE 模块与 Arduino 与 iOS 设备 (ANCS) 进行通信?

android - Android与BLE设备完成蓝牙通信

php - 使用android检查mysql数据

Android 开关小部件 : Setting android:track causes thumb and track to not show up

android - 蓝牙 Gatt 回调不适用于 Lollipop 的新 API