Pourquoi Android a-t-il de tels problèmes pour se souvenir du dernier emplacement connu?


12

Je n'ai jamais pu comprendre la façon dont Android se souvient de son dernier emplacement connu. Si semble se souvenir de l'emplacement d'il y a plusieurs heures, mais pas il y a plusieurs secondes. Je pense qu'il est préférable de donner un exemple de ce que je veux dire.

J'étais récemment dans la Bay Area. J'utilisais Google maps sur mon Android et je me trouvais à proximité du campus Google à Mountain View. J'utilisais des cartes avec le GPS activé et après un certain temps, j'ai obtenu un verrou GPS approprié que j'ai utilisé pour naviguer dans la région.

Quand je suis retourné à San Francisco plus tard, je l'utilisais pour me déplacer dans la ville. Chaque fois que j'allumais les cartes, cela remettait mon emplacement dans Mountain View. Environ 10 secondes plus tard, après avoir obtenu le verrouillage GPS, j'ai obtenu ma position réelle. Si j'ai éteint et rallumé le téléphone quelques secondes plus tard, la même chose s'est produite - il pense que je suis quelque part où je me trouvais quelques heures plus tôt, puis intervient avec ma position actuelle. Cela arrive tout le temps - se rappeler où j'étais il y a quelques heures, pas où j'étais il y a quelques instants. Une fois que j'ai parcouru une zone pendant un certain temps, cela devient maintenant le nouveau "dernier emplacement connu".

Pourquoi, une fois que j'ai obtenu un verrouillage GPS précis, Android ne l'enregistre-t-il pas comme le «dernier emplacement connu» au lieu d'un emplacement antérieur?

Réponses:


3

Pas une réponse complète, mais quelques informations générales:

  • Votre appareil peut avoir plus d'un fournisseur de localisation, par exemple un basé sur le GPS et un basé sur les tours de téléphone mobile qu'il peut voir.
  • Android n'a pas une dernière position connue. Chaque fournisseur de localisation a sa dernière position connue.
  • Un emplacement a des mesures supplémentaires, comme la précision, quand il a été enregistré, ce qui a été enregistré (par exemple, a-t-il une composante d'altitude, etc.)

Cela dépend donc du fournisseur de localisation que l'application utilise et qui peut dépendre ou même changer en fonction de paramètres dynamiques. Par exemple, au démarrage, il pourrait demander à Android le fournisseur de localisation le plus rapide pour démarrer, puis passer au plus précis pour obtenir progressivement une meilleure solution.


C'est une très bonne explication concise. Je vous remercie.
Nick Dixon

Cela a également du sens car lorsque j'étais de retour en ville, je n'avais pas de données wifi / mobile. Sur le campus de Google, il y avait le wifi. Les cartes doivent donc avoir utilisé initialement la dernière localisation «grossière» (c'est-à-dire le wifi) (qui était sur Google), puis lorsque le GPS a démarré quelques secondes plus tard, il est mis à jour. J'aurais toujours pensé que l'emplacement du GPS aurait été une lecture plus fraîche / meilleure.
Tim

cette réponse ressemble plus à un commentaire. et si les emplacements grossiers ont moins de priorité, cela expliquerait encore moins pourquoi le téléphone a renvoyé la vue mnt plus tard.
gcb

2

Je crois comprendre qu'Android utilise des mises à jour de localisation de type grossier et à grain fin et ces mises à jour peuvent également avoir des mesures de qualité différentes. Il se peut que l'application Google Maps n'ait pas eu de signal GPS et Wifi suffisamment longtemps à votre nouvel emplacement pour être d'une qualité suffisamment élevée pour être le dernier emplacement connu.

Les documents des développeurs sur http://developer.android.com/guide/topics/location/obtaining-user-location.html donnent quelques exemples de modèles pour obtenir les emplacements des utilisateurs qui pourraient donner un aperçu de son fonctionnement. Mais je suppose que Google Maps, et probablement d'autres cartes, font leur propre chose.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.