#java #android #bluetooth-lowenergy
#java #Android #bluetooth-низкое энергопотребление
Вопрос:
Я работаю над проектом с использованием BLE и хочу считывать значения из двух сервисов одновременно, но я получаю значение только из первого
Обнаруженный мной onservicesкод
public void onServicesDiscovered(BluetoothGatt gatt, int status)
{
for (BluetoothGattService service : gatt.getServices()) {
if ((service == null) || (service.getUuid() == null)) {
continue;
}
if (BleUuid.SERVICE_DEVICE_INFORMATION.equalsIgnoreCase(service
.getUuid().toString()))
{
mConnGatt.readCharacteristic(service.getCharacteristic(UUID.fromString(BleUuid.CHAR_MANUFACTURER_NAME_STRING)));
}
if (BleUuid.CHAR_ALERT_LEVEL.equalsIgnoreCase(service
.getUuid().toString()))
{
mConnGatt.readCharacteristic(service.getCharacteristic(UUID.fromString(BleUuid.CHAR_SERIAL_NUMBEAR_STRING)));
}
}
Ответ №1:
Одновременно у вас может быть только одна незавершенная операция GATT (readCharacteristic, writeCharacteristic, readDescriptor, writeDescriptor, requestMtu). Вам нужно дождаться соответствующего обратного вызова (onCharacteristicRead и т.д.), Пока вы не сможете выполнить новый.