як відключити очікування пристрою, поки не з’явиться головний екран?


18

Мені потрібно розблокувати екран за допомогою adb, і очікування пристрою виходить занадто рано (коли пристрій завантажується), і розблокування екрана не вдається. Чи є спосіб виявити цей головний екран, і тоді я можу запустити розблокування екрана?

Це команда, яку я використовую для розблокування екрана -

adb wait-for-device shell input keyevent 82

Відповіді:


23

добре зачекайте на пристрій, оскільки ви вже зрозуміли, що тільки чекаєте, поки демон adb належним чином запуститься. Це вже під час init. Для того, щоб перевірити наявність повного завантаження, ви не можете рекламувати свій сценарій на кшталт:

у псевдо:

  1. чекати пристрою
  2. доки getprop sys.boot_completed! = 1 сон кілька секунд перевірити getprop sys.boot_completed знову
  3. вхід оболонки keyevent 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.