ある一定の時間後にAndroidのブラウザに自動で特定のWebページを見せたい事情が発生しまして、そのためネット検索しました。
Google検索に利用した文字は「open browser from adb command」。
どんぴしゃな方法が見つかりましたので参考にしたサイトと共に応用編を記録しておきます。
adb shell am start -a android.intent.action.VIEW -d http://www.stackoverflow.com
このコマンドは、adb shellでログインしてもログインしなくても実行できます。
adb shellでログインしない場合
> adb shell am start -a android.intent.action.VIEW -d 'https://blog.trippyboy.com'
adb shellでログインした後の場合
$ am start -a android.intent.action.VIEW -d 'https://blog.trippyboy.com'
この方法を使っていくつかの条件での実行方法を見てみましょう。
ある一定の時間がたったら
$ sleep 20 && am start -a android.intent.action.VIEW -d 'https://blog.trippyboy.com' &
これは、コマンドの前に「sleep」コマンドを使って「20」秒間待たせていることで、ある一定の時間がたったら実行するというのを実現しています。
一定間隔で
$ while true ; do am start -a android.intent.action.VIEW -d 'https://blog.trippyboy.com' ; sleep 20 ; done &
これは、「while」文です。「while true」とあるので、プロセスが停止されるまで、コマンド実行→sleep 20 を繰り返すというのを実現しています。
特定の回数/期間で一定間隔で
$ i=0; while [ $i -lt 30 ]; do am start -a android.intent.action.VIEW -d 'https://blog.trippyboy.com' ; i=$((i+1)); sleep 20 ; done &
while true というは、プロセスがとめられるまでずっとという条件です。
while [ $i -lt 30 ] というのは、「$i」という変数の値が30よりも小さい(=未満/LessThan)間(while)という意味になります。
他にも「-gt」「-ge」「-le」という判断方法がありますが、これらが何を意味するかはご自身で調べてください。
「i=$((i+1))」 は「i=`expr $i + 1`」と同じで、「$i」という変数に1を追加する処理になります。
では上記の「一定の間隔」で「特定の期間」というのは、どれぐらいの間になるでしょうか。
「sleep 20」とあるので「20秒間隔」で実行されることがわかります。
「while [ $i -lt 30 ]」とあるので、「30回」実行されることがわかります。
つまり、20 x 30 = 600 なので、10分の間、20秒間に1回Webブラウザを用いてアクセスを行います。
なお、上記紹介しているコマンドの末尾「&」は”バックグラウンドで実行しろ”という意味です。実行されたコマンドはPIDを表示した後はバックグラウンドで実行されます。停止されたい場合にはkillコマンドを使って停止してください。(PIDが”1234″だったら、kill 1234)
以上
コメント