Android上で操作したタップイベントをadbで取得して見やすく表示したり、操作を記録して再生したりする方法(Windows/Linux対応)

adbにはAndroid上で操作したイベントをリアルタイムで表示する機能があります。

adb devices
adb -s 127.0.0.1:62001 shell getevent

今回は上のスクリーンショットにある、 127.0.0.1:62001 で認識されるAndroidを自動操作します。
Android_Inputのすぐ上の緑枠のイベント番号が後で必要になるので覚えておきます。

別PCでのAndoroid端末認識例

出力例

getevent に-tlオプションを付けると少し見やすく表示されます

adb shell getevent -tl の出力をさらに見やすくタップイベントのみ表示させるスクリプト

以下のAwkスクリプトを使用します。
AWKやSLEEPコマンドが必要ですので、ない人は BusyBoxを使えるようにしてください。

“eventproc.awk” をダウンロード eventproc-2.zip – 3964 回のダウンロード – 867.00 B

使い方

adb -s 127.0.0.1:62025 shell getevent -tl /dev/input/event4 | awk -f eventproc.awk

実行の様子

この出力をバッチファイルとしてリダイレクトをすることで記録、再生が可能です。

adb -s 127.0.0.1:62025 shell getevent -tl /dev/input/event4 | awk -f eventproc.awk > hogehoge.bat

カスタマイズ

eventproc.awk の冒頭を見ると設定項目があります

# adb -s 127.0.0.1:62025 shell getevent -tl /dev/input/event4  | busybox awk -f eventproc.awk
BEGIN {
    ADB_NAME = "adb"
    ADB_DEVICE = "-s 127.0.0.1:62025"
    COMMAND_TAP   = "shell input touchscreen tap"
    COMMAND_SLEEP = "sleep"

    UpTime = ""
}

ADB_NAME
adbやnox_adb

ADB_DEVICE\
adv devices で表示されたデバイス名

COMMAND_TAP
adbでタップするときのコマンド。
 これを書き換えることはないでしょう。

COMMAND_SLEEP
sleepコマンドがない場合 TimeOut に書き換えると良いでしょう

謝辞

AWKスクリプト内で16進数→10進数を変換するため、以下のサイトのhex2decimalを丸パク(ry 参考にさせていただきました。

16進10進変換でAWK内部を窺う
http://awkytalky.jugem.jp/?eid=5

コメント

タイトルとURLをコピーしました