사용자가 볼륨 업 버튼을 눌렀다 놓을 때까지 시간을 측정하고 싶습니다 (예 : 사용자가 볼륨 업 버튼을 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;
}
불행히도 그것은 작동하지 않습니다 (실행되지 않습니다). 내가 그것을 아주 깊이 분석했을 때 (debug, currentTime과 lastVolumeUpPressingTime의 차이점을 보여주는 토스트 추가) 나는 아주 놀라운 것을 발견했다. 볼륨 버튼을 아주 빨리 누르고 눌렀다가 나는 이전과 다른 점이 있습니다. 100 밀리 초. 그러나 내가 그것을 누르고 꽤 오래 전에 그것을 지킬 때. 2 초, 나는 차이를 얻는다. 20 밀리 초.
무엇인가 잘못되었지만 왜 ??????