iBeacon SDK на Android

Содержание
ibeacon SDK

Возможные варианты использования и бизнес-модели маяка, обеспечивающего взаимодействие с пользователем, зависящее от его местоположения, даже внутри зданий, в настоящее время являются предметом горячих дискуссий. Реклама и скидки в магазинах, мобильные платежи, навигация, общественный транспорт, локализация в общественных зданиях и музеях, а также домашняя автоматизация — это лишь вершина айсберга. И, конечно же, повсеместный сбор данных — теперь новый и с точной информацией о местоположении. Прежде чем подробнее рассказать о технологии iBeacon, мы также упомянем в статье iBeacon SDK.

Что за шумиха?

Протокол iBeacon, разработанный Apple на основе Bluetooth Low Energy, поддерживается различными устройствами. В статье рассматриваются iBeacon и Bluetooth Low Energy, а также на примере разработки приложения для Android для составления списков покупок, зависящих от местоположения, демонстрируется взаимодействие приложения с iBeacon, зависящее от местоположения. Реализация основана на MOKOSmart iBeacon SDK.

iBeacon, Bluetooth 4.0, BLE, SMART. Что?

Базовой технологией iBeacon является Bluetooth. Технология Bluetooth Low Energy (BLE), часто называемая маркетинговым обозначением Bluetooth Smart, была включена в версию 4.0 стандарта Bluetooth. BLE не имеет обратной совместимости с предыдущими версиями Bluetooth Classic. Bluetooth 4.0 определяет, что устройства, соответствующие стандарту, должны поддерживать один или оба варианта технологии: Low Energy или Classic.

Технология BLE реализована практически на всех современных смартфонах, таких как iPhone 4+ и Samsung Galaxy 3+. iPhone может работать как приёмник сигналов iBeacon, так и, в отличие от Android, как маяк Android включает драйверы BLE из API версии 18, то есть Android 4.3. Кстати, современные компьютеры также поддерживают BLE. Однако в Windows драйверы встроены только в Windows 8, а с середины 2011 года BLE доступен на компьютерах Apple.

BLE продолжает поддерживать множество периферийных устройств, таких как пульсометры и игрушечные вертолеты, термометры, фитнес-оборудование и зубные щетки, да, зубные щетки и кроссовки.

Интересным в связи с iBeacons является датчик

Датчик от Texas Instruments, который, помимо функции iBeacon, также может измерять температуру, влажность, давление и ускорение. Датчик также оснащён гироскопом, магнитометром и двумя аппаратными кнопками. Идеальное устройство для удалённого управления презентациями, одновременно передавая и отображая данные о влажности и температуре рук докладчика. Думаю, моим следующим проектом в песочнице станет коврик для боязни сцены. Подробный список устройств Bluetooth можно найти на официальном сайте.

Готовность к ГАТТ

Коммуникационная модель, используемая устройствами для обмена данными, называется GATT (Generic Attribute Profile). GATT определяет роли клиента и сервера. Клиент запрашивает данные у сервера через сервисы. Сервис группирует несколько атомарных пар «ключ/значение», которые называются характеристиками. Как сервисы, так и характеристики идентифицируются с помощью универсальных уникальных идентификаторов (UUID) и могут содержать дополнительные описания. Сервисы и их характеристики каталогизированы в виде профилей; спецификация определяет целый ряд таких профилей из областей здравоохранения, спорта и фитнеса, а также, в нашем случае, датчиков приближения. Отдельные профили, их сервисы и характеристики можно найти на портале разработчиков Bluetooth в разделе «Спецификации GATT».

gatt ibeacon sdk

Добраться до маяка 

Итак, что же такое iBeacons? iBeacon — это очень простая технология (и товарный знак Apple), которая обеспечивает взаимодействие с приложениями в зависимости от местоположения. Маяк отправляет сигнал, который может быть получен устройствами, совместимыми с BLE, и обработан установленными на нем приложениями. Сигнал содержит идентификационные данные маяка и уровень сигнала. Таким образом, сами iBeacons — вопреки неточным заявлениям в прессе — не могут доставлять контент или отслеживать поведение пользователей. Это ответственность принимающих приложений и, следовательно, разработчиков.

iBeacon IRL

Масштабное внедрение iBeacons в Германии, вероятно, продлится долго, но уже есть примеры из США и Нидерландов. Например, Главная лига бейсбола оснастила 28 стадионов iBeacons и использует их, в том числе, для чек-инов в приложении MLB «At the Ballpark».

В Доме Рубенса в Антверпене была создана витрина, предлагающая посетителям справочную информацию, например, рентгеновские снимки картин и игры в геокэшинг.

Самый яркий пример масштаба — сама компания Apple. Более 250 магазинов Apple Store оснащены iBeacon. В сочетании с приложением Apple Store покупателям, находящимся в магазине, отправляются геозависимые сообщения. Однако в настоящее время возможности взаимодействия, по всей видимости, весьма ограничены: в первых отзывах упоминаются только два разных (и довольно общих) сообщения, которые они могли бы получить. Специальные предложения или конкретная информация об отдельных товарах поблизости не предлагались.

Функциональность системы

iBeacon SDK использует не отдельный профиль BLE, а пакеты Bluetooth Advertisement, то есть широковещательные пакеты, которые используются для обнаружения Bluetooth-устройств. Если вам интересна точная структура пакета, вы можете прочитать об этом, например, в блоге Адама Варски.

Такой пакет отправляется с регулярными интервалами, которые можно настроить через GATT. Он содержит UUID маяка, который обычно предварительно настраивается производителем. Таким образом, все маяки MOKOSmart отправляют один и тот же UUID. Для идентификации отдельных маяков также используются основные и второстепенные идентификаторы. Основные идентификаторы могут представлять, например, филиал магазина или ресторана в сети франшиз, а второстепенные — отдельную полку или столик.

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

IBeacon SDK предлагает два подхода к взаимодействию приложения с этой информацией: определение дальности и мониторинг региона. При определении дальности определяется расстояние до маяка. Из-за упомянутой выше неточности этот процесс происходит всего в три этапа. «Немедленно» означает расстояние в несколько сантиметров, «Рядом» — несколько метров, а «Далеко» — более десяти метров. Определение дальности возможно только при активном приложении-получателе.

Это не требуется для мониторинга региона. В этом режиме неактивное приложение также может получать уведомления при входе или выходе из региона, определяемого одним или несколькими маяками. Сейчас становится ясно, почему эта технология привлекательна для рекламы и розничной торговли. Кроме того, для большинства маяков можно настроить мощность передачи и интервал между сигналами для оптимизации времени работы батареи в зависимости от местных условий.

«Большинство маяков» подразумевает, что на рынке представлено несколько производителей iBeacon. На самом деле, их довольно много: MOKOSmart, Kontakt.io, Gelo, Estimote и Gimbal. Помимо аппаратного обеспечения, эти производители также предлагают сервис iBeacon SDK и облачные решения для управления маяками. Наши энтузиасты могут самостоятельно, без особых усилий, настроить передатчики iBeacon с помощью Raspberry Pi или Arduino.

Мигающий список

Предположим, для примера реализации мы рассмотрим следующую ситуацию: разработчик находится в супермаркете в субботу утром. Дома его ждут голодные дети, а днём в школе — распродажа выпечки. Только тогда начнутся настоящие выходные. Это хороший повод поторопиться. К сожалению, список покупок длинный и не соответствует планировке супермаркета. Если бы супермаркет был оснащён iBeacon в разных отделах, приложение для составления списка покупок могло бы подсвечивать нужные пункты и значительно снизить уровень стресса разработчика (конечно, полностью вымышленного).

Поскольку наше приложение должно взаимодействовать с Bluetooth, нам сначала потребуются разрешения BLUETOOTH и BLUETOOTH_ADMIN в манифесте Android. Чтобы использовать сервис Estimote API для взаимодействия с iBeacons, нам также необходимо сообщить об этом и поместить загруженный API в каталог libs/.

Наш прототип состоит из простого, предварительно заполненного списка и предопределенных регионов, то есть отделов нашего супермаркета. Каждый элемент списка имеет информацию о своем назначении. В нашем примере мы назначаем каждому региону только один маячок. Также можно объединить список маячков в один регион. Основная активность отвечает за распознавание текущего региона и пересылает эту информацию адаптеру, который отвечает за подсветку элементов списка. Кроме того, мы добавляем возможность выбора активного региона без маячков, чтобы наш пользовательский интерфейс можно было тестировать без дополнительного оборудования.

В методе Create активности мы создаём экземпляр Beacon Manager от MOKOSmart для нашего приложения. Мы используем прослушиватель для мониторинга региона, сообщая адаптеру текущий регион и определяя интервал сканирования маяков. В примере мы определяем, что сканирование должно длиться одну секунду, а затем ожидание — 250 мс. Эти значения выбраны относительно агрессивно, чтобы получать быстрые результаты в тестах. В реальности сложно найти баланс между скоростью отклика и экономией заряда батареи. В этом прототипе мы также заполняем наш список покупок фиктивными значениями. Мы запускаем или останавливаем мониторинг в методе on() Start или onStop() основной активности.

Список предметов

Адаптер реализован как производный от android.widget.Array Adapter и переопределяет метод getView(), который вызывается для каждой отображаемой строки. Заголовок элемента указывается в первой строке обзора, определённого в макете, а во второй — назначенная область.

Как видно из листинга 1, введённый регион передаётся адаптеру в обратном вызове on Entered Region() объекта MonitoringListener, который назначен нашему BeaconManager: список элементов Adapter.segregation(region). При вызове getView() проверяется, совпадает ли регион записи в строке с текущим регионом. Если это так, он окрашивает фон строки. Дополнительно или в качестве альтернативы можно также поместить записи для текущей зоны в начало, отсортировав список.

Код приложения понятен; для получения сигналов iBeacon и их обработки в приложении не требуется значительных усилий. Концепции ранжирования и мониторинга iBeacon описаны в MOKOSmart iBeacon SDK, что делает их использование интуитивно понятным. Полный исходный код приложения доступен на GitHub.

Заключение и перспективы

Мы увидели, что взаимодействие с маяками iBeacon с помощью MOKOSmart iBeacon SDK реализовано просто. Поэтому я не ожидаю серьёзных сложностей в технологической реализации, а скорее в развёртывании маяков и настройке мощности передачи. Эти параметры напрямую влияют на скорость отклика приложения при изменении местоположения. В любом случае, балансировка должна быть сложной.

Для особо интересных задач, например, в области домашней автоматизации, я рассматриваю сочетание iBeacons с датчиками, как в упомянутом выше Sensor Tag от Texas Instruments. Estimote также выпустит на рынок мобильные маяки с датчиками движения и температуры с наклейками Estimote. Первые предварительные версии для разработчиков должны были быть выпущены в конце октября 2014 года, но до конца года комплекты так и не были поставлены.

Пока неясно, можно ли с помощью этой технологии надежно картографировать область применения «Indoor Navigation». В связи с чувствительностью сигнала Bluetooth к помехам потребуется интенсивное освещение соответствующей области сигналами iBeacon и расчет местоположения с помощью триангуляции по планам помещений. Соответствующие решения предлагаются MOKOSmart (Indoor Navigation iBeacon SDK) и другими производителями, например, LabWerk, но автору неизвестны какие-либо практические примеры.

При разработке приложения, взаимодействующего с маяками iBeacon, необходимо также учитывать вопросы безопасности и защиты данных. Из-за простоты сигнала iBeacon подвержен спуфингу, что не следует забывать при разработке. Такие данные, как текущее местоположение и профиль перемещений, которые можно собирать на основе поведения пользователя, также требуют особой защиты.

 

Написано --
ЮК Хуан
ЮК Хуан
YK — опытный менеджер по продукту в отделе исследований и разработок компании MOKOSMART с более чем десятилетним опытом разработки интеллектуальных устройств. Он имеет сертификаты PMP и NPDP, что позволяет ему эффективно управлять работой кросс-функциональных команд. YK успешно запустил более 40 сетевых продуктов, используя аналитические данные. Обладая опытом в области электроники и машиностроения, YK успешно преобразует сложные технические предложения в удобные для пользователя решения Интернета вещей как для потребительских, так и для промышленных приложений.
ЮК Хуан
ЮК Хуан
YK — опытный менеджер по продукту в отделе исследований и разработок компании MOKOSMART с более чем десятилетним опытом разработки интеллектуальных устройств. Он имеет сертификаты PMP и NPDP, что позволяет ему эффективно управлять работой кросс-функциональных команд. YK успешно запустил более 40 сетевых продуктов, используя аналитические данные. Обладая опытом в области электроники и машиностроения, YK успешно преобразует сложные технические предложения в удобные для пользователя решения Интернета вещей как для потребительских, так и для промышленных приложений.
Поделитесь этой публикацией!
Расширьте свои возможности подключения с помощью решений для устройств MOKOSmart iOT!