1

これは、ランダムな時間振動するコードの一部です。

public boolean dispatchTouchEvent(MotionEvent ev) {            
    SharedPreferences appSettings = PreferenceManager.getDefaultSharedPreferences(this);        
    boolean doVibration = appSettings.getBoolean("vibrationCue", true);      

    // determine whether estimation or cue mode is active        
    if (!currentlyEstimating) {          
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {      
            Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);         
            // determine random timespan for cue(s)          
            initCueLength();          
            if (doVibration)             
            {             
                loopnum = 0;         
                while(loopnum < 5) {           
                     v.vibrate(cueLength);         
                    loopnum ++;         
                }         
            }
        }
    }
}

たとえば、振動を 5 回繰り返します。しかし、while ループは機能しません。何が問題なのか教えていただけますか?

4

1 に答える 1

3

問題は、v.vibrate非同期で動作することです。つまり、指定された時間待機しないため、これらの5つの呼び出しはほぼ瞬時に発生し、1つの呼び出しと同じ効果があります。

目的の効果を得るには、振動パターンを定義します。

http://android.konreu.com/developer-how-to/vibration-examples-for-android-phone-development/

于 2012-08-20T08:28:41.367 に答える