在连接期间避免从BLE设备发现服务

7
我正在开发一个使用低功耗蓝牙通信的Android应用程序,需要与我的BLE设备快速连接。发现设备的服务需要2秒钟,这对我的应用来说太长了。如果我首次连接到设备,服务将保存在BLE框架的缓存中,那么下一次尝试发现服务只需要几毫秒,这对我的应用来说是可以接受的。
问题是,如果我长时间断开与设备的连接或连接到另一个设备,则下一次连接到第一个设备时需要重新发现服务并需要2秒钟。
我只连接一种类型的设备,服务和特征已知。
我尝试使用绑定(配对)设备,但当我连接到它们时,没有保存服务,我需要再次发现它。
有没有方法可以保存服务和特征并将其保留在我的应用程序中,以便下一次连接到设备时无需发现服务?

这个问题解决了吗?我在Android L上遇到了类似的问题。 - Amit
我也想知道这个问题的答案。有没有办法始终避免服务发现? - Frans Lundberg
1个回答

4
您可以同时连接设备,但无需立即进行服务发现。只有在需要服务实例时才进行服务发现。 是否有任何方法可以保存服务和特征并将其保留在我的应用程序中,以便下次连接到设备时我不需要发现服务? 您可以在app中保存servicecharacteristic的详细信息。但是当您尝试读取和写入特性时,BluetoothGatt实例应具有此详细信息,并且仅有服务发现才会向BluetoothGatt实例添加服务数据。
因此,在使用这些services/characteristics之前,您必须在应用程序中的某个时间点执行service discovery

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接