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();
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
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