Как считывать значения из двух сервисов одновременно

#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 и т.д.), Пока вы не сможете выполнить новый.