2013-02-16 146 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