AndroidでKinectするサンプル

いやぁ。またずいぶん久しぶりのブログエントリーですね・・・。


タイトルだけみるとAndroidKinectを直結して動かしちゃうぜ!って感じに見えますがそういうわけじゃないです。
Androidの貧弱なCPUでlibusbぶっ叩いてぶん回すのはちょっと…だいたいUSBホスト機能のついた端末持ってないですし)
じゃぁどういうことなのというと、こういうことです。



これでAndroidでもKinect使ったあれやそれができちゃうわけですね(今のところ骨格情報しか送れませんが)。
Xboxなんてもういらないんですよ!(元から持っていませんが


ちなみにPCはWindowsMicrosoftKinect for Windows SDKを使用しています。
作りは簡単で、KinectからとれたSkeletonDataをSerializeしてTCP/IPでぶん投げるだけです。
受ける側はデータを受けてDeserializeしたらOpenGLでごりごり描画するという作りになっています。
うまく動くとAndroid上で↓のような画面が出ます。



ネットワーク的には下図のような構成ですね。



こうしておけばemulatorでも「adb forward tcp:xxxx tcp:yyyy」で通信ができて便利です。


Windows側は下図のような画面がでるので、IPアドレスとポート番号をぶち込んでconnectすればあとはKinect次第です。



Windows用のコードはKinect for Windows SDKのSampleをちょろっと書き換えて作りました。
Android用のコードは一から書いています。


#プロトコルは超適当に作っているので、プロトコルバージョンだのケーパビリティだのは何それおいしいの?って感じです。あしからず。


ソースコードは下記からどうぞ


今後はこれにAndroidの加速度センサやカメラを組み合わせると、何かおもしろいことができるんじゃないかなーという感じです。
あと、できればジェスチャーにも対応させたいですね。だれかやってください。