Я новичок в Android BLE, поэтому мой вопрос может быть неправильным или наивным в некотором роде. Если это так, пожалуйста, объясните мне, где я ошибаюсь, и, пожалуйста, покажите мне правильный способ управления этим сценарием.
Сценарий следующий: мое приложение Android связывается с устройством BLE, отправляя команды и получая ответы от устройства, используя характеристики BLE.
Последовательность:
- Устройство запускает приложение (вызывается метод
onConnectionStateChange
)
- Мое приложение записывает команду в характеристике (я называю
writeCharacteristic
, помещая команду в параметр value
).
- Устройство отправляет ответ на команду в мое приложение (метод
onCharacteristicChanged
запущен, а параметр value
содержит ответ)
После пробуждения приложения устройство ничего не делает, пока команда не отправлена через writeCharacteristic
. Устройство принимает разные команды.
Пока все хорошо, но недавно я разработал второе другое приложение для связи с одним и тем же устройством.
Когда я запускаю оба приложения на одном телефоне Android, одно приложение отправляет команду на устройство, и оба приложения получают ответ! Конечно, приложение, которое не отправило команду, получает неожиданный ответ и переходит в неожиданное состояние.
Хорошо, зная проблему, я могу изменить оба моих приложения, чтобы справиться с этой ситуацией, но возникает вопрос: нормально ли это поведение, когда два приложения в одном устройстве взаимодействуют с одним и тем же устройством BLE?
Есть ли способ для приложения установить канал связи с устройством BLE, чтобы избежать отправки ответа на конкретные команды любому другому приложению, кроме того, которое отправило запрос?
Я предполагаю, что writeCharacteristic
и onNotificationChanged
не являются правильными функциями для такого рода коммуникации, но в этом случае, какие альтернативы?