Comment précision de localisation est mesurée en Android ?

? John Palmer @ | Original: StackOverFlow

Est-ce que quelqu'un sait l'interprétation correcte des mesures de précision retournés par getAccuracy ( ) ? Par exemple, ils sont calculés comme suit:

Probabilité d'erreur circulaire (ce qui signifie, si je comprends bien, le rayon d'un cercle de confiance de 50% ) ?

Rayon de confiance de 95% cercle?

something else?

En outre, ce sont les calculs réels qui sont utilisés et combien pouvons-nous compter sur eux ? Cela dépend-il la source de l' estimation de localisation ( GPS vs réseau) ?

Un grand merci pour les conseils que vous pouvez me donner .



Top 5 Respuesta

1Janusz @

La documentation sur http://developer.android.com/reference/android/location/Location.html#getAccuracy%28%29 dit qu'il retourne 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 d'un rayon de 60 mètres autour de la position fournie .



2Joseph Earl @

Si, tel que cité dans la documentation, ce est une précision, la position réelle des utilisateurs est quelque part dans QUOTED_LOCATION de la précision . Donc l'exactitude définit un rayon où l'on pouvait se attendre à l'utilisateur d' être . Ce que les docs ne disent pas, ce est la façon dont vous pouvez être sûr que l'utilisateur est dans un rayon - la norme est de 95 %, donc je suppose que ce qu'il .

3vendor @

L'emplacement est une tâche difficile à faire, quand vous avez une vie limitée de la batterie et quand il n'y a pas de signal GPS dans les bâtiments et dans les zones avec de nombreux grand bâtiment et etc. Mais Android fait un beaucoup plus facile . Lorsque vous demandez un emplacement, il vous suffit de spécifier ce que la précision dont vous avez besoin .

Si vous spécifiez que vous voulez un accuracy pour un exemple *100 meters*, Android va essayer d'obtenir l'emplacement et si elle peut obtenir un emplacement pour une précision de 70 mètres, il sera de retour pour vous, mais si Android peut obtenir un emplacement avec une précision supérieure à 100 mètres, votre application va attendre et ne rien recevoir jusqu'à il ya un emplacement dans une telle précision .

Typiquement Android sera d'abord obtenir l'ID de cellule, puis l'enverra au serveur de Google, qui associe ces identifiants cellulaires et le serveur renvoie une latitude et la longitude avec une précision qui est peu pour un exemple 1000 mètres . A cette époque, Android va aussi essayer de voir tous les réseaux WiFi dans la zone d'un envoie des informations sur eux aussi sur le serveur Google et si possible serveur de Google retournera un nouvel emplacement avec une précision plus élevée pour un exemple à 800 mètres .

A cette époque, le GPS sera sur . Le dispositif de GPS a besoin d'au moins 30 secondes à partir d'un démarrage à froid pour obtenir un correctif, si peut obtenir un correctif il reviendra latitude et la longitude mais encore une fois avec une précision, qui sera le plus élevé possible pour un exemple à 100 mètres . Fonctionne plus le GPS, la meilleure précision que vous obtiendrez.

Avis important : Les deux premières méthodes nécessite une connexion Internet . Se il n'y a pas de connexion de données, vous devrez attendre pour le GPS, mais si le dispositif est dans un bâtiment, vous obtiendrez probablement pas de lieu .

4paracycle @

Pour autant que je peux voir d'un coup d'œil sur le code source Android, cela dépend sur le matériel de l'appareil et quelle valeur il choisit de revenir.

Le fichier GpsLocationProvider.java a une http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=services/java/com/android/server/location/GpsLocationProvider.java#l1026 qui est appelée par le code natif et se fait passé l'exactitude comme une valeur . Ainsi, aucun calcul semble se produire dans le cadre au moins .

Le QCOM (qui je crois est le Qualcomm ) git GPS repo http://android.git.kernel.org/?p=platform/hardware/qcom/gps.git;a=blob;f=loc_api/libloc_api/loc_eng.cpp#l798 la reportLocation paramètre pour la précision qui semble impliquer que, au moins, que l'application utilise CER .

5dscheffy @

Je obtiens ce que vous demandez une réponse définitive en termes de probabilité, mais je pense qu'il ya deux choses à considérer ici. Tout d'abord, ce est au fournisseur de décider ce qu'ils veulent mettre dans cette valeur, donc en fonction du fournisseur, il peut juste être une mauvaise conjecture. Deuxièmement, il peut être utile de penser à cela comme un problème d'arrondi potentiel. Si je essaie de calculer votre position basée sur un nombre d'entrées, et certains de ces intrants sont disponibles que pour un certain nombre de chiffres significatifs, alors il est seulement possible de calculer une position avec un nombre donné de chiffres significatifs. Pensez-y de cette façon - ce est "environ" un plus "environ" une centaine. Probablement une centaine, car la précision de cent est probable inférieure à la grandeur de 1. Si je dis tout à coup la réponse est environ 101, alors je peux finir ce qui implique un niveau de précision qui ne existait pas. Cependant, si je spécifie effectivement la précision, alors je peux dire que ce 100 plus ou moins 10 plus 1 plus ou moins 0,1 est de 101 plus ou moins 10. Je reçois que ce est généralement allusion à quelque chose comme un niveau de confiance de 95% ( erreur-type), mais encore une fois, que tous suppose le fournisseur comprend des statistiques et ne est pas seulement deviner.