Comment la précision de localisation est-elle mesurée dans Android?

Est-ce que quelqu’un connaît l’interprétation correcte des mesures de précision renvoyées par getAccuracy ()? Par exemple, sont-ils calculés comme suit:

De plus, quels sont les calculs réels utilisés et combien pouvons-nous en tirer? Cela dépend-il de la source de l’estimation de la localisation (GPS vs réseau)?

Merci beaucoup pour tout conseil que vous pouvez me donner.

Pour répondre à une partie de la question, le nombre correspond the radius of 68% confidence, ce qui signifie qu’il y a 68% de chances que le véritable emplacement se situe dans ce rayon du point mesuré en mètres. En supposant que les erreurs sont normalement dissortingbuées (ce qui, comme le disent les documents, n’est pas nécessairement vrai), cela signifie qu’il s’agit d’un écart-type. Par exemple, si Location.getAccuracy renvoie 10, il y a 68% de chances que l’emplacement réel du périphérique se trouve à moins de 10 mètres des coordonnées signalées.

http://developer.android.com/reference/android/location/Location.html#getAccuracy ()

L’emplacement est une tâche délicate à accomplir lorsque l’autonomie de la batterie est limitée et qu’il n’y a pas de signal GPS dans les bâtiments et dans les zones avec beaucoup de grands bâtiments, etc. Mais Android facilite beaucoup la tâche. Lorsque vous demandez un emplacement, il vous suffit de spécifier la précision dont vous avez besoin.

Si vous spécifiez que vous voulez une 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 avant qu’il y ait un emplacement avec une telle précision.

Typiquement, Android obtiendra d’abord l’identifiant de la cellule et l’enverra ensuite au serveur de Google, qui mappe ces identifiants de cellule et le serveur retournera une latitude et une longitude avec une précision faible pour un exemple de 1000 mètres. À cette heure, Android essaiera également de voir tous les réseaux WiFi de la région et enverra des informations à leur sujet au serveur de Google. Si possible, le serveur de Google renverra un nouvel emplacement avec une précision supérieure à 800 mètres par exemple.

À ce moment, le GPS sera allumé. L’appareil GPS a besoin d’au moins 30 secondes d’un démarrage à froid pour obtenir un correctif. Par conséquent, si une correction est obtenue, la latitude et la longitude seront de nouveau affichées, avec une précision maximale de 100 mètres. Plus le GPS fonctionnera longtemps, meilleure sera la précision.

Remarque importante: 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 est dans un bâtiment, vous n’obtiendrez probablement aucun emplacement.

La documentation sur getAccuracy dit qu’elle renvoie la précision en mètres. Je suppose que cela signifie que si vous obtenez une valeur de retour de 60, vous êtes quelque part dans un cercle avec un rayon de 60 mètres autour de la position fournie.

D’après ce que je peux voir d’un coup d’œil sur le code source d’Android, cela dépend du matériel de l’appareil et de la valeur qu’il choisit de retourner.

Le fichier GpsLocationProvider.java a une méthode reportLocation qui est appelée par le code natif et qui reçoit la précision en tant que valeur. Ainsi, aucun calcul ne semble se produire dans le cadre au moins.

Le repo GPS git de qcom (que je crois être le Qualcomm) transmet le paramètre hor_unc_circular pour la précision, ce qui semble hor_unc_circular que cette implémentation utilise au moins CER.

Si, comme indiqué dans la documentation, il s’agit d’une précision, la position réelle de l’utilisateur se trouve quelque part dans QUOTED_LOCATION +/- ACCURACY. La précision définit donc un rayon auquel l’utilisateur peut s’attendre. Ce que les docs ne disent pas, c’est comment vous pouvez être sûr que l’utilisateur est dans le rayon – la norme est de 95%, alors je suppose que c’est le cas.

Je comprends que vous demandez une réponse précise en termes de probabilité, mais je pense qu’il y a deux choses à considérer ici. Tout d’abord, il appartient au fournisseur de décider de ce qu’il veut mettre dans cette valeur. En fonction du fournisseur, cela peut être une mauvaise idée. Deuxièmement, il peut être utile de considérer cela comme un problème d’arrondi potentiel. Si j’essaie de calculer votre position en fonction d’un certain nombre d’entrées et que certaines de ces entrées ne sont disponibles que pour un certain nombre de chiffres significatifs, il est uniquement possible de calculer un emplacement avec un nombre donné de chiffres significatifs. Pensez-y de cette façon – qu’est-ce que “à propos de” un “plus” à propos de “cent”. Probablement une centaine, parce que la précision de cent est probablement inférieure à la magnitude 1. Si je dis soudainement que la réponse est d’environ 101, alors je pourrais finir par impliquer un niveau de précision qui n’existait pas. Cependant, si je précise la précision, je peux dire que 100 plus ou moins 10 plus 1 plus ou moins .1 vaut 101 plus ou moins 10. Je comprends que cela fait généralement référence à un niveau de confiance de 95% ( erreur standard), mais encore une fois, cela suppose que le fournisseur comprend les statistiques et ne se contente pas de deviner.