2011-07-21 3 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のような同じ現象が報告されている人もいますが、まだ答えはありません。驚いたことに、より高い実際の周波数を報告するのは初めてです。私はこれについていくつかのテストを行いました。そして、それはあなたが行くところで実際の違いはありません。

  • プッシュまたはIEハンドラコールバックや独自のタイマーループ
  • のiOS 4.2倍、のiOS 4.3×引っ張っ:
  • 生のセンサデータやデバイスモーション
  • ジャイロスコープまたは([更新]をプルのみでテスト済み)加速度計
  • 別のスレッド

でそれを実行している私はそれがコアモーション枠組みの中で小さなバグであると仮定します。

+1

私は[CMMotionManager startAccelerometerUpdatesToQueue:を使用する場合、実際の周波数が設定と異なるDeviceMotionのiOS 4.3x iPhone4のプッシュを使用しています(データを取得する方法はより正確です)実際の周波数は私が設定したものと同じです、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

関連する問題