我正在使用推送方法收集加速度计和陀螺仪数据(startDeviceMotionUpdatesToQueue:withHandler:和startGyroUpdatesToQueue:[NSOperationQueue mainQueue] 我将这些原始数据与某些阈值进行比较,如果它满足阈值,我确实将标签计数器增加1,我的问题是当我开始检测即读取方法并将其与阈值进行比较时,计数器增加得如此之快,我已阅读in(Simple iPhone motion detect)"如果条件对于每一个动作都会变为真两次" ,如果这就是我发生的事情,我该如何解决问题,我的代码很简单
checkData {
if ( ( acc_2 >= 0.03885) && (gyro_3 >= 0.0003) && (gyro_3 <= 0.00838))
{
i=i+1;
//then Label data
_Counter.text=[NSString stringWithFormat:@"%d",i];
}
else if (( acc_2>= 0.01103) && ( gyro_3 >= 0.00851))
{
/
//update the counter
i=i+1;
_Counter.text=[NSString stringWithFormat:@"%d",i];
}
...... same other conditions
}
然后我在startDeviceMotionUpdatesToQueue:withHandler:block中调用此方法。
[self checkData];
我该怎么做才能解决问题,你能指导我吗? }
答案 0 :(得分:0)
我不是百分之百确定这是否是您所要求的,但是如果您想要更改从硬件接收更新的速率,那么这会降低标签更新的速度(并节省电池),您可以使用CMMotionManager的setGyroUpdateInterval:
和setDeviceMotionUpdateInterval:
来调整刷新率。值为1每秒更新一次。
[_myMotionManager setDeviceMotionUpdateInterval:1];
[_myMotionManager setGyroUpdateInterval:1];