我需要使用adb解锁屏幕,并且等待设备退出的时间过早(设备启动时),并且屏幕解锁失败。

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

adb wait-for-device shell input keyevent 82


#1 楼

好了,等待设备,因为您已经意识到,只能等待直到adb守护程序正确启动。这已经是初始化时间了。为了检查启动是否完整,您可以在脚本中添加以下内容:

伪指令:


wait-for-device
long作为getprop sys.boot_completed!= 1睡眠几秒钟
再次检查getprop sys.boot_completed
这应该起作用。

像这样:



#!/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年9月30日16:09

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

–除以零
2014年10月6日14:58

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

–HasH_BrowN
14-10-6在16:10



我发现getprop的结果后面有一个回车符,因此将adb命令更改为$(adb shell getprop sys.boot_completed | tr -d'\ r')可以解决问题。这只是修剪回车符。

–CoatedMoose
2015年1月5日在21:28

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

–贾西希尔·戴夫(Jayshil Dave)
2015年6月4日,12:26

#2 楼

这是一个老问题,离题很近,但是这里是如何单行执行的方法:

adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'


#3 楼

这是我想出的:

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"