Verwendung von iBeacons unter Android

[toc]

Der folgende Artikel befasst sich mit der Nutzung von iBeacons als Bluetooth Low Energy Lokalisierungshilfsmittel fürAndroid-Geräten. Nach einer kurzen Einführung in die grundsätzliche Funktionsweise von iBeacons werden Installationsanleitungen sowie Codebeispiele zur Verwendung von iBeacons mittels Estimote-SDK und AltBeacon bereitgestellt. 

Begriff iBeacons

Der Begriff iBeacon wurde von Apple 2013 eingeführt und steht als Markenname für ein auf Bluetooth Low Energy (BLE) bzw. Bluetooth 4.0 basierendes Produkt, das z.B. zur Indoor-Navigation genutzt werden kann. Hierbei stellt das iBeacon einen Sender dar, der in kontinuierlichen Zeitabständen Daten an entsprechende Empfangsgeräte (Smartphone, Tablet, …) sendet. Diese Daten können mittels einer speziellen App genutzt werden, um beispielsweise die eigene Position zu ermitteln. Ein iBeacon zeichnet sich durch seine lange Laufzeit und vergleichsweise hohen Reichweite aus. Die Technologie wird von verschiedenen Herstellern angeboten, wobei die im Weiteren aufgeführten Tests und Beispiele unter Verwendung von Estimote-iBeacons durchgeführt wurden.

[singlepic id=1794 w=618 float=center]

Nutzung

Im folgenden Abschnitt werden die Vorraussetzungen für die Nutzung sowie die wesentlichen Daten und Begriffe, die für die Arbeit mit iBeacons relevant sind, aufgeführt.

Voraussetzung

Die Nutzung von iBeacons kann nur unter bestimmten Voraussetzungen erfolgen. Das jeweilige Mobile Device muss BLE / Bluetooth 4.0 unterstützen, was somit Geräte ab iOS7 und Android 4.3 umfasst.

Entsprechende Bibliotheken werden für IOS von Apple bereitgestellt. Android-Entwickler müssen hingegen auf Bibliotheken der jeweiligen Hersteller zurückgreifen, da Google keine offiziellen zur Verfügung stellt.

Daten eines iBeacons

Die Daten, die ein iBeacons sendet, sind im Folgenden Beispielhaft aufgeführt.

  • UUID: B9407F30-F5F8-466E-AFF9-25556B57FE6D
  • Minor: 1
  • Major: 2
  • RSSI: -55
  • measuredPower: 62

Die nachfolgende Abbildung stellt die Funktion der jeweiligen Werte schematisch dar:

[singlepic id=1793 w=618 float=center]

Ein beispielhafter Anwendungsfall ist die Kennzeichnung von Bereichen in einem Unternehmen mit mehreren Standorten. So würde jedes iBeacon des Unternehmens mit der gleichen UUID initialisiert werden. Jeder Standort erhält einen entsprechenden Major-Wert und ein eine Abteilung an einem Standort einen Minor-Wert. Unternehmen X verwendet also die UUID „B9407F30-F5F8-466E-AFF9-25556B57FE6D“ und Standort A und B jeweils die Major-Werte  „1“ bzw. „2“. Die Abteilung „I“ und „J“ werden jeweils mit den Minor „1“ und „2“ verknüpft. So ist nun Abteilung I an Standort B des Unternehmens X mit den entsprechenden Werten(UUID: „B9407F30-F5F8-466E-AFF9-25556B57FE6D“, Major: „2“, Minor: „1“) eindeutig identifizierbar. Die Distanz zu einem iBeacon lässt sich aus den Werten RSSI und measuredPower berechnen

Monitoring, Ranging und Region

Die Begriffe Monitoring und Ranging beschreiben die zwei Kommunikationsweisen zwischen iBeacons und Empfangsgeräten. Eine Region ist ein Bereich, der sich durch festgelegte Werte (UUID, Major und Minor) definiert. Eine Region umfasst je nach Initialisierung ein bis beliebig viele iBeacons.

Beim Monitoring wird überprüft, ob ein bestimmter Bereich (Region) betreten oder verlassen wurde. Hierbei wird in zeitlichen Abständen getrackt, ob bzw. ob keine iBeacons einer Region empfangen werden; dementsprechend können Programmabschnitte aufgerufen werden. Monitoring ist speziell für Hintergrundprozesse geeignet, da nur beim Eintreten der zuvor erwähnten Ereignisse ein Aufruf entsprechender Methoden erfolgt.

Im Gegensatz zum Monitoring handelt es sich beim Ranging um einen kontinuierlichen Aufruf von entsprechenden Methoden, da dauerhaft eine Aktualisierung der empfangenen iBeacons erfolgt. Ranging eignet sich daher für Vordergrundprozesse, in denen eine Aktualisierung der entsprechenden Daten (z.B. Distanz zum iBeacon) erforderlich ist.

Verwendung unter Android

Wie zu Beginn dieses Beitrags erwähnt, müssen bei für Android-Anwendung die SDKs der jeweiligen Hersteller verwendet werden, z.B. das von Estimote. Alternativ dazu wird mit dem OpenSource-Projekt AltBeacon ein entsprechendes SDK zur allgemein gültigen Nutzung bereitgestellt, das weiter unten ebenfalls betrachtet wird.

Estimote

Eine Beispielanwendung, die Monitoring und Ranging verwendet, ist im Folgenden dokumentiert.

Zunächst muss die estimote-sdk-preview.jar in das /libs Verzeichniss des Projekts kopiert werden. Im build.gradle File muss nun folgende Abhängigkeit hinzugefügt werden:

 dependencies {
   compile files('libs/estimote-sdk-preview.jar')
 }

Folgende Zeilen müssen im Manifest (AndroidManifest.xml) ergänzt werden:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

Anschließend muss der Service in der selben Datei deklariert werden. Dies geschieht innerhalb des Application Tags.

<service android:name="com.estimote.sdk.service.BeaconService" android:exported="false" />

Nun wird eine neue Activity erstellt und eine neue Region erzeugt, die alle Estimote-iBeacons umfasst. Außerdem wird ein BeaconManager erzeugt:

private static final String ESTIMOTE_PROXIMITY_UUID = "B9407F30-F5F8-466E-AFF9-25556B57FE6D";
private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null);
private BeaconManager beaconManager = new BeaconManager(this);

Als nächstes wird in der onStart()-Methode der BeaconManager mit dem Service verbunden und je nach Bedarf das Ranging bzw. Monitoring gestartet.

@Override
protected void onStart() {
  super.onStart();
  beaconManager.connect(new BeaconManager.ServiceReadyCallback() {
    @Override public void onServiceReady() {
      try {
        beaconManager.startRanging(ALL_ESTIMOTE_BEACONS);
      } catch (RemoteException e) {
      }
    }
  });
}

Nun kann ein entsprechender Listener erzeugt und dem BeaconManager zugewiesen werden:

beaconManager.setRangingListener(new BeaconManager.RangingListener() {
  @Override public void onBeaconsDiscovered(Region region, List<Beacon> beacons) {
    System.out.println(beacons);
  }
});

AltBeacon

Radius-Networks stellt mit AltBeacon eine gut dokumentierte Open-Source Lösung zu Apples iBeacons zur Verfügung. Standardmäßig erkennt die Bibliothek nur iBeacons, die nach dem AltBeacon Standard spezifiziert sind. Zur Interaktion mit z.B. iBeacons von Estimote oder anderer Hersteller muss der enthaltene BeaconParser[ref]Vgl. https://altbeacon.github.io/android-beacon-library/javadoc/org/altbeacon/beacon/BeaconParser.html.[/ref] verwendet werden. Beispiele zur Verwendung der Bibliothek können auf der entsprechenden GitHub-Seite eingesehen werden.

Vergleich der Frameworks

Die Konfiguration des Estimote-SDK[ref]Vgl. https://github.com/Estimote/Android-SDK.[/ref] ist im Gegensatz zur Alternative AltBeacon einfacher, jedoch nur auf die entsprechenden iBeacons ausgelegt, sodass für den Einsatz anderer Hardware zusätzliche Bibliotheken eingebunden werden müssen. Zudem fehlen Methoden zur Entfernungsbestimmung, sodass die Berechnung selbst durchgeführt werden muss.

AltBeacon zeichnet sich durch seine Flexibilität und guten Dokumentation aus, jedoch muss zunächst der entsprechende BeaconParser erzeugt werden (siehe oben).

Probleme der Technologie

Die RSSI-Werte variieren sehr stark. Zum einen wird das empfangene Signal durch die Haltung des Device (Tablet, Smartphone) beeinträchtigt und zum anderen ist die Position des jeweiligen iBeacons entscheidend. Positioniert man dieses beispielsweise zwischen Regalen, so leidet das Signal je nach Position des Empfängers.

Aufgrund der Ungenauigkeit des Signals, sollten mehrere iBeacons möglichst mit größerem Abstand eingesetzt werden, um mögliche Störungen oder Überscheidungen der Signale zu vermeiden.

Fazit

Die Verwendung von iBeacons unter Android ist mit den entsprechenden Frameworks, die von den Herstellern bereitgestellt werden, mit geringem Aufwand möglich. Jedoch umfasst der Funktionsumfang der SDKs, die in diesem Beispiel zum Einsatz gekommen sind, nicht den der iOS-Bibliotheken.

Die Technologie könnte beispielsweise für die Kennzeichnung von bestimmten Bereichen in Gebäuden verwendet werden, sofern die iBeacons bzw. die Bereiche einen ausreichenden Abstand zu einander haben. Eine zufriedenstellende Indoor-Navigation ist jedoch nur schwer umsetzbar, da die Signale bisher zu störanfällig sind.

Surface Bluetooth Mobile Manager

[toc]

Der Bluetooth Mobile Manager ist eine Anwendung für das Microsoft Surface, die im Sommer 2010 an der Universität der Bundeswehr München in einem Programmierprojekt der Professur für Programmierung kooperativer Systeme an der Fakultät für Informatik entstand. Die Anwendung dient dazu, mobile Endgeräte via Bluetooth in die intuitive Mehrbenutzerinteraktion des Surface einzubinden. Auf diese Weise werden die Vorteile der Steuerung durch Touch-Gesten auf die Interaktion mit den Inhalten auf einem Mobiltelefon übertragen und somit einerseits Medienbrüche umgangen und andereseits die Möglichkeit geschaffen, die Inhalte gemeinsam zu erleben und zu explorieren.

httpvh://www.youtube.com/watch?v=45TAVHlhlMI

Anbindung von mobilen Endgeräten

Der Bluetooth Mobile Manager stützt sich auf eine von Microsoft herausgegebene Beispielanwendung, das MS Bluetooth Connect Sample[ref]Die Anwendung wurde am 15.06.2010 im Microsoft Surfaceblog angekündigt und kann im MSDN Code Sample Bereich unter http://archive.msdn.microsoft.com/surfacebluetooth heruntergeladen werden.[/ref]

[singlepic id=283 w=618]

Basierend auf der bereits implementierten Bluetoothanbindung für das Surface wurde bei der Weiterentwicklung besonders die Einbeziehung der mobilen Endgeräte in die Nutzerinteraktion als sog. „Tangibles“ und die Visualisierung der Geräte auf dem Surface gegenüber der Microsoft Anwendung verbessert. So verfügt ein mit dem Surface via Bluetooth gepairtes Endgerät beispielsweise über eine eigene, mit dem Gerät verschiebbare visuelle Repräsentation als virtuelle Bedienfläche, die nur angezeigt wird, wenn das mit einem Tag versehene Gerät auf der Oberfläche des Surface platziert wird.

[nggtags gallery=Kontextmenü]

Interaktion mit den Inhalten auf den mobilen Endgeräten

Die Bedienfläche ermöglicht das Betrachten der Inhalte auf dem mobilen Endgerät und darüber hinaus das intuitive Verschieben und Austauschen dieser Inhalte zwischen verschiedenen Endgeräten oder zwischen einem Endgerät und dem Surface.

[singlepic id=120 w=618]

Auf diese Weise wird der virtuelle Inhalt für den Benutzer greifbar und die natürliche Interaktion steigert das Interesse, weitere Inhalte zu entdecken oder Inhalte gemeinsam mit anderen Nutzern zu betrachten. Hierdurch verschwimmen die Grenzen zwischen den virtuellen Inhalten auf dem Surface und dem realen Gegenstand, der darauf platziert ist, was letztlich zu einer Verbesserung der soziotechnischen Integration beiträgt.

[singlepic id=123 w=618]

Die intuitive und natürliche Interaktion wird v.a. dadurch verbessert, dass das Verschieben des physischen mobilen Endgerätes auf der Darstellungsfläche des Surface im Gegensatz zur ursprünglichen Microsoft Version ebenfalls eine Verschiebung der virtuellen Bedienfläche nach sich zieht.

[nggtags gallery=Inhalte]

Pairingdialog zur Einbindung neuer Geräte

Um Inhalte von bisher nicht mit dem Surface verbundenen mobilen Endgeräten anzeigen und nutzen zu können, müssen das Gerät und das Surface miteinander gepairt werden. Anschließend ist, wie bei den meisten Bluetooth-Anwendungen für die folgende Benutzerinteraktionen wie beispielsweise das  Verschieben von Inhalten, kein erneuter Verbindungsaufbau notwendig. Der Pairingvorgang selbst, der durch eine automatische Anzeige verfügbarer Geräte in Reichweite des Surface initiiert wird, wird durch eine visuelle Schritt für Schritt Anleitung auf dem Surface zusätzlich unterstützt.

[nggtags gallery=Pairing]

Abgrenzung  des Bluetooth Mobile Manager vom MS Mobile Connect Sample

In der nachfolgenden Tabelle werden einige der wesentlichen Unterschiede zwischen der entstandenen Anwendung und der Beispielanwendung von Microsoft gegenübergestellt.

MS Bluetooth Connect Sample Bluetooth Mobile Manager
Fixe Darstellung und Orientierung der mobilen Endgeräte am rechten Rand Flexibel orientierbare und verschiebbare visuelle Repräsentation der mobilen Endgeräte
Repräsentation eines mobilen Endgerätes nur durch Handy-Icon Zusätzliche Einbeziehung des Endgerätes als Tangible
Ausschließlich virtuelle Interaktion auf dem Surface Interaktion zwischen realen Endgeräten und virtuellem Inhalt
Datenübertragung über Push-Verfahren (kontinuierliche Bestätigungen) Pairing zwischen Surface und mobilem Endgerät (anschließend keine Interaktionsbarrieren)
Lose, ungeordnete Darstellung der Inhalte eines mobilen Geräts Zusätzliche Container zur Strukturierung und Verbesserung der Übersichtlichkeit

Insbesondere die fixe und in eine Richtung orientierte Darstellung der nur als Icon vorhandenen mobilen Geräte muss als großer Nachteil der Originalanwendung von Microsoft gesehen werden, da er in jeglicher Hinsicht der Forderung direkter Manipulierbarkeit bei einem Natural User Interface widerspricht. In der Aufhebung dieser Interaktionsbarriere ist demnach ein Hauptmehrwert der Weiterentwicklung zu sehen.

Das Projektsetting

Der Bluetooth Mobile Manager auf dem Surface ist das Ergebnis eines Master-Projektes der beiden Wirtschaftsinformatiker Tim Saldik und David Weidt in Kombination mit einem Praktikum der Informatik-Studenten Florian Geißler, Alexander Reeb und Steffen Schurig. Im Rahmen des Masterprojekts wurde die Anwendung zunächst konzipiert und anschließend während des Praktikums umgesetzt. Die Anwendung wurde auf Basis von Scrum entwickelt, wobei ein Sprint eine Dauer von dreieinhalb Tagen hatte und insgesamt sieben Sprints vorgesehen waren. Den Wirtschaftsinformatikern kam dabei die Rolle der “Product Owner” zu, während die Informatiker das Scrum-Team bildeten. Als Scrum Master fungierte zusätzlich der Projektbetreuer Florian Ott.


MS Bluetooth Connect Sample

Bluetooth Mobile Manager

§ Darstellung der mobilen Endgeräte am rechten Rand

§ Repräsentation eines mobilen Endgerätes durch Handy-Icon

§ ausschließlich virtuelle Interaktion auf dem Surface

§ Datenübertragung über Push-Verfahren

§ lose, ungeordnete Darstellung der Inhalte

§ bewegliche Darstellung der mobilen Endgeräte

§ Einbeziehung des Endgerätes selbst als Tangible

§ Interaktion zwischen realen Endgeräten und virtuellem Inhalt

§ Pairing zwischen Surface und mobilem Endgerät

§ Container für Inhalte zur Steigerung der Übersicht