Android Bluetooth Low Energy – iBeacon

Недавно у меня появилось устройство iBeacon с целью создания приложений для Android, которые могут распознать его и использовать. Я новичок в bluetooth в приложениях для Android, и там много чего, чем я до сих пор не знаю. Глядя в Интернет и на этом форуме, я нашел рекомендации по использованию библиотеки IBIacon для Android Radius Networks, но, увы, теперь она больше не доступна:

https://github.com/RadiusNetworks/android-ibeacon-service

Поэтому я начал с использования кода, показанного в руководстве Android Developers о Bluetooth Low Energy: https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

Используя этот код, я могу обнаружить устройство, даже подключиться к нему, но я не знаю, как получить значения Proximity Uuid и основных и второстепенных значений: приложение показывает множество Uuids от служб и характеристик устройства, но ни один Является устройством близости от устройства.

Кто-нибудь может рассказать мне, как получить эти данные с помощью Android Bluetooth LE API, или помочь мне получить библиотеку Android iBeacon для Radius Networks для Eclipse и руководство по ее использованию или образец, показывающий, как его использовать?

Спасибо.

Solutions Collecting From Web of "Android Bluetooth Low Energy – iBeacon"

EDIT / UPDATE:
Все становится лучше .. AltBeacon !
Проверьте спецификации AltBeacon

AltBeacon обеспечивает большую прозрачность в отношении того, что передает маяк, и как эти данные могут использоваться Android, Windows и другими устройствами.


Почему библиотека Android iBeacon от RadiusNetworks больше недоступна:

Поставщики начали выполнять рекомендации, установленные Apple, и в результате были вынуждены «счистить» свои продукты любых ссылок или соединений между устройствами Android и их обнаружение протоколов iBeacon.

Подробнее: Apple распадается на iBeacon для Android
Я думаю, что лучший вариант, похоже, принадлежит кому-то, кто его использовал, уже имеет его, может поделиться им с вами, как и с предыдущих коммитов, вы не можете получить каждый компонент – библиотеку, образец, услугу

Также: записка генерального директора по Android iBeacon Lib, RadiusNetworks

Теперь, придя в Proximity UUID и майор , несовершеннолетние :
Я не нашел прямого способа получить его с точки зрения параметра, хотя вы можете взглянуть на чтение основных, второстепенных, uuid маяков в android и SensorTag с использованием технологии iBeacon . В последнем случае есть указание на майор, незначительный, uuid после iBeacon Service, однако инструменты TI могут быть ограничением.

В android в качестве идентификатора вы можете восстановить device address помощью device.getAddress() маяка / для каждого BluetoothDevice device; ,

Следующие два являются совершенно разными, хотя оба они называются UUID.

  • UUIDs служб GATT, которые размещаются на периферийном устройстве BLE.
  • Удаленный UUID iBeacon.

Что вы должны знать о «UUIDs услуг GATT»:

  1. В периферийных устройствах BLE может реализоваться сервер GATT.
  2. Сервер GATT поддерживает службы GATT.
  3. Что возвращает API «android.bluetooth.BluetoothGatt.getServices ()», это список служб GATT (List <BluetoothGattService>).
  4. BluetoothGattService.getUuid () возвращает идентификатор службы.

Что вы должны знать о «UUID близости» iBeacon:

  1. BLE периферийные устройства передают рекламные пакеты.
  2. Часть полезной нагрузки рекламного пакета содержит список структур AD.
  3. Структура AD состоит из (1) длины (1 байт), (2) типа AD (1 байт) и (3) данных AD. Формат структуры AD описан в «11 ФОРМАТ ДАННЫХ РЕКЛАМЫ И СКАНИРОВАНИЯ РЕСУРСОВ» в «Спецификации Bluetooth Core 4.2».
  4. IBeacon – это своего рода структура AD.
  5. AD Тип iBeacon равен 0xFF (что означает данные изготовителя).
  6. Первые 4 байта данных AD iBeacon равны 0x4C, 0x00, 0x02 и 0x15. Первые 2 байта (0x4C, 0x00) означают «Apple, Inc.» А следующие 2 байта (0x02, 0x15) означают «формат iBeacon».
  7. Proximity UUID (16 байт), основное число (2 байта в большом конце), младшее число (2 байта в большом конце) и мощность (1 байт) соответствуют первым 4 байтам.

Итак, что вам нужно сделать, чтобы получить информацию iBeacon (Proximity UUID, major, minor, power), являются следующими.

  1. Разбирайте полезную нагрузку рекламных пакетов как список структур AD.
  2. Для каждой структуры AD проверьте, является ли тип AD 0xFF, а первые 4 байта данных AD – 0x4C, 0x00, 0x02 и 0x15.
  3. Когда выполняются условия 2., проанализируйте оставшиеся байты как UUID близости, основное число, младшее число и мощность.

Если вы используете nv-bluetooth , вы можете извлечь iBeacon из рекламного пакета следующим образом:

 public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { // Parse the payload of the advertising packet. List<ADStructure> structures = ADPayloadParser.getInstance().parse(scanRecord); // For each AD structure contained in the advertising packet. for (ADStructure structure : structures) { if (structure instanceof IBeacon) { // iBeacon was found. IBeacon iBeacon = (IBeacon)structure; // Proximity UUID, major number, minor number and power. UUID uuid = iBeacon.getUUID(); int major = iBeacon.getMajor(); int minor = iBeacon.getMinor(); int power = iBeacon.getPower(); ........ 

Подробнее см. « IBeacon как своего рода структуры AD ».

RadiusNetworks «переиздал» библиотеки и примеры в сочетании с новой спецификацией близости к беспроводной платформе Cross Platform.

Новый стандарт AltBeacon позволяет использовать приложения с кросс-платформенной близостью

Отъезд altbeacon.org .