Android BLE, чтение и запись характеристик

В настоящее время я занимаюсь разработкой Android BLE и сталкиваюсь со множеством проблем со стеками Android BLE.

Мой инструмент разработки - Samsung Galaxy J с Android 4.3.

Я хочу знать, как я могу прочитать характеристики из BLE и записать характеристики (как будто я проверяю, какие данные я получил, а затем отправляю другие данные, используя BLE)

и у меня есть серьезные проблемы с пониманием того, как работают обратные вызовы Android BLE, я не понимаю эти 5 функций... и руководство не ясно, может ли кто-нибудь хорошая душа объяснить в простой форме???

onCharacteristicWrite
onCharacteristicRead
onCharacteristicChanged
onDescriptorRead
onDescriptorWrite

Моя текущая ситуация заключается в том, что мне удалось прочитать данные в обратном вызове onCharacteristicChanged (), а затем я проверил полученные данные, которые я пытаюсь отправить, используя данные

characteristics.setValue(data)
gatt.writeCharacteristic(characteristics)

Но стек Android BLE не вызывает onCharacteristicsWrite (), и фактически Android там просто зависает..

Я пытаюсь гуглить по поводу Android BLE, информации не так много, и только куча жалоб на нестабильность стека BLE......

2 ответа

Решение

Каждый обратный вызов из Android BLE имеет свои функции;

onDescriptorRead и onDescriptorWrite

Это используется для записи / чтения настроек конфигурации для устройства BLE, некоторым производителям может потребоваться отправить некоторые данные на устройство BLE и подтвердить их чтением, прежде чем вы сможете подключиться к устройству BLE

onCharacteristicWrite

Это используется для отправки данных на устройство BLE, обычно в режиме данных для устройства BLE. Этот обратный вызов вызывается при вводе

gatt.writeCharacteristic(characteristics);

onCharacteristicRead

Это используется для чтения данных с устройства BLE. Обратный вызов вызывается, когда вы пишете этот код

gatt.readCharacteristic(characteristics);

onCharacteristicChanged

Этот обратный вызов вызывается, когда вы пытаетесь отправить данные, используя writeCharacteristic (характеристики), и устройство BLE отвечает некоторым значением.

Обычно устройство BLE имеет мало характеристик, для простоты я назову несколько характеристик

  • НАПИСАТЬ - написать характеристики
  • ЧИТАТЬ - читать характеристики

Чтобы было понятно, когда вы отправляете данные, вам нужно будет использовать характеристики WRITE, а затем, когда устройство BLE ответит, приложение Android вызовет характеристики READ.

Очень важно отметить, что стек Android BLE позволяет записывать характеристики только по одному!!

Пример: если вы пытаетесь вызвать характеристики записи дважды

gatt.writeCharacteristic(characteristics);
gatt.writeCharacteristic(characteristics);

Стек Android BLE не будет выдавать 2-ые характеристики записи!

До setValue:characteristics.setValue(data) ты должен использовать gatt.setCharacteristicNotification(Char,true) в setNotification,

Другие вопросы по тегам