ユニバーサルWindowsアプリ(Pre)入門025:加速度センサーを利用する

金曜日 , 17, 7月 2015 Leave a comment

 (予め)本記事はプレビュー版の環境に基づいて書かれています。

 

 Windows 1o Desctop Build 10240

 Windows 1o Mobile Build 10166

 Visual Studio 2015 RC

 

 製品版では内容と異なる可能性もあります。

 

加速度センサー

 

 久しぶりにUWPアプリのサンプルからAccelerometerを紹介します。

 

 加速度センサーは、文字通り端末にかかる加速度を測定します。

 端末によって加速度センサーを搭載しているかどうかがわかれますので、まずは加速度センサーが搭載しているかを確認します。

 今回は手元の環境で加速度センサー付きのWindows 10環境がWindows PhoneのLumia 1320のみでしたので、実機検証はWindows 10 Mobileのみとなります。

 

_accelerometer = Accelerometer.GetDefault();
if (_accelerometer != null)
{

 

 センサーが存在した場合、値の変化を読み取るイベントハンドラ―を設定します。

 

_accelerometer.ReadingChanged -= new TypedEventHandler<Accelerometer, AccelerometerReadingChangedEventArgs>(ReadingChanged);

// Restore the default report interval to release resources while the sensor is not in use
_accelerometer.ReportInterval = 0;

 

  ReadingChangedイベントハンドラーで加速度計にかかる値の変化を取得します。

 

async private void ReadingChanged(object sender, AccelerometerReadingChangedEventArgs e)
{
    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        AccelerometerReading reading = e.Reading;
        ScenarioOutput_X.Text = String.Format("{0,5:0.00}", reading.AccelerationX);
        ScenarioOutput_Y.Text = String.Format("{0,5:0.00}", reading.AccelerationY);
        ScenarioOutput_Z.Text = String.Format("{0,5:0.00}", reading.AccelerationZ);
    });
}

 

 これはWindows 8.1のWindowsストアアプリと同じ流れですね。

 

端末を振った際のシェイクイベントを取得

 

 端末が振られた(シェイクされた)際のイベントを取得することができます。

 

_accelerometer.Shaken -= new TypedEventHandler<Accelerometer, AccelerometerShakenEventArgs>(Shaken);

 

 ・・・んですが、手元の端末だとイベントが発生しない。

 仔細未検証ですが、この辺も8.1のころと変わってないので、正式版ではちゃんと取れると思います。

 

現在の値をとる

 

 ReadingChangedイベントハンドラ―ではなく、任意のタイミングでその時の値を取得するこもできます。

 

AccelerometerReading reading = _accelerometer.GetCurrentReading();

 

エラーで試せなかったもの

 

 手もとの端末では以下の処理時にエラーになりました、

 

//Establish the report Latency
accelerometer.ReportLatency = desiredReportLatency;

 

 センサー系はまだ調整中という感じかなぁ。


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です