酢ろぐ!

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

WindowsストアアプリでGyrometer(ジャイロセンサー)を使って角速度を取得する

概要

Windows.Devices.Sensors名前空間のGyrometerクラスは、Windowsストアアプリからデバイスのジャイロセンサー(角速度センサー)へアクセスする手段を提供してます。

加速度センサーは、「角度に対する傾斜角を計測する」センサーで、デバイスの向いている状況を判断することができます。

Windowsストアアプリでのジャイロセンサーの搭載は、あくまでのオプション扱いなのでデバイスが搭載されているかどうかを調べた上でしか使うことができません。

Windows Phoneにもほぼ同等のGyroscopeクラスが存在していますが、イベント名やメソッド名が異なっているところに注意してください。

名前空間:Windows.Devices.Sensors

System.Object
 +--Windows.Devices.Sensors.Gyrometer

クラス メンバー

ReadingChanged値が変わった時に通知されるイベント
GetCurrentReadingセンサーの現在値を取得
GetDefaultデフォルトのジャイロセンサーオブジェクトを取得する
MinimumReportInterval値の最小更新間隔の取得
ReportInterval値の更新間隔の設定/取得

Tips

角速度を取得する

Windows.Devices.Sensors名前空間のGyrometerクラスを使って、ジャイロセンサー(角速度センサー)の値を取得します。

ジャイロセンサーが使用できるか判定する

Gyrometer.GetDefaultメソッドで、デフォルトのジャイロセンサーを取得します。PCにジャイロセンサーが接続されていない場合はnullが返ってきます。

  // デフォルトのジャイロセンサーを取得する
  var gyrometer = Gyrometer.GetDefault();
  if (gyrometer == null) {
    // デバイスが使えないことをユーザーへ通知する
  }

現在のジャイロセンサーの値を取得する

常にジャイロセンサーの変化した値を見張る必要がなく、1度だけ値を取得すれば良い場合は、GetCurrentReadingメソッドを使用します。

  GyrometerReading reading = null;
  reading = gyrometer.GetCurrentReading();

ジャイロセンサーの値が変化したのを受け取る

ジャイロセンサーから出力される値が変化するとReadingChangedイベントが発生します。ReadingChangedイベントを受信するようにReadingChangedイベントハンドラを設定します。

  // ジャイロセンサーのイベントを受け取る
  gyrometer.ReadingChanged += gyrometer_ReadingChanged;

GyrometerReading型の変数gyroValueを定義して、ジャイロセンサーの値を保存します。

  // ジャイロセンサーの結果値
  GyrometerReading gyroValue = null;

  // ジャイロセンサーの値が変更される度に通知される
  void accelerometer_ReadingChanged(Gyrometer sender, 
    GyrometerReadingChangedEventArgs args)
  {
    // ジャイロセンサーの読み取り結果を保存する
    gyroValue = args.Reading;
  }

参考