2013-07-09 8 views
6

Opracowuję aplikację na Androida, w której kluczowa jest aktualna i dokładna lokalizacja. Po wykryciu naprawy GPS przechodzi do następnej czynności.Android: uzyskaj tylko ostatnią lokalizację, a nie getLastKnownLocation?

Problem polega na tym, że przetestowałem go na zewnątrz i stwierdziłem, że czasami używa on tylko lokalizacji z poprzedniej poprawki.

Więc o co proszę; czy istnieje jakakolwiek inna logika, aby uzyskać lokalizację z LocationManager inaczej niż przez getLastKnownLocation? Nie znalazłem jeszcze przykładu, który nie będzie wyglądał tak, jak gdyby nie wyglądał tak, jak gdyby nie wyglądał tak, jak gdyby nie wyglądał on tak, jakby nie wyglądał on tak

Odpowiedz

2

Oto przykładowy kod z official guide (z małymi zmianami):

// Acquire a reference to the system Location Manager 
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

// Define a listener that responds to location updates 
LocationListener locationListener = new LocationListener() { 
    public void onLocationChanged(Location location) { 
     makeUseOfNewLocation(location); 
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) {} 
    public void onProviderEnabled(String provider) {} 
    public void onProviderDisabled(String provider) {} 
    }; 

// Register the listener with the Location Manager to receive location updates 
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 

Tutaj, po prostu zażądać aktualizacji z GPS, i tak szybko, jak jest odbierany lokalizacja, dostaniesz zwrotnego połączenie.

+0

Zrobiłem to za mnie! Oczywiście w moim przypadku nie mam ani nie potrzebuję lokalizacji, dopóki się nie zmieni. Jeśli zadzwonię do mojej następnej metody z "onLocationChanged", nie muszę nawet słuchać o naprawie GPS. Thanx! – dhafnar

+0

Zrobiłem ten sam kod ... ale onLocationChanged() nigdy nie był wywoływany..Nie wiem, co to jest problem –

2

Można użyć LocationListener, a następnie zadzwonić pod numer locationManager.requestLocationUpdates() przekazując własną implementację detektora.

1

Google wydała nową lokalizację API, sprawdź ten link się https://developer.android.com/training/location/index.html,

Ci pytanie, trzeba wdrożyć Location Update zwrotnego, aby uzyskać aktualną lokalizację. https://developer.android.com/training/location/receive-location-updates.html

+0

Przetestowałem nowy interfejs API lokalizacji, nie musisz już określać dostawcy lokalizacji, aby uzyskać aktualizacje lokalizacji. LocationClient zrobi to, aby uzyskać aktualizacje lokalizacji (jak w iOS). W nowym API wystarczy użyć LocationRequest, aby ustawić parametry usługi, takie jak interwał aktualizacji, dokładność lokalizacji. Następnie pozwól LocaitonClient pobierać aktualizacje lokalizacji. – pkliang

Powiązane problemy