我正在开发一个连接蓝牙低功耗设备的应用程序。该程序的体系结构要求它以突发方式从该设备收集数据。示例:每3分钟收集一次数据30秒。 这对电池效率非常重要。
对于此设备,我已订阅BluetoothGattCharacteristic的通知。不幸的是,没有给出关于此特性的读取权限,因此必须使用通知。
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
和
mBluetoothGatt.setCharacteristicNotification(characteristic, true);
我的第一个想法是简单地设置
mBluetoothGatt.setCharacteristicNotification(characteristic, false);
不扫描数据时。这还会消耗大量的电池寿命吗?我假设回调仍然在听。我是否需要将描述符更改回非通知状态?
另一个想法是仅在从传感器读取数据时进行连接,并在完成时断开连接。这意味着每小时重新连接约20次。
答案 0 :(得分:0)
我建议您阅读特征值,而不是将其设置为通知。这样,您只需要在需要来自BLE设备的数据时进行通信。
1)您认为特征数据在BLE设备端会发生变化的频率。
2)您是否担心BLE设备侧或手机电池电量耗尽?