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毫秒。
有什么不对,但为什么??????