2011-07-21 102 views
5

分析deviceMotion.timestamp我看到在DeviceMotion中設置的更新頻率不是更新的實際頻率。更新頻率爲deviceMotionUpdateInterval設置它是實際的頻率?

爲了測試,我實現了一個應用程序,在我看到的下面!

update frequency  actual frequency  average time between two calls 
     1/10.000000   10.232265    0.097730 
     1/20.000000   19.533729    0.051194 
     1/30.000000   30.696613    0.032577 
     1/40.000000   42.975122    0.023269 
     1/50.000000   53.711000    0.018618 
     1/60.000000   53.719106    0.018615 
     1/70.000000   71.627016    0.013961 
     1/80.000000   71.627263    0.013961 
     1/90.000000   53.719365    0.018615 
     1/100.000000  107.442667    0.009307 
     1/110.000000  107.437022    0.009308 

有人注意到了同樣的事情? 這是一個錯誤?

回答

1

有些人報告的現象相同,例如Actual frequency of device motion updates lower than expected, but scales up with setting,但仍然沒有答案。令人驚訝的是,你是第一次報告更高的實際頻率。我在這方面做了幾次測試,並且你走哪條路沒有什麼實際差別。

  • 推拉即處理程序回調或自身定時器迴路
  • 的iOS 4.2倍,4.3倍的iOS([更新:]測試了拉只)
  • 原始傳感器數據或設備運動
  • 陀螺或加速度計
  • 它運行在一個單獨的線程

我假設它是在覈心運動框架一個小錯誤。

+1

如果我使用[CMMotionManager startAccelerometerUpdatesToQueue:[CMMotionManager startAccelerometerUpdatesToQueue:[IMMotionManager startAccelerometerUpdatesToQueue:[[ NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * accelerometerData,NSError * error)一切正常,實際頻率與我設置的一樣,CoreMotion創建自己的線程:處理來自傳感器的原始數據並運行設備運動算法閱讀幻燈片WWDC 2010/2011) – Batti

+0

原始加速度計數據使用推送方法來抓取它。 [1/10.000000 9.988813 0.100112] [1/20.000000 19.957865 0.050106] [1/30.000000 29.902478 0.033442] [1/40.000000 39.825712 0.025109] [1/50.000000 49.725514 0.020110] [1/60.000000 59.608615 0.016776] [ 1/70.000000 69.477139 0.014393] [1/80.000000 79.321895 0.012607] [1/90.000000 88.883474 0.011251] [1/100.000000 98.643989 0.010137] – Batti

+0

所以不要理解你的權利,你現在已經使用NSOperationQueue解決了這個問題?如果是這樣,我建議你編輯你的問題,並在最後粘貼解決方案。因此其他人可以乍一看看解決方案。 – Kay