新たに担当するプロジェクトで、Android端末を外部から操作する必要が出てきたので、VNCサーバを探してみたところ、そのものズバリなAndroid VNC Serverなるものを見つけました。
手元に実機がないので、仕方なくエミュレータ(Android 2.2)にダウンロードしたバイナリ(androidvncserver)をadb push でインストールして、READMEの指示に従ってadb shellのプロンプトからandroidvncserverを実行してみたのですが、ダメでした。
> adb push "C:\Temp\androidserver" /data
> adb shell
# chmod 777 /data/androidvncserver
# /data/androidvncserver
Initializing framebuffer device /dev/graphics/fb0...
xres=320, yres=480, xresv=320, yresv=960, xoffs=0, yoffs=0, bpp=16
Initializing keyboard device /dev/input/event3 ...
cannot open kbd device /dev/input/event3
エミュレータに存在する入力デバイスは、event0、 mouse0、 および、miscのみ。geteventコマンドでロギングしたところ、キー入力もタッチも/dev/input/event0からイベントが発生しているようです。
> adb shell
> ls /dev/input
event0 mouse0 misc
仕方なく、次のように引数を与えてandroidvncserverを実行してみたところ、起動には成功しましたが、VNCクライアントから接続できません。
> adb shell
# /data/androidvncserver -k /dev/input/event0 -t /dev/input/event0 &
いろいろ調べてみたところ、どうやらポート番号を5900にしてやればよいようで
> adb forward tcp:5900 tcp:5901
を実行してやると、うまく接続できました(TightVNCで確認)。ただし、VNCクライアントに表示されたウインドウに対するキー入力は、エミュレータに反映されるのですが、タッチ操作はエミュレータに反映されませんでした。geteventコマンドでロギングしてみていると、タッチイベント自体は/dev/input/event0で発生しているようですが…残念。
あぁ、実機が欲しい…できればSIMロックフリーで
手元に実機がないので、仕方なくエミュレータ(Android 2.2)にダウンロードしたバイナリ(androidvncserver)をadb push でインストールして、READMEの指示に従ってadb shellのプロンプトからandroidvncserverを実行してみたのですが、ダメでした。
> adb push "C:\Temp\androidserver" /data
> adb shell
# chmod 777 /data/androidvncserver
# /data/androidvncserver
Initializing framebuffer device /dev/graphics/fb0...
xres=320, yres=480, xresv=320, yresv=960, xoffs=0, yoffs=0, bpp=16
Initializing keyboard device /dev/input/event3 ...
cannot open kbd device /dev/input/event3
エミュレータに存在する入力デバイスは、event0、 mouse0、 および、miscのみ。geteventコマンドでロギングしたところ、キー入力もタッチも/dev/input/event0からイベントが発生しているようです。
> adb shell
> ls /dev/input
event0 mouse0 misc
仕方なく、次のように引数を与えてandroidvncserverを実行してみたところ、起動には成功しましたが、VNCクライアントから接続できません。
> adb shell
# /data/androidvncserver -k /dev/input/event0 -t /dev/input/event0 &
いろいろ調べてみたところ、どうやらポート番号を5900にしてやればよいようで
> adb forward tcp:5900 tcp:5901
を実行してやると、うまく接続できました(TightVNCで確認)。ただし、VNCクライアントに表示されたウインドウに対するキー入力は、エミュレータに反映されるのですが、タッチ操作はエミュレータに反映されませんでした。geteventコマンドでロギングしてみていると、タッチイベント自体は/dev/input/event0で発生しているようですが…残念。
あぁ、実機が欲しい…できればSIMロックフリーで