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
Beispiel hier: DAB-Z
Trigger ist hier das Profil DAB-Z wird gestartet.
Eingangs-Task ist DAB_RETURN, kein Ausgangstask
Was macht der Task?
Aktiv wird der Task, wenn DAB-Z aktiv wird.
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:
Ergebnis:
Aha... Das Radio ist also Bestandteil der com.car.ui...
Also neuer Test:
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 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.
- Die verwendeten Variablen werden geleert.
- 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.
- 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. - 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.
- Wenn man den Screen betätigt, wird man sofort wieder auf das löschen der Variablen zurück geworfen und der Task startet neu.
- Macht man nichts, wird ein Fehler geworfen, die Schleife wird verlassen.
- Jetzt prüfen wir noch, ob DAB-Z immer noch im Vordergrund ist.
- Wenn ja, dann wird man zurück auf den Homescreen geworfen.
- Falls nicht, passiert einfach nichts und das Script ist fertig.
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}
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???