如何添加等待设备,直到出现主屏幕?


18

我需要使用adb解锁屏幕,并且等待设备退出的时间过早(设备启动时),并且屏幕解锁失败。有没有一种方法可以检测到主屏幕,以便可以触发屏幕解锁呢?

这是我用来解锁屏幕的命令-

adb wait-for-device shell input keyevent 82

Answers:


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 2014年

答案现在已编辑。希望这对您有所帮助:)
被零除

好的答案+1,现在其他人将可以跟随它。对于那些偶然的时刻,请不要忘记添加“ 始终执行备份 ”;)
HasH_BrowN 2014年

2
我发现的结果是getprop在回车后返回了一个回车符,因此将adb命令更改为$(adb shell getprop sys.boot_completed | tr -d '\r')成功。这只是修剪回车符。
CoatedMoose 2015年

@零除零,请修改您的答案以包括CoatedMoose提及的修整。Umang也请接受它作为答案。
Jayshil Dave

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.