Montag, 5. August 2013

HowTo: GPS Fix - schnellere Ortung (Android)

GPS ist schon eine feine Sache; man kann seinen (genauen) Standort innerhalb einiger Sekunden bestimmen. Jedoch kommt es bei manchen Geräten vor, dass die Ortung mehrere Minuten dauert. Oft tritt dies bei Custom-ROMs oder auch bei Stock-ROMs, die nicht gänzlich auf das jeweilige Land angepasst sind.

Theoretisch braucht ein Gerät für eine GPS Ortung nur vier Satelliten. Den Rest berechnet es selbst. Das Problem dabei ist, dass man den Standort nicht einfach berechnen kann, er wird langsam immer genauer angenähert.
Hierbei machen die Geräte einen kleinen Trick, indem sie ihre eigene (über NTP Server synchronisierte) Zeit mit einberechnen. Damit haben sie schon ein Anfangsgebiet mit dem sie jetzt weiterrechnen können.

Das Problem bei vielen ROMs ist jetzt, dass die Zeit über amerikanische Server synchronisiert wird. An sich ist das ja nicht das Problem, da bei der Ortung immer das UTC Time Format genutzt wird. Jedoch kommt es bei der Synchronisation über die US-Server zu vergleichsweisen großen Latenzen.
Bei meinen Versuch north-america.pool.ntp.org anzupingen kam ich auf durchschnittliche 180 ms. Deutlich schneller, falls man sich in Deutschland befindet, sind hier die "eigenen", deutschen Server. (Bei 2.de.pool.ntp.org kam ich beispielsweise auf 20 ms).
Man könnte zwar einfach die halbe Ping-Dauer wegrechnen, aber die über einen deutschen Server synchronisierte Zeit ist dennoch deutlich genauer.

Unter Android findet sich die Konfiguration des NTP-Server unter /system/etc/gps.conf und man braucht ein gerootetes Gerät, um diese Datei zu bearbeiten. Einfach die NTP Server Adresse ändern. Ebenso ist es möglich mehrere Adressen (als Fallback, falls mal eine ausfällt) zu nehmen.

Nachtrag: Die App, die ihr zum Bearbeiten nutzt, sollte auch Root unterstützen.
Ich benutze meist den "ES Datei Explorer", hier gibt es im Schnellzugriff (die Linkesidebar), unter Werkzeuge die Option Root-Explorer. Diese sollte aktiviert sein. Und die Datei dann mit dem eigenen Editor der App öffnen.

Das ganze sieht dann in etwa so aus (anstelle der 1. Zeile):
NTP_SERVER=2.de.pool.ntp.org
NTP_SERVER=3.de.pool.ntp.org
NTP_SERVER=0.de.pool.ntp.org
NTP_SERVER=1.de.pool.ntp.org
NTP_SERVER=de.pool.ntp.org
NTP_SERVER=europe.pool.ntp.org
 Jetzt noch speichern und neustarten. Und fertig ist der Fix. :)

HowTo: manuelles installieren von APK Dateien

Manchmal möchte man Apps installieren, die es bei Google Play  nicht mehr gibt, wie Adblock bzw. noch nicht gibt, wie die zahlreichen Apps,...