#android #beacon #altbeacon #ibeacon-android
Вопрос:
Я пытаюсь реализовать приложение с использованием рекламных BLE-маяков аналогично существующим приложениям для автоматического отслеживания контактов. Но мне нужно больше, чем обычные 25 свободных байтов в макете beacon.
Начиная с Bluetooth 5, должна быть возможность использовать расширенные рекламные пакеты размером до 255 байт (как описано здесь: https://www.novelbits.io/bluetooth-5-advertisements /)
Я видел поле дополнительных данных, но оно просто поддерживает long, и я не смог найти документацию об этом, и если это действительно то, что я ищу.
Итак, есть ли возможность использовать расширенные рекламные объявления или мне нужно реализовать его с нуля? Если поле дополнительных данных предназначено для расширенных рекламных объявлений, должна быть возможность передавать мои данные в байты, затем в long и делать это в обратном направлении при считывании, не так ли?
Большое спасибо за вашу помощь
Sanny
Ответ №1:
В то время как Android 8 SDKs поддерживает расширенные рекламные пакеты BLE 5.0 BluetoothDevice.PHY_LE_2M
, это будет работать только на устройствах как с аппаратной поддержкой, так и с драйверами встроенного ПО с расширениями 5.0.
Библиотека Android Beacon не имеет никаких инструментов, которые позволяют рекламировать пакеты beacon или сканировать пакеты beacon с увеличенной длиной. Причины:
- Относительно немногие модели телефонов поддерживают встроенное ПО для расширений BLE 5.0.
- Эти расширенные пакеты не используются в широко используемых форматах beacon.
Тем не менее, библиотека является расширяемой и может быть расширена, чтобы предлагать эти функции для поддерживаемых устройств. Если вы можете привести веские доводы в пользу добавления этих функций и заинтересованы в оказании помощи в выполнении работы, вы можете захотеть открыть вопрос с запросом функции или предложенный запрос на извлечение реализации из репозитория с открытым исходным кодом.
Комментарии:
1. Спасибо за подробный ответ! Хотелось бы видеть, что библиотека справляется с этими функциями, но никогда не делала что-то в подобном проекте, и только что осталось ~ 1 месяц для моей бакалаврской диссертации. Поэтому я думаю, что для меня было бы более целесообразно «просто заставить это работать» для себя, а затем внести его в библиотеку более организованным образом, когда у меня будет время для этого. Есть ли другой способ, кроме попытки isLeExtendedAdvertisingSupported() на конкретном смартфоне, чтобы узнать, поддерживает ли он расширенную рекламу? Пытался найти его для того, который купил мой институт, но не смог найти больше, чем «поддерживает Bluetooth 5»
2. Да, вы должны выполнить
isLeExtendedAdvertisingSupported
вызов, но также искать ошибки при вызовах API сканирования и рекламы. Вероятно, у вас не будет успеха с более дешевыми моделями от китайских OEM-производителей. Лучше всего использовать новые устройства Pixel.3. Протестировал его сразу после публикации моего комментария, и он работает для GALAXYA12, которые мой институт купил в этом году. Итак, на потом: проблема с запросом функции и / или возможность помочь с реализацией находятся в git, не так ли? Извините, но, как я уже сказал, никогда раньше не делал ничего подобного, и мой бакалавр был довольно теоретическим, в нем было всего несколько практических частей кодирования. Так что, возможно, мне понадобится некоторое объяснение того, как работать вместе над этим и в каких стандартах вы хотите иметь работу / документацию.
4. Лучший подход — написать подробную информацию о том, что вы хотите, чтобы библиотека выполняла (вы хотите, чтобы она просто рекламировала большие пакеты или как рекламировала, так и обнаруживала?) Показан пример того, как будет выглядеть пакет beacon в отличие от существующих стандартных пакетов beacon, поддерживаемых библиотекой, таких как AltBeacon, iBeacon и Eddystone. И если требуется обнаружение, будут ли существующие API (например, ранжирование, мониторинг) работать как есть для того, что вы хотите сделать, или вам нужно их изменить. Используйте ссылку здесь , чтобы создать новую проблему.