privatevoidkeyPressed(intkeyCode){mHaptic.vibrate();KeyEventevent=newKeyEvent(KeyEvent.ACTION_DOWN,keyCode);mDigits.onKeyDown(keyCode,event);// If the cursor is at the end of the text we hide it.finalintlength=mDigits.length();if(length==mDigits.getSelectionStart()&&length==mDigits.getSelectionEnd()){mDigits.setCursorVisible(false);}}
/** * Vibrate with a given pattern. * * <p> * Pass in an array of ints that are the durations for which to turn on or off * the vibrator in milliseconds. The first value indicates the number of milliseconds * to wait before turning the vibrator on. The next value indicates the number of milliseconds * for which to keep the vibrator on before turning it off. Subsequent values alternate * between durations in milliseconds to turn the vibrator off or to turn the vibrator on. * </p><p> * To cause the pattern to repeat, pass the index into the pattern array at which * to start the repeat, or -1 to disable repeating. * </p> * * @param pattern an array of longs of times for which to turn the vibrator on or off. * @param repeat the index into pattern at which to repeat, or -1 if * you don't want to repeat. */publicvoidvibrate(long[]pattern,intrepeat){if(mService==null){Log.w(TAG,"Failed to vibrate; no vibrator service.");return;}// catch this here because the server will do nothing. pattern may// not be null, let that be checked, because the server will drop it// anywayif(repeat<pattern.length){try{mService.vibratePattern(pattern,repeat,mToken);}catch(RemoteExceptione){Log.w(TAG,"Failed to vibrate.",e);}}else{thrownewArrayIndexOutOfBoundsException();}}
<!-- Vibrator pattern for feedback about touching a virtual key --><integer-arrayname="config_virtualKeyVibePattern"><item>0</item><item>10</item><item>20</item><item>30</item></integer-array>