Nutzung der Google Awareness API für kontextrelevante App Services

Frau steht lächelnd vor Auslage und schaut auf ihr Smartphone.

Ein großer Vorteil mobiler Endgeräte gegenüber Desktop-Geräten sind die vielen verbauten Sensoren. Durch diese können kontextrelevante Informationen wie z.B. Zeit, Position, Aktivität, usw. über den Benutzer und seine aktuelle Umgebung generiert werden. Das Wissen, das entweder durch die Google Awareness API (ist ein Programmteil, der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung steht) oder die direkte Auswertung der Sensordaten gewonnen wird, lässt sich in vielen Szenarien gewinnbringend für den Nutzer einsetzen.

Mit Hilfe der gewonnenen Daten und Fragestellungen wie

  • Wo befindet sich der Nutzer?
  • Was macht er gerade?
  • Was ist in seinem Umfeld?

können Schlüsse über das Verhalten und den Tagesablauf des Nutzers gezogen werden. Durch sinnvolles Verknüpfen dieser Informationen können Nutzer mit passenden Services unterstützt werden.

Google Awareness API

Das Sammeln von Informationen via Sensoren ist seit jeher möglich. Allerdings ist es eine komplizierte Angelegenheit, die verschiedenen Sensordaten miteinander zu kombinieren und gleichzeitig Akku-sparend zu verarbeiten. Will man z.B. wissen, wenn der Nutzer zu Fuß unterwegs ist und sich in der Nähe eines Geschäftes befindet, so muss man zuerst die Aktivität erkennen und danach die Position überprüfen oder umgekehrt. Was nun die bessere Variante ist, vor allem für den Energiehaushalt des Smartphones, ergibt sich situationsabhängig.

Mit der Google Awareness API gibt es nun eine Sensorplattform, welche die manuelle Abfrage der verschiedenen Sensoren hinfällig macht. Sie bietet eine zentrale Anlaufstelle, um verschiedene Aspekte eines Benutzer-Kontexts zu ermitteln und zu kombinieren. Des Weiteren kümmert sich die Google Awareness API um einen sorgsamen Umgang mit den Ressourcen des Gerätes. So ist sie im Vergleich zur Verwendung von einzelnen Sensor-APIs sehr speicher- und energieeffizient.

Kontext-Typen

Die Google Awareness API ist Teil der für Android zur Verfügung stehenden Google Play Services. Mit ihrer Hilfe kann eine App auf ganz einfache Art und Weise die kontextbezogenen Informationen erfassen und den Nutzer entsprechend unterstützen.

Derzeit werden folgende Kontext-Typen unterstützt:

  • Zeit: aktuelle lokale Zeit
  • Position: aktueller Aufenthaltsort
  • Umgebung: in der Nähe befindliche „interessante“ Orte, wie z.B. Flughäfen, Banken, ...
  • Aktivität: die Benutzer-Aktivität wie z.B. Gehen, Laufen, Radfahren
  • Beacons: in Reichweite befindliche Beacons mit deren Informationen
  • Kopfhörer: ob sie angeschlossen sind oder nicht
  • Wetter: das Wetter an der aktuellen Position

Die Google Awareness API selber gliedert sich in zwei Bereiche: die Snapshot API und die Fence API.

Mit der Snapshot API lassen sich aktuelle kontext-bezogene Informationen abfragen, während die Fence API dafür zuständig ist, die App über gewisse Ereignisse zu informieren sobald diese eintreten. Auch Kombinationen von Kontext-Bedingungen können definiert werden. So könnte eine Musik-App je nach Aktivität unterschiedliche Musik abspielen oder die Wiedergabe automatisch starten alsbald der Benutzer die Kopfhörer ansteckt und zu laufen beginnt.

Weitere Use-Cases sind zum Beispiel der kontext-abhängige Wecker. Dieser kann in Abhängigkeit von Wetter, Verkehr und Terminen automatisch die Weckuhrzeit anpassen. Auch das automatische Erkennen und Speichern eines Fotos mit Zeitstempel, Ort, Wetter und Aktivität ist möglich. So lassen sich die Fotos hinterher auch nach diesen Parametern filtern. Ein weiteres Szenario wäre, dass wenn man sich gerade im Auto befindet und Bluetooth aktiviert, die Navigations-App selbständig startet.

Die Snapshot API

Die Snapshot API liefert aktuelle Sensorwerte. Diese müssen aktiv angefordert werden. Da das System gewonnene Sensorwerte speichert, können diese jederzeit schnell abgefragt werden. Falls keine aktuellen Daten vorhanden sind, werden die Sensorwerte aktualisiert und die ausgewerteten Daten an die anfragende App übermittelt. Mit der Snapshot API können folgende Kontext-Signale abgefragt werden:

  • Die wahrscheinlichste Aktivität und weitere wahrscheinliche Aktivitäten mit entsprechenden Wahrscheinlichkeitswerten.
  • In Reichweite befindliche Beacons.
  • Der Kopfhörerstatus, ob angeschlossen oder nicht.
  • Die Position.
  • Die Umgebung, eine Liste von nahegelegenen Orten mit Orts-Typ und entsprechenden Wahrscheinlichkeitswerten.
  • Das Wetter an der aktuellen Position.

Die Fence API

Die Fence API ist eine sogenannte Callback API. Das heißt, es werden vorab Kontext-Bedingungen definiert. Beim Eintreten dieser wird ein entsprechendes Ergebnis an die App geliefert, die sich daraufhin um die Visualisierung für den App-Benutzer kümmern kann. Kontext-Bedingungen werden mit Hilfe von sogenannten Awareness Fences erzeugt. Diese werden im System registriert und die App wird benachrichtig, sobald sich der Status des Fences ändert.

Einfachstes Beispiel hierfür ist ein Geofence, welcher einen bestimmten Bereich wie z.B. einen Radius von 100m um eine Position definiert. Wird nun ein Awareness Fence für diesen Geofence registriert, so wird die App beim Betreten und Verlassen dieses Bereiches benachrichtigt. Definiert man z.B. einen Fence für die Kopfhörer, so wird die App beim An- bzw. Abstecken dieser benachrichtigt. Fences können für Zeit, Position, Aktivität, Kopfhörer und Beacons definiert werden. Die Kontext-Typen Wetter und Umgebung werden nicht unterstützt.

Ein Fence kann aus einer oder mehrereren Kontext-Bedingungen bestehen. Mit Hilfe von "UND", "ODER" und "NOT" Verknüpfungen kann der Kontext sehr genau definiert werden. Die App wird nur dann benachrichtigt wenn alle Fence-Bedingungen erfüllt werden, wie z.B. wenn die Kopfhörer angesteckt sind UND der Benutzer zu laufen beginnt. Ein weiteres Beispiel wäre: der Nutzer nähert sich einer bestimmten Position, zu einer gewissen Uhrzeit, an einem bestimmten Wochentag. Hier werden Positions- und Zeitaspekte miteinander verknüpft.

Zusätzlich ist auch noch der Typ eines Fences zu definieren. Hierbei wird zwischen Primitive Fences und Transition Fences unterschieden. Erstere liefern für den gesamten Zeitraum in dem der Fence gültig ist, einen positiven Status zurück. Transition Fences liefern nur für einen kurzen Augenblick, während des Statuswechsels, eine positiven Status und ansonsten einen negativen.

Analog zum Auslesen der Daten eines Sensors kann auch der Status einen Fences jederzeit abgerufen werden.

Fazit

Die Vorteile der Google Awareness API gegenüber der Verwendung einzelner Sensor APIs sind:

  • Einfache Integration, da nur eine API für alle Sensoren benötigt wird.
  • Besser aufbereitete Kontext-Daten mit Angaben über Genauigkeit und Wahrscheinlichkeit, z.B. wie wahrscheinlich ist es, dass der Benutzer gerade diese Aktivität ausübt.
  • Verknüpfung von einzelnen Sensordaten mittels Fences.
  • Optimierter Umgang mit den Ressourcen wie Batterieverbrauch und Speichernutzung des Gerätes. So muss sich der App-Entwickler nicht mehr speziell darum kümmern.

Mit Hilfe der Google Awareness API kann man einfach auf Veränderungen des Benutzer-Kontextes reagieren. Jedoch sollte mit gewonnen Informationen vertraulich und sorgsam umgegangen werden. Idealerweise werden diese nur benutzt, um den App-Nutzer bei der Verwendung der App noch besser zu unterstützen.

Des Weiteren ist darauf zu achten, dass sich die App so verhält, wie es der Benutzer erwartet. Daher sollte dieser vorab über das kontext-bezogene Verhalten der App informiert werden. Ebenso sollte der Benutzer nicht mit zu vielen Benachrichtigungen überflutet werden. Nur Services mit wirklichem Mehrwert bringen den gewünschten Erfolg.

Außerdem ist auf den Energiehaushalt des Gerätes zu achten. Wenn zu viele Fences registriert oder zu viele Anfragen an die Snapshot API innerhalb kürzester Zeit gemacht werden, hat dies Einfluss auf den Akkuverbrauch des Geräts. Das synchronisieren von Daten zu einem bestimmten Zeitpunkt kann mit anderen APIs wesentlich energieeffizienter gestaltet werden.

Zusammenfassend gesagt, erleichtert und verbessert die Google Awareness API die Gewinnung und Nutzung von Kontext-Daten erheblich. Sie liefert besser aufbereitete und genauere bzw. fehlerkorrigierte Werte und ist zudem performance- und energie-optimiert.

Weitere Infos gibt's direkt im Google Developer's Guide zur Awareness API.

News & Blog

Das könnte Sie auch interessieren:

Mann steht im Freien und schaut auf sein Smartphone.

Firebase Messaging

Firebase Messaging unter die Lupe genommen.
Laptopscreen mit Darstellung einer Push-Notification von Server zu Smartphone.

Wissenswertes über Push-Notifications

Wie funktionieren Push-Notifications? Wie setze ich sie gewinnbringend ein? Und was gibt es rund um dieses Thema zu beachten?