酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows Phone搭載のセンサーを活用しよう!

2011年6月9日に開催されたWindow Phone Developer DayのコミュニティLTにてお話しさせて頂きました。まとめ切れていませんがよかったらどうぞ。

Windows Phone OS 7.0のデバイスにメーカーが搭載しないといけないセンサーはこんな感じ。

  • 加速度センサー
  • 環境光センサー
  • 接近センサー
  • Assisted GPS
  • FMラジオチューナー

端末側のハードウェア仕様を一律にすることで、端末間の差別化をしにくいのはあるけれど、その前にハードウェアとソフトウェアをシームレスに統合することによってユーザービリティを高めることができます(Appleみたいや)。

Windows Phoneに関してはアプリを作る立場なので、ハードウェアは統一されてる方が嬉しいですね。Mangoになって更にセンサーが増えて、さらに使いやすくなりました。Accelerometer(加速度センサー)は前からそうだったんですが、SensorBaseを継承することでセンサー関連のインターフェースが統一されています。

CurrentValue センサーの現在値を取得
CurrentValueChanged 値が変わった時に通知される
TimeBetweenUpdates 値の更新間隔の設定/取得
Start センサーから値を取得開始
Stop センサーから値を取得終了

例えばこんな感じです。これはモーションセンサーの例です。TimeBetweenUpdatesプロパティで何ミリ秒毎に値を更新するかを設定してStartメソッドを呼ぶだけ。値が変更されたらCurrentValueChangedイベントが呼ばれます。このあたりは、neuecc先生がRxを使って上手く書いてくれそうなので首を長くして待っています。

var motion = new Motion();
motion.TimeBetweenUpdates= TimeSpan.FromMilliseconds(20);
motion.CurrentValueChanged+= motion_CurrentValueChanged;
motion.Start(); 

あと、センサー系は微妙にエミュレータでテスト出来ないのですが、まだ記録も出来ないBeta版なので完成を待ちましょう。