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

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


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'

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"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.