Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Haupttitel der Präsentation

Ähnliche Präsentationen


Präsentation zum Thema: "Haupttitel der Präsentation"—  Präsentation transkript:

1 Haupttitel der Präsentation
WIFI Bundesland

2 Vorteile von location based services (LBS)
Sehr viele Android-Geräte sind per GPS oder zumindest per WLAN-Triangulation fähig, deren Position bestimmen bzw. bestimmen zu lassen Aufgrund der bekannten Position kann eine App unter Verwendung von lokal gespeicherten Daten, WebServices, … dem Benutzer für ihn vor Ort relevante/interessante Informationen zeigen Weg nach Hause per öffentlichen Verkehrsmittel Lokale, Tankstellen, … Freunde, die in der Nähe sind Und vieles mehr

3 LBS Grundlagen Mehrere technische Möglichkeiten, um ein Gerät zu orten
GPS wenn ein Sensor im Gerät verbaut ist und Empfang der Satelliten möglich WLAN wenn Gerät ein WLAN-Modul eingebaut hat, kann es sämtliche WLANs (deren SSID öffentlich ist) „sehen“ per Datenbank am Google Server ist es Android dann möglich, die Kombination von WLAN-SSIDs zu filtern und aufgrund der Bezeichnungen und der WLAN-Stärke die Position ansatzweise zu bestimmen Sendemasten Über Triangulation der erreichbaren Sendemaste, kann Android die Position ebenfalls bestimmen

4 Grundlagen Location based services
LocationManager - Zentrales Element für LBS Position bestimmen Bewegung verfolgen Herausfinden, welche Provider zur Verfügung stehen Näherungsalarm auslösen LocationProvider Hier werden die verschiedenen Technologien verwendet LocationListener Achtet auf Positionsveränderung

5 LocationManager instanzieren
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); Für diese Instanzierung ist eine Berechtigung notwendig Es wird zwischen zwei Berechtigungen unterschieden android.permission.ACCESS_FINE_LOCATION android.permission.ACCESS_COARSE_LOCATION „Coarse“ bedeutet eine grobe Bestimmung der Position, „Fine“ eine deutlich genauere „ACCESS_FINE_LOCATION“ beinhaltet automatisch auch „COARSE“

6 Einsatz von LocationManager
Es gibt drei verschiedene LocationProvider GPS_PROVIDER NETWORK_PROVIDER PASSIVE_PROVIDER Mit List<String> providers = lm.getProviders(true) erhält man eine Liste mit allen auf dem eingesetzten Gerät möglichen Providern Wenn man auf einen bestimmten Provider zugreifen möchte, kann man dies mit LocationProvider gps_prov = lm.getProvider(LocationManager.GPS_PROVIDER) tun

7 Zuletzt bekannten Standort feststellen
Um den zuletzt bestimmten Standort des Systems abzurufen verwendet man den Befehl getLastKnownLocation(provider) Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER) Zugriffe auf die verschiedenen Eigenschaften von Location werden mit den jeweiligen getXY() durchgeführt double lat=loc.getLatitude() double lng=loc.getLongitude()

8 Aktuellen Standort bestimmen
Um den aktuellen Standort regelmäßig zu aktualisieren wird ein LocationListener eingesetzt LocationListener meinListener = new LocationListener() Dieser enthält Handler für Events wie locationChanged(), providerEnabled() und ähnliches Somit kann mit LocationListener auf Veränderungen des Standorts und auch auf Veränderungen von Providern (aufgedreht/abgedreht) reagiert werden Um den LocationListener einzusetzen verwendet man den Befehl lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,zeit,distanz,loc_listener) Falls keine Updates mehr stattfinden sollen lm.removeUpdates(loc_listener);

9 LocationListener loc_listener=new LocationListener() public void onStatusChanged(String arg0, int arg1, Bundle arg2) { } public void onProviderEnabled(String arg0) { public void onProviderDisabled(String arg0) { public void onLocationChanged(Location arg0) { //Location hat sich geändert

10 Innerhalb LocationListener
onLocationChanged() { StringBuilder sb=new StringBuilder(); sb.append("Location ist "); sb.append("Lat: "+loc.getLatitude()); sb.append(" Long:"+loc.getLongitude()); Toast.makeText(getApplicationContext(), sb.toString(), Toast.LENGTH_SHORT).show(); } Finden der „besten Location“

11 LocationManager als Beobachter
Kann verwendet werden um zu beobachten, ob eine Location in die Nähe kommt lm.addProximityAlert(40, 40, 5, -1, intent); Zuerst Koordination, dann Radius (Meter), dann wie lange (-1 ist immer) intent ist ein PendingIntent PendingIntent intent= PendingIntent.getActivity(this, 0, new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("

12 Google-Maps Google-Maps NICHT Teil von Android Registrierung
API-Key notwendig Gehört zu Google API Im Manifest muss die Ergänzung <uses-library android:name=„com.google.android.maps“/> stehen Für Abfragen von Koordinaten <> Adressen ist die Berechtigung android.permission.INTERNET notwendig Koordinaten von Adresse -> forward geocoding Adresse von Koordinaten -> reverse geocoding

13 Google Maps - Geocoder Instanzieren von Geocoder
Geocoder coder = new Geocoder(getApplicationContext(), Locale.getDefault()) Forward geocoding List<Address> ergebnis = coder.getFromLocationName(adresse, max_anzahl) Reverse geocoding List<Address> adressen=null; adressen=gc.getFromLocation(lat,long,max_anzahl); Address ist eine Klasse zum Speichern von Adressen

14 Google Maps – MapView und MapActivity 1/3
MapView zeigt eine Google Map an MapActivity ist eine Subklasse von Aktivität und notwendig, wenn ein MapView eingesetzt werden soll MapController sind die Standard-Bedienelemente von MapViews Overlay kann über eine Map gelegt werden MyLocationOverlay – an der aktuellen Position ItemizedOverlays + OverlayItems – werden verwendet um Markierungen auf der Karte darzustellen

15 Google Maps – MapView und MapActivity 2/3
public class MeineMapAct extends MapActivity { private MapView mapView; private MapController mapController; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map); mapView = (MapView)findViewById(R.id.map_view); mapController = mapView.getController(); } Im Layout gibt es da ein <com.google.android.maps.MapView> mit der id map_view

16 Google Maps – MapView und MapActivity 3/3
Eigenschaften, wie welche Sicht die MapView haben soll, werden über getXY() und setXY() gesetzt bzw. ausgelesen mapView.setTraffic(true); mapView.setBuiltInZoomControls(true); GeoPoint mitte = mapView.getMapCenter(); Der MapController (mapView.getController()) ebenfalls mapController.setCenter(new GeoPoint(40,40)); mapController.setZoom(15); //von 1-21 mapController.animateTo(new GeoPoint(0,0));

17 Overlays Werden in Schichten (layers) aufgetragen und dargestellt
Vererben der Klasse Overlay, überschreiben von draw() public class MeinOverlay extends Overlay { @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { Projection proj = mapView.getProjection(); //zeichnen der gewünschten Darstellung }

18 Demonstration LocationManager LocationListener ProximityAlert
Google Maps

19 Üben Erstellen Sie eine Applikation, bei der in den Einstellungen gespeichert wird (mittels SharedPrefs gespeichert), welche Nummer benachrichtigt werden soll. Wenn die Applikation in die Nähe einer bestimmten Location kommt, wird eine SMS an die hinterlegte Nummer gesendet Wenn eine SMS mit der Nachricht „WO! BIST! DU!“ kommt, wird SMS mit aktuellem Standort an eine hinterlegte Nummer gesendet. Die SMS soll nicht in den „normalen“ SMS aufscheinen Erstellen Sie eine App die nach der Eingabe einer Adresse verlangt und diese Eingabe dann auf einer Google Maps-Karte darstellt. Zudem soll es einen Button [Wo bin ich] geben, dessen Betätigung den aktuellen Standort auf der gleichen Google Maps-Karte anzeigt. Erstellen Sie eine App, die aus einer lokalen Datenbank ihnen wichtige Orte ausliest und die auf einer Google Map darstellt

20 Zusammenfassung


Herunterladen ppt "Haupttitel der Präsentation"

Ähnliche Präsentationen


Google-Anzeigen