Die Lösung für "GPS speed bug"
Hallo Forum,
ich habe einigen Stunden damit verbracht, und in ausländischen Foren nach einer Lösung gesucht.
Dann, nach wenigen Versuchen auch Erfolg gehabt und jetzt läuft iGO bei mir mit richtiger Geschwindigkeitsanzeige.
Problem: Geschwindigkeit wird ca. als das zweifache angezeigt.
Lösung für das A5000:
(Die angehängte Datei: framework.jar ist für das A5000 ! Für weitere Modelle siehe weiter unten!)
1. die Datei aus dem Anhang „framework.jar“ irgendwohin auf die SD-Karte im Telefon kopieren
3. Root-Explorer öffnen, die Datei kopieren oder ausschneiden und in das Verzeichnis „/system/framework“ wechseln und die Taste "mount r / w" drücken. Dann die Datei Einfügen. (Vorhandene Datei überschreiben, aber vorher sichern !!!)
3. Berechtigungen ändern (in root explorer die Datei angetippt halten -> Berechtigungen)
wie folgt markieren:
Besitzer: Lesen und Schreiben
Group: Lesen
Sonstiges: Lesen
es sollte so aussehen:
OOX
OXX
OXX
Die Berechtigungen zu ändern ist sehr WICHTIG! Ohne dies kann sein, daß das Handy nichtmehr startet!
4. Das Telefon neu starten und Freude haben.
Dann sollte die Geschwindigkeit richtig angezeigt werden.
Für andere Modelle mit Android 2.2 Froyo drauf sollte die Datei framework.jar selber geändert werden.
Ungefähr so:
Die erforderlichen Maßnahmen, um frameworks.jar zu patchen sind:
(Voraussetzung: JDK - Java Development Kit muss auf dem Rechner installiert sein.)
1. framework.jar aus dem Telefon kopieren
2. classes.dex aus framework.jar entpacken (Befehl z.B: unzip framework.jar classes.dex)
3. classes.dex mit java/baksmali entpacken (Befehl: java -jar baksmali-1.2.8.jar -o classes classes.dex)
4. die alte Datei classes.dex hier löschen (wird nicht mehr benötigt)
5. die Datei Location.smali unter "classes\android\location" mit einem Editor öffnen und die „getSpeed Funktion“ bearbeiten:
zu ersetzen:
.method public getSpeed()F
.registers 2
.prologue
.line 591
iget v0, p0, Landroid/location/Location;->mSpeed:F
return v0
.end method
mit diesem ersetzen:
.method public getSpeed()F
.registers 6
.prologue
const v1, 0x3F03B2A1
.line 591
iget v0, p0, Landroid/location/Location;->mSpeed:F
mul-float v2, v0, v1
return v2
.end method
Die Datei dann speichern und schliessen.
6. classes.dex wieder verpacken mit smali (Befehl: java -jar -Xmx512M smali-1.2.8.jar classes -o classes.dex)
7. Die neue Datei classes.dex in die originale framework.jar einfügen (Befehl z.B.: zip -i framework.jar classes.dex)
8. Die neue gepatchte Datei framework.jar in das Telefon kopieren wie oben beschrieben.
Kurze Erläuterung: Geschwindigkeit war falsch in Knoten berechnet (es sollte in m / s sein). Der Code ist in Dalvik Bytecode geschrieben und im Grunde korrigiert die Berechnung mit einem zusätzlichen Register, mit dem Wert 0,5144444 (1 Knoten in m / s), und dadurch wird die Geschwindigkeit der GPS-Treiber richtig übergeben.
Das alles ist nicht meine Erfindung, ich habe lediglich das Material gesammelt, in Deutsch übersetzt und einiges (
nicht alles!) getestet.
Ich hoffe, ich konnte einigen gut helfen.
Wenn jemand in der Beschreibung einen oder mehrere Fehler findet, bitte melden und wird korrigiert!
Ich übernehme keine Garantie oder Hafte für entstehende Schäden, jeder handelt auf seine eigene Gefahr !!!
Die originale Bezugsquelle findet ihr hier auf Spanisch:
http://www.movilesdualsim.com/foro/threads/5584-Posible-solucion-definitiva-al-fallo-de-velocidad-en-los-GPS?
@Edit(29.10.2011):Ich füge weitere Dateien an mit den Handynamen und mit zip verpackt. Die sind die framework.jar Dateien, die ich von Anderen bekommen habe zum abändern.
Die sind schon angepasst und ihr könnt zum angegebenen Handy nehmen wenn ihr wisst wie ein firmware update läuft für den schlimmsten fall.
Es gibt nämlich manchmal unterschiede auch bei selben modellen, und dann startet das Handy nicht mehr.
Sicherste Methode bleibt weiterhin die eigene Datei anzupassen.
Ach ja, wenn ich helfen konnte bitte einen Klick auf
"Thanks"! Tut doch nicht weh.