littlewing

人間とコンピューターとメディアの接点をデザインするために考えたこと

AndroidでPCからadbコマンドで動画・静止画キャプチャする

http://www.flickr.com/photos/33452854@N06/8210543705

  • Androidではadbコマンドを使って、スクリーンショットの取得と動画キャプチャがPCからできます。
  • PCと端末をUSBケーブルでつないで結構簡単に実行可能です。

前提

  • PCにはAndroidStudioがインストールされている
  • 端末のOSはAndroid 4.4(Kitkat)以上
  • 端末側でUSBデバッグをONにする必要がある
  • 録画は最大3分まで

adbの場所

~/Library/Android/sdk/platform-tools/adb
  • winの場合
C:\Users\username\AppData\Local\Android\sdk\platform-tools\
  • 2019/7/29追記 Unity 2019で、Unity Hubから、Android SDKをインストールした場合は、ここにあった。(Windows 10)
C:\Program Files\Unity\Hub\Editor\2019.1.12f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools\adb.exe

adbのコマンド

  • 端末一覧を取得
./adb devices

## 以下のような応答があります。
List of devices attached
1253674b    device    //1253674b is serial ID of a device
  • パッケージ一覧を取得
adb shell pm list packages
  • 端末ログを確認
adb logcat

# Unityのみ
adb logcat  -s Unity
  • 録画開始
#オプション無しでとりあえず
./adb shell screenrecord /sdcard/hoge.mp4

screenrecord 
# デバイスを指定する場合
adb -s 1253674b shell screenrecord /sdcard/hoge.mp4

3分経つか、Ctrl + cで録画終了

  • 動画を取り出す
adb pull /sdcard/hoge.mp4 

横画面で録画したい

  • 動画の縦横サイズはscreenrecordを実行したタイミングの端末の画角となります。
  • 横画面のアプリを録画したい場合は、そのままでは縦長のまま録画されてしまう場合があります。
  • そのような場合は以下のような対応が可能です。
    1. screenrecord実行タイミングであらかじめ横画面表示に端末をしておく
    2. コマンドのオプションで、画像サイズをあらかじめ横長に指定しておく
./adb shell screenrecord  --size 1920x1080 /sdcard/hoge.mp4

静止画を保存する

  • screencapコマンドで可能です。
# キャプチャ取得
./adb shell screencap -p /sdcard/screen.png

# キャプチャをPCに取り込み
./adb pull /sdcard/screen.png

Wifiを設定する

adb shell
m startservice \
    -n com.google.wifisetup/.WifiSetupService \
    -a WifiSetupService.Connect \
    -e ssid xxxxxxxxx \
    -e passphrase xxxxxxxxx

-- *参考 adbコマンドでAndroidをWiFiに接続設定する - Qiita

参考サイト