2. Standortbezogene Dienste



Ähnliche Dokumente
Naviki GPS-Anwendungsentwicklung für Mobiltelefone

3. Erfassung und Verarbeitung von Sensordaten

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

2. Hintergrundverarbeitung in Android: Services und Notifications

Objektorientierte Programmierung

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Programmierkurs Java

Lokalisierungstechnologien

5. Abstrakte Klassen

Mobile App Development. - Alarm -

Einführung in die Programmierung

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

Lehrer: Einschreibemethoden

Delegatesund Ereignisse

Szenario 3: Service mit erweiterter Schnittstelle

Einführung in die Java- Programmierung

Computeranwendung und Programmierung (CuP)

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

GeoPilot (Android) die App

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

inviu routes Installation und Erstellung einer ENAiKOON id

AG 1: GPS, Handy und mehr Ortung und Überwachung mobiler ArbeitnehmerInnen

Leitfaden: geoport in FlowFact

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Benutzerhandbuch - Elterliche Kontrolle

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

4. AuD Tafelübung T-C3

Arbeitsgruppen innerhalb der Website FINSOZ e.v.

OSF Integrator für Btracking und Salesforce Anleitung für die Nutzer

Nützliche Tipps für Einsteiger

Programmers Manual Geodaten Ver. 2.0

Kurzinformationen zum Tracker GS818 von SECDET

Haben Sie über elektronisches Schließfachmanagement nachgedacht? Ein Schließfach ist ohne ein solides Schloss nicht komplett.

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

HamburgService Registrierung für die Online-Dienste Gutachterverfahren (GUV) und Gutachterinformationssystem (GIS)

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

1 Belastung. 1.1 Standortbestimmung 1.2 Belastungsvorhersage 1.3 Favoriten

ECDL Europäischer Computer Führerschein. Jan Götzelmann. 1. Ausgabe, Juni 2014 ISBN

SEQUENZDIAGRAMM. Christoph Süsens

SMS-Dienst SMS-Dienst procar informatik AG Stand: FS 04/2011 Eschenweg Weiterstadt 1

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Android-Apps weitere Möglichkeiten

Einführung in die Programmierung

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Dokumentenverwaltung im Internet

6. Benutzerdefinierte Zahlenformate

KIP Druckerstatus Benutzerhandbuch KIP Druckerstatus Installations- und Benutzerhandbuch

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

WPF Steuerelemente Listbox, ComboBox, ListView,

Java: Vererbung. Teil 3: super()

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Mobilgeräteverwaltung

U08 Entwurfsmuster (II)

Erweiterungen Webportal

Vereine neu anlegen oder bearbeiten

Zählen von Objekten einer bestimmten Klasse

Technische Dokumentation SilentStatistikTool

Effiziente Administration Ihrer Netzwerkumgebung

Anleitung für die Einrichtung weiterer Endgeräte in 4SELLERS SalesControl

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Dokumentation IBIS Monitor

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Webseiten mit fragwürdigen Aufrufen von "spy & track" - Unternehmen

Kurzanleitung der Gevopa Plattform

Kurzanleitung. LifeService KidsLight. ikids-handy

Über uns. Was bedeutet der Name traloco?

Scala kann auch faul sein

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Technical Note 0201 Gateway

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Ideenskizze für die Nutzung einer IPv6-Infrastruktur zur Vitaldatenüberwachung von Menschen:

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Mobile Terminated SMS Gateway Datum: Version: 2.3. Inhalt:

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar CAP-News 40

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

YELLOWFOX FLOTTENAPPLIKATIONTION BEDIENUNGSHANDBUCH GARMIN: NAVMAN MDT860 + C-BOX

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

PROFIS Software Lösungen

REFLEX Zeiterfassung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Software Engineering Interaktionsdiagramme

Installationshinweise für OpenOffice Portable auf einem Wechseldatenträger Stand: 27. März 2003 LS Stuttgart, Kaufmännische ZPG

Einführung in die Programmierung für Wirtschaftsinformatik

MyDHL SCHNELLEINSTIEG

1 topologisches Sortieren

Inhaltsverzeichnis. Vergabe von Funktionen... 3 Vergeben einer Funktion...4 Vergebene Funktionen entziehen oder Berechtigungszeitraum festlegen...

Java Projekt: Tic Tac Toe + GUI

Mandant in den einzelnen Anwendungen löschen

Schweizerische Kriminalprävention Prévention Suisse de la Criminalité

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Handbuch für Nutzer von Zertifikaten der Zertifizierungsstellen (CAs) des Bayerischen Behördennetzes (BYBN) zur Sicherung von s Teil C6:

Anleitung Postfachsystem Inhalt

Der Jazz Veranstaltungskalender für Deutschland, Österreich und die Schweiz

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Transkript:

2. Standortbezogene Dienste Lernziele 2. Standortbezogene Dienste Lernziele: Location API von Android kennen und einsetzen können, Umgang mit Kartendarstellungen in Android beherrschen, allgemeine Konzepte der Lokalisierung, insbesondere GPS, kennen und die wichtigsten Elemente der Geoinformatik für standortbezogene Dienste anwenden können. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 108

2. Standortbezogene Dienste Lernziele Location Based Services Ermittlung der aktuellen Position eines Nutzers Ausnutzung der Positionsdaten für eine Dienstleistung Lokalisierung mit Hilfe von: Satelliten-System Funknetze weiteren Sensoren Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 109

2. Standortbezogene Dienste Lernziele Beispielangebote ohne reine Navigation ADAC Mobile Service: Pannenhilfe, Parkleitsystem, Staumeldungen, Reiseinfo Notfon D: Handy-Ortung bei Autopannen Vitaphone: Telemedizin-System, Notruf (GPS) Track your kid: Aufenthaltsort der eigenen Kinder ermitteln (GSM) Track your truck: Aufenthaltsort von Fahrzeugen ermitteln (GPS oder GSM) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 110

2. Standortbezogene Dienste Lernziele Mobiloco: Freunde lokalisieren, Einkaufsmöglichkeiten in der Nähe finden (GSM) Virtic: Arbeitszeiterfassung z.b. auf Großbaustellen, Ortung der Mitarbeiter Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 111

Location Manager Klasse android.location.locationmanager Einstiegspunkt für Dienste zur Lokalisierung Ermittlung der verfügbaren Dienste zur Lokalisierung Standortermittlung Registrierung von Listenern Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 112

Zugriff auf den Location Manager import android.location.locationmanager; LocationManager lm = (LocationManager) getsystemservice(context.location_service); Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 113

Registrierung von Listenern Beim LocationManager für: Das Erkennen von Positionsänderungen, die Annäherung an Punkte und das Verlassen von Bereichen. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 114

Ermittlung eines LocationProvider Methoden der Klasse android.location.locationmanager: public List<String> getallproviders () Liste mit Bezeichnungen für alle prinzipiell zur Verfügung stehenden Lokalisierungsdienste, inklusive Dienste ohne Berechtigung und Dienste, die z. Z. nicht zur Verfügung stehen. public LocationProvider getprovider (String name) Referenz auf den Lokalisierungsdienst mit der Bezeichnung name. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 115

public List<String> getproviders (boolean enabledonly) Liste mit Bezeichnungen für Lokalisierungsdienste, nur Dienste mit Berechtigung und nur verfügbare (falls enabledonly gleich true) public List<String> getproviders (Criteria criteria, boolean enabledonly) Lokalisieurngsdienste, die vorgegebene Kriterien erfüllen und verfügbar sind (falls enabledonly gleich true) public String getbestprovider (Criteria criteria, boolean enabledonly) Lokalisierungsdienst, der am besten zu den vorgegebenen Kriterien passt und verfügbar ist (falls enabledonly gleich true) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 116

Vordefinierte Location Provider String-Konstanten in android.location.locationmanager: GPS PROVIDER String gps Benötigt Uses-Permission: android.permission.access FINE LOCATION NETWORK PROVIDER String network Benötigt Uses-Permission: android.permission.access FINE LOCATION oder android.permission.access COARSE LOCATION Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 117

Kriterien für die Provider-Auswahl Klasse android.location.criteria Eigenschaften für Auswahl: Genauigkeit: public void setaccuracy (int accuracy) Konstanten für die Auswahl in Criteria: ACCURACY FINE, ACCURACY COARSE Stromverbrauch: public void setpowerrequirement (int level) maximaler Stromverbrauch, Konstanten: NO REQUIREMENT, POWER LOW, POWER MEDIUM, POWER HIGH Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 118

Höhe: public void setaltituderequired (boolean altituderequired) Bewegungsrichtung: public void setbearingrequired (boolean bearingrequired) Geschwindigkeit: public void setcostallowed (boolean costallowed) Kosten: public void setspeedrequired (boolean speedrequired) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 119

Location Provider Abstrakte Klasse android.location.locationprovider: repräsentiert allgemein einen Dienst bzw. eine Möglichkeit zur Standortbestimmung spezialisierte Unterklassen für die spezifischen Dienste periodische Standortermittlung jeder Provider hat bestimmte Kriterien, die die Benutzbarkeit definieren abstrakte Methoden zur Bestimmung der Ausprägung der Kriterien Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 120

Konstanten zur Beschreibung des Zustands eines LocationProvider: AVAILABLE: Provider ist verfügbar und kann Daten liefern TEMPORARILY UNAVAILABLE: zur Zeit nicht verfügbar, wird aber voraussichtlich bald wieder zur Verfügung stehen OUT OF SERVICE: nicht verfügbar Zustand wird über LocationListener übermittelt! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 121

Positionsbestimmung Klasse android.location.locationmanager: public Location getlastknownlocation (String provider) direkte Abfrage der letzten Position für provider public void requestlocationupdates (String provider, long mintime, float mindistance, LocationListener listener) Registrierung eines Listeners, um regelmäßig Positionsdaten zu erhalten public void removeupdates (LocationListener listener) Abmelden des Listeners Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 122

Location Listener Schnittstelle android.location.locationlistener: public abstract void onlocationchanged (Location location) Übermittlung der neuen Position in location public abstract void onproviderdisabled (String provider) Benutzer hat Lokalisierungsdienst provider abgestellt public abstract void onproviderenabled (String provider) Benutzer hat Lokalisierungsdienst provider angestellt Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 123

public abstract void onstatuschanged (String provider, int status, Bundle extras) Statusänderung des Lokalisierungsdienstes provider neuer Zustand ist status (in LocationProvider definierte Konstanten) zusätzliche dienstspezifische Informationen in extras, z. Z. nur satellites für die Anzahl der Satelliten, auf der die Positiosbestimmung beruht, weitere Statusinformationen durch andere Schnittstellen Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 124

Location Klasse android.location.location, beschreibt eine einzelne Position mit folgenden Eigenschaften: Breitengrad: public double getlatitude () Längengrad: public double getlongitude () Höhe: public double getaltitude () Bewegungsrichtung: public float getbearing () Geschwindigkeit: public float getspeed () Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 125

Uhrzeit: public long gettime () Genauigkeit: public float getaccuracy () Dienstspezifische Zusatzinformationen: public Bundle getextras () Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 126

Formatierung von Koordinaten Mit android.location.location: Konstanten für die Formatierung: FORMAT DEGREES: Constant used to specify formatting of a latitude or longitude in the form [+-]DDD.DDDDD where D indicates degrees. FORMAT MINUTES: Constant used to specify formatting of a latitude or longitude in the form [+-]DDD:MM.MMMMM where D indicates degrees and M indicates minutes of arc (1 minute = 1/60th of a degree). Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 127

FORMAT SECONDS: Constant used to specify formatting of a latitude or longitude in the form DDD:MM:SS.SSSSS where D indicates degrees, M indicates minutes of arc, and S indicates seconds of arc (1 minute = 1/60th of a degree, 1 second = 1/3600th of a degree). Klassenmethoden für die Umrechnung: von double in String: public static String convert (double coordinate, int outputtype) von String in double: public static double convert (String coordinate) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 128

Entfernungsmessung und Zielrichtung Entfernung zu einer Zielposition (Instanzmethode): public float distanceto (Location dest) Location bietet entsprechende Setter-Methoden an (siehe API) Entfernung zwischen zwei Positionen (Klassenmethode): public static void distancebetween ( double startlatitude, double startlongitude, double endlatitude, double endlongitude, float[] results) result[0] enthält die Entfernung in Metern. result[1] und result[2] sind optional, geben Bewegungsrichtung (bearing) am Start bzw. Zielpunkt an. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 129

Richtung zu einer Position (Instanzmethode): public float bearingto (Location dest) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 130

Genauere Statusinformationen bei GPS 1. Registrierung eines GpsStatus.Listener über den LocationManager: public boolean addgpsstatuslistener (GpsStatus.Listener listener) 2. Empfang von Änderungsereignissen über die Schnittstelle android.location.gpsstatus.listener: public abstract void ongpsstatuschanged (int event) Vordefinierte Konstanten für event in android.location.gpsstatus: GPS EVENT FIRST FIX: Event sent when the GPS system has received its first fix since starting. GPS EVENT SATELLITE STATUS: Event sent periodically to report GPS satellite status. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 131

GPS EVENT STARTED: Event sent when the GPS system has started. GPS EVENT STOPPED: Event sent when the GPS system has stopped. 3. Innerhalb von ongpsstatuschanged() die folgende Instanzmethode des LocationManager aufrufen: public GpsStatus getgpsstatus (GpsStatus status) 4. android.location.gpsstatus stellt dann zur Verfügung: Maximale Anzahl an Satelliten: public int getmaxsatellites () Liste mit aktuellen Satelliten: public Iterable<GpsSatellite> getsatellites () Zeit bis erste Position verfügbar nach Wiederanlauf von GPS: public int gettimetofirstfix () Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 132

Zustand eines Satelliten Klasse android.location.gpssatellite: public float getazimuth () Horizontalwinkel (Himmelsrichtung), in der sich der Satellit relativ zum Standort befindet public float getelevation () Vertikalwinkel der Satellitenposition relativ zum Standort public int getprn () Returns the PRN (pseudo-random number) for the satellite. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 133

public float getsnr () Returns the signal to noise ratio for the satellite. public boolean hasalmanac () Liefert true, wenn die Gps-Engine über die Bahndaten (Almanach) des Satelliten verfügt. public boolean hasephemeris () Liefert true, wenn die Gps-Engine über die Bahndaten (Ephemeride) des Satelliten verfügt. public boolean usedinfix () Liefert true, wenn der Satellit in die letzte Positionsberechnung einging. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 134

GPS-Daten nach dem NMEA-Standard National Marine Electronics Association (NMEA) US-Vereinigung von Elektronikherstellern und -händlern der Schiffsindustrie NMEA definiert Standards für die Übertragung von Daten im maritimen Bereich wichtigste Anwendung: Positionsdaten Standard: NMEA 0183 Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 135

Empfang von NMEA 0183-Datensätzen 1. Registrierung eines GpsStatus.NmeaListener über den LocationManager: public boolean addnmealistener (GpsStatus.NmeaListener listener) 2. Empfang von NMEA-Datensätzen über die Schnittstelle android.location.gpsstatus.nmealistener: public abstract void onnmeareceived (long timestamp, String nmea) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 136

Exkurs: PendingIntent Klasse android.app.pendingintent kapselt einen Intent und eine Aktion um: eine Activity zu starten, einen Broadcast-Intent auszulösen oder einen Service zu starten. Beispiel: Erzeugung eines Pending-Intents für Broadcast: public static PendingIntent getbroadcast (Context context, int requestcode, Intent intent, int flags) Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 137

Bereichskontrolle 1. Mit LocationListener einen PendingIntent registrieren: public void addproximityalert (double latitude, double longitude, float radius, long expiration, PendingIntent intent) 2. Kontrolle erfolgt über eine Zeitdauer von expiration Millisekunden oder bei -1 unbegrenzt 3. Kontrollbereich ist die Kreisfläche mit radius um die durch latitude und longitude angegebene Position 4. Der ausgelöste Intent hat ein boolean-extra mit dem Schlüssel KEY PROXIMITY ENTERING Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 138

Der zugehörige Wert ist true, wenn der Kontrollbereich betreten wird. 5. intent definiert die Aktion, die ausgelöst wird und den damit verbundenen Intent, wenn der Kontrollbereich betreten oder verlassen wird. 6. Beispiel: siehe Homepage, Auszug aus H. Mosemann, M. Kose, Android, Hanser, 2009. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 139

Georeferenzierung Georeferenzierung ist die Zuweisung von raumbezogenen Informationen zu einem Datensatz. Adresskodierung: Zuweisung einer Postanschrift zu Geokoordinaten, auch als Reverse Geocoding bezeichnet. Geokodierung: Zuweisung von Koordinaten zu einer Postanschrift (Forward Geocoding) notwendig: Locale-Instanz, siehe Klasse java.util.locale Beispiel: Locale.GERMANY Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 140

Geocoder Klasse android.location.geocoder: Konstruktor: public Geocoder (Context context, Locale locale) Beispiel: Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault()); Methoden für Forward Geocoding und Reverse Geocoding Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 141

Reverse Geocoding Klasse android.location.geocoder: public List<Address> getfromlocation (double latitude, double longitude, int maxresults) Liefert Address-Instanzen, zu der durch latitude und longitude beschriebenen Position. Zugriff auf einen Netzwerkdienst, evtl. hohe Latenzzeiten Repräsentation der Adressen durch Instanzen der Klasse android.location.address Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 142

Forward Geocoding Klasse android.location.geocoder: public List<Address> getfromlocationname (String locationname, int maxresults) Liefert Address-Instanzen zu der durch locationname beschriebenen Adresse. Die Address-Instanzen beinhalten Getter-Methoden für Koordinaten! Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 143

public List<Address> getfromlocationname ( String locationname, int maxresults, double lowerleftlatitude, double lowerleftlongitude, double upperrightlatitude, double upperrightlongitude) Spezifischere Suche durch Beschränkung auf ein umgebendes Rechteck. Mobile Informationssysteme II Hochschule Bonn-Rhein-Sieg, WS 12/13 144