現在、次のコードを使用して、ユーザーが屋内ナビゲーション アプリケーションで実行した歩数を数えています。画面を上に向けて携帯電話を胸の高さに持っているので、かなりうまく歩数がカウントされます。ただし、画面をタップしたり、マップをパンしたりするなどの一般的なアクションも同様にカウントされます。フロアプラン内での私の動きの追跡が非常に不正確になるため、これは非常にイライラします. この場合、追跡の精度を向上させる方法を知っている人はいますか? どんなコメントでも大歓迎です!私がやろうとしていることをよりよく理解するには、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;
}