2011-03-13 67 views
0

目前我正在開發一個可以振動莫爾斯電碼的應用程序。在手機上顯示振動的指示器

我使用此代碼振動模式:

int dot = 100; 
int dash = 220; 
int short_gap = 200; 
int medium_gap = 700; 
s = new long[] {0, dot, short_gap, dash, medium_gap} 
Vibrator vibrator; 
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);  
vibrator.vibrate(s, -1); 

如何添加一個指標來表示,如果我的申請被振動點或破折號?

我知道我可以使用for循環來遍歷long[],然後使用if else語句來更改textview背景顏色以指示模式中的更改。但是,如何讓for循環保持在每次更改的振動ms內?

回答

1
dot = new long[] {200, 100}; 
dash = new long[] {700, 220}; 
String s = "01"; 
for (int i = s.length() - 1, i >= 0, i--) { 
    if (s.charAt(i) == "0") { 
    // CHANGE TEXTVIEW HERE 
    vibrator.vibrate(dot, -1); 
    } 
    else { 
    vibrator.vibrate(dash, -1); 
    } 
} 

因爲它需要幾MIL-秒vibrate之前執行的代碼,並開始振動,你可能需要相應地縮短時間,如果你想準確。


順便提一下,根據api,你原來的代碼應該是

s = new long[] { short_gap, dot, medium_gap, dash} 
+0

沒錯ü是正確的..我的原代碼與0,點,short_gap,破折號,medium_gap開始。我會嘗試看看我是否可以修改你的代碼,因爲我的分類器由36個字符組成,我使用System.coppyarray將它們中的每一個放入很長的數組中,具體取決於文本的字符數。 – ben 2011-03-13 13:34:17

+0

@benjamin lee ,是我的解決方案(至少)好嗎? - -b沒有信心... – 2011-03-13 13:35:59

+0

你的解決方案是一個工作的,至少從我們的代碼,但我需要的東西,我可以適應我的代碼,我會給它一個嘗試:) – ben 2011-03-13 13:37:44