2
我在我的Windows Phone應用程序中使用Motion API,但並非所有設備都支持Motion API。但是在Windows Phone中存在支持大多數設備的Accelerometer API。Windows Phone中的Motion API和Accelerometer之間的區別
這個API對我的使用有什麼區別?請參閱本兩個代碼塊:
使用運動API:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (motion == null)
{
motion = new Motion();
motion.TimeBetweenUpdates = TimeSpan.FromMilliseconds(15);
motion.CurrentValueChanged += OnSensorReadingChangedMotion;
motion.Start();
}
}
private void OnSensorReadingChangedMotion(object sender, SensorReadingEventArgs<MotionReading> e)
{
Dispatcher.BeginInvoke(() => CurrentValueChangedMotion(e.Gravity.X, e.Gravity.Y, e.Gravity.Z));
}
而且使用加速度計:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (_accelerometer == null)
{
_accelerometer = new Accelerometer();
}
_accelerometer.TimeBetweenUpdates = TimeSpan.FromMilliseconds(15);
_accelerometer.CurrentValueChanged += OnSensorReadingChangedAccel;
_accelerometer.Start();
}
private void OnSensorReadingChangedAccel(object sender, SensorReadingEventArgs<AccelerometerReading> sensorReadingEventArgs)
{
Dispatcher.BeginInvoke(() => CurrentValueChangedAccelerometer(sensorReadingEventArgs.SensorReading.Acceleration.X, sensorReadingEventArgs.SensorReading.Acceleration.Y, sensorReadingEventArgs.SensorReading.Acceleration.Z));
}
我發現加速度計讀數是更加不穩定。 我需要爲我的應用使用一個向量{x,y,z}。什麼是真正的
{.SensorReading.Acceleration.X, .SensorReading.Acceleration.Y,.SensorReading.Acceleration.Z}
和
{e.Gravity.X, e.Gravity.Y, e.Gravity.Z}
之間的區別?
如果我使用類似的矢量,Motion API和Accelerometer有什麼區別?
謝謝!我認爲如果可能的話,我應該使用Motion API,如果Motion API不可行,那麼我應該使用Accelerometer?我的應用程序是Level,用於測量手機角度,就像這個[Similar app](http://www.windowsphone.com/en-us/store/app/level/c14e93aa-27d7-df11-a844-00237de2db9e) –
一致,儘可能使用Motion API,以便應用程序可以獲得乾淨的重力值以更準確地測量角度。 – har07