2013-02-16 108 views
0

我正在尝试使用Android仅使用加速度计来收集数据的计步器应用程序。我从电话中收集了大量原始数据,并发现某些模式构成了我步态的一步,并创建了3个布尔模型来模拟加速度计的一个步骤。如何让android应用程序等待?

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,以便更新加速度值?另外,如果有更准确/有效的方法去计算使用原始加速度数据的步骤,请让我知道!

回答

1

您可以将状态存储在int中,并跟踪您所在步骤的哪一部分(在= 1之前,在= 2之后,在= 3之后)。然后,你可以不喜欢

onSensorChanged(){ 
    if(state == 1){ 
    if(duringStep(accel)){ 
     state = 2; 
     ... 
     return; 
    } 
    } 
    else if(state == 2){ 
    ... 
    } 
} 
+0

哇,只是试了一下,它工作得很好!当我拿到15时,计算了14个步骤。只需要稍微调整一下我的阈值,谢谢你的帮助! – user1781027 2013-02-16 22:52:15