XPERIA内部から自身へのadb接続
ようやく、XPERIA mini proをVersion 4.0(ICS)にアップデートできました。そこで、兼ねてよりやってみたかった自分自身から自分自身へのadb接続を試してみたいと思います。
先ず、必要なものとして、Android Terminal Emulatorをインストールします。
そして、ターミナルを開いてadbと打ちます。下記のような画面に・・・。XPERIA単体で、adbが使えることが判ります。
ここで、adb devicesと打って、接続できるデバイスを見てみます。何もアタッチされていません。
内部的にもadb用のポートが見られるようにする必要が有ります。このポートを開く一番簡単な方法は、USB経由で外部からポートを開くことです。
と言うことで、PCとUSB接続してコマンドプロンプトを起動します。そしてadb devices
>adb devices
List of devices attached
BX902HA9V6 device
はい、見えていますね。そこで、adb tcpip 5555とします。adb接続のデフォルトのポートが5555です。tcpip 5555とすることで、5555ポートがtcpip側に開きます。と同時に通常のUSBからはデバイスが見えなくなります。
>adb tcpip 5555 restarting in TCP mode port: 5555
この状態で、もう一度、adb devicesとすると、同様に List of devices attached BX902HA9V6 deviceと表示されます。これは、PCのadbサーバがデタッチされたことを取得できていないことが原因です。デタッチを認識していないと、PCのadbがハングアップするので、PCのadbをリスタートします。下記のようにadb kill-serverして、adb start-serverします。
>adb kill-server >adb start-server * daemon not running. starting it now on port * daemon started successfully * >adb devices List of devices attached BX902HA9V6 offline
デバイスの認識がofflineとなりました。
5555ポートがtcpipに開いたので、XPERIA内部からデバイスを認識させたいと思います。adb connect 127.0.0.1と打ちます。そうすると、自分自身にアタッチできます。adb devicesとすると127.0.0.1:5555がデバイスとして見えています。
PC側からも同時にアタッチしてみます。adb connect 192.168.24.53と打ちます。IPアドレスはXPERIAのIPアドレスです。
>adb connect 192.168.24.53 connected to 192.168.24.53:5555 >adb devices List of devices attached BX902HA9V6 offline 192.168.24.53:5555 device
192.168.24.53:5555 deviceは、USB経由ではなくて、LANを通したWifi経由で繋がっていることになります。なので、LAN内にいる別のPCからでもadb connect 192.168.24.53とすれば接続できます。セキュリティ的には最悪ですね。
ちなみに、PC側(外側)からXPERIAにログインする場合は、adb -e shellとすれば入れます。何故か、emulatorとして接続できるみたいです。こんな状態。
>adb -e shell shell@android:/ $ netstat netstat Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:5038 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN tcp 0 0 192.168.24.53:5555 192.168.24.98:63250 ESTABLISHED tcp 0 0 127.0.0.1:46304 127.0.0.1:5555 ESTABLISHED tcp 0 0 127.0.0.1:5555 127.0.0.1:46304 ESTABLISHED tcp6 0 38 ::ffff:192.168.24.53:47853 ::ffff:199.47.219.158:443 CLOSE_WAIT tcp6 0 38 ::ffff:192.168.24.53:39109 ::ffff:23.48.14.216:443 CLOSE_WAIT tcp6 0 0 ::ffff:192.168.24.53:34042 ::ffff:74.125.31.188:5228 ESTABLISHED tcp6 0 1 ::ffff:192.168.24.53:49388 ::ffff:74.125.235.142:80 CLOSE_WAIT tcp6 0 0 ::ffff:192.168.24.53:36416 ::ffff:199.167.177.40:1227 ESTABLISHED tcp6 0 38 ::ffff:192.168.24.53:54305 ::ffff:23.48.14.216:443 CLOSE_WAIT shell@android:/ $ exit exit
いよいよ、XPERIAのターミナルからadb shellを行ってみます。app_134@androidがshell@androidに変わりましたね。ログインできたようです。
exitします。
adb経由で自分自身にキーイベントを飛ばす
さて、やりたいことの本題に近づいて来ました。すまべんの和歌山合宿でいろいろと調べていた成果ですが、先ず、ホームキーイベントを投げてみます。adb shell input keyevent 3
おおお、ホーム画面が出てきました。(注:ホーム画面のキャプチャはしていないです)
それでは、メニュキーイベントをは、adb shell input keyevent 82、ポちっとな。おおメニューが出る。(注:メニュのキャプチャはしていないです)
それでは、それでは、メニュを出して、直ぐ閉じるとというのに挑戦してみます。adb shell input keyevent 82;adb shell input keyevent 4、行け。
おおおお、メニューが開いて、直ぐに閉じました。成功、成功。
なるほど、なるほど、では、次は自作アプリからadb叩く方法を考えてみたいと思います。