2010-01-13 10 views
10

IchAndroid: getLastKnownLocation veraltet - wie erzwinge Location Refresh?

mit
myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

den aktuellen Standort an der Inbetriebnahme von meiner Anwendung abzurufen.

Wie die Android-Dokumentation besagt, kann dieser Standort "veraltet" sein, da die Methode den Standort zurückgibt, als das GPS das letzte Mal verwendet wurde.

Wie kann ich aktiv den aktuellen Standort vom GPS anfordern? Ich dachte über die Verwendung von LocationListener, aber das könnte ein bisschen ein Overkill sein, da ich den Standort nur einmal (am Anfang meiner App) brauche.

Irgendwelche Ideen?

Antwort

10

Ihre anfängliche Intuition ist korrekt - Sie müssen eine LocationListener verwenden, um Updates anzufordern. Wenn Sie nur eine einzige Position benötigen, können Sie die Registrierung des LocationListener nach der Rückgabe des ersten Werts aufheben.

In der Praxis ist es wahrscheinlich klug, ein bisschen länger zu hören. Location Based Services (insbesondere GPS) tendieren dazu, etwas "herumzuspringen", wenn sie zum ersten Mal repariert werden. Am besten hören Sie eine bestimmte Zeit oder eine bestimmte Anzahl von Aktualisierungen ab oder bis ein bestimmter Genauigkeitsgrad erreicht wurde (der Standort-Listener gibt die Genauigkeit der zurückgegebenen Position zurück).

+0

Muchas gracias Reto :-) – znq

+0

Angenommen, ich habe bereits GPS aktiviert und starte dann meine App. Wenn ich an einem Ort bleibe, wird onLocationChanged() nicht aufgerufen. Wie kann ich in diesem Fall sicherstellen, dass der Rückgabewert von getLastKnownLocation() nicht veraltet ist? – flypen

+0

Sie können Updates auch basierend auf der Zeit angeben, sehen Sie sich requestLocationUpdates an –

Verwandte Themen