我继承了一个Android应用程序,它可以读取特征,然后关闭连接。对于Android Gatt版本4和5,Gatt缓存服务和特征,并在后续连接上使用缓存。这对我的应用程序是有好处的,尽管我知道它会引起其他问题。
最近在MOTO Play上使用Android 6.0.1进行的测试表明,Gatt没有使用缓存,并在每个连接上请求服务和特征。我的应用程序仍然可以工作,但它需要时间和电力,这是不好的。
在谷歌搜索之后,我不清楚Gatt缓存是在配对/绑定之后启用的,还是在连接之后启用的。我的应用程序无法配对或绑定。
发布于 2016-11-13 06:39:54
它与配对/绑定或连接都没有任何关系。一旦你在连接后执行发现,Android就会缓存服务和特征。
根据我的经验,我发现一些设备总是执行发现,而其他不执行GATT缓存的设备节省了相当多的时间。外围设备改变其服务或特性是不常见的,因此缓存始终是一种好方法。然而,不幸的是,你无法通过Android API来管理它,这完全取决于Android和设备的BLE堆栈固件。
发布于 2016-11-19 19:18:24
根据该规范,如果设备未被绑定(并且其具有服务改变的特性),则可以不高速缓存GATT。所以新的行为是正确的。只需使用绑定,它将使用缓存。
https://stackoverflow.com/questions/40511225
复制相似问题