Ответ 1
Каждый из обратных вызовов от Android BLE имеет свои функции;
onDescriptorRead и onDescriptorWrite
Это используется для записи/чтения параметров конфигурации для устройства BLE, для некоторых производителей может потребоваться отправить некоторые данные на устройство BLE и подтвердить его, прочитав, прежде чем вы сможете подключиться к устройству BLE
onCharacteristicWrite
Это используется для отправки данных на устройство BLE, обычно в режиме данных для устройства BLE. Этот обратный вызов вызывается при вводе
gatt.writeCharacteristic(characteristics);
onCharacteristicRead
Используется для чтения данных с устройства BLE Обратный вызов вызывается, когда вы пишете этот код
gatt.readCharacteristic(characteristics);
onCharacteristicChanged
Этот обратный вызов вызывается, когда вы пытаетесь отправить данные с помощью writeCharacteristic (характеристики), а устройство BLE отвечает некоторым значением.
Обычно устройство BLE имеет несколько характеристик, чтобы сделать его простым, я называю несколько характеристик
- WRITE - писать характеристики
- READ - читать характеристики
Чтобы было ясно, когда вы отправляете данные, вам нужно будет использовать характеристики WRITE, а затем, когда устройство BLE ответит, приложение Android вызовет READ характеристики
Очень важно отметить, что стек Android BLE позволяет писать характеристики по одному за раз!
Пример: ЕСЛИ вы пытаетесь дважды вызывать характеристики записи.
gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);
Стек Android BLE не выдаст 2-х характеристик записи!