我目前正在使用以下代码来计算用户在我的室内导航应用程序中执行的步数。当我将手机放在胸前,屏幕朝上时,它可以很好地计算我走的步数。但常见的操作,如在屏幕上点击或在地图注册步骤中平移也很重要。这非常令人沮丧,因为在平面图中跟踪我的运动将变得非常不准确。有谁知道在这种情况下如何提高跟踪的准确性?任何意见将不胜感激!为了更好地了解我想要做什么,你们可以在http://www.youtube.com/watch?v=wMgIa44mJXY查看类似的 Android 应用程序。谢谢!
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
float xx = acceleration.x;
float yy = acceleration.y;
float zz = acceleration.z;
float dot = (px * xx) + (py * yy) + (pz * zz);
float a = ABS(sqrt(px * px + py * py + pz * pz));
float b = ABS(sqrt(xx * xx + yy * yy + zz * zz));
dot /= (a * b);
if (dot <= 0.9989) {
if (!isSleeping) {
isSleeping = YES;
[self performSelector:@selector(wakeUp) withObject:nil afterDelay:0.3];
numSteps += 1;
}
}
px = xx; py = yy; pz = zz;
}