Mi aplicación utiliza LocationListener para realizar un seguimiento de la ubicación actual. Siempre que el proveedor de GPS proporcione correcciones regulares, esto funciona bien. Sin embargo, quiero que mi aplicación avise al usuario si la ubicación ya no es confiable porque la solución ya no está actualizada. Por lo tanto, he usado un timeCheckHandler para llamar a getLastKnownLocation cada pocos segundos.Problema de Android para descubrir cómo la última corrección de GPS reciente es
Mi problema es que incluso cuando se reciben correcciones con frecuencia el tiempo devuelto al aplicar getTime() a la ubicación devuelta por getLastKnownLocation es generalmente anterior al tiempo actual devuelto por System.currentTimeMillis(), a menudo por unos 20 segundos .
He investigado más el problema añadiendo código a onLocationChanged (arg0) para registrar la hora de la corrección (arg0.getTime()) y la hora actual (System.currentTimeMillis()). Nuevamente veo una diferencia de aproximadamente 20 segundos.
El código lee actualmente de la siguiente manera:
public void onLocationChanged(Location arg0) {
mapview.handleLocationChanged(mapview, arg0.getLatitude(), arg0.getLongitude(), arg0.getBearing(), arg0.getAccuracy(), "GPS fix");
addDebugNote("Fix received at time: "+Long.toString(arg0.getTime()/1000)+" Now: "+Long.toString((System.currentTimeMillis())/1000));
}
y típico de salida a mi archivo de depuración se lee:
Fix received at time: 1292091908 Now: 1292091928
¿Por qué debería estar viendo la diferencia entre el tiempo de corrección y la hora actual del sistema ?
¿Tengo que aceptar que una diferencia de alrededor de 20 segundos es normal?
Tuve el mismo problema y agregué: 'arg0.setTime (System.currentTimeMillis()); 'como primera línea en el método' onLocationChanged (Location arg0) 'para" corregir "la marca de tiempo. No estoy seguro de si esto creará algún efecto secundario más adelante – ApollonDigital