0
我想在用戶按下音量增加按鈕之間確定時間並釋放它(例如,如果用戶保持音量增大按鈕按下2秒,應用程序將執行某些操作,如果4秒鐘該應用程序將執行某些操作不同)。android onKeyDown onKeyUp測量時間
乍一看這似乎是很容易的事情。爲了控制,我在我的活動代碼以下部分:
public final static long MINIMUM_VOLUME_UP_PRESSING_TO_ACTIVATE_DEACTIVATE=2000;
public final static long MAXIMUMT_VOLUME_UP_PRESSING_TO_ACTIVATE_DEACTIVATE=5000;
public boolean onKeyDown (int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
lastVolumeUpPressingDown=System.currentTimeMillis();
return true;
}
return false;
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
long currentTime = System.currentTimeMillis();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if ((currentTime-lastVolumeUpPressingDown>=MINIMUM_VOLUME_UP_PRESSING_TO_ACTIVATE_DEACTIVATE) &&
(currentTime-lastVolumeUpPressingDown<=MAXIMUMT_VOLUME_UP_PRESSING_TO_ACTIVATE_DEACTIVATE)) {
,
do something
return true;
}
return false;
}
遺憾的是它不炒鍋(做某事不執行)。當我深入分析它時(調試,添加顯示當前時間和lastVolumeUpPressingTime之間差異的吐司),我發現了非常令人驚訝的事情。如果我很快地按下並釋放音量按鈕,我可以看到前面的區別。 100毫秒。但是,當我按下並保持很久以前。 2秒,我得到了不同的前。 20毫秒。
有什麼不對,但爲什麼??????