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 просто висит там.

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

Ответы

Ответ 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-х характеристик записи!

Ответ 2

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