Androidのスクリーンショットを10秒ごとに撮る
一瞬だけ出るPush通知をスクショにしたかったが、ずっと画面を見ておくのも大変なのでスクショを定期的にとるshellを作成した
#!/bin/bash set -eux # スクリーンキャプチャを撮る script_dir=$(cd $(dirname ${BASH_SOURCE:-$0}); pwd) cd ${script_dir} while true; do adb shell screencap -p /sdcard/screen.png adb pull /sdcard/screen.png mv screen.png `date +%Y%m%d_%H-%M-%S`.png adb shell rm /sdcard/screen.png sleep 10 done
各処理の説明
ループ処理
while true; do ~~~ ~~~ sleep 10 done
trueにしてるので止めるまで無限ループしている
sleepで処理を10秒間隔で実行するようにしている
スクショを撮る
adb shell screencap -p /sdcard/screen.png
画像は端末内に保存される
-p で端末内のどこに保存するか指定する
端末内の画像をPCに持ってくる
adb pull /sdcard/screen.png
shellが置かれている場所にコピーされる
今の時間にリネームする
mv screen.png `date +%Y%m%d_%H-%M-%S`.png
いつのスクショかわかりやすくするのとサイド実行したときに上書きされないようにするため
端末内のスクショを削除する
adb shell rm /sdcard/screen.png
処理の後始末
実行結果
PCにAndroid端末をつなげた状態で実行する
./auto_screencap.sh # 1分程待つ # 別コンソールで開く ls 20200128_11-36-13.png 20200128_11-36-34.png 20200128_11-36-23.png auto_screencap.sh
止め忘れるとディスクを圧迫するので忘れないようにする
保存先の枚数が100枚を超えたら~とかで止めたほうが良いかもしれない