Как добавить устройство ожидания устройства, пока не появится домашний экран?

18

Мне нужно разблокировать экран с помощью adb, и ожидание устройства завершается слишком рано (когда устройство загружается), и разблокировка экрана не выполняется. Есть ли способ обнаружить, что домашний экран, чтобы я мог разблокировать экран затем?

Это команда, которую я использую для разблокировки экрана -

adb wait-for-device shell input keyevent 82
Umang
источник

Ответы:

23

хорошо подождите устройства, как вы уже поняли, ждет только, пока демон adb не запустится должным образом. Это уже во время инициализации. Чтобы проверить полную загрузку, вы можете добавить объявление в свой скрипт примерно так:

в псевдо:

  1. ждать-для-устройства
  2. пока getprop sys.boot_completed! = 1 сон несколько секунд, проверьте getprop sys.boot_completed снова
  3. ввод ключа оболочки 82

Это должно работать.

Что-то вроде этого:

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

Это не проверено, поэтому следует помнить о возможных ошибках

разделить на ноль
источник
Пожалуйста, отредактируйте ваш ответ, чтобы он был легко читаемым. У вас есть правильный ответ, но небольшая ясность поможет всем. Спасибо
HasH_BrowN
ответ сейчас отредактирован. Надеюсь, это поможет вам :)
делится на ноль
Хороший ответ +1, теперь другие смогут следить за ним. Не забудьте добавить « Всегда выполнять резервное копирование », для тех случайных моментов;)
HasH_BrowN
2
Я обнаружил, что результатом этого getpropстало возвращение каретки после него, поэтому изменение adbкоманды $(adb shell getprop sys.boot_completed | tr -d '\r')сделало свое дело. Это просто обрезка символа возврата каретки.
CoatedMoose
@ делится на ноль, пожалуйста, измените свой ответ, чтобы включить обрезку, упомянутую CoatedMoose. Уманг, пожалуйста, прими это как ответ.
Джейшил Дэйв,
9

Это старый вопрос и не по теме, но вот как это сделать в одной строке:

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

Вот что я придумал:

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"
Энди Валаам
источник