Как считать шаги с помощью акселерометра?

Мне нужно разработать те же функции, что и в этом приложении «Шагомер»

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

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

Игнорируйте это идеальное и гравитационное поведение, потому что в инструкциях к этому приложению уже упоминалось, что вам следует привязать свой iPhone или положить его в карман, чтобы считать шаги. Таким образом, у меня есть обнаружил, что это приложение работает очень хорошо, оно обнаруживает почти все шаги.

Моя проблема: я разработал один образец в соответствии с приведенной выше логикой, но он не работает до этого уровня. Например, иногда он определяет одновременно 2–3 шага. И иногда нормально работает.

Мой код:

In 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 шага.

Требуется ли какая-либо другая реализация для этого или какие-то настройки в этом коде?

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

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

9
задан Aberrant 29 November 2011 в 15:06
поделиться