[HOW TO] Bildschirm - Aufwachverzögerung nach dem drücken der Powertaste entfernen

scarface1991

scarface1991

Stammgast
480
Wie ihr alle wisst hat das S3 (wie auch die meisten anderen Samsung Smartphones) das Problem, dass man fast immer auf den Bildschirm warten muss, nachdem man die Powertaste gedrückt hat. Dies kann bis zu 2 Sekunden dauern und kann, wenn man z.B. ganz kurz nur auf die Uhr schauen will, ziemlich nervig werden.
Mit dieser Anleitung habt ihr keine Verzögerung mehr, sodass der Bildschirm sofort angeht, nachdem ihr die Powertaste gedrückt habt. Dies wird mit dem Einbau eines Wakelocks erreicht, der das Smartphone wachhält, sodass das Handy nicht in den Deep Sleep modus verfallen kann, was im normalfall schon nach etwa einer Sekunde passiert, nachdem der Bildschirm aus ist.

Dies kann man natürlich negativ sehen, aber der Entwickler der Mod erklärt, dass das Smartphone sowieso bis zu über hundert mal pro Stunde aufwacht aufgrund von z.B. Navigations-Apps (Google Maps), Push-Notifications usw., sodass diese Mod sogar für manche einen positiven Effekt auf den Akku hat, weil das Handy nicht erst aus dem Deep Sleep Modus kommen muss für diese Services. Es sei aber gesagt, dass es für jeden anders sein kann.

So nun aber zu der Mod selber und wie man diese einbaut.

Wir brauchen die android.policy.jar Datei, die ihr in eurem /system/framework Ordner findet. Diese datei müsst ihr dekompilieren.

Wie dekompiliert man eine jar oder apk Datei?

1. Zuerst downloaded das Tool was ich unten als Anhang beigefügt habe. Als zweites natürlich entpacken und dann die android.policy.jar datei dort einfügen wo ihr das tool entpackt habt.

2. Jetzt drückt ihr "Shift + Rechte Maustaste" in einem freien feld dort wo ihr das Tool entpackt habt und dann geht ihr auf "Eingabeaufforderung hier öffnen".

3. Hier tippt ihr ein: apktool d android.policy.jar
Danach kurz warten, bis das Apktool die Datei dekompiliert und danach solltet ihr im selben Verzeichnis einen neuen Ordner vorfinden namens "android.policy.jar.out". Hier befinden sich nun alle dateien im dekompilierten Zustand der android.policy.jar


Nachdem die datei dekompiliert ist, sucht ihr die datei KeyguardViewMediator.smali , die sich in dem android.policy.jar.out\smali\com\android\internal\policy\impl Ordner befindet.

Diese Datei mit z.B. Notepad++ öffnen und folgende Veränderungen in Blau einfügen:

1. Damit man später den "ZeroWakeLag" Wakelock identifizieren kann und damit man sehen kann, was das Handy wachhält, folgendes suchen und das in blau einfügen:

Code:
.field private mWakeLock:Landroid/os/PowerManager$WakeLock;

[COLOR="Blue"].field private mZeroWakeLag:Landroid/os/PowerManager$WakeLock;[/COLOR]

.field private mWakelockSequence:I

2. Wakelock initialisieren:

Code:
const-string v2, "keyguardWakeAndHandOff"

    invoke-virtual {v0, v1, v2}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;

    move-result-object v0

    iput-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mWakeAndHandOff:Landroid/os/PowerManager$WakeLock;

    .line 314
    iget-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mWakeAndHandOff:Landroid/os/PowerManager$WakeLock;

    const/4 v1, 0x0

    invoke-virtual {v0, v1}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
	
    [COLOR="Blue"]iget-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mPM:Landroid/os/PowerManager;

    const/4 v1, 0x1

    const-string v2, "ZeroWakeLag"

    invoke-virtual {v0, v1, v2}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;

    move-result-object v0

    iput-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mZeroWakeLag:Landroid/os/PowerManager$WakeLock;

    iget-object v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mZeroWakeLag:Landroid/os/PowerManager$WakeLock;

    const/4 v1, 0x0

    invoke-virtual {v0, v1}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V[/COLOR]

    .line 316
    new-instance v7, Landroid/content/IntentFilter;

3. Dieser Schritt fügt einen permanenten Wakelock ein, wenn der Bildschirm ausgeht.

Code:
.method public onScreenTurnedOff(I)V
    .locals 30
    .parameter "why"

    .prologue
    .line 400
	
    [COLOR="Blue"]move-object/from16 v0, p0
	
    iget-object v1, v0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mZeroWakeLag:Landroid/os/PowerManager$WakeLock;

    invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->acquire()V[/COLOR]
	
    monitor-enter p0

    .line 401
    const/16 v26, 0x0

    :try_start_0
    move/from16 v0, v26

    move-object/from16 v1, p0

    iput-boolean v0, v1, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mScreenOn:Z

4. Der vierte und letzte Schritt entfernt den Wakelock, wenn der Bildschirm wieder angeht:

Code:
.method public onScreenTurnedOn(Lcom/android/internal/policy/impl/KeyguardViewManager$ShowListener;)V
    .locals 3
    .parameter "showListener"

    .prologue
    .line 545
    monitor-enter p0

    .line 546
	
    [COLOR="Blue"]iget-object v1, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mZeroWakeLag:Landroid/os/PowerManager$WakeLock;

    invoke-virtual {v1}, Landroid/os/PowerManager$WakeLock;->release()V[/COLOR]
	
    const/4 v0, 0x1

    :try_start_0
    iput-boolean v0, p0, Lcom/android/internal/policy/impl/KeyguardViewMediator;->mScreenOn:Z

Das wars, jetzt müssen wir den veränderten android.policy.jar.out Ordner wieder in die android.policy.jar kompilieren. Dazu löscht ihr eure originale android.policy.jar Datei aus dem Apktool Ordner, da dies ja noch die alte datei ist, die ihr ersetzen wollt. Danach wieder wie oben beschrieben, die Eingabeaufforderung in dem Pfad des Apktools öffnen und folgendes eintippen: apktool b android.policy.jar.out android.policy.jar

Nun wieder ein wenig warten und dann erscheint schon eure modifizierte android.policy.jar Datei, die ihr mit der alten im /system/framework Ordner ersetzen könnt. Hier ist es am besten aus der Datei eine flashbare zip zu machen, die sich dann mit CWM Recovery flashen lässt. Ob ihr die Datei einfach im laufenden Betrieb ersetzen könnt, habe ich nicht ausprobiert.



Ich habe den Code nicht geschrieben, sondern habe lediglich die Anleitung ins deutsche übersetzt. Danke an mikeyxda aus dem XDA Developers Forum. Die Anleitung ist ursprünglich für das Note 2 geschrieben worden (siehe Quelle), aber funktioniert auch auf dem S3. Ich habe es mit der UltimaROM v.11 ausgetestet. Ob es mit AOSP sprich CyanogenMod funktioniert, weiß ich nicht.

Quelle: [GUIDE] Eliminate Screen Wake Lag - xda-developers
 

Anhänge

  • decompile java and apk.zip
    3,2 MB · Aufrufe: 269
Zuletzt bearbeitet:
  • Danke
Reaktionen: craP_cillA
Schade, hört sich vielversprechend an...
aber:
ich muss die dateien in mein javaverzeichnis kopieren, in irgendeinem beliebigen Ordner verreckt apktool an ner Fehlermeldung.

Was noch viel interessanter ist: wenn ich den outputordner öffne, find ich statt vieler kleiner dateien und ordner eine einzige Datei (apktool.yml), die keinen nennenswerten inhalt hat.

Eigentlich wollte ich das script zumindest mal testen ... vielleicht hätte sich auch ne möglichkeit gefunden, den lag beim öffnen von Tasten/telefonbuch zu beseitigen
 
Du musst die android.policy.jar in das selbe Verzeichnis kopieren wo du das Apktool entpackt hast. Danach einfach die befehle im cmd Fenster eingeben, die ich oben im Tutorial beschrieben habe. Dann sollte es gehen und der outputordner sollte dann android.policy.jar.out heißen.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
scarface1991 schrieb:
[...]Dann sollte es gehen und der outputordner sollte dann android.policy.jar.out heißen.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App

Richtig, es sollte(!) :thumbdn:

im selben Verzeichnis heißt es -siehe screenshot-

im anderen ordner kommt wie gesagt, der richtig benannte, outputordner... allerdings nur mit der apktool.yml ---

darin steht:
"version: 1.4.3 apkFileName: android.policy.jar"
 

Anhänge

  • screen.png
    screen.png
    70,8 KB · Aufrufe: 733
rainbow006 schrieb:
Richtig, es sollte(!) :thumbdn:

im selben Verzeichnis heißt es -siehe screenshot-

im anderen ordner kommt wie gesagt, der richtig benannte, outputordner... allerdings nur mit der apktool.yml ---

darin steht:
"version: 1.4.3 apkFileName: android.policy.jar"
Lade sonst mal deine android.policy.jar datei hoch. Dann gucke ich mir das an.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
Kein ding ...
hängt dran ... aber unter 1kb dürfte auch n bissl wenig sein (fällt mir grad auf)
 

Anhänge

  • andpol.zip
    336 Bytes · Aufrufe: 173
rainbow006 schrieb:
Kein ding ...
hängt dran ... aber unter 1kb dürfte auch n bissl wenig sein (fällt mir grad auf)

Das ist wirklich ein wenig eigenartig. Normalerweise wiegt diese Datei um die 300kb. Hmm welche ROM benutzt du?

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
XELLA mit t-mobile branding ...
 
rainbow006 schrieb:
XELLA mit t-mobile branding ...

Es könnte gut sein, dass deine ROM odexed ist, d.h. dass man an der rom nichts verändern kann. Ich muss mir deine android.policy.jar morgen mal angucken, weil ich jetzt nicht zu Hause bin.

Gesendet von meinem GT-I9300 mit der Android-Hilfe.de App
 
das wirds dann wohl sein ... schade drum
 
scarface1991 schrieb:
Es könnte gut sein, dass deine ROM odexed ist, d.h. dass man an der rom nichts verändern kann.
ne. in dem fall wird 'android.policy.odex' hergenommen.
 
rainbow006 schrieb:
Kein ding ...
hängt dran ... aber unter 1kb dürfte auch n bissl wenig sein (fällt mir grad auf)

Habe gerade deine android.policy.jar Datei dekompiliert und das selbe Ergebnis wie bei dir. Nur eine Output Datei. Sehr eigenartig das ganze.

Ich gehe davon aus, dass du die Datei aus dem /system/framework Ordner hast?

Ich habe das schon für mehrere Leute aus dem XDA Forum gemacht und es gab keine Probleme. Die Datei war aber auch bei allen um die 300 kb groß. Ich verstehe nicht warum deine Datei so klein ist und keinen Inhalt zu haben scheint.


extralife schrieb:
ne. in dem fall wird 'android.policy.odex' hergenommen.

Hmm Stimmt
 
wollte eh die tage auf die emc flashen, werds dann nochmal probieren ...

aber extra deswegen de-odexen wäre mir auch zuviel aufwand... nichts desto tortz besten dank :)


was mich aber immer noch beschäftigt ist die frage, ob sich auf ähnlichem weg nicht auch dem kontakte-lag abhelfen lässt
 
Zuletzt bearbeitet von einem Moderator:
Zuletzt bearbeitet:
exdialer (pro) hab ich heut nacht getestet... kein merklicher zugewinn...

xposed schau ich mir die tage mal an!
 
Xposed ist aber nur ein halber gewinn denn sobald du den Taskmanager leerst ist die Kontakte app usw auch wieder raus -.-
Es ist einfach nur nervig von samsung.
Jeder Hersteller bekommts hin nur samsung nicht. Ja ich weis warum samsung das so macht aber es ist einfach nur schei... von denen. Da überlegt man sich jedes mal beim öffnen mhh guck ich doch mal bei Htc vorbei und dann denkt man sich neee villeicht machen sie es beim nächsten Samsung galaxy besser.

Gesendet von meinem GT-N7100 mit der Android-Hilfe.de App
 
scarface1991 schrieb:
Nachdem die datei dekompiliert ist, sucht ihr die datei KeyguardViewMediator.smali , die sich in dem android.policy.jar.out\smali\com\android\internal\policy\impl Ordner befindet.

Diese Datei mit z.B. Notepad++ öffnen und folgende Veränderungen in Blau einfügen:

1. Damit man später den "ZeroWakeLag" Wakelock identifizieren kann und damit man sehen kann, was das Handy wachhält, folgendes suchen und das in blau einfügen:

Code:
.field private mWakeLock:Landroid/os/PowerManager$WakeLock;

[COLOR="Blue"].field private mZeroWakeLag:Landroid/os/PowerManager$WakeLock;[/COLOR]

.field private mWakelockSequence:I


Hi, den Eintrag von Punkt 1 gibt es bei mir nicht.
Ich habe die Slimbean 4.3 installiert. Die KeyguardViewMediator.smali liegt auch noch in einem Unterordner: ...\android.policy.jar.out\smali\com\android\internal\policy\impl\keyguard

Kannst Du da mal drüber schauen? Mich nervt die Verzögerung tierisch.

Danke, Micha
 

Anhänge

  • android.policy.zip
    244,9 KB · Aufrufe: 124
Ja wie gesagt, als ich den Thread erstellt habe, da habe ich noch eine ROM benutzt, die auf Samsungs TouchWiz Oberfläche basiert (UltimaROM). Da ist alles mehr oder weniger anders, als bei CyanogenMod und anderen AOSP basierenden ROMs. Als ich dann auf CM umgestiegen bin, hatte ich die Mod nochmal versucht, aber hatte das selbe Problem wie du. Teilweise fehlte da was. Hab es dann aber auch nicht hingekriegt.
Wenn es dich die verzögerung so aufregt, dann kannst du ja den Entwickler dieser Mod fragen, ob er eventuell eine Mod rausbringt die auf AOSP basierenden ROMs funktioniert.
 
  • Danke
Reaktionen: Micha-CGN

Ähnliche Themen

craP_cillA
Antworten
0
Aufrufe
4.269
craP_cillA
craP_cillA
E
Antworten
9
Aufrufe
15.749
SaschaKH
SaschaKH
Cpt. Jack Sparrow
  • Cpt. Jack Sparrow
Antworten
12
Aufrufe
14.268
kev99
K
Zurück
Oben Unten