RxAndroidBle scanBleDevices (UUID) не срабатывает

У меня возникли проблемы с использованием метода scanBleDevices при передаче ему (действительного) UUID - подписка никогда не сработает. В настоящее время у меня есть рабочий прототип, использующий обычные для Android методы сканирования, подключения, чтения/записи, но я хочу обновить синтаксис RxAndroidBle, чтобы сделать его более безопасным и удобным для чтения.

Вот моя реализация RxAndroidBle - не работает / подписка никогда не срабатывает:

введите здесь описание изображения

Вы можете подумать, что мой UUID неверен, но вот некоторая альтернативная реализация, которую я сделал, используя предыдущую версию с очень большим состоянием - тот же uuid, это работает:

введите здесь описание изображения

mLeScanCallback будет запущен.

Я использую RxAndroidBle версии 1.2.2, а мой телефон — Nexus 6P Android версии 6.0.1.

Некоторая дополнительная информация: если я использую scanBleDevices(), без параметров, я могу найти желаемый rxBleScanResult, проверив что-то в данных производителя, что я все равно буду делать. Но я хотел бы также отфильтровать UUID, чтобы быть в безопасности. Когда я нашел нужные байты пакета [], я попытался извлечь свой UUID, используя (устаревший) new UUIDUtil().extractUUIDs(rxBleScanResult.getScanRecord()), но это вернуло пустой список. И просто чтобы еще больше зафиксировать ситуацию, когда я использую старомодный mLeScanCallback, приведенный выше экстрактUUIDS также приводит к пустому списку.

Спасибо за ваше время!


person Ethan    schedule 01.06.2017    source источник


Ответы (1)


На самом деле это ошибка в библиотеке RxAndroidBle. Как видно из UUIDUtil (https://github.com/Polidea/RxAndroidBle/commit/ee59e0ab9ae3c483f5c4f35c7729e9fc2068ee21#diff-c7944d4c01c56adf4e6c67c7f7f737e8) — который отвечает за извлечение сервисных UUID из рекламы bluetooth — в нем отсутствовали 32-битные UUID. Исправление добавлено в только что выпущенную версию 1.2.3.

person Dariusz Seweryn    schedule 01.06.2017
comment
Это работает! Спасибо, s_noopy! Мне было интересно ваше мнение о здоровье RxAndroidBle. Они очень быстро ремонтируют вещи - но, может быть, это не готово к производству? Я люблю эту библиотеку. Я думаю, что я буду продолжать с ним в любом случае. - person Ethan; 01.06.2017
comment
Так что на самом деле под капотом фильтрация на основе байтового массива ScanPackage такая же, как фильтрация по методу scanBleDevices(UUID...)? Ну что ж! - person Ethan; 01.06.2017
comment
Эта библиотека используется на продакшене уже в нескольких разных проектах и ​​если ваше периферийное устройство не меняет сервисы и не использует зашифрованные характеристики — оно готово к использованию — вышеперечисленные вопросы предстоит решить. Я не понимаю часть ScanPackage. - person Dariusz Seweryn; 02.06.2017