Android 携帯電話が起動し、MediaScanner が完了するまで待ちたいと思います。
その後、adbを使用してアクションを実行したいと思います。
adb wait-for-device は、携帯電話の起動シーケンスが完了するずっと前に終了します。
ADB 経由で BOOT_COMPLETE ブロードキャストなどをキャプチャする方法は? 次のようなもの: ブート完了を待ちます。これが可能かどうかわかりませんか?
sys.boot_completed
またはdev.bootcomplete
システム プロパティのポーリングを続けることができます。
コードに関しては、使用している環境やスクリプト言語がわかりません。それはかなり簡単です。まず、電話機のソフトウェアによって起動完了時に「1」に設定されているプロパティを見つける必要があります。だとしましょうdev.bootcomplete
。次に、次のコマンドは、電話が起動した後に制御をスクリプトに戻します。
adb wait-for-device shell 'while [[ -z $(getprop dev.bootcomplete) ]] ; do sleep 1; done'
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
)
デバイスに 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 など) によって異なります。