我需要开发与这个计步器应用相同的功能。
我已经非常详细地观察了这个计步器应用。
它不是一个完美的计步器应用。例如,如果你呆在一个地方并摇动手,它也会检测到步数和距离。
忽略这种理想的重力行为,因为在这个应用程序的说明中已经提到,你应该把iPhone绑在身上或放在口袋里来计算步数。通过这种方式,我发现这个应用程序工作得非常好,几乎可以检测到所有的步数。
我的问题是:我根据以上逻辑开发了一个样本,但它的工作水平还没有达到那个水平。例如,有时它会同时检测到2-3个步骤。而有时它的工作正常。
我的代码:
在viewDidLoad中:
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:0.2]
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
const float violence = 1.2;
static BOOL beenhere;
BOOL shake = FALSE;
if (beenhere) return;
beenhere = TRUE;
if (acceleration.x > violence || acceleration.x < (-1* violence))
shake = TRUE;
if (acceleration.y > violence || acceleration.y < (-1* violence))
shake = TRUE;
if (acceleration.z > violence || acceleration.z < (-1* violence))
shake = TRUE;
if (shake) {
steps=steps+1;
}
beenhere = false;
}
我做错了什么?我无法确定阈值。如果我将其设为高,它就无法检测到微小的步骤。如果我将它设为小,它会同时注册3-4个步骤。
这需要其他实现方式?还是需要对代码进行一些调整?
我已经看过所有其他类似的Stack Overflow链接,但没有找到能达到这个水平的解决方案。
请帮忙。