编辑:添加了一个全局,现在它正在运行。但我仍有疑虑..请继续阅读:)
我想在需要的时候在Y轴上进行加速,并在代码的不同部分使用它。在这个例子中,我在while循环中使用它来进行测试..
我的代码正在运行,但我是否正确使用UpdateToQueue ...方法,还是这种“非正统”的方式来实现我的目标?
我将更新间隔设置为30毫秒,您认为这是一个“安全”的更新间隔吗?有人告诉我,在选择一个时我应该小心,因为当前或以后的硬件/ iOS更新可能无法跟上这样的间隔,这是真的吗?
double myAcceleration; // a global..
-(void) play // my "main" method..
{
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 0.03; // update every 30ms
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue]
withHandler:^(CMDeviceMotion *motion, NSError *error)
{
myAcceleration = motion.userAcceleration.y;
}
];
while(!self.stopButtonPressed)
{
NSLog(@"Y-Axis acceleration is %f", myAcceleration);
}
}
答案 0 :(得分:3)
可以这样使用。
关于时间间隔:当前最大更新限制为100Hz(每秒100次,一次加速度计更新为0.01秒),最小值为10Hz(AFAIK)。如果您在此类范围内设置了时间间隔,那么苹果小工具的当前版本和下一版本肯定会受到支持。但你不能依赖默认的时间间隔,并祈祷它在任何地方都是一样的,因为苹果可能改变最小和最大(例如一些新的IC芯片将支持500Hz刷新率)范围,因此默认也会改变。 / p>
答案 1 :(得分:3)
最后。我找到了自己问题的答案:)
Apple docs:
选择动作事件更新间隔
使用Core Motion请求运动数据时,指定更新间隔。您应该选择满足应用需求的最大间隔。间隔越大,向您的应用传递的事件就越少,从而延长了电池寿命。
表4-1列出了一些常见的更新频率并说明了您的情况 可以处理在该频率下生成的数据。很少有应用需要 加速事件每秒发送100次。
事件频率(Hz)用法
10-20 适用于确定设备的当前方向向量。
30-60 适用于使用加速计进行实时用户输入的游戏和其他应用程序。
70-100 适用于需要检测高频运动的应用。例如,您可以使用此间隔来检测用户是否正在快速摇动设备或摇动设备。
您可以将报告间隔设置为10毫秒(ms),这相当于100 Hz的更新速率,但大多数应用程序运行时间间隔较长。
简而言之,正如波格丹所说:10Hz-100Hz