Android Localisation GPS Vitesse Fiable
L'écriture d'un GPS application d'enregistrement de~
Je suis la recherche des valeurs renvoyées par le getSpeed()
méthode sur Locations
rapporté par LocationManager
sont massivement fiable. Je suis en utilisant LocationManager.GPS_PROVIDER
, le filtrage des Localisations fournies par onLocationChanged
pour une meilleure précision. Même à un seul chiffre niveaux de précision de la vitesse retournée est généralement ridiculement élevé. Nous parlons jusqu'à 200 mp/h (oui je sais il est connecté en mètres/sec) lorsque le téléphone est à l'arrêt.
Je suis en essais la même base de code sur deux modèles différents de téléphones Android, l'exécution de deux différentes versions de système d'exploitation, et de voir les mêmes questions donc j'espère que c'est un code de problème.
Ce qui me manque? J'ai essayé d'en moyenne emplacements sur une fenêtre de temps, en vain. Vais-je avoir à travailler sur mes propres valeurs de vitesse en fonction de la distance parcourue /temps? Ce serait décevant.
Comme vous le verrez, je ne fais rien de spécial - un peu de filtrage pour plus de précision, même après cette fois AverageSpeed
et _bestLocation.getSpeed()
sont régulièrement unfeasibly élevée, même lorsque la précision de l'emplacement est bon.
public void onLocationChanged(Location location) {
if (location.getAccuracy() < 25f) {
_recentLocations.add(location);
if (_bestLocation == null || location.getAccuracy() <= _bestLocation.getAccuracy())
_bestLocation = location;
}
if ((_bestLocation != null && _bestLocation.getAccuracy() < 10f && _recentLocations.size() >= 10)
|| _recentLocations.size() >= 25)
{
int Count = 0;
float TotalSpeed = 0f;
float AverageSpeed = 0f;
for (int i = 0; i<_recentLocations.size(); i++) {
if (_recentLocations.get(i).hasSpeed()) {
Count++;
TotalSpeed += _recentLocations.get(i).getSpeed();
}
}
if (Count > 0)
AverageSpeed = TotalSpeed / Count;
}
}
Je devrais l'avoir précisé, je suis très acceptable précis de bugs - 5 - 10 mètres en général. Des lieux aussi variés que possible - des voyages à partir du bureau vers les sites des clients et de la maison, etc.
hai, avez-vous résolu ce problème, maintenant, je suis aux prises avec le même, pourriez-vous m'aider?.
la question a vraiment couché avec mon code. Voir le (très bon) a accepté de répondre et il devrait vous dire quasiment tout ce que vous devez savoir. Vous ne pouvez pas faire confiance à un simple GPS, vous devez filtrer et agréger les données sur une période de temps à donner à votre demande une forte indication de l'emplacement.
Merci pour votre prompte commentaire, permettez-moi de vérifier auprès de la accepté de répondre.
OriginalL'auteur Dan Wray | 2012-07-27
Vous devez vous connecter pour publier un commentaire.
J'ai travaillé sur du matériel GPS pendant plus de 7 ans maintenant. La précision de lecture est également pas précis à 100%.
Des constructeurs de précision avec le système utilisé pour la mesurer.
CEP, RMS, 2DRMS, et R95 sont quelques-uns des systèmes.
Lisez cet article pour plus d'informations: http://en.wikipedia.org/wiki/Circular_error_probable
L'exactitude chiffre ne tient pas compte des valeurs aberrantes. Par exemple, si la précision de 5 mètres, puis les lectures prises en bonnes conditions de signal, la plus grande erreur de 5 mètres, 95% du temps. Rien ne peut être dit sur les 5% restants lectures. La Protection contre ces
les valeurs aberrantes est de la sauce spéciale qui fait un bon endroit, en fonction de l'app se démarquer du reste.
Certaines choses que vous pouvez faire sont les suivantes:
Le GPS. Le capteur de mouvement de signatures sera très différent de l'état stationnaire
et en mouvement.
zones et de 5 à 10 kilomètres dans les régions peu peuplées. Si l'
le véhicule est en mouvement à haute vitesse pendant un certain temps et la tour cellulaire
l'information est toujours le même, vous savez que quelque chose est faux.
à une vitesse élevée? Si oui, c'est probablement une erreur de GPS.
calcul de la, 3 est le strict minimum pour lat,lon calcul. Anyting moins de 3 n'est pas une lecture valide. Vous pouvez être beaucoup plus confiant au sujet de la validité des données si le nombre de staellites est élevé.
Très vrai. Android documentation fournit également une très bonne description de la manière dont le locaiton le travail des prestataires et comment filtrer unacurrate endroits. developer.android.com/guide/topics/location/strategies.html
bien écrit, points.. (Y)
Merci pour l'échelle de réponse. Pouvez-vous, s'il vous plaît, me pointer dans la bonne direction? J'ai besoin de calculer la distance pour véhicule stand sur bas niveau des appareils android avec gps, il est généralement de 10 à 25 kms mais avec une précision d'au moins 0,5-0,8 km pour une de ces séances. Votre des précautions assez pour de tels cas? Ou j'ai besoin d'utiliser plus de filtrage avancées techniques comme Filtrage de Kalman(j'ai entendu). Merci à l'avance!
Je suis en utilisant un iPhone pour obtenir le GPS valeurs. La vitesse rapportée pendant la prise est très inférieur (de 1 à 15 mi / h), mais si je fais le calcul manuellement la vitesse (ligne droite, la distance entre deux points / temps), il arrive à être de 250 à 350 km / h. Ne gps du téléphone ne parvient pas à une telle vitesse élevée et le rapport des données inexactes ?
OriginalL'auteur Dojo
À Partir De Wikipedia.
Vous devriez probablement essayer dans endroit d'où vous avez une bonne qualité du signal.
Ne suis pas conscient des différences entre les téléphones, mais j'ai eu le même problème sur iPhone quand j'ai essayé un autre emplacement. Des endroits où la précision du GPS est à quelques mètres, nous avons eu une très bonne précision en vitesse mais dans les endroits où il a été la commande de 50m précis, nous avons eu une très mauvaise précision de la vitesse. Et comme la citation explique qu'il est entièrement basé sur l'emplacement de l'estimation de la vitesse est calculée par juste à l'emplacement précédent de l'estimation et de l'emplacement actuel de l'estimation et de la différence de temps.
Toutefois, il a été très bon dans ouverte à l'extérieur.
En effet, et c'est là que réside mon problème - ouvert à l'extérieur avec de fortes fixer l'exactitude de la déclaration stupide vitesses. Je vais essayer de déterminer manuellement la vitesse en comparant successives Endroits vs le temps écoulé, mais il se sent comme je suis en reproduisant des travaux qui ont déjà été fait, et mes espoirs ne sont pas hautes que je vais voir un meilleur résultat. Merci pour vos commentaires, peu importe.
OriginalL'auteur codetiger
Je rencontre le même problème. Je pense que le signal GPS dépend d'un emplacement, un emplacement peut donner à une sortie exacte de l'emplacement sinon un " pas-si-fiable. Dans mon cas, j'ai été situé à environ 200 mètres de ma position réelle. Que diriez-vous?
À ajouter, GPS_PROVIDER ne fonctionne pas ici dans ma région. NETWORK_PROVIDER fait, et c'est celui qui donne le 200 mètres résultat.
Oui, j'ai essayé de faire le meilleur fournisseur, la meilleure précision et la meilleure critères, mais lorsque j'utilise le GPS_PROVIDER, il n'en revient pas de n'importe quel emplacement résultat.
OriginalL'auteur JetPro
Il semble que la plupart des personnes sont en supposant que la vitesse de l'information de GPS est basé sur la comparaison des postes à temps diference. Cette méthode n'est pas très bon pour la détermination de la vitesse, et il est pire à de faibles vitesses de déplacement.
Les récepteurs GPS peuvent la vitesse de sortie de mesure basé sur l'effet doppler à partir du satellite mesures. La précision de la mesure de la vitesse basée sur l'effet doppler est BEAUCOUP mieux de les comparer à des mesures de vitesse basée sur la position/temps de calculs.
Google sur le gps de la vitesse doppler et Vous trouverez beaucoup de choses à lire.
Un lien est ici:
http://nujournal.net/HighAccuracySpeed.pdf
/Urbaine Holmdahl
OriginalL'auteur Urban Holmdahl
si le gps ne parvient pas..
maintenant html5 fournir de l'API de géolocalisation
http://diveintohtml5.info/geolocation.html
OriginalL'auteur Rohith Raveendran