Я разрабатываю приложение для Android, которое должно подписаться на несколько характеристик BLE.Как подписаться на несколько характеристик BluetoothLE с Android
Но что бы я ни делал, я получаю только обновленные значения от одного признака.
Вот код:
BluetoothGattCharacteristic characteristicVel = gatt.getService(BleDefinedUUIDs.Service.KOMMMODUL_SERVICE).getCharacteristic(BleDefinedUUIDs.Characteristic.VELOCITY);
gatt.setCharacteristicNotification(characteristicVel, true);
BluetoothGattDescriptor descriptorVel = characteristicVel.getDescriptor(
BleDefinedUUIDs.Descriptor.CHAR_CLIENT_CONFIG);
descriptorVel.setValue(BleDefinedUUIDs.Descriptor.ENABLE_NOTIFICATION_VALUE);
gatt.writeDescriptor(descriptorVel);
BluetoothGattCharacteristic characteristicAcc = gatt.getService(BleDefinedUUIDs.Service.KOMMMODUL_SERVICE).getCharacteristic(BleDefinedUUIDs.Characteristic.ACCELERATION);
gatt.setCharacteristicNotification(characteristicAcc, true);
BluetoothGattDescriptor descriptorAcc = characteristicAcc.getDescriptor(
BleDefinedUUIDs.Descriptor.CHAR_CLIENT_CONFIG);
descriptorAcc.setValue(BleDefinedUUIDs.Descriptor.ENABLE_NOTIFICATION_VALUE);
gatt.writeDescriptor(descriptorAcc);
Все, что я могу получить только данные о скорости. Если я изменю порядок двух блоков, я получаю только ускорение, но не больше данных о скорости.
Что мне делать, чтобы сразу подписаться на многие характеристики?
Заранее спасибо
Рето
Не могли бы вы попробовать ждать обратного вызова onDescriptorWrote из первого блока, прежде чем попытаться установить второй? – Zomb
Это хороший намек, на самом деле он решил мою проблему. Спасибо большое! – retokiefer
Я добавлю его в качестве ответа, чтобы другие могли его найти! – Zomb