実録、ともおじちゃん

典型的な客先常駐型ソフトウェア技術者の13年の軌跡

Android VNC Server

2010年07月02日 | コンピュータ・家電
新たに担当するプロジェクトで、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ロックフリーで

最新の画像もっと見る