web-dev-qa-db-fra.com

Réveillez-vous Android avec utiliser adb ou Eclipse (juste avant le débogage)?

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.

19
Chameleon
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
28
boltup_im_coding

Il suffit d'utiliser: 

adb Shell input keyevent 26
16
Rene Barbosa

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.

8
Brian

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.

3
Alex P.

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

3
吴毅凡

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.

3
amark

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 -).

0
Sergey Grabak

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'
)
0
TJR

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.

0
gyent