¿Por qué el administrador de ubicaciones devuelve las correcciones de ubicación anteriores con la nueva marca de tiempo y hora?

Tenemos una aplicación que, ante la acción del usuario, intenta obtener una solución de ubicación. Escucha tanto en GPS como en red y tiene una matriz de decisión basada en tiempo / precisión para determinar cuándo dejar de escuchar y qué solución devolver.

Hemos notado, en ocasiones, un comportamiento muy extraño. Usamos la forma clásica para ver la antigüedad de la corrección, así:

long age = now - newLocation.getTime();
if(age >= prefs.getLocationMaxAge()){
    Log.d(TAG, "location too old.");
    return;
}

Pero a veces, el location.getTime devuelto por el sistema operativo tiene una antigüedad de quizás 15-20 segundos, según la marca de tiempo devuelta, aunque podemos decir con certeza que es muy antiguo. Por ejemplo, si la corrección de longitud / latitud es desde una posición en la que el teléfono estaba encendido hace 30 minutos.

Parece que sucede tanto desde Wi-Fi como desde la red, pero no desde el GPS. Para mí, esto es totalmente loco. ¿Alguien más ha visto esto y hay alguna forma de evitarlo?

Lo hemos conseguido en un par de teléfonos diferentes, el más reciente es Samsung Galaxy S II.

Help sería extremadamente bienvenido.

EDITA: Para ser realmente claro, el problema es que el sistema operativo llama a la devolución de llamada de "cambio de ubicación" con una ubicación con un tiempo de marca de tiempo de quizás un par de segundos, cuando sé con certeza que la longitud / latitud en el "nuevo" arreglar es un lugar donde el teléfono no ha estado en al menos 30 minutos.

Esto hace que sea un poco difícil determinar con precisión dónde está el auricular ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta