続いて、Windows Phoneをクライアントにしてみましょう。
サンプル内にxapファイルがあり、そのままでも使えるようですが、自分がxapファイルからの実行方法を知らないので、お手軽にソースから起動します。ソースからならシミュレーターでもできるのではないでしょうか(未確認)。
前提として、Windows Phoneのビルドおよび実行環境は作成済みとします。
動作手順
ソースファイルのZIPを、サイトよりダウンロードします。今の時点での最新は、kinectservice-88601.zip のようです
解凍したフォルダ(Coding4Fun.Kinect.KinectService)にあるCoding4Fun.Kinect.KinectService.slnで、Visual Studioを起動します。環境によっては、ロードできないプロジェクトがあるかもしれませんが、Windows Phoneのプロジェクトがロードできていれば大丈夫だと思います。Windows Phoneは次の3つです。
- Coding4Fun.Kinect.KinectService.Common (Phone)
- Coding4Fun.Kinect.KinectService.PhoneClient
- Coding4Fun.Kinect.KinectService.Samples.PhoneSample
実行はCoding4Fun.Kinect.KinectService.Samples.PhoneSampleをスタートプロジェクトにします。実行環境はシミュレーターでも、実機でもお好きな方で(ぼくは実機でしか動作させてません)
アプリケーションをして、WPFの時と同じようにホストのIPアドレスを入力しColorのStartを押すと、Kinectの画像データがWindows Phoneに配信されます。
たぶん、もっさり遅延してるかと思います。データ量、処理速度などあると思います。ホストのアプリケーションに、スケール(拡大・縮小)のパラメーターがあるので、それをちょっといじってみます。
ColorListenerのコンストラクタの最後の引数に0.2を入れます。これがスケールの値で、元画像の20%に縮小します。
_videoListener = new ColorListener(_kinect, VideoPort, ImageFormat.Jpeg, 0.2); //_videoListener = new ColorListener(_kinect, VideoPort, ImageFormat.Jpeg); _videoListener.Start();
これで、コンソールのホストをビルド、実行し、Windows Phoneのアプリケーションから接続すると、軽快に動作するのではないでしょうか。
参考までに、手元の環境でやってみた動画を載せておきます。これくらいなら使えるレベルではないかなぁと思います。