Подтвердить что ты не робот

Комбинируйте низкую энергию iBeacon bluetooth с Android 4.3

Я ищу способ обнаружения iBeacon (функция iOS 7.0) с устройства Android. Я читал документацию на Android, где, похоже, iBeacon - это своего рода сервер GATT, который отправляет свою позицию. Хотя в документации на Android говорится, что я не должен опросить эти данные, но для обнаружения это было бы необходимо.

Я google много, но эта тема довольно новая (я даже создал новый тег ), поэтому я был бы рад, если бы получил некоторые ссылки на ressources из iOS-мира, который описывает реализацию. Также, если есть некоторые Android файлы, которые я еще не нашел, было бы неплохо.

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ: библиотека ниже была перемещена сюда:

https://github.com/AltBeacon/android-beacon-library


Я портировал iOS7 iBeacon SDK на Android и смог увидеть стандартные iBeacon и оценить их диапазон. Код доступен здесь:

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

Чтобы это работало, вам нужен Android 4.3 с API-интерфейсами Low Energy Bluetooth. Вам также необходимо устройство с низким энергопотреблением Bluetooth-чипсета.

Если вы не хотите использовать полную библиотеку выше, вы можете свернуть свою собственную. iBeacons просто передают объявление BLE раз в секунду, которое начинается с известной последовательности байтов. Вы просто должны сказать Android сделать сканирование BLE, получить каждое объявление и найти то, которое начинается с известной последовательности байтов iBeacon. Затем вы можете разобрать поля iBeacon. Вот код, который показывает, как это делается:

https://github.com/RadiusNetworks/android-ibeacon-service/blob/master/src/com/radiusnetworks/ibeacon/IBeacon.java#L177-L231

Ответ 2

Единственный улов здесь - обнаружить маяк, даже если приложение не работает. В отличие от iOS7, это не поддержка. В iOS7, когда вы на своем BT, он автоматически уведомит вас, когда вы войдете в область зарегистрированного iBeacon.

Я реализовал iBeacon в Android 4.3 API с помощью IntentService plus AlarmManager. Для сканирования каждые 30 секунд (для экономии заряда аккумулятора оно должно быть больше). Он хорошо работает для пользователя. Только когда найден соответствующий файл uuid/major/minor, он вызывает уведомления. В противном случае он снова заснет и снова проснется для сканирования.

Я думаю, что это решение для вашего вопроса.

Ответ 3

Я не совсем понял, что вы имеете в виду, можете ли вы предоставить ссылки на документацию, в которой говорилось, что вы не должны опросить данные?

Но мне кажется, что iBeacon работает как сервер, что для меня довольно забавно. Разве это не значит найти другие устройства, а не сам телефон?

https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.position_quality.xml

Это характеристики, которые он использует. Для меня это звучит так, что устройства, которые вы ищете, являются "маяками", а сам телефон является просто слушателем. Таким образом, вы не будете опробовать данные EHPE и EVPE, но вы должны действительно слушать его изменения или "трансляции".

Я тоже очень к этому отношусь и не нашел никакой конкретной документации.

Хотя, пожалуйста, в ссылке, которую я предоставил, есть ссылка для загрузки в верхнем углу, которая предоставит вам полную документацию в формате PDF. Там вы, вероятно, найдете больше ответов.