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


18

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

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

adb wait-for-device shell input keyevent 82

Ответы:


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"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.