come adb attendere il dispositivo fino a quando viene visualizzata la schermata principale?


18

Devo sbloccare il mio schermo usando adb e attendere che il dispositivo esca troppo presto (quando il dispositivo si sta avviando) e lo sblocco dello schermo non riesce. C'è un modo per rilevare quella schermata principale, quindi posso attivare lo sblocco dello schermo allora?

Questo è il comando che sto usando per sbloccare lo schermo -

adb wait-for-device shell input keyevent 82

Risposte:


23

beh aspetta-per-dispositivo, come hai già capito, aspetta solo che il demone adb si avvii correttamente. Questo è già al momento dell'inizializzazione. Per verificare un avvio completo, puoi inserire nel tuo script qualcosa come:

in pseudo:

  1. attendere-per-device
  2. fintanto che getprop sys.boot_completed! = 1 sleep alcuni secondi controlla di nuovo getprop sys.boot_completed
  3. keyevent input shell 82

Questo dovrebbe funzionare.

Qualcosa come questo:

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

Questo non è testato, quindi fai attenzione ai potenziali errori


Modifica la tua risposta per essere facilmente leggibile. Hai una risposta valida, ma un po 'di chiarezza aiuterebbe tutti. Grazie
HasH_BrowN il

la risposta è ora modificata. Spero che questo ti aiuti :)
diviso per zero il

buona risposta +1, ora altri saranno in grado di seguirla. Non dimenticare di aggiungere " Esegui sempre un backup ", per quei momenti accidentali;)
Esegui HasH_BrowN

2
Ho scoperto che il risultato ha getpropavuto un ritorno a capo dopo di esso, quindi cambiando il adbcomando per $(adb shell getprop sys.boot_completed | tr -d '\r')fare il trucco. Questo è solo tagliare il carattere di ritorno a capo.
Rivestito:

@ diviso per zero, modifica la tua risposta per includere il taglio menzionato da CoatedMoose. Umang, per favore, accettalo anche come risposta.
Jayshil Dave,

9

Questa è una vecchia domanda e border-off-topic, ma ecco come farlo in una sola riga:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'

0

Ecco cosa mi è venuto in mente:

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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.