Task-Optimierungen

G

Gelöschtes Mitglied 342348

Gast
Hallo zusammen,
ich komme mal mit einer Verfeinerung eines Tasks und gleichzeitig mit einer Frage.

Ich benutze Tasker auch in meiner Android-Car-Unit, um ohne viel Klickereien wieder auf den Homescreen zu kommen.
Also App per Button starten und nach 10 Sek ohne Usereingabe wieder auf den Homescreen zurück. Solange Usereingaben, gemacht werden, bleibt die App aktiv im Vordergrund.
Bei selber installierten Apps funktioniert das einwandfrei, falls das Radio gerootet ist.
Per Shell ADB shell top über den PC, kann man relativ einfach die Paketnamen der Apps feststellen, man muss einfach nur ein wenig in der Ausgabe suchen.

Beispiel hier: DAB-Z
Trigger ist hier das Profil DAB-Z wird gestartet.
Eingangs-Task ist DAB_RETURN, kein Ausgangstask

Code:
    DAB_RETURN (3)
        A1: Variable Lösche [ Name:%Touch Mustervergleich:Aus Local Variables Only:Aus ] 
        A2: Warte [ MS:100 Sekunden:0 Minuten:0 Std.:0 Tage:0 ] 
        A3: Variable Lösche [ Name:%Dab Mustervergleich:Aus Local Variables Only:Aus ] 
        A4: Warte [ MS:0 Sekunden:5 Minuten:0 Std.:0 Tage:0 ] 
        A5: Shell Ausführen [ Befehl:cat /proc/$(pidof -s com.zoulou.dab)/oom_adj Timeout (Sekunden):0 Benutze Root:An Output Speichern In:%Dab Fehler Speichern In:%Dab_false Ergebnis Ablegen In: Task Weiter Ausführen Nach Fehler:An ] 
        A6: Warte [ MS:100 Sekunden:0 Minuten:0 Std.:0 Tage:0 ] 
        A7: Shell Ausführen [ Befehl:getevent -c 1 /dev/input/event1 Timeout (Sekunden):5 Benutze Root:An Output Speichern In:%Touch Fehler Speichern In:%Touch_false Ergebnis Ablegen In: Task Weiter Ausführen Nach Fehler:An ] 
        A8: If [ %Touch ist gesetzt ]
        A9: Goto Aktion [ Typ:Aktion Nummer Nummer:1 Bezeichnung: ] 
        A10: Else 
        A11: Shell Ausführen [ Befehl:cat /proc/$(pidof -s com.zoulou.dab)/oom_adj Timeout (Sekunden):0 Benutze Root:An Output Speichern In:%Dab Fehler Speichern In:%Dab_false Ergebnis Ablegen In: Task Weiter Ausführen Nach Fehler:An ] 
        A12: Warte [ MS:100 Sekunden:0 Minuten:0 Std.:0 Tage:0 ] 
        A13: If [ %Dab !~ 3 ]
        A14: Home-Screen anzeigen [ Seite:1 ] 
        A15: Else 
        A16: End If 
        A17: End If

Was macht der Task?
Aktiv wird der Task, wenn DAB-Z aktiv wird.
  1. Die verwendeten Variablen werden geleert.
  2. Es kommt eine Pause von 5 Sek. Mit der Pause von 5 Sek in Punkt 4 kommen wir also auf 10 Sek. delay, falls man den Screen nicht antatscht.
  3. Shell-Befehl, um den Zustand der DAB-Z abzufragen (Es gibt verschiedene Ergebnisse: 3 = Vordergrund... Muss man im Einzelfall über die Shell mit dem Befehl cat/proc/$(pidof -s [Name des Paketes])/oom_adj abfragen.
  4. Jetzt wollen wir wissen, ob der User evtl. in der App scrollt, irgendwelche Settings bearbeitet, etc. Dafür brauchen wir einen erneuten Shell-Befehl: getevent -c 1 /dev/input/event1 mit einem timeout. Ich habe 5 Sek. gewählt.
  5. Wenn man den Screen betätigt, wird man sofort wieder auf das löschen der Variablen zurück geworfen und der Task startet neu.
  6. Macht man nichts, wird ein Fehler geworfen, die Schleife wird verlassen.
  7. Jetzt prüfen wir noch, ob DAB-Z immer noch im Vordergrund ist.
  8. Wenn ja, dann wird man zurück auf den Homescreen geworfen.
  9. Falls nicht, passiert einfach nichts und das Script ist fertig.
So, nun zu meinem Problem:
Das Gleiche würde ich jetzt gerne auch für andere Apps ausrollen, wie z.B. das FM-Radio.
Also habe ich erst einmal ADB gestartet und versucht den App-Namen zu ermitteln.
Ergebnis: Die App hat keinen ermittelbaren Paket-Namen.

Nun habe ich etwas tiefer in die Kiste gegriffen und habe über die Shell mit dem Befehl: dumpsys window windows | grep -E 'mCurrentFocus' den Namen der App heraus zu bekommen. Damit greift man die App ab, die gerade auf dem Bildschirm aktiv ist.
Ergebnis:
Code:
rk3368:/ # dumpsys window windows | grep -E 'mCurrentFocus'
  mCurrentFocus=Window{dddc4c1 u0 com.car.ui/com.my.radio.RadioActivity}
Aha... Das Radio ist also Bestandteil der com.car.ui... 🙂
Also neuer Test:
Code:
1|rk3368:/ # cat /proc/$(pidof -s com.car.ui/com.my.radio.RadioActivity)/oom_adj
cat: /proc//oom_adj: No such file or directory

Jetzt gehen mir die Ideen aus. Stumpf nach 10 Sek wieder auf den Homescreen wechseln ist auch blöd. Der Task läuft ja weiter die 10 Sek ab und schiebt mich zurück auf den Homescreen, egal, ob ich in der Zwischenzeit eine andere App gestartet habe.

Hat einer eine Idee dazu???
 
Ich bin blöd...
Natürlich hatte ich die Lösung schon auf dem Tablett liegen und habe sie nicht erkannt.

Code:
rk3368:/ # dumpsys window windows | grep -E 'mCurrentFocus'
  mCurrentFocus=Window{dddc4c1 u0 com.car.ui/com.my.radio.RadioActivity}
hat alles was ich brauche.
Das ergibt also folgenden Task:
Profil: Starte Radio

Task:
Code:
    FM_neu (10)
        A1: Variable Lösche [ Name:%Fm_ok Mustervergleich:Aus Local Variables Only:Aus ]
        A2: Warte [ MS:100 Sekunden:0 Minuten:0 Std.:0 Tage:0 ]
        A3: Variable Lösche [ Name:%Fm_trim Mustervergleich:Aus Local Variables Only:Aus ]
        A4: Warte [ MS:0 Sekunden:5 Minuten:0 Std.:0 Tage:0 ]
        A5: Shell Ausführen [ Befehl:getevent -c 1 /dev/input/event1 Timeout (Sekunden):5 Benutze Root:An Output Speichern In:%Touch Fehler Speichern In:%Touch_false Ergebnis Ablegen In: Task Weiter Ausführen Nach Fehler:An ]
        A6: If [ %Touch ist gesetzt ]
        A7: Goto Aktion [ Typ:Aktion Nummer Nummer:1 Bezeichnung: ]
        A8: Else
        A9: Shell Ausführen [ Befehl:dumpsys window windows | grep -E 'mCurrentFocus' Timeout (Sekunden):1 Benutze Root:An Output Speichern In:%Fm_ok Fehler Speichern In:%Fm_false Ergebnis Ablegen In: ]
        A10: Warte [ MS:30 Sekunden:0 Minuten:0 Std.:0 Tage:0 ]
        A11: Variablen [ Name:%Fm_ok Von:59 Länge:13 Anpassen:An Ergebnis Ablegen In:%Fm_trim ]
        A12: Warte [ MS:30 Sekunden:0 Minuten:0 Std.:0 Tage:0 ]
        A13: If [ %Fm_trim gl RadioActivity ]
        A14: Home-Screen anzeigen [ Seite:1 ]
        A15: Else
        A16: End If
        A17: End If

Na, da habe ich wohl echt auf der Leitung gestanden....

Vielleicht kann es ja einer brauchen. ;)
 
  • Danke
Reaktionen: tchleb und Spardas

Ähnliche Themen

j3sk0
  • j3sk0
Antworten
2
Aufrufe
236
j3sk0
j3sk0
P
Antworten
25
Aufrufe
1.136
Pentatulim
P
G
Antworten
1
Aufrufe
296
Cecoupeter
Cecoupeter
Zurück
Oben Unten