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

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


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'

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"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.