La localisation est une tâche délicate lorsque l'autonomie de la batterie est limitée et qu'il n'y a pas de signal GPS dans les bâtiments ou dans les zones où se trouvent de grands immeubles, etc. Mais Android rend la tâche beaucoup plus facile. Lorsque vous demandez une localisation, il vous suffit de préciser la précision dont vous avez besoin.
Si vous spécifiez que vous voulez un accuracy
pour un exemple *100 meters*
Android essaiera d'obtenir l'emplacement et s'il peut obtenir un emplacement avec une précision de 70 mètres, il vous le renverra, mais si Android peut obtenir un emplacement avec une précision supérieure à 100 mètres, votre application attendra et ne recevra rien tant qu'il n'y aura pas d'emplacement avec cette précision.
En général, Android obtient d'abord l'identifiant de la cellule, puis l'envoie au serveur de Google, qui cartographie ces identifiants. Le serveur renvoie une latitude et une longitude avec une faible précision, par exemple 1000 mètres. À ce moment-là, Android essaiera également de voir tous les réseaux WiFi de la zone et enverra des informations à leur sujet au serveur Google. Si possible, le serveur Google renverra un nouvel emplacement avec une plus grande précision, par exemple 800 mètres.
À ce moment-là, le GPS sera allumé. Le dispositif GPS a besoin d'au moins 30 secondes à partir d'un démarrage à froid pour obtenir une position. S'il peut obtenir une position, il renverra la latitude et la longitude, mais là encore avec une précision qui sera la plus élevée possible, par exemple de 100 mètres. Plus le GPS fonctionne longtemps, plus la précision est grande.
Avis important : Les deux premières méthodes nécessitent une connexion Internet. S'il n'y a pas de connexion de données, vous devrez attendre le GPS, mais si l'appareil se trouve dans un bâtiment, vous n'obtiendrez probablement aucune localisation.
4 votes
La question n'est pas de savoir comment l'emplacement est obtenu, mais de définir la valeur de retour de getAccuracy dans la classe d'emplacement.