7

Ich arbeite an einer App, die Standortdaten verwendet, und es muss in China funktionieren. Auf Android-Geräten, die hier verkauft werden, ist die Google Play-API größtenteils nicht installiert. Die einzige Möglichkeit besteht darin, das Telefon zu rooten, um es zu installieren. Also bin ich mit dem LocationManager fest, der weit schlechter funktioniert als der LocationClient (Teil der Google Play API).Gibt es eine Alternative zum Standort-Client (Google Play API)?

Mein Problem ist, dass LocationManager, beim Lesen von GPS_PROVIDER, häufig nicht mit genügend Satelliten (in China) verbinden kann und es gelegentlich eine erhebliche Zeitlücke zwischen Fixes gibt. Beim Lesen von NETWORK_PROVIDER kann ich häufigere Fixes erhalten, jedoch liegt die Genauigkeit zwischen 30 und 500. Nirgendwo in der Nähe von LocationClient API-Qualität.

Die App soll Ihre Bewegung durch Straßen häufig überwachen, z. Update jede Sekunde (hoher Akkuverbrauch, kein Problem für meinen Kunden) und etwas tun, wenn Sie bestimmte Orte erreichen.

Wenn ich Google Play API und LocationClient verwende, funktioniert es wirklich gut. Aber das ist nur auf Nexus4 oder einem nicht chinesischen Android-Gerät.

Ich frage, ob jemand eine Bibliothek kennt, die bessere Ergebnisse als die direkte Verwendung von LocationManager oder eine Lösung zur Verwendung von LocationManager zur Verbesserung der Ergebnisse geben kann?

+0

https://github.com/novoda/Novocation – bGorle

+1

Warum schreiben Sie nicht Ihre eigene Implementierung mit Location Manager http://developer.android.com/guide/topics/location/strategies.html –

+0

Auch http: // android -developers.blogspot.com/2011/06/deep-dive-into-location.html –

Antwort

1

GPS funktioniert nicht gut, wahrscheinlich aufgrund fehlender GPS-Metadaten (Ephemeriden- und Almanachdaten) oder aufgrund der langsamen Erfassung dieser Metadaten. Im letzteren Fall sind in den meisten Ländern GPS-Ephemeriden- und -Almanachdaten über Netzwerkquellen verfügbar. Wenn nicht, muss der GPS-Chip das von den Satelliten herunterladen, was 5-20 Minuten dauern kann (die schnellste Zeit war, wenn der anfängliche Datenstrom genügend Informationen für den GPS-Chip lieferte, um eine Sperre zu erhalten). Ich bin nicht mit der Verfügbarkeit dieser Daten in China durch Netzwerkquellen vertraut, aber es klingt, als sei es nicht weit verbreitet von dem, was Sie erleben. (Schlüsselwörter zu google für mehr Info: SUPL, Ephemeris, Alamanac).

Wenn GPS nicht verfügbar oder langsam ist, um eine Sperre zu erhalten, ist die Geolokalisierung im Netzwerk der Fallback, der WLAN-Punkte und Mobilfunkmasten zum Triangulieren einer Position verwendet. Dies erfordert einen Internetdienst, damit das Gerät die APs + -Türme sendet, die es sieht, und der Dienst sendet einen Standort zurück. Genauigkeitsstufen von 30 bis 500 Metern sind dafür ziemlich gut.

(BTW, ein Netzwerk Geolocation Position auch ‚Samen‘ der GPS-Chip verwendet wird, um eine schnellere Sperre zu bekommen)

Netzwerk Geolocation auf Android typischerweise von einem Google-Web-Service zur Verfügung gestellt, aber das Telefon kann konfiguriert werden, um andere Anbieter von Carriern zu verwenden.

Sie vermeiden können mithilfe von Google (Google Play oder Netzwerk Geolokationsserver Google) oder die Netzwerkstandortbestimmungsdienst-built-in von Mozillas free-for-use-Netzwerk Geolocation-Dienst versucht: https://location.services.mozilla.com/

Sie benötigen eine API anfordern Schlüssel: https://location.services.mozilla.com/api ein Codebeispiel: diese App trägt Daten sowohl und ist für den Dienst ein Client: https://github.com/mozilla/MozStumbler

ich bezweifle diese Genauigkeit besser Netzwerk Geolocation für das Gebiet sind Sie bekommen, da Sie bereits gute Ergebnisse bekommen , aber vielleicht ist es eine Untersuchung wert.

+0

Danke für Ihre Antwort! Ich war mir nicht bewusst, Mozilla hat Geolocation API, wird es einen Schuss geben sehen, wie es in China funktioniert. – Sinisa