以下省略!

タイダルウ(ry ほぼ毎日1記事執筆運動実施中。 ※記事に広告(アフィリエイト)リンクを掲載している場合があります。

ネットワーク経由でNexus 7(2012)の画面を操作する

f:id:abyssluke:20160620120557p:plain:w200:leftタッチパネルのガラスが割れて操作できなくなったNexus 7(2012 Wi-Fi)。現在部品手配中だが到着まで約2週間くらいは掛かる。
交換までの間端末を操作する手段であるOTGケーブルとマウスをわざわざ引っ張りだすのも面倒なので、ネットワーク経由のADBとAndroid Screen Monitor(ASM)を利用して端末の画面を操作してみた。まさに遠隔操作ういr(ry この後触れるがフレームレートはお察し

端末側の準備・ADB接続

PC側にAndroid SDKJavaがインストールしてあり、端末側のUSBデバッグが有効な状態であることを前提とする。また以下はPC側がUbuntu(14.04)、端末側はAndroid 5.1.1(カスタムROM:CyanogenMod 12.1)での例。端末のAndroidのバージョンやROMによってはできないかもしれない。

f:id:abyssluke:20160620115715p:plain:w240:leftNexus 7に入れてあるカスタムROM CyanogenMod 12.1(Android 5.1.1)には端末側でネットワークADBサーバーを起動する機能があるのでそれを利用する。
端末にOTGケーブルでマウスを接続、設定→開発者向けオプションからネットワーク経由のADBを有効化。再起動すると無効になるので注意。
項目がないROMの場合(純正ROM含む)はUSBケーブルで端末を接続し、以下のコマンドを叩けばいいかも(完了したらUSBケーブルは外してもOK?)。

$ /path/to/android-sdk-linux/platform-tools/adb tcpip 5555

そのあとPC側から、端末のIPアドレス(ここでは192.168.11.5とする):ポート(5555)を入力して端末に接続する。2回目以降はマウスを接続せずに直接これを叩けばいい(端末を再起動した場合を除く)。

$ /path/to/android-sdk-linux/platform-tools/adb connect 192.168.11.5:5555
connected to 192.168.11.5:5555

初回接続の場合は端末側に確認画面が表示されるので承認しておく。承認したらマウスを外しても大丈夫。

ASMで操作

Android Screen Monitorをダウンロード&展開し、asm.jarにAndroid SDKへのパスを渡して起動する。

$ java -jar asm.jar /path/to/android-sdk-linux

f:id:abyssluke:20160620122632p:plain:w200:left起動するとデバイス一覧に先ほどconnectしたデバイス(192.168.11.5:5555)が出てくるので選択。出てこないときは切断などされていないかどうか確認すること。
しばらくすると画面が表示されマウスで操作できるようになる。画面がでかすぎる!という場合は画面を右クリック→Zoomから縮小すればOK。

なお、無線LANでの通信故(USB2.0でもそうだが)、かなりフレームレートが悪い。(大事な事なので文字を大きくしました)
端末や無線LANの環境にもよるが、操作してからPC側の画面に反映されるまで約5〜10秒以上かかる。
PC側の操作はすぐに反応するので、端末側の画面を見ながら操作するというのもありか(タッチ場所の確認等は必要だけど)。

ちなみに

  • Android Screen MonitorはJavaで動くので、adbとJavaが動けばWindowsMacでも使える。この場合はパス指定等を読み替えること。
  • キーボード操作も可能だが、シフトキーなどを使うと変なキーコマンドが送信されるのかBroken Pipeで操作用の接続が切断され操作ができなくなる場合がある(画面は更新される)。この場合は再接続すれば直る。