2010-01-13 13 views
10

Sto usandoAndroid: getLastKnownLocation non aggiornato - come forzare l'aggiornamento della posizione?

myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

per recuperare la posizione corrente in start-up della mia candidatura.

Come indica la documentazione di Android, questa posizione può essere "non aggiornata", poiché il metodo restituisce la posizione quando il GPS è stato utilizzato l'ultima volta.

Come posso attivamente richiedere la posizione corrente dal GPS? Ho pensato di utilizzare LocationListener, tuttavia potrebbe essere un po 'eccessivo, dal momento che mi serve solo la posizione una volta (all'inizio della mia app).

Qualche idea?

risposta

10

L'intuizione iniziale è corretta - è necessario utilizzare un LocationListener per richiedere aggiornamenti. Dato che richiedi solo una singola posizione, puoi annullare la registrazione di LocationListener dopo che è stato restituito il primo valore.

In pratica però, è probabilmente consigliabile ascoltare un po 'più a lungo. I servizi basati sulla localizzazione (in particolare il GPS) hanno la tendenza a "saltare" un po 'quando per la prima volta ottengono la loro soluzione. La soluzione migliore è quella di ascoltare per un determinato periodo di tempo, o un determinato numero di aggiornamenti, o fino a quando non viene raggiunto un certo livello di accuratezza (l'ascoltatore di posizione restituirà l'accuratezza della posizione restituita).

+0

Muchas gracias Reto :-) – znq

+0

Supponiamo di abilitare il GPS e di avviare la mia app. Se resto in un posto, allora onLocationChanged() non verrà chiamato. In questo caso, come posso assicurarmi che il valore restituito da getLastKnownLocation() non sia scaduto? – flypen

+0

Puoi anche specificare gli aggiornamenti in base al tempo, dare un'occhiata a RequestLocationUpdates –

Problemi correlati