2014-02-14 22 views
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有什麼區別?

回答

1

這裏的區別是:

Acceleration從加速度計屬性包括重力所得以及引起電話運動力,當從運動API Gravity屬性是重力(使用多個傳感器來計算,然後分離來自手機動作造成的力量)。

根據this MSDN post

加速度傳感器檢測與來自電話的運動而產生的任何力沿重力。使用Motion類訪問的組合運動API使用多個設備傳感器將重力矢量與設備加速度分開,並允許您輕鬆確定設備的當前姿態(偏航,俯仰和滾轉)。

+0

謝謝!我認爲如果可能的話,我應該使用Motion API,如果Motion API不可行,那麼我應該使用Accelerometer?我的應用程序是Level,用於測量手機角度,就像這個[Similar app](http://www.windowsphone.com/en-us/store/app/level/c14e93aa-27d7-df11-a844-00237de2db9e) –

+1

一致,儘可能使用Motion API,以便應用程序可以獲得乾淨的重力值以更準確地測量角度。 – har07