web-dev-qa-db-fra.com

Comment allumer et éteindre l'écran avec la commande adb?

J'utilise KEYCODE_POWER pour allumer et éteindre mon téléphone enraciné. La commande ci-dessous est utilisée dans les deux cas, allumer et éteindre l'écran. 

adb Shell input keyevent KEYCODE_POWER

Cependant, je veux l'utiliser dans des cas séparés: allumer et éteindre. J'ai deux fonctions: allumer et éteindre des fonctions. Si l'écran est éteint et que j'appelle la fonction d'allumage, l'écran sera allumé. si l'écran est déjà allumé, la fonction d'allumage ne fera rien. Sinon, si l'écran est allumé, j'appellerai la fonction éteindre et elle s'éteindra. 

J'ai essayé de vérifier l'état de l'écran mais cela ne fonctionne pas bien. En fait, la mise à jour de l’état de l’écran est une comparaison très lente avec le traitement du téléphone. J'utilise également d'autres méthodes, mais ces méthodes permettent de réveiller l'écran sans dormir.

final Window win = getWindow();
    win.addFlags( WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
            WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
            WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON ); 

Deuxième manière:

PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
wl.acquire();
5
John

adb Shell input keyevent 26

26 - est le bouton d'alimentation du code de l'événement sur le périphérique.

Vous pouvez trouver plus de commandes par lien: http://adbshell.com/commands

10
Vova Stelmashchuk

Vous pouvez écrire un script pour contrôler l'activation/désactivation de l'écran. Voici l'exemple de code de script:

result="$(adb Shell dumpsys input_method | grep -c "mScreenOn=true")"

if [ "$result" == 1 ]; then
    echo "Screen is already on."

else
    echo "Turning screen on."
    adb Shell input keyevent 26
fi
2
0xalihn