comment ajouter une attente d'appareil jusqu'à ce que l'écran d'accueil apparaisse?

18

J'ai besoin de déverrouiller mon écran à l'aide d'Adb, et l'attente de l'appareil se termine trop tôt (lorsque l'appareil démarre), et le déverrouillage de l'écran échoue. Existe-t-il un moyen de détecter cet écran d'accueil pour que je puisse ensuite déclencher le déverrouillage de l'écran?

Ceci est la commande que j'utilise pour déverrouiller l'écran -

adb wait-for-device shell input keyevent 82
Umang
la source

Réponses:

23

eh bien attendez l'appareil, comme vous l'avez déjà réalisé, n'attend que le démarrage du démon adb. C'est déjà au moment de l'init. Afin de vérifier un démarrage complet, vous pouvez ajouter à votre script quelque chose comme:

en pseudo:

  1. attente pour l'appareil
  2. tant que getprop sys.boot_completed! = 1 sommeil quelques secondes, vérifiez à nouveau getprop sys.boot_completed
  3. entrée du shell keyevent 82

Cela devrait fonctionner.

Quelque chose comme ça:

#!/bin/bash

adb wait-for-device

A=$(adb shell getprop sys.boot_completed | tr -d '\r')

while [ "$A" != "1" ]; do
        sleep 2
        A=$(adb shell getprop sys.boot_completed | tr -d '\r')
done

adb shell input keyevent 82

Ceci n'est pas testé, alors soyez conscient des erreurs potentielles

divisé par zéro
la source
Veuillez modifier votre réponse pour qu'elle soit facilement lisible. Vous avez une réponse valable, mais un peu de clarté aiderait tout le monde. Merci
HasH_BrowN
la réponse est maintenant modifiée. J'espère que cela vous aide :)
divisé par zéro
bonne réponse +1, maintenant d'autres pourront la suivre. N'oubliez pas d'ajouter " Toujours effectuer une sauvegarde ", pour ces moments accidentels;)
HasH_BrowN
2
J'ai trouvé que le résultat getpropavait un retour chariot après, donc changer la adbcommande pour $(adb shell getprop sys.boot_completed | tr -d '\r')faire l'affaire. Il s'agit simplement de supprimer le caractère de retour chariot.
CoatedMoose
@ divisé par zéro, veuillez modifier votre réponse pour inclure le découpage mentionné par CoatedMoose. Umang, veuillez l'accepter également comme réponse.
Jayshil Dave
9

Il s'agit d'une vieille question et hors-sujet limite, mais voici comment le faire en une seule ligne:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'
Пионерка
la source
0

Voici ce que j'ai trouvé:

adb wait-for-device shell <<ENDSCRIPT
echo -n "Waiting for device to boot "
echo "" > /data/local/tmp/zero
getprop dev.bootcomplete > /data/local/tmp/bootcomplete
while cmp /data/local/tmp/zero /data/local/tmp/bootcomplete; do 
{
    echo -n "."
    sleep 1
    getprop dev.bootcomplete > /data/local/tmp/bootcomplete
}; done
echo "Booted."
exit
ENDSCRIPT

echo "Waiting 30 secs for us to be really booted"
sleep 30

echo "Unlocking screen"
adb shell "input keyevent 82"
Andy Balaam
la source