センサーに対応したWindowsストアアプリを作成する(後編)

CodeZine / 2014年8月18日 14時0分

位置情報サンプルの実行結果

 Windowsストアアプリのセンサーについて紹介する第2回目です。今回は「傾斜センサー」「光センサー」「方位センサー」の3つのセンサーと「位置情報」について紹介します。「加速度センサー」「角速度センサー」「コンパス」について紹介した記事は前編をご参照ください。

■本記事で紹介するセンサー

 本記事では以下のセンサーについて紹介します。

傾斜センサー:端末の傾きを取得します。 方位センサー:デバイスの向きを取得します。 光センサー:端末の周りの明るさを取得します。 位置情報:端末の存在する位置を取得します。 ■センサーを利用する

●傾斜センサー

 傾斜センサー(Inclinometer)を利用することで端末の傾きを測定できます。

●傾斜センサーの値を取得する

 (サンプルファイル:「InclinometerSample.zip」)

 傾斜センサーの値は、以下のようにReadingChangedイベントで取得します。センサー系のAPIは、多くが同じインターフェースで操作可能な設計になっています。以下のコードも前編で何度か目にしたものとほぼ同じコードです。

傾斜センサーの値を取得する
this.inclinometer = Inclinometer.GetDefault(); if (this.inclinometer == null) { System.Diagnostics.Debug.WriteLine("Inclinometer is null"); } else { this.inclinometer.ReadingChanged += inclinometer_ReadingChanged; }
 ReadingChangedで取得した値は、以下のように取り出します。

ReadingChangedで傾斜センサーの変更を取得する
async void inclinometer_ReadingChanged(Inclinometer sender, InclinometerReadingChangedEventArgs args) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { YawDegrees.Text = args.Reading.YawDegrees.ToString(); PitchDegrees.Text = args.Reading.PitchDegrees.ToString(); RollDegrees.Text = args.Reading.RollDegrees.ToString(); }); }
 また以下のようにイベントハンドラーではなくGetCurrentReading()メソッドを用いて、任意のタイミングで値を取得することも可能です。

GetCurrentReadingで現在の値を取得する
InclinometerReading reading = this.inclinometer.GetCurrentReading();
 取得した値はそれぞれ以下のような意味を持ちます

●YawDegrees(ヨー)

 Z軸方向の回転を表します。Z軸は端末の背面から表面にむけて垂直に伸びる軸です。また回転の値は反時計回りに変化します。

●PitchDegrees(ピッチ)

 X軸方向の回転を表します。X軸は端末の画面を手前、Windowsボタンを下にした場合に左から右に伸びる軸です。回転の値はYawDegrees同様に反時計回りに変化します。

●RollDegrees(ロール)

 Y軸方向の回転を表します。Y軸はは端末の画面を手前、Windowsボタンを下にした場合に下から上に伸びる軸です。回転の値は先の2つの値と同様に反時計回りに変化します。

参考
 「MSDN:Windows 8 におけるセンサーのサポート」





CodeZine

トピックスRSS

ランキング