Многократная запись Android BLE GATT — ошибка WriteCharacteristics

Я пытаюсь записать данные, используя код удара, успешно полученный на цели.

boolean status = mBluetoothGatt.writeCharacteristic(characteristic);

byte[] value = new byte[1];
            value[0] = (byte)inputvalue;
            characteristic.setValue(value);

            if (value.length <20){
                boolean status = mBluetoothGatt.writeCharacteristic(characteristic);
                Log.d("send Status ******-  : ", String.valueOf(status));
            }

Но когда я пытаюсь записать несколько раз, я не могу отправить данные. Также пытался отправить с 2-секундной задержкой, тогда все работает нормально. Как я могу сделать это без задержки


person Vineesh TP    schedule 30.12.2015    source источник


Ответы (1)


BLE на Android асинхронный и, как известно, с ним сложно работать. Обычно вам нужно дождаться завершения первой операции GATT, прежде чем вы сможете выполнить последующую операцию GATT (поэтому она работает, когда вы добавляете задержку).

Я бы порекомендовал вам проверить этот проект от Nordic semiconductor, который включает в себя хороший процессор очередей, который делает BLE управляемым. https://github.com/NordicSemiconductor/puck-central-android

person ayvazj    schedule 30.12.2015