2015-03-24 55 views
0

我設計的應用程序的一部分要求用戶點擊十次按鈕,然後根據它們點擊的速率返回平均BPM(每分鐘跳動次數)。我注意到在點擊鼠標和顯示按鈕被點擊的模擬器之間似乎有一段延遲,但我不確定這是否意味着什麼。Android Studio模擬器是否延遲?

問題是,它給我的BPM遠不是那麼準確。如果我是正確的,那麼BPM應該等於((按鈕10次)*(每分鐘60秒))/(點擊按鈕10次所花費的秒數),但是這顯然不會使用我的代碼。奇怪的是,一個更準確的倍數超過60的一直是52,我不知道爲什麼。

在情況下,它是一個編碼錯誤,這裏的連接方法:

 public void buttonOnClick(View v){ 
    Button button=(Button) v; 
    TextView counts = (TextView)findViewById(R.id.textView); 
    TextView bpmText = (TextView)findViewById(R.id.textView2); 
    if(total==10){ 
     startTime = System.nanoTime(); 
    } 
    total=total-1; 
    counts.setText(total+""); 
    if(total == 0){ 
     long elapseTime = System.nanoTime() - startTime; 
     double secs = elapseTime/1000000000.0; 
     counts.setText(""); 
     button.setEnabled(false); 
     button.setText(""); 
     bpm = (int)((10*BPM_CONSTANT)/secs); 
     bpmText.setText(bpm+""); 
    } 
} 

BPM_CONSTANT是多,我相信應該是60

是它的計算機,或者是我的邏輯是什麼?或者,也許我的點擊不正確?反饋表示感謝,謝謝。

回答

0

將bpm計算結果投射到int會導致比所需更多的精度損失。改爲使用(int)Math.round(double)