更新频率为deviceMotionUpdateInterval设置它是实际的频率?
问题描述:
分析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
有人注意到了同样的事情? 这是一个错误?
答
有些人报告的现象相同,例如Actual frequency of device motion updates lower than expected, but scales up with setting,但仍然没有答案。令人惊讶的是,你是第一次报告更高的实际频率。我在这方面做了几次测试,并且你走哪条路没有什么实际差别。
- 推拉即处理程序回调或自身定时器回路
- 的iOS 4.2倍,4.3倍的iOS([更新:]测试了拉只)
- 原始传感器数据或设备运动
- 陀螺或加速度计
- 它运行在一个单独的线程
我假设它是在核心运动框架一个小错误。
如果我使用[CMMotionManager startAccelerometerUpdatesToQueue:[CMMotionManager startAccelerometerUpdatesToQueue:[IMMotionManager startAccelerometerUpdatesToQueue:[[ NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * accelerometerData,NSError * error)一切正常,实际频率与我设置的一样,CoreMotion创建自己的线程:处理来自传感器的原始数据并运行设备运动算法阅读幻灯片WWDC 2010/2011) – Batti
原始加速度计数据使用推送方法来抓取它。 [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
所以不要理解你的权利,你现在已经使用NSOperationQueue解决了这个问题?如果是这样,我建议你编辑你的问题,并在最后粘贴解决方案。因此其他人可以乍一看看解决方案。 – Kay