0

データを収集するために加速度計のみを使用して、Android で歩数計アプリケーションを作成しようとしています。私は携帯電話から多くの生データを収集し、歩行から一歩を構成する特定のパターンを見つけ、加速度計にとって一歩がどのように見えるかをモデル化するために 3 つのブール値を作成しました。

public boolean beforeStep(float y)
    {
        if(y > 1.5 && y < 3){
        return true;
    }
        else
        {
        return false;
        }
    }

public boolean duringStep(float y)
{
    if(y > 3 && y < 5){
        return true;
    }
    else
    {
        return false;
    }
}

public boolean afterStep(float y)
{
    if(y > 1.5 && y < 3){
        return true;
    }
    else
    {
        return false;
    }
}

if(beforeStep(accel)){
    if(duringStep(accel)){
        if(afterStep(accel)){
            stepCount++;
        }
    }
}

最初に onSensorChanged() メソッドでこれらのブール値を実行しましたが、これは 3 つのブール値すべてに同じ加速度値を渡すことを意味するため、プログラムがステップを認識しないことに気付きました。加速値が更新されるように、各ブール値チェックの間に Android を 10ms 待機させるにはどうすればよいですか?

また、生の加速度データを使用して歩数をカウントするためのより正確で効率的な方法があれば、私に知らせてください!

4

2 に答える 2

1

状態を int に格納し、ステップのどの部分にいるかを追跡できます (前 = 1、中 = 2、後 = 3)。次に、次のようなことができます

onSensorChanged(){   
  if(state == 1){
    if(duringStep(accel)){
      state = 2;
      ...
      return;
    }
  }   
  else if(state == 2){
    ... 
  }
}
于 2013-02-16T22:39:50.897 に答える
0

アプリケーションを待機させる方法は多数あります。たとえば、 を使用wait/notifyします。またはセマフォを参照してください

あなたが達成しようとしていることを正確に実行しているこの歩数計アプリケーションを参照してください

于 2013-02-16T22:40:27.623 に答える