AndroidでKinectするサンプル
いやぁ。またずいぶん久しぶりのブログエントリーですね・・・。
タイトルだけみるとAndroidとKinectを直結して動かしちゃうぜ!って感じに見えますがそういうわけじゃないです。
(Androidの貧弱なCPUでlibusbぶっ叩いてぶん回すのはちょっと…だいたいUSBホスト機能のついた端末持ってないですし)
じゃぁどういうことなのというと、こういうことです。
これでAndroidでもKinect使ったあれやそれができちゃうわけですね(今のところ骨格情報しか送れませんが)。
Xboxなんてもういらないんですよ!(元から持っていませんが
ちなみにPCはWindowsでMicrosoftのKinect 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の加速度センサやカメラを組み合わせると、何かおもしろいことができるんじゃないかなーという感じです。
あと、できればジェスチャーにも対応させたいですね。だれかやってください。