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;
        }
}
Avez-vous essayé ceci dans différents lieux? Dans certains endroits, vous avez tout simplement pas obtenir un signal GPS n'importe quoi.
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