¿Por qué Android tiene tantos problemas para recordar la última ubicación conocida?

Nunca he podido averiguar la forma en que Android recuerda su última ubicación conocida. Si parece recordar la ubicación de hace varias horas pero no hace varios segundos. Creo que es mejor dar un ejemplo de lo que quiero decir.

Hace poco estuve en el Área de la Bahía. Estaba usando los mapas de Google en mi Android y estaba cerca del campus de Google en Mountain View. Estaba usando mapas con GPS habilitado y después de un tiempo obtuve un bloqueo de GPS adecuado que usé para navegar por el área.

Cuando volví a San Francisco más tarde, lo estaba usando para moverme por la ciudad. Cada vez que encendía los mapas, volvía a poner mi ubicación en Mountain View. Unos 10 segundos después de que obtuviera el bloqueo del GPS, obtuve mi ubicación real. Si apagué y volví a encender el teléfono unos segundos después, sucedió lo mismo: cree que estoy en algún lugar en el que estuve horas antes y luego se activa con mi ubicación real. Esto sucede todo el tiempo: recordar dónde estaba hace horas, no dónde estaba hace unos momentos. Una vez que he estado alrededor de un área por una cierta cantidad de tiempo, ahora se convierte en la nueva "última ubicación conocida".

¿Por qué, una vez que obtengo un bloqueo de GPS preciso, Android no registra esto como la "última ubicación conocida" en lugar de una anterior?

Respuestas (2)

No es una respuesta completa, pero algunos antecedentes:

  • Su dispositivo puede tener más de 1 proveedor de ubicación, por ejemplo, uno basado en GPS y otro basado en las torres de telefonía móvil que puede ver.
  • Android no tiene una sola última posición conocida. Cada proveedor de ubicación tiene su propia última posición conocida.
  • Una ubicación tiene métricas adicionales, como precisión, cuándo se registró, qué se registró (por ejemplo, tiene un componente de altitud, etc.)

Por lo tanto, depende del proveedor de ubicación que use la aplicación y eso puede depender o incluso cambiar según los parámetros dinámicos. Por ejemplo, en el inicio, podría pedirle a Android el proveedor de ubicación más rápido para comenzar y luego cambiar al más preciso para obtener una mejor solución gradualmente.

Esta es una muy buena y concisa explicación. Gracias.
Esto también tiene sentido ya que cuando estaba de regreso en la ciudad no tenía wifi/datos móviles. En el campus de Google había wifi. Por lo tanto, los mapas deben haber estado usando inicialmente la última ubicación conocida 'gruesa' (es decir, wifi) (que estaba en Google) y luego, cuando el GPS se activó unos segundos más tarde, se actualizó. Todavía habría pensado que la ubicación conocida del GPS habría sido una lectura más fresca/mejor.
esta respuesta es más como un comentario. y si la ubicación aproximada tiene menos prioridad, explicaría aún menos por qué el teléfono devolvió la vista mnt más adelante.

Tengo entendido que Android usa actualizaciones de ubicación de tipo de grano grueso y fino y estas actualizaciones también pueden tener diferentes métricas de calidad. Podría ser que la aplicación de Google Maps no tuviera la señal de GPS y Wi-Fi durante el tiempo suficiente en su nueva ubicación para tener una calidad lo suficientemente alta como para ser la última ubicación conocida.

Los documentos para desarrolladores en http://developer.android.com/guide/topics/location/obtaining-user-location.html brindan algunos modelos de ejemplo para obtener ubicaciones de usuarios que pueden brindar una idea de cómo funciona. Pero supongo que Google Maps, y probablemente otros mapas, hacen lo suyo.