Как считать шаги, используя акселерометр?

Я должен разработать такую же функциональность, как этоПриложение Шагомер

Я наблюдал этоПриложение Шагомер в очень высокой детализации.

Это не идеальное приложение шагомер. Например, если вы остаетесь / сидите в одном месте и пожимаете руку, он также определяет количество шагов и расстояние.

Игнорируйте это идеальное и серьезное поведение, потому что в инструкциях этого приложения уже упоминалось, что вы должны связать свой 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 шага одновременно.

Есть ли какая-либо другая реализация, необходимая для этого, или некоторые изменения в этом коде?

Я видел все другие подобные ссылки переполнения стека. Ничто, что я нашел, не выполняет до этого уровня.

Пожалуйста помоги.

Ответы на вопрос(2)

Ваш ответ на вопрос