你如何使Android应用程序等待?

时间:2013-02-16 22:33:52

标签: java android

我正在尝试使用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()方法中运行了这些布尔值,但我意识到这意味着它会将相同的加速度值传递给所有三个布尔值,所以程序永远不会识别一个步骤。如何在每个布尔检查之间使Android等待,例如10ms,以便加速值更新?

此外,如果有更准确/有效的方法来计算使用原始加速度数据的步骤,请告诉我们!

2 个答案:

答案 0 :(得分:1)

您可以将状态存储在int中并跟踪您所在步骤的哪个部分(在= 1之前,在= 2期间,在= 3之后)。然后你可以做类似

的事情
onSensorChanged(){   
  if(state == 1){
    if(duringStep(accel)){
      state = 2;
      ...
      return;
    }
  }   
  else if(state == 2){
    ... 
  }
}

答案 1 :(得分:0)

有很多方法可以让您等待申请,例如使用wait/notifysee exampleSemaphore

看到这个Pedometer application它正在完成你想要实现的目标