5

Android 携帯電話が起動し、MediaScanner が完了するまで待ちたいと思います。

その後、adbを使用してアクションを実行したいと思います。

adb wait-for-device は、携帯電話の起動シーケンスが完了するずっと前に終了します。

ADB 経由で BOOT_COMPLETE ブロードキャストなどをキャプチャする方法は? 次のようなもの: ブート完了を待ちます。これが可能かどうかわかりませんか?

4

3 に答える 3

13

sys.boot_completedまたはdev.bootcompleteシステム プロパティのポーリングを続けることができます。

コードに関しては、使用している環境やスクリプト言語がわかりません。それはかなり簡単です。まず、電話機のソフトウェアによって起動完了時に「1」に設定されているプロパティを見つける必要があります。だとしましょうdev.bootcomplete。次に、次のコマンドは、電話が起動した後に制御をスクリプトに戻します。

adb wait-for-device shell 'while [[ -z $(getprop dev.bootcomplete) ]] ; do sleep 1; done'
于 2012-10-26T22:58:20.237 に答える
4

Windows 環境で作業している方には、このバッチ スクリプトが役立ちます。

ADB デーモンが実行されるまで待機してから、sys.boot_completedプロパティのポーリングを開始し、値が 1 になるまで待機します。

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
)
于 2015-01-07T00:54:52.053 に答える
0

デバイスに busybox がインストールされていない場合 ( Android のシェル スクリプトで [: 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 など) によって異なります。

于 2013-12-09T19:01:40.043 に答える