是否可以改进BLE服务发现

问题描述 投票:0回答:1

我有一个关于 Android 上 BLE 服务发现的小问题。 我的东西运行得很好,但我有一些性能问题..

我看到函数

BluetoothGatt.discoverServices()
首先发现所有服务+特征+描述符,然后再将其发送回给您。但就我而言,它需要两秒多一点的时间,我绝对需要它花费更少的时间。 我的代码基于我在 Android SDK 中找到的示例。

所以我只是想知道是否有什么办法可以做到?我们是否可以覆盖服务发现,以便我们可以只发现服务而不是特征/描述符或其他任何内容:/?或者还有其他方法可以发现服务吗?

android bluetooth bluetooth-lowenergy android-service bluetooth-device-discovery
1个回答
0
投票

老问题,但它需要一些见解。您可以在连接之后、在

discoverServices()
上调用
BluetoothGatt
之前将连接优先级设置为高,从而在一定程度上改进服务发现。尽管不建议这样做,因为它会很快耗尽智能手机的电池。但您可以在调用
onServicesDiscovered()
后切换回平衡优先级。因此在连接时执行此操作。

gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH);

然后按

onServicesDiscovered()
,将优先级切换回平衡。

gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_BALANCED);

这将改善您的服务发现。然而,值得一提的是,您获得的改进程度将取决于智能手机的 BLE 实现。

© www.soinside.com 2019 - 2024. All rights reserved.