Iphone 更新设备移动的频率设置更新间隔it';实际频率是多少?
通过分析deviceMotion.timestamp,我发现deviceMotion中设置的更新频率不是实际的更新频率 为了测试,我实现了一个应用程序,如下所示Iphone 更新设备移动的频率设置更新间隔it';实际频率是多少?,iphone,core-motion,Iphone,Core Motion,通过分析deviceMotion.timestamp,我发现deviceMotion中设置的更新频率不是实际的更新频率 为了测试,我实现了一个应用程序,如下所示 update frequency actual frequency average time between two calls 1/10.000000 10.232265 0.097730 1/20.000000 19
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
有人注意到了同样的事情?
这是一个bug?例如,有些人报告了相同的现象,但仍然没有答案。令人惊讶的是,你是第一个报告更高实际频率的人。我对这个做了几次测试,你走哪条路都没有真正的区别
- 推或拉,即处理程序回调或自己的计时器循环
- iOS 4.2x、iOS 4.3x([更新:]仅使用pull测试)
- 原始传感器数据或设备运动
- 陀螺仪或加速度计
- 在单独的线程中运行它
我认为这是核心运动框架中的一个小缺陷。我使用的是推送(我在文档中读到,它是获取数据的更精确的方法),iOS 4.3x iPhone4,只是在设备运动中。如果我使用[CMMotionManager StartAccelerometerUpdatesQueue:[NSOperationQueue currentQueue],实际频率与该设置不同使用Handler:^(CMAccelerometerData*accelerometerData,NSError*error)一切正常,实际频率与我设置的频率相同,CoreMotion创建自己的线程:处理来自传感器的原始数据并运行设备运动算法(我正在读幻灯片WWDC 2010/2011)使用push方法获取原始加速计数据。[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]因此,您是否正确理解,您现在已经使用NSOperationQueue解决了问题?如果是,我建议您编辑问题并将解决方案粘贴到最后。这样其他人可以第一眼看到解决方案。我没有解决问题,但我测试了问题仅存在于设备运动中(用户加速度、姿态、旋转率、重力)不在CmAccelerMeterData和CMGyroDataAh中,我看到了-很抱歉没有准确阅读;)也许我没有在iOS 4.3上运行这个组合。我在自己的线程中使用pull方法来获得更多控制。无论如何,有价值的信息我支持你的问题。