© DrHitch/Shutterstock.com
Windows Phone 8.1

5 Geofencing unter Windows Phone 8.1


Wer in der Pionierzeit der Geoinformationssysteme auf Änderungen des Aufenthaltsorts seines Users reagieren wollte, musste dessen Standort permanent überwachen. Da das effiziente Erstellen von Polling-Algorithmen nur mit tiefem Einblick in das Betriebssystem und die Hardware gelingt, lieferte Google vor einigen Monaten ein Geofencing-API aus. Microsoft zieht mit Windows Phone 8.1 an dieser Stelle nach und bringt ebenfalls eine derartige Programmierschnittstelle mit.

Wir wollen uns der Frage danach, was ein Geofence ist und nach dem Nutzen des API, anhand eines praktischen Beispiels nähern. Stellen wir uns vor, im Unternehmen des Autors wäre eine Mitarbeiterin beschäftigt, die von Zeit zu Zeit mit psychotischen Anfällen überrascht. Stellen wir uns weiter vor, dass das Ende eines derartigen Wutausbruchs normalerweise dann eintritt, wenn die Betreffende völlig entkräftet in einem prominenten italienischen Lokal aufschlägt. Da die Überwachung eines fortlaufenden Anfalls zeit- und kostenaufwändig ist, wäre es weitaus sinnvoller, einfach auf den „Endzustand“ zu warten. Dazu ist das immer mitgeführte Windows Phone geradezu ideal. Sein GPS-Sensor erkennt den Aufenthaltsort automatisch – es würde genügen, wenn er im Fall des Betretens des in Abbildung 5.1 gezeigten Zielorts ein Ereignis abschickt.

5_hanna_geo_1.png

Abb. 5.1: Der schwarz markierte Kreis ist die Endposition

Neben diesem (für den Erhalt des Arbeitsplatzes der Mitarbeiterin sehr wertvollen) Einsatzzweck fallen erfahrenen Handcomputerentwicklern auf den ersten Blick einige Dutzend weitere Anwendungsfälle ein. So könnte eine E-Commerce-Applikation einen in der Nähe eines Ladengeschäfts herumgurkenden Benutzer durch das Anbieten eines Coupons zum Betreten des Geschäfts animieren. Bei Hitze könnte das Programm beispielsweise eine kostenlose Dose Kofola anbieten – da diese natürlich geschickt im Herzen des Ladens platziert ist, kommt der Beschenkte an diversen anderen Angeboten vorbei. Dass sich dadurch der eine oder andere Impulskauf ergibt, ist logisch.

Lasset uns fauchen!

Nach diesen einführenden Überlegungen wollen wir mit der Realisierung einer Geofencing-Applikation beginnen. Programme für Windows Phone 8 entstehen in Visual Studio 2013 for Windows – wer schon für den Windows Store programmiert hat, kann die IDE nach dem Einspielen des Updates 2 weiterverwenden.

Unser Beispiel basiert auf einem Projektskelett vom Typ C# | Store Apps | Windows Phone Apps | Blank Apps. In der dem Magazin beiliegenden Codesammlung hört es auf den Namen FauchTracker – sie können auf Wunsch natürlich auch einen anderen Namen vergeben.

Die Nutzung des Geofence-API von Windows Phone 8.1 setzt das Einholen einer Genehmigung von Seiten des Telefonbesitzers voraus. Aus diesem Grund beginnen wir mit der Erstellung eines Permissionbuttons, der mit einem Event Handler verdrahtet wird (Listing 5.1).

private void CmdPermission_Click(object sender, RoutedEventArgs e)
{
genehmigungEinholen();
}

async private void genehmigungEinholen()
{
DeviceAccessInformation accessInfo = DeviceAccessInformation.
CreateFromDeviceClass(DeviceClass.Location);

try
{
myGeoL = new Geolocator();
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;

await myGeoL.GetGeopositionAsync().AsTask(token);

}
catch (UnauthorizedAccessException)
{
UnauthorizedAccessException myException;
if (DeviceAccessStatus.DeniedByUser == accessInfo.CurrentStatus)
{
//. . .
}

}
catch (TaskCanceledException)
{
// task cancelled
}
catch (Exception)
{
if (myGeoL.LocationStatus == PositionStatus.Disabled)
{
// Spezialfall für WP8, wenn Nutzer Geoposition in den Telefoneinstellungen
// deaktiviert hat
}

}

}

Listing 5.1

Unser Programm ruft die Methode GetGeopositionAsync() auf, um die Anzeige des in Windows Phone verdrahteten Permissiondialogs zu provozieren. Beim Nichterfolg der Abfrage analysieren wir die geworfene Exception, um Informationen über die Ursache herauszufinden. Eine reale Applikation sollte ihren User an dieser Stelle an die ihm entgehenden Features erinnern. Wichtig ist, dass Sie keinesfalls auf eine Endlosschleife setzen sollten, um den Nutzer so zur Zustimmung zu nötigen.

Im Manifest des Programms müssen wir die Location Capability deklarieren. Klicken Sie dazu auf die Datei Package.appxmanifest, um sie im in Visual Studio integrierten Editor zu öffnen. Die für Sie relevante Option findet sich unter „Capabilities“ und hört – nomen est omen – auf den Namen Location. Das Geolocator-Objekt wird aus Bequemlichkeitsgründen als Teil der Formularklasse deklariert:

public sealed partial class MainPage : Page
{
Geolocator myGeoL;

Falls Sie den FauchTracker auf einem „Nicht-Phone-Gerät“ einsetzen möchten, sollten Sie das Programm um einen Handler für das AccessChanged-Event erweitern. Am Tablet kann der User Ihrer Applikation das Zugriffsrecht auf die Hardware auch während der Programmausführung entziehen, zudem kann eine vom Administrator gesetzte Police eint...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang