iBeacon SDK auf Android

Inhaltsverzeichnis
iBeacon SDK

Mögliche Anwendungsfälle und Geschäftsmodelle für den Beacon, der ortsabhängige Nutzerinteraktion auch innerhalb von Gebäuden ermöglicht, werden derzeit heiß diskutiert. Werbung und Rabatte im Ladengeschäft, mobiles Bezahlen, Navigation, öffentlicher Nahverkehr, Lokalisierung in öffentlichen Gebäuden und Museen sowie Heimautomatisierung sind nur die Spitze des Eisbergs. Und natürlich die allgegenwärtige Datenerfassung – jetzt neu und mit präzisen Standortinformationen. Bevor wir mehr über die iBeacon-Technologie erfahren, erwähnen wir im Artikel auch das iBeacon SDK.

Was ist der Hype?

Das von Apple entwickelte iBeacon-Protokoll auf Basis von Bluetooth Low Energy wird von einer Vielzahl von Geräten unterstützt. Der Artikel erläutert iBeacons und Bluetooth Low Energy und zeigt am Beispiel der Entwicklung einer Android-App für ortsabhängige Einkaufslisten die ortsabhängige Interaktion einer App mit iBeacons. Die Implementierung basiert auf dem MOKOSmart iBeacon SDK.

iBeacon, Bluetooth 4.0, BLE, SMART. Was?

Die Basistechnologie für iBeacon ist Bluetooth. Bluetooth Low Energy (BLE), oft auch als Bluetooth Smart bezeichnet, ist in Version 4.0 des Bluetooth-Standards enthalten. BLE ist nicht abwärtskompatibel zu früheren Versionen namens Bluetooth Classic. Bluetooth 4.0 legt fest, dass standardkonforme Geräte eine oder beide Varianten, also Low Energy oder Classic, implementieren müssen.

BLE ist auf fast allen aktuellen Smartphones wie dem iPhone 4+ und dem Samsung Galaxy 3+ implementiert. Ein iPhone kann sowohl als Empfänger von iBeacon-Signalen als auch – im Gegensatz zu Android – als Leuchtfeuer selbst. Android bringt BLE-Treiber ab API-Version 18, also Android 4.3, mit. Aktuelle Rechner sind übrigens auch BLE-fähig. Bei Windows sind die Treiber allerdings erst ab Windows 8 an Bord und seit etwa Mitte 2011 ist BLE auf Apple-Rechnern verfügbar.

BLE unterstützt weiterhin eine Vielzahl von Peripheriegeräten wie Herzfrequenzmesser und Spielzeughubschrauber, Thermometer, Fitnessgeräte und Zahnbürsten, ja, Zahnbürsten und Turnschuhe.

Interessant im Zusammenhang mit iBeacons ist der Sensor

Tag von Texas Instruments, der neben seiner Funktion als iBeacon auch Temperatur, Luftfeuchtigkeit, Druck und Beschleunigung messen kann. Der Sensor-Tag verfügt zudem über ein Gyroskop, ein Magnetometer und zwei Hardware-Tasten. Das ideale Gerät, um Präsentationen fernzusteuern und gleichzeitig Feuchtigkeit und Temperatur der Hände des Vortragenden zu übertragen und anzuzeigen. Mein nächstes Sandkastenprojekt wird wohl ein Lampenfieber-Omat. Eine detaillierte Geräteliste findet ihr auf der offiziellen Bluetooth-Website.

GATT-bereit

Das Kommunikationsmodell, über das Geräte Daten austauschen, heißt GATT – Generic Attribute Profile. GATT definiert die Rollen von Client und Server. Der Client fordert Daten vom Server über Dienste an. Ein Dienst fasst mehrere atomare Schlüssel-Wert-Paare zusammen, die als Charakteristiken bezeichnet werden. Sowohl Dienste als auch Charakteristiken werden über UUIDs identifiziert und können weitere Beschreibungen enthalten. Dienste und ihre Charakteristiken werden in Form von Profilen katalogisiert; die Spezifikation definiert eine ganze Reihe davon aus den Bereichen Gesundheitswesen, Sport und Fitness sowie – in unserem Fall interessant – Näherungssensorik. Die einzelnen Profile und ihre Dienste und Charakteristiken finden Sie im Bluetooth-Entwicklerportal unter GATT-Spezifikationen.

gatt ibeacon sdk

Geh zum Leuchtfeuer 

Was sind iBeacons? iBeacon ist eine sehr einfache Technologie (und eine Marke von Apple), die eine ortsabhängige Interaktion mit Anwendungen ermöglicht. Ein Beacon sendet ein Signal aus, das von BLE-kompatiblen Geräten empfangen und von darauf installierten Anwendungen verarbeitet werden kann. Das Signal enthält die Identifikation des Beacons und die Empfangsstärke. iBeacons selbst sind daher – entgegen unzutreffender Behauptungen in der Presse – nicht in der Lage, Inhalte bereitzustellen oder Kundenverhalten zu verfolgen. Dies liegt in der Verantwortung der empfangenden Anwendungen und damit der Entwickler.

iBeacon IRL

Größere Einsätze von iBeacons in Deutschland werden wohl noch auf sich warten lassen, es gibt aber einige Beispiele aus den USA und den Niederlanden. So hat die Major League Baseball 28 Stadien mit iBeacons ausgestattet und nutzt diese unter anderem für Check-ins in der MLB-App „At the Ballpark“.

Im Rubenshaus in Antwerpen wurde eine Vitrine umgesetzt, die Hintergrundinformationen wie Röntgenaufnahmen von Gemälden und Geocaching-Spiele für Besucher bietet.

Das Paradebeispiel in Sachen Größe kommt von Apple selbst. Über 250 Apple Stores wurden mit iBeacons ausgestattet. In Kombination mit der Apple Store App werden standortabhängige Nachrichten an Käufer gesendet, die sich im Geschäft befinden. Die möglichen Interaktionen scheinen derzeit allerdings recht begrenzt zu sein: Erste Erfahrungsberichte berichten lediglich von zwei unterschiedlichen (und recht allgemeinen) Nachrichten, die sie erhalten hätten. Sonderangebote oder spezifische Informationen zu einzelnen Produkten in der Nähe wurden nicht angeboten.

Funktionalität

Das iBeacon SDK verwendet kein separates BLE-Profil, sondern Bluetooth Advertising Packages, also Broadcast-Pakete, die zum Auffinden von Bluetooth-Geräten dienen. Wer sich für den genauen Aufbau des Pakets interessiert, kann dies beispielsweise auf Adam Warskis Blog nachlesen.

Ein solches Paket wird in regelmäßigen Abständen gesendet, die über GATT konfiguriert werden können. Es enthält die UUID des Beacons, die normalerweise vom Hersteller vorkonfiguriert ist. Daher senden alle MOKOSmart-Beacons dieselbe UUID. Haupt- und Neben-IDs werden auch verwendet, um die einzelnen Beacons zu identifizieren. Haupt-IDs können beispielsweise eine Filiale eines Geschäfts oder ein Restaurant einer Franchise-Kette darstellen, die Neben-IDs ein einzelnes Regal oder einen Tisch.

Des Weiteren ist die Signalstärke im Werbepaket enthalten, mit der sich die Entfernung des Empfängers zum Beacon messen lässt. Allerdings kann man hier keine hohe Genauigkeit erwarten, da das Signal durch räumliche Hindernisse wie Möbel oder Personen beeinträchtigt werden kann.

Das IBeacon SDK bietet zwei Konzepte für die Interaktion einer App mit diesen Informationen: Ranging und Region Monitoring. Beim Ranging wird die Entfernung zum Beacon ermittelt. Aufgrund der oben genannten Ungenauigkeit erfolgt dies in nur drei Schritten. „Immediate“ entspricht einer Entfernung von wenigen Zentimetern, „Near“ von wenigen Metern und „Far“ von über zehn Metern. Ranging ist nur möglich, wenn die empfangende App aktiv ist.

Für die Regionsüberwachung ist dies nicht notwendig. In diesem Modus kann auch eine inaktive App beim Betreten oder Verlassen einer durch einen oder mehrere Beacons definierten Region benachrichtigt werden. Spätestens jetzt zeigt sich, was diese Technologie für Werbung und Einzelhandel attraktiv macht. Zudem lassen sich bei den meisten Beacons die Sendestärke und das Intervall konfigurieren, um die Akkulaufzeit je nach lokalen Gegebenheiten zu optimieren.

„Die meisten Beacons“ bedeutet, dass es mehr als einen Hersteller von iBeacons auf dem Markt gibt. Tatsächlich gibt es einige: MOKOSmart, Kontakt.io, Gelo, Estimote und Gimbal. Neben der Hardware bieten diese Hersteller auch iBeacon-SDK-Dienste und Cloud-Lösungen für die Verwaltung von Beacons an. Hobbyisten unter uns können iBeacon-Sender mit relativ geringem Aufwand selbst mit Raspberry Pi oder Arduino einrichten.

Blinkende Liste

Nehmen wir für das Umsetzungsbeispiel folgende Situation an: Der Entwickler ist am Samstagmorgen im Supermarkt. Zu Hause warten hungrige Kinder, und nachmittags findet in der Schule ein Kuchenverkauf statt. Erst dann startet das Wochenende richtig. Gute Gründe also, sich zu beeilen. Leider ist die Einkaufsliste lang und nicht an das Layout des Supermarkts angepasst. Wäre der Supermarkt in den verschiedenen Abteilungen mit iBeacons ausgestattet, könnte eine Einkaufslisten-App die entsprechenden Einträge hervorheben und den Stresslevel des (natürlich völlig fiktiven) Entwicklers deutlich reduzieren.

Da unsere App per Bluetooth kommunizieren muss, benötigen wir zunächst die Berechtigungen BLUETOOTH und BLUETOOTH_ADMIN im Android-Manifest. Um den von der Estimote-API angebotenen Dienst zur Interaktion mit iBeacons nutzen zu können, müssen wir diese ebenfalls bekannt machen und die heruntergeladene API in unserem libs/-Verzeichnis ablegen.

Unser Prototyp besteht aus einer einfachen, vorausgefüllten Liste und vordefinierten Regionen, also Abteilungen in unserem Supermarkt. Ein Listeneintrag weiß, welcher Region er zugeordnet ist. In unserem Beispiel ordnen wir jeder Region nur einen Beacon zu. Es ist auch möglich, mehrere Beacons zu einer Region zusammenzufassen. Die Hauptaktivität erkennt die aktuelle Region und leitet diese Information an einen Adapter weiter, der die Listeneinträge hervorhebt. Zusätzlich fügen wir die Möglichkeit hinzu, die aktive Region ohne Beacons auszuwählen, um unsere Benutzeroberfläche ohne zusätzliche Hardware testbar zu machen.

In der On Create-Methode der Aktivität instanziieren wir einen Beacon Manager von MOKOSmart für unsere App. Wir verwenden einen Listener für die Regionsüberwachung, indem wir unserem Adapter die aktuelle Region bekannt geben und das Intervall für die Beacon-Scans definieren. Im Beispiel definieren wir, dass eine Sekunde gescannt und dann 250 ms gewartet werden soll. Diese Werte werden relativ aggressiv gewählt, um in Tests schnelle Ergebnisse zu erzielen. In der Realität ist die schwierige Balance zwischen Reaktionsfähigkeit vs. Akkulaufzeit einzuhalten. In diesem Prototyp füllen wir unsere Einkaufsliste auch mit Dummy-Werten. Wir starten oder stoppen die Überwachung in der on() Start- oder onStop()-Methode der Hauptaktivität.

Die ItemList

Der Adapter ist als Ableitung des android.widget.Array Adapters implementiert und überschreibt die Methode getView(), die für jede anzuzeigende Zeile aufgerufen wird. In die erste Zeile wird der Titel des Artikels der im Layout definierten Übersicht geschrieben, in die zweite die zugewiesene Region.

Wie in Listing 1 zu sehen ist, wird die eingegebene Region im Callback on Entered Region() des MonitoringListeners an den Adapter übergeben, der unserem BeaconManager zugeordnet ist: item list Adapter.segregation(region). Dieser prüft beim Aufruf von getView(), ob die Region des Eintrags in der Zeile mit der aktuellen Region übereinstimmt. Ist dies der Fall, färbt er den Hintergrund der Zeile ein. Zusätzlich oder alternativ könnte man durch eine Sortierung der Liste auch die Einträge für die aktuelle Zone an den Anfang stellen.

Der Code der Anwendung ist klar; es erfordert keinen großen Implementierungsaufwand, iBeacon-Signale zu empfangen und in der App zu verarbeiten. Die iBeacon-Konzepte für Reichweite und Überwachung sind im MOKOSmart iBeacon SDK abgebildet, sodass sie intuitiv verwendet werden können. Der vollständige Quellcode der App ist auf GitHub zu finden.

Fazit und Ausblick

Wir haben festgestellt, dass die Interaktion mit iBeacons mithilfe des MOKOSmart iBeacon SDK einfach ist. Daher erwarte ich keine großen Hürden bei der Implementierungstechnologie, sondern eher beim Einsatz der Beacons und der Abstimmung der Sendeleistung. Diese Parameter wirken sich direkt auf die Reaktionsfähigkeit der Anwendung bei Standortänderungen aus. In jedem Fall dürfte das Balancieren schwierig sein.

Für besonders interessant, z. B. im Bereich der Heimautomatisierung, halte ich die Kombination von iBeacons mit Sensoren, wie sie etwa im oben erwähnten Sensor Tag von Texas Instruments zum Einsatz kommen. Estimote wird zudem mobile Beacons mit Bewegungs- und Temperatursensoren mit Estimote Stickers auf den Markt bringen. Erste Entwicklervorschauen sollten Ende Oktober 2014 ausgeliefert werden, bis Ende 2014 wurden jedoch noch keine Kits ausgeliefert.

Es bleibt abzuwarten, ob sich der Anwendungsbereich „Indoor Navigation“ mit dieser Technologie robust abbilden lässt. Aufgrund der Störanfälligkeit des Bluetooth-Signals wären eine starke Ausleuchtung des entsprechenden Bereichs mit iBeacon-Signalen und Positionsberechnungen mittels Triangulation mit Raumplänen notwendig. Entsprechende Lösungen werden von MOKOSmart (Indoor Navigation iBeacon SDK) und verschiedenen anderen Herstellern wie LabWerk angeboten, dem Autor sind jedoch keine Praxisberichte bekannt.

Bei der Entwicklung einer App, die mit iBeacons interagiert, müssen auch Sicherheits- und Datenschutzaspekte berücksichtigt werden. Aufgrund der Einfachheit des Signals sind iBeacons anfällig für Spoofing, was bei der Entwicklung nicht außer Acht gelassen werden sollte. Daten wie der aktuelle Standort und das Bewegungsprofil, die anhand des Nutzerverhaltens erhoben werden können, haben ebenfalls einen hohen Schutzbedarf.

 

Geschrieben von --
Bild von YK Huang
YK Huang
YK ist ein erfahrener Produktmanager in der Forschungs- und Entwicklungsabteilung von MOKOSMART mit über zehn Jahren Erfahrung in der Entwicklung intelligenter Geräte. Er ist PMP- und NPDP-zertifiziert und verfügt über umfassende Kenntnisse in der Führung funktionsübergreifender Teams. Dank datenbasierter Erkenntnisse konnte er über 40 vernetzte Produkte erfolgreich auf den Markt bringen. Mit seinem Hintergrund in Elektronik und Ingenieurwesen ist YK in der Lage, komplexe technische Wertversprechen in benutzerfreundliche IoT-Lösungen für Verbraucher- und Industrieanwendungen zu transformieren.
Bild von YK Huang
YK Huang
YK ist ein erfahrener Produktmanager in der Forschungs- und Entwicklungsabteilung von MOKOSMART mit über zehn Jahren Erfahrung in der Entwicklung intelligenter Geräte. Er ist PMP- und NPDP-zertifiziert und verfügt über umfassende Kenntnisse in der Führung funktionsübergreifender Teams. Dank datenbasierter Erkenntnisse konnte er über 40 vernetzte Produkte erfolgreich auf den Markt bringen. Mit seinem Hintergrund in Elektronik und Ingenieurwesen ist YK in der Lage, komplexe technische Wertversprechen in benutzerfreundliche IoT-Lösungen für Verbraucher- und Industrieanwendungen zu transformieren.
Teilen Sie diesen Beitrag
Erweitern Sie Ihren Verbindungsbedarf mit MOKOSmart IoT-Gerätelösungen!