Help us understand the problem. What is going on with this article?

接続したAndroid端末のキャプチャ簡単に取る + クリップボードに貼り付けてくれるスクリプトを作った(Mac)

More than 1 year has passed since last update.

PCからAndroid端末のキャプチャを取る方法はいくつかありますが、既存のものに不便さを感じていたので効率化してみました。
私はよく、接続しているAndroid端末のキャプチャを取ってPCで開いているSlackに貼り付けたいことがあります。
最終型だけ見たい方は④リサイズできるようにしてみるからどうぞ。

既存のキャプチャ方法はどれももう一つ足りない

  • 端末で取って転送
  • AndroidStudio
  • Adbそのまま

どれも今やっている作業を中断する必要があります。

キャプチャを効率化する

なるべく早く、少ない手順でキャプチャを取る・利用できることを目指す。

①キャプチャ用のshellスクリプトを組む

ファイル名は日付にしてみます。
お馴染みのadbコマンド使いshellを作成。

screencap.sh
# 必要に応じてadbをexportする
DATETIME=$(date +%Y-%m%d-%H%M-%S)
DEVICE_FILE_PATH="/sdcard/${DATETIME}.png"
LOCAL_FILE_PATH="キャプチャを保存したいパス/${DATETIME}.png"
adb shell screencap -p ${DEVICE_FILE_PATH}
adb pull ${DEVICE_FILE_PATH} ${LOCAL_FILE_PATH}
adb shell rm -f "${DEVICE_FILE_PATH}"

exportですが、②以降でapplescriptで呼ぶ際にパスが通っていない状態になるので、1行目でadbのパスを通すと良いです。

②どこでもキャプチャできるようにする

applescriptを作る。
アプリケーションとして保存してアプリケーションフォルダに入れれば、alfredから呼べるのでどこからでも呼べるようになります。

screencap.app
do shell script "上で作ったシェルスクリプトのパス"
display notification "キャプチャ完了"

これで呼び出す際はPATHが通っていないので、screencap.sh側でexportするまたはadbコマンドをフルパスで書く必要があります。

③:クリップボードに貼り付ける

slackで貼り付けたい場合が多かったので、実行したときにクリップボードに貼り付けられるようにしてみる。
AppleScriptにクリップボードのコマンドがある + シェルからAppleScriptを呼べることが分かったのでshに突っ込む。
最下行にクリップボード貼り付け処理を追加

screencap.sh
# 必要に応じてadbをexportする
DATETIME=$(date +%Y-%m%d-%H%M-%S)
DEVICE_FILE_PATH="/sdcard/${DATETIME}.png"
LOCAL_FILE_PATH="キャプチャを保存したいパス/${DATETIME}.png"
adb shell screencap -p ${DEVICE_FILE_PATH}
adb pull ${DEVICE_FILE_PATH} ${LOCAL_FILE_PATH}
adb shell rm -f "${DEVICE_FILE_PATH}"

# AppleScriptでクリップボードにキャプチャをセット
osascript -e "set the clipboard to (read (POSIX file \"${LOCAL_FILE_PATH}\") as JPEG picture)"

set the clipboard toでクリップボードに貼り付けられる。
画像パスではただの文字列になってしまうので、readを使って画像を読み取る。
JPEGと指定してもpngでクリップボードに貼り付けられたので、JPEGでも大丈夫そう(PNGではダメだった)

④リサイズできるようにしてみる

Bitbucketを利用することがあり、プルリクにキャプチャを貼り付けることがあったが、デフォルトだとサイズがそのままになってしまい大きすぎることがあった。
プルリクに画像を貼るときにはリサイズできたら便利・・・と思いリサイズ機能も付けてみた。

screencap.sh
# 必要に応じてadbをexportする
DATETIME=$(date +%Y-%m%d-%H%M-%S)
DEVICE_FILE_PATH="/sdcard/${DATETIME}.png"
LOCAL_FILE_PATH="キャプチャを保存したいパス/${DATETIME}.png"
adb shell screencap -p ${DEVICE_FILE_PATH}
adb pull ${DEVICE_FILE_PATH} ${LOCAL_FILE_PATH}
adb shell rm -f "${DEVICE_FILE_PATH}"

# 引数が指定されていた場合、その引数の値にリサイズする
if [ $# -eq 1 ]; then
    sips --resampleWidth $1 ${LOCAL_FILE_PATH}
fi

# AppleScriptでクリップボードにキャプチャをセット
osascript -e "set the clipboard to (read (POSIX file \"${LOCAL_FILE_PATH}\") as JPEG picture)"

sipsコマンドは、Macで画像処理ができるコマンドで、簡単にリサイズをすることができました。
これで、新しくresize_screencap.appをAppleScriptで作ればAlfredから選んで実行できるようになります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away