我想等到Android手机启动 并且MediaScanner已完成。
之后我想使用adb执行操作。
adb wait-for-device将在手机启动序列完成之前完成。
如何捕获,例如BOOT_COMPLETE通过ADB广播? 类似的东西:wait-for-boot-complete。 我不知道这是否可行?
答案 0 :(得分:11)
您可以继续查询sys.boot_completed
或dev.bootcomplete
系统属性。
至于代码,我不知道您使用的是什么环境和/或脚本语言。这很简单。首先,您需要通过手机软件找到启动完成时将哪个属性设置为“1”。我们说它是dev.bootcomplete
。然后,以下命令会在手机启动后将控制权返回给您的脚本
adb wait-for-device shell 'while [[ -z $(getprop dev.bootcomplete) ]] ; do sleep 1; done'
答案 1 :(得分:4)
对于那些在Windows环境中工作的人来说,这个批处理脚本适合我。
它等待ADB守护程序运行,然后开始轮询sys.boot_completed
属性并等待值1.
它并不像单行一样优雅,但我在我的PATH环境变量中列出了脚本,因此可以直接调用它。
adb wait-for-device
:CheckAgain
set value=
for /f "delims=" %%a in ('adb shell getprop sys.boot_completed') do @set value=%%a
IF NOT "%value%" == "1" (
timeout /t 2 /nobreak >NUL
goto CheckAgain
)
答案 2 :(得分:0)
如果您的设备没有安装busybox(请参阅shell script in android gives [: not found),您可以尝试在计算机中进行迭代。像这样的东西会起作用:
while [ `adb shell getprop dev.bootcomplete` -nq "1" ] ; do sleep 1; done
如果您的设备安装了busybox,您可以按照Alex P.评论进行操作:
adb shell 'while [ ""`getprop dev.bootcomplete` != "1" ] ; do sleep 1; done'
当然语法取决于您的机器(POSIX等)。