2010-01-13 16 views
10

estoy usandoAndroid: getLastKnownLocation desactualizado: ¿cómo forzar la actualización de la ubicación?

myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

para recuperar la ubicación actual en la puesta en marcha de mi solicitud.

Como indica la documentación de Android, esta ubicación puede estar "desactualizada", ya que el método devuelve la ubicación cuando se utilizó el GPS la última vez.

¿Cómo puedo activamente solicitar la ubicación actual desde el GPS? Pensé en usar LocationListener, sin embargo, eso podría ser un poco exagerado, ya que solo necesito la ubicación una vez (al comienzo de mi aplicación).

¿Alguna idea?

Respuesta

10

Su intuición inicial es correcta: necesita utilizar un LocationListener para solicitar actualizaciones. Dado que solo requiere una posición única, puede cancelar el registro de LocationListener después de que regrese el primer valor.

En la práctica, sin embargo, es aconsejable escuchar un poco más. Los servicios basados ​​en ubicación (especialmente el GPS) tienden a 'saltar' un poco cuando obtienen su solución por primera vez. Su mejor opción es escuchar durante un período de tiempo determinado, o un número determinado de actualizaciones, o hasta que se haya alcanzado un cierto nivel de precisión (el oyente de ubicación devolverá la precisión de la posición devuelta).

+0

Muchas gracias Reto :-) – znq

+0

Supongamos que ya habilito el GPS y luego inicio mi aplicación. Si permanezco en un lugar, entonces no se llamará a onLocationChanged(). En este caso, ¿cómo puedo asegurarme de que el valor de retorno de getLastKnownLocation() no esté desactualizado? – flypen

+0

También puede especificar actualizaciones en función del tiempo, eche un vistazo a requestLocationUpdates –

Cuestiones relacionadas