-(void) play
{
CMMotionManager *motionManager = [[CMMotionManager alloc] init];
[motionManager startDeviceMotionUpdates];
BOOL timeReached = NO;
while(!self.stopButtonPressed)
{
if(motionManager.deviceMotion.userAcceleration.y >= ... && motionManager.deviceMotion.userAcceleration.y <= ...)
{
//start timer
}
while(motionManager.deviceMotion.userAcceleration.y >= ... && motionManager.deviceMotion.userAcceleration.y <= ... && !timeReached)
{
if(//check timer & if timer is >=300ms)
{
timeReached = YES;
NSLog(@"acceleration on Y-axis stayed between ... & .. for at least 300ms");
}
}
}
}
user1073400
问问题
197 次
1 回答
2
似乎您以错误的方式进行此操作;而不是运行时钟,您应该设置accelerometerUpdateInterval
为您正在寻找并startAccelerometerUpdatesToQueue:withHandler:
用于接收数据的任何内容。
从苹果文档:
以指定的间隔处理运动更新
为了在特定的时间间隔接收运动数据,应用程序调用一个“start”方法,该方法采用一个操作队列(NSOperationQueue 的实例)和一个特定类型的块处理程序来处理这些更新。运动数据被传递到块处理程序中。更新频率由“间隔”属性的值决定。
加速度计。设置 accelerometerUpdateInterval 属性以指定更新间隔。调用 startAccelerometerUpdatesToQueue:withHandler: 方法,传入一个 CMAccelerometerHandler 类型的块。加速度计数据作为 CMAccelerometerData 对象传递到块中。
设置完所有内容后,让它运行。当您收到来自块的完成通知时,请查看您收到的数据。
于 2012-08-02T14:26:46.663 回答