adb経由で getevent/sendevent を使います.
やってみておもしろかったの以下からのPHPへの移植です.
getevent/sendeventでAndroid端末の操作自動化
実行方法は同様に,ADB接続したパソコン上コンソールから
保存
$ adb shell getevent /dev/input/event2 | php getevent.php > events.txt
保存したファイルはシェルスクリプトです.
$ cat event.txt sleep 0.000 adb shell sendevent /dev/input/event2 0 0 0 sleep 0.000 adb shell sendevent /dev/input/event2 3 53 283 sleep 0.010 adb shell sendevent /dev/input/event2 3 54 2331 sleep 0.000 adb shell sendevent /dev/input/event2 0 0 0 sleep 0.000 adb shell sendevent /dev/input/event2 3 57 4294967295 sleep 0.060 adb shell sendevent /dev/input/event2 0 0 0 sleep 0.000 adb shell sendevent /dev/input/event2 3 57 1886 sleep 0.344 adb shell sendevent /dev/input/event2 3 53 800 sleep 0.000 adb shell sendevent /dev/input/event2 3 54 2312 sleep 0.000 adb shell sendevent /dev/input/event2 3 58 64 sleep 0.000 adb shell sendevent /dev/input/event2 3 48 4 sleep 0.000 adb shell sendevent /dev/input/event2 0 0 0 sleep 0.000 adb shell sendevent /dev/input/event2 3 53 798 sleep 0.010 adb shell sendevent /dev/input/event2 3 54 2311 ...
このときの タッチパネルを表す /dev/input/event2 は端末によって違います.
コンソールから以下で確認しましょう.
以下Nexus4の場合.
$ adb shell getevent add device 1: /dev/input/event0 name: "pmic8xxx_pwrkey" add device 2: /dev/input/event1 name: "keypad_8064" add device 3: /dev/input/event4 name: "apq8064-tabla-snd-card Headset Jack" add device 4: /dev/input/event3 name: "apq8064-tabla-snd-card Button Jack" add device 5: /dev/input/event5 name: "hs_detect" add device 6: /dev/input/event2 name: "touch_dev" ^C
再現
$ sh events.txt
PHPスクリプト
<?php define(REGEX_LINE, '/([0-9a-f]+) ([0-9a-f]+) ([0-9a-f]+)/'); define(DEVICE, '/dev/input/event2'); define(SENDEVENT, 'adb shell sendevent %s %s %s %s'); $time = microtime(true); while ($line = fgets(STDIN, 2048)) { if (preg_match(REGEX_LINE, trim($line), $matches)) { $matches = array_map('hexdec', $matches); printf(SENDEVENT . "\n", DEVICE, $matches[1], $matches[2], $matches[3]); } $current = microtime(true); printf("sleep %.3f\n", $current - $time); $time = $current; }
テストに役に立つと思います.