Comment réveiller Android avec use adb - Je veux réveiller (si je dors) le terminal Android avant de déboguer chaque nouvelle version de l'application.
Le flux typique est: 1. Je fais quelques changements dans Eclipse. 2. Pendant ce temps, l'écran s'éteint ou pas. 3. Je lance le "débogage" et veux forcer l'écran à se réveiller.
J'ai trouvé une méthode avec une émulation "clé d'alimentation", mais elle ne l'allume pas, mais active/désactive l'état d'alimentation. Je ne veux pas ajouter de code supplémentaire à mon application. Quelles sont les autres méthodes pour effectuer une tâche aussi triviale? Aidez-nous.
adb Shell input keyevent KEYCODE_WAKEUP
Comme décrit ici , ceci réveille l'appareil. Se comporte un peu comme KEYCODE_POWER mais cela n’a aucun effet si le périphérique est déjà réveillé.
Pour basculer veille/réveil avec une seule commande, vous pouvez émettre
adb Shell input keyevent KEYCODE_POWER
Il suffit d'utiliser:
adb Shell input keyevent 26
Voici ce que je suis venu avec:
adb Shell dumpsys power | grep "mScreenOn=true" | xargs -0 test -z && adb Shell input keyevent 26
Cela va d'abord vérifier si l'écran est allumé. Si ce n'est pas le cas, il émulera la touche marche/arrêt qui allumera l'écran de l'appareil.
Vous pouvez vérifier l'état d'alimentation actuel du périphérique (y compris l'affichage) via adb avec la commande dumpsys power
et envoyer l'événement d'appuyer sur la touche d'alimentation uniquement si l'écran est éteint. La solution la plus simple serait de désactiver complètement le délai d’affichage "tant que vous êtes connecté à USB" dans les options pour les développeurs.
si vous exécutez adb Shell input keyevent KEYCODE_POWER
et que vous obtenez Killed
, vous devez utiliser l'utilisateur root sous execute su
avant.
sommeil: (adb Shell) input keyevent KEYCODE_SLEEP
réveil: (adb Shell) input keyevent KEYCODE_WAKEUP
bascule: (adb Shell) input keyevent KEYCODE_POWER
vous pouvez également ajouter les indicateurs suivants à votre onCreate()
dans votre activité principale:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
De cette façon, votre appareil devrait se réveiller lorsqu'il est chargé via Eclipse.
Pour Windows et Eclipse, vous pouvez utiliser le fichier .bat:
@ECHO OFF
setlocal
for /f "delims= tokens=1*" %%a in ('adb Shell dumpsys power ^| findstr.exe "mScreenOn="') DO (
for /f "delims== tokens=2*" %%S in ("%%a") do (
if "%%S" == "false" (goto move1) else (goto move2)
)
)
:move1
adb Shell input keyevent 26
goto end
:move2
goto end
:end
exit
Il vérifiera si l'écran est éteint, il passera en mode d'alimentation. Pour l'utiliser avec Eclipse, ce fichier .bat doit être utilisé comme "Outil externe" (il suffit de remplir le chemin d'accès au fichier .bat) et d'être lié à le projet dans ses propriétés (Builders - Import -).
J'ai utilisé les éléments suivants pour réactiver des périphériques distants en vue de tests automatisés. Si l'écran n'est pas allumé, il appuiera sur le bouton d'alimentation puis sur le bouton de menu.
(
cd ${platform-tools};
./adb Shell dumpsys power | grep -i 'SCREEN_ON' >/dev/null;
if [ $? -eq 0 ]; then
echo "Screen is on...";
else
echo "Pressing buttons to wake-up...";
# http://developer.Android.com/reference/Android/view/KeyEvent.html
./adb Shell input keyevent 26; # Power
./adb Shell input keyevent 82; # Menu
echo "Pausing for state to settle...";
sleep 1;
./adb Shell dumpsys power | grep -i 'SCREEN_ON';
fi;
echo '---';
./adb Shell dumpsys power | grep -i 'SCREEN'
)
Je sais que c’est le contraire de ce que demande le PO, mais je voulais préciser la définition de «vraiment endormi» pour les autres lecteurs: est activé et la commande Invite est en cours d'exécution (sinon, comment adb Shell va-t-il fonctionner?). Lorsqu'il est complètement endormi, seul le bouton d'alimentation physique le réveille (à moins que d'autres boutons ne soient sélectionnés comme source de réveil dans le BSP). Mon projet consomme environ 120 mA avec l'écran éteint, mais seulement 23 mA en mode veille (débranchez le câble USB). "adb Shell input keyevent 26" ne fonctionne pas dans ce mode. La console série non plus. Mon appareil de test a accès à la batterie et à la ligne d'alimentation externe séparément. Je peux basculer la ligne d'alimentation (avec la batterie connectée) pour la réveiller. J'ai également un concentrateur USB commuté qui déconnecte l'USB spécifiquement pour la partie de sommeil du test.
J'espère que cela peut aider quelqu'un.