Hatena::ブログ(Diary)

TaroidのAndroid日記

2010-10-29

Android端末とPCをUSB接続してデータのやり取りを行う実験

AndroidとPCの間で, 通信できると何か便利なツールが作れそうな予感.

Android端末をペンタブ化したり, ゲームパッド化したり.

でもBluetoothとかLAN経由ではなくて, USBで接続して通信したいんです.

で, 本実験.

Android端末とPCをUSB接続してデータのやり取りを行うツールを作る!

まず, 一番重要な部分はなんと言っても通信部分.

とは言っても難しいことはなかった.

Android SDKダウンロードすると一緒についてくるadbコマンドを使用します.

例えばこんな感じにコマンドを発行します.

adb forward tcp:9999 tcp:8888

するとPCのTCPポート9999番への通信がAndroidTCPポート8888番へポートフォワーディングされます.

これを利用して, あとはAndroidとPC間でTCP通信を行えばいいだけ.

今回ボクが作ったツールは, 名付けて「Display Memo」!

たいしたもんじゃないんだけど, 説明させていただきますと, PC画面の指定した範囲を画像としてAndroidへ送信し, Android側でそれを表示できる!というもの….

デュアルディスプレイにしたいけどお金がないというボクみたいな方向けのツールです(笑)

f:id:taroid:20101029132046p:image

例えば, この画面の一部をメモしておきたいと思います.

f:id:taroid:20101029132342p:image

PC側の専用のプログラムを起動させると, 画面が暗く見えます.

f:id:taroid:20101029132250p:image

ドラッグでメモりたい範囲を指定します.

f:id:taroid:20101029132308p:image

ドロップすると指定した範囲が画像としてAndroid側へ送信されます.

f:id:taroid:20101029132323p:image

例えばこんな感じに使います.

実験として作っただけなんで, アプリを配布したりする予定はありません.

それに最低限の機能しか実装してないし.

実用化を目指すのであれば, 画像の拡大/縮小とか, ストレージへの保存とか, Bluetoothとかにも対応したりと, いろいろ工夫する余地があります.

ちなみに, 具体的な通信の方法は

java.net.ServerSoketを使ってAndroid側をサーバにし, PC側では画面キャプチャを取って, jpegとしてbyte配列化して java.net.Socketでサーバへ送信.

で, 画像データをbyte配列として受け取ったAndroid側では BitmapFactory.decodeByteArray()っていうメソッドでBitmapを生成.

こんな感じです.

helphelp 2011/03/02 01:05 usb通信をどうしてもしたいです。
途中でも良いのでソース公開して下さい。
よろしくお願いします。

taroidtaroid 2011/03/03 11:44 > helpさん
コメントありがとうございます。
ソースファイルを紛失したため、アップできません。ごめんなさい><
このプログラムで行ってることは、単なるTCP/IP通信です。
その部分に関してはJavaの標準ライブラリのドキュメントを読んでください。
パソコンとAndroid端末をUSB通信させるには、記事に書いてあるとおりADBコマンドを使用します。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/taroid/20101029/1288325918