2010-01-13 14 views
10

UżywamAndroid: getLastKnownLocation przestarzały - jak wymusić odświeżenie lokalizacji?

myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

pobrać aktualną pozycję na uruchomienie mojej aplikacji.

Zgodnie z dokumentacją systemu Android, ta lokalizacja może być "nieaktualna", ponieważ metoda zwraca lokalizację, gdy GPS był używany po raz ostatni.

Jak mogę aktywnie zażądać aktualnej lokalizacji z GPS? Myślałem o użyciu LocationListener, ale może to być trochę przesada, ponieważ potrzebuję tylko raz lokalizacji (na początku mojej aplikacji).

Wszelkie pomysły?

Odpowiedz

10

Twoja początkowa intuicja jest poprawna - aby zażądać aktualizacji, musisz użyć numeru LocationListener. Biorąc pod uwagę, że potrzebujesz tylko jednej pozycji, możesz wyrejestrować narzędzie LocationListener po zwróceniu pierwszej wartości.

W praktyce jednak rozsądniej jest słuchać jeszcze trochę dłużej. Usługi oparte na lokalizacji (szczególnie GPS) mają tendencję do "przeskakiwania" trochę, kiedy po raz pierwszy dostaną swoją poprawkę. Najlepiej jest słuchać przez określony czas lub określoną liczbę aktualizacji, lub do momentu osiągnięcia określonego poziomu dokładności (odbiornik lokalizacji zwróci dokładność zwróconej pozycji).

+0

Muchas gracias Reto :-) – znq

+0

Załóżmy, że już włączam GPS, a następnie uruchamiam moją aplikację. Jeśli zostanę w jednym miejscu, funkcja onLocationChanged() nie zostanie wywołana. W tym przypadku, w jaki sposób mogę się upewnić, że zwracana wartość funkcji getLastKnownLocation() nie jest nieaktualna? – flypen

+0

Możesz również określić aktualizacje na podstawie czasu, zajrzyj do requestLocationUpdates –

Powiązane problemy