Wie warte ich auf das Gerät, bis der Startbildschirm angezeigt wird?

18

Ich muss meinen Bildschirm mit adb entsperren, und Wait-for-Device wird viel zu früh beendet (wenn das Gerät hochfährt), und die Entsperrung des Bildschirms schlägt fehl. Gibt es eine Möglichkeit, den Startbildschirm zu erkennen, damit ich den Bildschirm dann entsperren kann?

Dies ist der Befehl, den ich verwende, um den Bildschirm zu entsperren.

adb wait-for-device shell input keyevent 82
Umang
quelle

Antworten:

23

Nun, warte auf das Gerät, da du bereits erkannt hast, dass nur gewartet wird, bis der adb-Daemon ordnungsgemäß gestartet wurde. Dies ist bereits zur Init-Zeit. Um nach einem vollständigen Bootvorgang zu suchen, können Sie Ihrem Skript Folgendes hinzufügen:

im Pseudo:

  1. Warte auf Gerät
  2. solange getprop sys.boot_completed! = 1 einige Sekunden schlafen, überprüfen Sie getprop sys.boot_completed erneut
  3. Shell Input Keyevent 82

Das sollte funktionieren.

Etwas wie das:

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

Dies ist nicht getestet, seien Sie sich also möglicher Fehler bewusst

geteilt durch Null
quelle
Bitte bearbeiten Sie Ihre Antwort so, dass sie leicht lesbar ist. Sie haben eine gültige Antwort, aber ein wenig Klarheit würde jedem helfen. Vielen Dank
HasH_BrowN
Die Antwort ist jetzt bearbeitet. Hoffe, das hilft dir :)
geteilt durch Null
Gute Antwort +1, jetzt können andere folgen. Vergessen Sie nicht, " Immer eine Sicherung durchführen " für diese zufälligen Momente
hinzuzufügen
2
Ich fand das Ergebnis von getprophatte einen Wagenrücklauf danach, so den adbBefehl zu ändern, um $(adb shell getprop sys.boot_completed | tr -d '\r')den Trick zu tun. Dadurch wird nur das Wagenrücklaufzeichen abgeschnitten.
CoatedMoose
@ dividiert durch Null Bitte ändern Sie Ihre Antwort, um den von CoatedMoose erwähnten Zuschnitt einzuschließen. Umang, bitte nimm es auch als Antwort an.
Jayshil Dave
9

Dies ist eine alte Frage und grenzüberschreitende Off-Topic, aber hier ist, wie es in einer einzigen Zeile zu tun ist:

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

Folgendes habe ich mir ausgedacht:

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 Bileam
quelle