発端
最近は社内で業務用アプリを書いています。
エンプラエンプラしたアプリなのでドキュメントもしっかりめに書かないといけないのですが、スクショの取得が煩わしく…。
微妙に自動化して効率化をしたので、手順を残しておこうと思います。
エンプラエンプラしたアプリなのでドキュメントもしっかりめに書かないといけない
(´-`).。oO(「直感的なUI」なんて言っても通じないとき・場所もあるのです…。)
(世の中にはスクショ取得を自動でしてくれるソリューションも存在しますが…
諸事情にて実機で手で操作しながらキャプチャしないといけないので、本手段を用いています。)
ついでに
あとは通知バーに表示されている余計なアイコンとかも気になっちゃうので消したいですよね。
個人的なこだわりで時計も12:34にしたかったり…。(エミュレータはadbコマンドで時刻設定できるんですけどね…)
手順
環境
- 開発に使用しているマシン
- MacOS
- brewとbashを使います
- Android端末
- adb接続できればエミュレータ可
準備
大変アナログですが
こういった、いい感じのコンディションの通知バーの画像を切り取って任意ディレクトリに設置します。
~/hoge/1234.png
コマンドラインから画像の加工ができるImageMagicをインストールします。
$ brew install imagemagick
続いて任意ディレクトリに下記スクリプトを設置します。
# !/bin/bash
timestamp=$(date +"%Y%m%d%I%M%S")
adb shell screencap -p /sdcard/${timestamp}.png
adb pull /sdcard/${timestamp}.png
adb shell rm /sdcard/${timestamp}.png
# !/bin/bash
for file in `find . -iname '*.png' -maxdepth 1 -type f`; do
composite -gravity northeast -compose over ~/hoge/1234.png $file $file;
done
※ 実行権限付与を忘れないように
$ chmod +x ~/hoge/screen_cap.sh
$ chmod +x ~/hoge/composite.sh
OK!
実践!
スクショをいっぱい撮る!
$ ~/hoge/screen_cap.sh
/sdcard/20171019125624.png: 1 file pulled. 6.1 MB/s (57800 bytes in 0.009s)
$ ~/hoge/screen_cap.sh
/sdcard/20171019125626.png: 1 file pulled. 6.2 MB/s (57800 bytes in 0.009s)
$ ~/hoge/screen_cap.sh
/sdcard/20171019125627.png: 1 file pulled. 6.3 MB/s (57800 bytes in 0.009s)
...
カレントディレクトリにキャプチャ画像が転がっていきます。
合成する!
※ カレントディレクトリにある全ての .png
形式の画像に変更を加える操作です。影響範囲に注意してください。
$ ~/hoge/composite.sh
結果を見てみる!
(open
コマンドを使うと簡単にカレントディレクトリをFinderで開けます)
$ open ./
おまけ
おまけ 1
そもそもキャプチャが面倒なときは…
watch
コマンドをインストールして…
$ brew install watch
キャプチャを定期実行…といった乱暴なこともできます。
$ watch -n 0.5 bash ~/hoge/screen_cap.sh
※ watch -n
の引数はsec.
おまけ 2
ImageMagicは便利だぞっ!なんでもデキるぞっ!
SlackとかGitHubのコメントにそのまま貼ると怒られるので、サクッとサイズ変更も♪
# 縦横px指定
$ mogrify -geometry 720x1280 *.png
# 横px指定
$ mogrify -geometry 720 *.png # 縦は比率を保つように自動調整される
# 縦横%指定
$ mogrify -geometry 50%x100% *.png # 縦を保ったまま横を50%に圧縮
# 横%指定
$ mogrify -geometry 50% *.png # 縦横比率を保ったまま50%に圧縮
# ※ mogrify は composite よりも柔軟に、複数ファイル一括処理を行うことができる
# 最近はモウ疲れてきたのでこうしている. ~/.bash_profile あたりに入れておくと便利ね.
$ alias im50='mogrify -geometry 50%'
おまけ 3
Android StudioのLogCatで動画キャプチャするのも地味に面倒なので…
# !/bin/bash
timestamp=$(date +"%Y%m%d%I%M%S")
adb shell screenrecord /sdcard/${timestamp}.mp4
# NOTE: 待たなくても特に問題なさそう
# echo Wait for saving...
# sleep 5s
adb pull /sdcard/${timestamp}.mp4
adb shell rm /sdcard/${timestamp}.mp4
$ ~/hoge/screen_record.sh
# 上限時間になったら自動で終了する
# 任意タイミングで終了したい場合は ^\ でプロセスを終了する(以降の転送等の処理が行われなくてもいいなら ^C も可)
おわり
自分の条件にあった適度な効率化を行いましょう
以上です。