2014-06-15 9 views
5

Ich bin nach einem Zeiger auf einige Informationen, die all dies erklären. Ich habe eine GPS-App (getestet mit ein paar alten HTC Desire-Handys und einem Google Nexus 7), und ich stelle fest, dass GPS-Standort-Updates - wie bei einigen anderen Apps auch - "träge" werden können. Was scheint zu passieren ist, dass die Updates (1/Sek. - diese App benötigt gute aktuelle Informationen) OK durchlaufen, aber oft die Lat/Long-Werte nicht ändern (wenn sie sich bewegen). Interessanterweise tut alt normalerweise.A-GPS, GPS zurücksetzen und sendExtraCommand

Nach einiger Lektüre von Stack-Überlauf, finde ich ‚GPS Zurücksetzen‘ mit dem folgenden Code (Erlaubnis android.permission.ACCESS_LOCATION_EXTRA_COMMANDS verwenden):

Bundle extras = new Bundle(); 

extras.putBoolean("all", true); 
locManager.sendExtraCommand("gps", "delete_aiding_data", extras); 

scheint zu helfen: Es gibt eine erste Lücke in Orten, dann echte Updates scheinen viel nützlicher zu sein - bis es wieder passiert.

Ich habe auch gelesen, dass der folgende Code

Bundle bundle = new Bundle(); 

locManager.sendExtraCommand("gps", "force_xtra_injection", bundle); 
locManager.sendExtraCommand("gps", "force_time_injection", bundle); 

verwendet werden, die A-GPS-Cache gespeicherten Informationen zu aktualisieren, eine schnellere Sperre (für kurze Zeit) zu bekommen, aber muss eine Netzwerkverbindung einen Download auszuführen . Ich habe das noch nicht ausprobiert.

Das Problem, das ich habe, ist, dass ich nirgendwo gute detaillierte Informationen darüber finden kann, was diese Befehle sind, was sie tun, wann sie sollten und nicht verwendet werden sollten, warum alles überhaupt passiert usw. Es gibt einige, aber es ist alles ein bisschen anekdotisch.

Worauf ich wirklich hinaus will, wird irgendwo darauf hingewiesen, dass ich über den Hintergrund zu allem lesen kann. Ich würde mich sehr freuen, wenn es etwas länger zum Sperren aussehen würde, vorausgesetzt, dass es sich im Laufe der Zeit nicht verschlechterte.

Antwort

6

force_xtra_injection bewirkt, dass die gps-Software den Xtra-Server nach Hilfe fragt. Xtra ist ein proprietäres Protokoll, das von einem bestimmten Anbieter unterstützt wird. Es ist nicht wirklich im Detail beschrieben, was ich weiß, aber ich nehme an, es enthält wirklich Ephemeriden-Daten für Satelliten.

force_time_injection erzwingt Zeit Unterstützung in GPS-Software. Die Uhrzeit muss im GPS-Format sein. Dies geschieht, indem NTP verwendet wird, um einen einigermaßen genauen Wert für die GPS-Zeit zu ermitteln, und dies der GPS-Software in Ihrem Telefon als Hilfe bei der Festlegung der Ausgangsposition zu geben. Die Zeitunterstützung wird nur für die erste berechnete Position verwendet. Nach der ersten Position verfügt der GPS-Empfänger über eine wesentlich höhere Genauigkeit als über eine externe Softwareschnittstelle.

Ephemeris ist ein Orbitmodell für jeden Satelliten. Es verwendet eine komplizierte Formel, um anzugeben, wo sich ein Satellit im Raum befindet, wenn Sie ihm Zeit geben. Satelliten bewegen sich mit ~ 3,8 Kilometern/Sekunde durch ihre Umlaufbahnen, daher ist es sehr wichtig, die Zeit so genau wie möglich zu spezifizieren.

Zeitunterstützung wird nicht wirklich verwendet, um eine Position zu berechnen, wird verwendet, um (zusammen mit Ephemeriden oder Almanach) zu bestimmen, welche Satelliten an Ihrem Standort (oder dem letzten bekannten Standort) und welcher ungefähre Dopplerwert dafür angezeigt werden Satellit wäre. Dadurch kann der GPS-Empfänger die Suchparameter eingrenzen und hat eine bessere Chance, Satelliten mit geringer Signalstärke zu finden und Satelliten schneller als ohne Zeit zu finden.

Wenn lat/long Werte nicht ändern, ist es aus mehreren Gründen:

1) Die Position ist nicht wirklich ein GPS-Position ist, wird basierend auf WiFi-Daten, CELLID Daten oder einer anderen Quelle. Sie können sich die Positionsunsicherheit ansehen, um einen Hinweis darauf zu erhalten, welche Quelle verwendet wird.Wenn die Unsicherheit Hunderte oder Tausende von Metern beträgt, basiert sie auf der Zellen-ID. Wenn die erste Position sehr schnell herausspringt und Sie schreckliche Signalbedingungen haben (Sie befinden sich im Inneren, wo Signale blockiert sind, aber immer noch eine Genauigkeit von 20 oder 30 Metern erreichen), verwenden Sie wahrscheinlich WiFi-Positionierung.

2) Die GPS-Software ist die Positionsmeldung. Dies ist etwas, was die meisten Menschen bevorzugen, um die Benutzererfahrung zu verbessern. Niemand möchte an einer Ampel sitzen und ihre GPS-Position sehen, wenn sie nicht fahren. Wenn Sie klemmen, können Sie anfangen, sich zu bewegen, und die Klemme sollte loslassen und Ihre Position nach einer kurzen Zeit verfolgen.

3) Sie haben wirklich schlechte Signalbedingungen und GPS-Positionen werden aktualisiert, aber passieren sehr langsam.

Der beste Weg, um gute Positionen von GPS zu erhalten, ist in guten Signalbedingungen und mit dem Internet verbunden sein, so dass Sie Hilfe-Daten (Ephemeriden, Position und aktuelle GPS-Zeit) von einigen Servern erhalten können.

+0

Danke für die ausgezeichnete Beschreibung. Für was es anderen Menschen wert ist, fand ich einen Grund für die "Trägheit" - nimm das Gerät aus seinem (Lederfalt-) Koffer. Dies, dachte ich, war sehr merkwürdig, da kein Metall in dem Gehäuse war, nur ein schwarzer Plastikeinsatz zum Einstecken des Telefons. Dann lese ich, dass einige Kunststoffe schwarz gemacht werden, indem Kohlenstoff in die Mischung eingeschlossen wird und Kohlenstoff ein Leiter ist. Also, schnitt das Plastik hinter der Antenne weg, und die Leistung verbesserte sich stark. – nmw01223

+2

Ja, das stimmt. Einige dunkle Farben in Telefonen verwenden Kohlenstofffasern oder Kohlenstoffpulver, um den gewünschten Ton zu erhalten. Wenn es genug ist, kann es Probleme für GPS verursachen. Wenn es sich um einen Aftermarket-Artikel eines Drittanbieters handelt, wäre dies wahrscheinlicher. Auch habe ich gesehen, dass einige Farben die GPS-Leistung beeinträchtigen können. Einige Prozesse verwenden Metallflocken, um die Farbe richtig aussehen zu lassen. Zu viel Metall und du hast das gleiche Problem. Dies wird normalerweise durch Tests festgestellt, bevor eine schlechte Farbe versendet wird. – user2246302

+0

Ziemlich detaillierte Antwort :) –