¿Cómo agregar espere hasta que aparezca la pantalla de inicio?

18

Necesito desbloquear mi pantalla usando adb, y esperar a que el dispositivo salga demasiado pronto (cuando el dispositivo se está iniciando), y el desbloqueo de la pantalla falla. ¿Hay alguna manera de detectar que la pantalla de inicio, por lo que puedo disparar desbloqueo de pantalla entonces?

Este es el comando que estoy usando para desbloquear la pantalla:

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

Respuestas:

23

bueno, espere el dispositivo, como ya se dio cuenta, solo espera hasta que el adb daemon se inicie correctamente. Esto ya está en tiempo de inicio. Para verificar si hay un arranque completo, no puede agregar anuncios a su script de la siguiente manera:

en pseudo:

  1. esperar por dispositivo
  2. siempre que getprop sys.boot_completed! = 1 duerma unos segundos, compruebe getprop sys.boot_completed nuevamente
  3. entrada de shell keyevent 82

Esto debería funcionar.

Algo como esto:

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

Esto no se ha probado, así que tenga en cuenta los posibles errores.

dividido por cero
fuente
Edite su respuesta para que sea fácil de leer. Tiene una respuesta válida, pero un poco de claridad ayudaría a todos. Gracias
HasH_BrowN
La respuesta ahora está editada. Espero que esto te ayude :)
dividido por cero
buena respuesta +1, ahora otros podrán seguirla. No olvide agregar " Realizar siempre una copia de seguridad ", para esos momentos accidentales;)
HasH_BrowN
2
Encontré ese resultado de getpropun retorno de carro después de él, por lo que cambiar el adbcomando $(adb shell getprop sys.boot_completed | tr -d '\r')hizo el truco. Esto es solo recortar el carácter de retorno de carro.
CoatedMoose
@ dividido por cero, modifique su respuesta para incluir el recorte mencionado por CoatedMoose. Umang, por favor, acéptelo también como respuesta.
Jayshil Dave
9

Esta es una pregunta antigua y fuera del tema, pero aquí está cómo hacerlo en una sola línea:

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

Esto es lo que se me ocurrió:

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
fuente