Android Tutorials

  • Antworten:13
  • OffenNicht stickyNicht beantwortet

07.02.2011 00:05:57 via App

Also ich brauche eine einzelne aktuelle GPS-Position. Vielleicht kann man das auch anders machen, aber ich habs halt erstmal so versucht. Und der request für die Ortung wird halt aus einem Service gestartet und nun soll (bei Erhalt der Position) der Service benachrichtigt werden, dass er die Locationupdates abbricht. Ich dachte, dass ich so eine einzelne aktuelle Position bekomme :) Ich vermute schon, dass das besser geht, aber wie? (erst ab 2.3 gibt es 'requestSingleLocationUpdate' leider :( )
Lg Ansgar

— geändert am 07.02.2011 00:06:35

07.02.2011 00:18:25 via Website

Das kannst du direkt in deinem Service machen :D

Zuerst implementierst du in deinen Service LocationListener.

dann hast du die 3 Methoden:
  • onLocationChanged
  • onProviderDisabled (gps ist deaktiviert)
  • onProviderEnabled (gps ist aktiviert)
  • onStatusChanged (wenn der user das gps ab oder aufdreht)

dann machst du dir noch 2 Methoden:
1private void registerLocationListener() {
2 // Register LocationManager
3 locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
4
5 try {
6 locationManager.requestLocationUpdates("gps", 0, 0, LocationActivity.this);
7 Log.i("Altitude", "LocationListener is now registered. Evering should work fine!");
8 } catch (final RuntimeException e) {
9 Log.e("Altitude", "Could not register location Listener: " + e.getMessage(), e);
10 }
11 }
12
13 private void unregisterLocationListener() {
14 if (locationManager != null) {
15 locationManager.removeUpdates(this);
16 locationManager = null;
17 }
18 }

Du musst dir oben ein Obejkt von LocationManager erstellen. Und rufst im onStart (glaube ich) registerLocationListener() auf
in der onLocationChanged schreibst du dann folgendes rein :
1if (location.getProvider().equals("gps")) {
2 if (location != null) {
3 //Location gefunden, TODO: tu das was du mit der location machen willst
4
5 unregisterLocationListener();
6 }
7 }

Wenn er dann einmal eine Position gefunden hat, höhrt er auf zu empfangen. :D