Я разрабатываю приложение, которое подключается к устройству Bluetooth с низким энергопотреблением. Архитектура программы требует, чтобы она собирала данные с этого устройства пачками. Пример: собирать данные в течение 30 секунд каждые 3 минуты. Для этого очень важно, чтобы батарея была эффективной.
Для этого устройства я подписался на уведомления от BluetoothGattCharacteristic. К сожалению, разрешение на чтение этой характеристики не дается, поэтому необходимо использовать уведомления.
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
mBluetoothGatt.writeDescriptor(descriptor);
а также
mBluetoothGatt.setCharacteristicNotification(characteristic, true);
Моя первая идея - просто установить
mBluetoothGatt.setCharacteristicNotification(characteristic, false);
когда не сканирует данные. Будет ли это по-прежнему потреблять много времени автономной работы? Я предполагаю, что обратные вызовы все еще прослушиваются. Должен ли я изменить дескриптор обратно в состояние без уведомлений?
Другой идеей было бы подключаться только при считывании данных с датчиков и отключаться по завершении. Это будет означать повторное подключение ~ 20 раз в час.