Welches ist der beste Weg, Geschwindigkeit in Android zu berechnen, ob "manuelle Berechnung mit GPS-Koordinaten" oder "location.getSpeed"?

8

Ich versuche, Geschwindigkeit in Android-Gerät zu berechnen, aber das ist die beste Praxis, es zu tun, bereits hat location.getSpeed ​​() -Funktion mit GPS, ist dies der beste Weg zu verwenden? oder sollte ich die Geschwindigkeit manuell mit GPS-Koordinaten berechnen?

    
Anand K 08.02.2014, 10:42
quelle

3 Antworten

3

Es scheint, dass die Methode getSpeed ​​() nicht immer zuverlässig ist, besonders bei niedriger Geschwindigkeit und wenn die GPS-Abdeckung nicht optimal ist. Sie können sich diese Frage und this one die beide Alternativen für getSpeed ​​() sind. Die Android-Entwickler-Seite sagt jedoch, dass Sie mit der Google Location API eine bessere Leistung erzielen.

Es scheint also, dass die Wahl von der Nutzung Ihrer App abhängt: Wenn Sie eine langsame Verschiebung in einem Bereich mit schlechter GPS-Abdeckung (im Wald) anstreben, verwenden Sie Ihre eigene Implementierung. Schnelles Gebiet mit guter GPS-Abdeckung, verwenden Sie die Google Location API.

Ich hoffe, es hat dir geholfen.

    
Legisey 10.02.2014, 12:13
quelle
6

IMO, der beste aktuelle Ansatz für Android ist die Verwendung von Location.getSpeed() zusammen mit der Google Services-Standort-API und der fusionierte Standortanbieter. Dann überprüfen Sie diesen Wert in der Realität unter Google Play Services-Aktivitätserkennung .

Der fusionierte Standortanbieter integriert einige andere On-Board-Sensoren, um Standortdaten zu optimieren, was besser ist als GPS allein. Dann überprüfen Sie die Methode ActivityRecognition.getMostProbableActivity () . Wenn DetectedActivity vom Typ STILL ist, lautet Ihre tatsächliche Geschwindigkeit ist wahrscheinlich gleich 0. Wenn es ON_FOOT ist, ist es wahrscheinlich eine niedrige Geschwindigkeit (z. B. 1 m / s). Wenn es ON_BICYCLE oder IN_VEHICLE ist, ist es wahrscheinlich gut, dass Sie sich auf die Geschwindigkeitsausgabe verlassen, die direkt von Location.getSpeed() erhalten wird. Sie sollten auch das DetectedActivity.getConfidence() Werten Sie auch, und stellen Sie Ihren eigenen Schwellenwert für ein Konfidenzniveau ein, das Sie "zuversichtlich" mit :) füttern, wenn Sie sich auf diese Werte verlassen.

Ich würde auch definitiv vorschlagen, dass Sie NICHT einfach durchschnittliche sequenzielle Positionen verwenden, um eine durchschnittliche Geschwindigkeit zwischen zwei Positionen zu erhalten (wenn Sie dies tun, muss es ein Durchschnitt über eine große Anzahl von Positionen sein) ). In meinem Benchmarking auf mobilen Geräten (siehe meine Dissertation hier , insbesondere Seiten 105-106 und 137-138), I habe eine momentane Geschwindigkeit gefunden, die vom GPS-Subsystem berechnet wurde (die typischerweise auf der Doppler-Verschiebung basiert der GPS-Trägersignale ) viel genauer als die von GPS abgeleiteten Positionen. Das 95. Perzentil der Geschwindigkeit, die während des stationären Aufenthalts in Innenräumen (nur mit assistiertem GPS, keine Sensorfusion) beobachtet wurde, betrug 1 m / s bei einem getesteten Sanyo Pro 200 I. Bei einigen intelligenten Energiemanagementtechniken, die ich evaluierte, war es mir möglich, eine signifikante Anzahl von Positionsausreißern mithilfe von Geschwindigkeitsdaten (siehe Seite 137-138) herauszufiltern. Mit Sensorfusion und Aktivitätserkennung, um Ausreißer zu filtern, sollte die Genauigkeit auf einem ähnlichen Gerät besser sein.

Schließlich, und ich kann nicht genug betonen, haben Sie Tests auf realen Geräten, so viele wie Sie eine Pause bekommen können, und vorzugsweise die beliebtesten Modelle da draußen. Android hat eine Vielzahl von OEMs, die Geräte herausbringen, die alle ihre Exzentrizitäten haben werden. Am besten ist es, eine Lösung zu entwickeln, die auf die gängigsten Modelle abzielt. Dabei ist es unrealistisch, dass eine Lösung für alle Modelle perfekt funktioniert.

    
Sean Barbeau 10.02.2014 20:04
quelle
0

Der beste Weg für Geräte, die sich schneller als die Gehgeschwindigkeit bewegen, ist die direkte Verwendung von location.getSpeed ​​().

Für Fußgänger oder andere langsame Situationen ist das nicht ganz einfach, vielleicht ist es einfach unmöglich, eine gültige langsame Geschwindigkeit zu haben, die im Moment gültig ist.
Einige versuchen, den Verlauf zu bewerten und einen Durchschnitts- oder Schwellwert-basierten Ansatz zu machen, dies wird sich für eine spezifische Anwendung / Verwendung verbessern.

Am einfachsten ist es jedoch, wenn Sie Ihre App so konfigurieren, dass niedrige Geschwindigkeiten ignoriert werden.

Einige Links zur Geschwindigkeit:
GPS-Positionskorrektur
Glatte GPS-Daten

    
AlexWien 10.02.2014 18:32
quelle

Tags und Links