我必须开发与此Pedometer App相同的功能
我已经非常详细地观察了此Pedometer app。
这不是一个完美的计步器应用程序。例如,如果您停留/坐在一处并握手,它还会检测步数和距离。
忽略这种理想行为和重力行为,因为已经在此应用程序的说明中提到您应该绑好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链接。我发现没有什么能达到这个水平。
请帮忙。
最佳答案
一直在打呼sn,不是步调,而是有一些相同的问题。没有实际答案,但有一些建议:
violence
)来使用可变阈值。 另一个建议
测试这只野兽“活着”将是不可能的。 (我可以想像您在手持便携式计算机的同时试图慢跑,试图使调试器控制台集中注意力。)您应该做的是首先装配您的应用程序以制作一些包含原始内容的录音(即,写入文件)测量,然后重新安装您的应用程序(此处#ifdefs会很方便),以便能够“回放”这些测量值,以便您可以通过调试器逐步检查应用程序并观察其行为。
关于iphone - 如何使用加速度计计算步数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8310250/