CH3COOH(酢酸)の第24回 加速度センサーを使ってみよう! を参考に、初めてのWindows Phone センサーアプリを同じように作ってみました。
エミュレータで、簡単にデバイスの方向をセットすることができます。
それにしたがって、どのような方向にデバイスが向いているのか、リアルタイムでエミューレーションできるのは知っていましたが、実際に動かしてみると、やっぱりすごいなぁ・・・
なお、accelerometer.ReadingChanged メソッドが、accelerometer.CurrentValueChanged に変更になっていたので、それに伴って少し実装を変える必要がありました。一応 2012/3 時点での対応コードをメモっておきます。
using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Devices.Sensors;
namespace Sensor1
{
public partial class MainPage : PhoneApplicationPage
{
// コンストラクター
public MainPage()
{
InitializeComponent();
}
Accelerometer accelerometer;
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
// インスタンスの生成
accelerometer = new Accelerometer();
// 加速度センサの値が変化時した際に通知されるイベントにハンドラを登録
accelerometer.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(accelerometer_CurrentValueChanged);
// 加速度センサデバイスのデータ取得の開始
accelerometer.Start();
}
void accelerometer_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
{
// 別スレッドからのアクセスになるのでInvoke
Deployment.Current.Dispatcher.BeginInvoke(() => MyReadingChanged(e));
}
void MyReadingChanged(SensorReadingEventArgs<AccelerometerReading> e)
{
XTextBlock.Text = e.SensorReading.Acceleration.X.ToString(“0.00”);
YTextBlock.Text = e.SensorReading.Acceleration.Y.ToString(“0.00”);
ZTextBlock.Text = e.SensorReading.Acceleration.Z.ToString(“0.00”);
}
private void PhoneApplicationPage_Unloaded(object sender, RoutedEventArgs e)
{
// 加速度センサデバイスのデータ取得の終了
accelerometer.Stop();
accelerometer = null;
}
}
}
コメントを残す