2012-10-26 83 views
4

我想等到android手機啓動 和MediaScanner完成。亞行接收廣播BOOT_COMPLETE

之後我想使用adb執行操作。

adb等待設備將在手機的啓動序列完成之前完成很多事情。

如何捕獲BOOT_COMPLETE通過ADB廣播? 類似於:等待啓動完成。 我不知道這是否可能?

+1

我相信你應該能夠看到的logcat – JesusFreke

+0

的BOOT_COMPLETE廣播我怎麼訪問通過ADB編程內的一批? –

+0

adb logcat | grep JesusFreke

回答

11

您可以繼續輪詢sys.boot_completeddev.bootcomplete系統屬性。

至於代碼,我不知道你使用的是什麼環境和/或腳本語言。這非常簡單。首先,您需要在手機軟件啓動完成時查找哪個屬性設置爲「1」。假設它是dev.bootcomplete。然後手機啓動時

adb wait-for-device shell 'while [[ -z $(getprop dev.bootcomplete) ]] ; do sleep 1; done' 
+0

你可以添加一些代碼嗎? –

0

後,如果您的設備未安裝busybox的(見shell script in android gives [: not found)以下命令將控制返回給你的腳本,你可以嘗試在您的計算機進行迭代。像這樣的東西會工作:

while [ `adb shell getprop dev.bootcomplete` -nq "1" ] ; do sleep 1; done 

如果您的設備已經安裝busybox的,你可以繼續亞歷克斯P.評論:

adb shell 'while [ ""`getprop dev.bootcomplete` != "1" ] ; do sleep 1; done' 

當然的語法取決於你的機器(POSIX等)上。

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 
) 
+0

我的答案中的命令正在設備本身上運行 - 因此即使在Windows中運行,它的工作方式也是如此。只需用''替換'''' –

+0

這兩個解決方案都可以工作,謝謝你們。 –