酢ろぐ!

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

WindowsストアアプリでLightSensor(照度/環境光センサー)を使って照度を取得する

概要

Windows.Devices.Sensors名前空間のGyrometerクラスは、Windowsストアアプリからデバイスの照度/環境光センサーへアクセスする手段を提供してます。

照度センサーは、「照射された光の明るさを計測する」センサーで、現在端末の存在している場所の明るさを数値として取得する事が出来ます。

静電容量式のタッチパネル液晶を持つスマートフォンでは、電話を使用する際に耳や頬がタッチパネルに当たると誤作動してしまいます。Windows Phoneをはじめとしたスマートフォンでは、誤作動を防ぐため照度が低下すると顔が近づいたとして液晶へのタッチを無効として扱います。また、液晶の輝度が低い場合、野外で日差しに出るとほとんど画面が見えなくなってしまいます。そういった場合でも照度センサーが働き、自動で液晶の輝度を上げてくれます。

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

名前空間:Windows.Devices.Sensors

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

クラス メンバー

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

Tips

照度を取得する

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

照度センサーが使用できるか判定する

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

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

現在の照度センサーの値を取得する

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

  LightSensorReading reading = null;
  reading = lightSensor.GetCurrentReading();

照度センサーの値が変化したのを受け取る

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

  // 照度センサーのイベントを受け取る
  lightSensor.ReadingChanged += lightSensor_ReadingChanged;

LightSensorReading型の変数gyroValueを定義して、照度センサーの値を保存します。

  // 照度センサーの結果値
  LightSensorReading lightSensorValue = null;

  // 照度センサーの値が変更される度に通知される
  void lightSensor_ReadingChanged(LightSensor sender, 
    LightSensorReadingChangedEventArgs args)
  {
    // 照度センサーの読み取り結果を保存する
    lightSensorValue = args.Reading;
  }

参照

関連記事

WindowsランタイムAPI(Windows Runtime API, WinRT API)を使ってアプリ開発する際に逆引きとしてお使いください。