eijenson Con

主に作業中にはまったことの作業ログを書いていきます。

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枚を超えたら~とかで止めたほうが良いかもしれない