jak adb czekać na urządzenie, aż pojawi się ekran główny?

18

Muszę odblokować ekran za pomocą adb, a oczekiwanie na urządzenie kończy się zbyt wcześnie (gdy urządzenie się uruchamia), a odblokowanie ekranu kończy się niepowodzeniem. Czy istnieje sposób na wykrycie tego ekranu głównego, aby móc wtedy odblokować ekran?

To polecenie, którego używam do odblokowania ekranu -

adb wait-for-device shell input keyevent 82
Umang
źródło

Odpowiedzi:

23

Cóż, czekaj na urządzenie, bo już zdałeś sobie sprawę, że tylko czeka, aż demon adb poprawnie się uruchomi. Jest to już w chwili inicjacji. Aby sprawdzić kompletny rozruch, nie możesz reklamować skryptu:

w pseudo:

  1. czekać na urządzenie
  2. tak długo, jak getprop sys.boot_completed! = 1 przespać kilka sekund sprawdź getprop sys.boot_completed
  3. klucz wejściowy powłoki 82

To powinno działać.

Coś takiego:

#!/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

Nie jest to testowane, więc miej świadomość potencjalnych błędów

podzielone przez zero
źródło
Edytuj swoją odpowiedź, aby była czytelna. Masz poprawną odpowiedź, ale odrobina jasności pomogłaby każdemu. Dzięki
HasH_BrowN
odpowiedź jest teraz edytowana. Mam nadzieję, że to ci pomoże :)
podzielone przez zero
dobra odpowiedź +1, teraz inni będą mogli ją śledzić. Nie zapomnij dodać „ Zawsze wykonuj kopię zapasową ” dla tych przypadkowych chwil;)
HasH_BrowN
2
Znalazłem ten wynik getproppo powrocie karetki, więc zmieniając adbpolecenie, $(adb shell getprop sys.boot_completed | tr -d '\r')załatwiłem sprawę . Jest to po prostu wycięcie znaku powrotu karetki.
CoatedMoose
@ podzielone przez zero zmień odpowiedź, aby uwzględnić przycinanie wspomniane przez CoatedMoose. Umang, proszę, przyjmij to również jako odpowiedź.
Jayshil Dave
9

To jest stare pytanie i granica nie na temat, ale oto jak to zrobić w jednym wierszu:

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

Oto, co wymyśliłem:

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
źródło