【デバッグ接続】タッチやキー入力などの操作を自動化する「input」コマンド

Android端末をパソコンにUSB接続して行う「デバッグ接続」では、端末上でタッチ操作やキー入力を発生させて操作を自動化する「adb shell input」コマンドも利用可能だ。
BATファイルにコマンド群を記述しておけば、様々な定型の作業を自動化して手間を削減できる。
通常のタッチスクリーンでは、特定の場所を正確にタッチすることは困難だが、inputコマンドならば1ピクセルの狂いもなく正確なタッチが可能なので、狙撃型パズルなどのゲームを楽に進めるのにも役立つだろう。





画面タップやスワイプを自動実行


001

まず、タップさせたい場所の座標を調べよう。スクリーンショットを撮影して、画像ビューアの機能などで調べればいい。定番画像ビューアの「IrfanView」の場合、左ボタンをホールドすればタイトルバーにマウス位置の座標が表示されるぞ。
端末の画面が横向きモードになっている場合は、横向き画面における座標を指定する事になるので注意しよう。


002

まずはコマンドプロンプトでコマンドを実行して、意図した箇所がタップされるかを確認していこう。
単なるタップは「adb shell input tap 」に続いて横、縦の座標を半角スペース区切りで指定。
スワイプの場合は、「adb shell input swipe 」に続いて、開始座標、終了座標の4つの数値を半角スペース区切りで指定する。
Android 4.4以降では、swipeコマンドに5つめのパラメータを付けて、開始から終了までにかける時間をミリ秒(1000分の1秒)単位で指定することも可能だ。


003

意図した位置がタップされることを確認したら、メモ帳などのテキストエディタにコマンドを記述して、adb.exeのあるフォルダに拡張子「.bat」で保存しよう。
コマンドの間には、画面の切り替わりなどを待つために、Windowsの「timeout」コマンドを挟むといいだろう。「timeout /t 5」のように記述すれば、数字で指定した秒数だけ待ってから次の処理が実行されるぞ。
また、ゲームなどで一定の操作を繰り返させたい場合は、1行目に「:loop」、最後に「goto loop」と記述しておこう。「:」で始まる行はラベルになっており、gotoの行が実行されると、指定したラベルの行に処理が移るぞ。


004

出来上がったBATファイルをダブルクリックなどで実行すれば、自動操作が開始される。ウィンドウを閉じると自動操作は中断されるぞ。


キー操作を自動実行

設定画面など多くの標準的インターフェイスでは、「Tab」キー(キーコード=61)でボタンなどのUI部品に操作フォーカスを移動して「Enter」キー(キーコード=66)で実行するという操作方式が利用できるので、タップ座標を調べることなく自動操作可能だ。
まずは「adb shell input keyevent 61」を何回か実行して、押させたいボタンにフォーカスが移動するまでの回数を調べよう。「adb shell input keyevent」に続いて「61」をその数だけ列挙し、最後に「66」を加えれば、ボタンを押させるコマンドが出来上がるぞ。
また、方向キーの↑(19)、↓(20)、←(21)、→(22)で操作できるアプリも存在する。
なお、キーコード「26」で電源キーの操作も発生させられる。「adb shell am」コマンドでのアプリ起動と合わせれば、全ての操作を自動実行させることも可能だ。


005

端末のキーやキーボードのキーによる操作を仮想的に発生させるには、「adb shell input keyevent」に続いてキーコードを指定しよう。複数のキーコードを列挙して連続して押させることも可能だ。


006

キーコードは、キーを識別するための数値だ。キー名とキーコードの対応は、以下のページで調べられる。「Constants」の一覧で「KEYCODE_」で始まるリンクをクリックすると表示される詳細説明の欄に、「Constant Value:」として記載されているぞ。
KeyEvent | Android Developers


007

「adb shell input keyevent 61」を実行したときに、このようにボタンなどがハイライト表示される場合、Tabナビゲーションに対応しているぞ。

関連記事

2014年11月07日11時26分 公開 | カテゴリー: 便利化・快適化 | キーワード:, | Short URL
このエントリーをはてなブックマークに追加

最新記事