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
,