Просто, чтобы завершить предыдущие ответы, если вам нужна поддержка длинных щелчков, вы должны проверить, как долго клавиша не работала, используя:
event.getEventTime() - event.getDownTime() > ViewConfiguration.getLongPressTimeout()
В итоге код будет выглядеть так:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_UP) {
if (event.getEventTime() - event.getDownTime() > ViewConfiguration.getLongPressTimeout()) {
//TODO long click action
} else {
//TODO click action
}
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_UP) {
if (event.getEventTime() - event.getDownTime() > ViewConfiguration.getLongPressTimeout()) {
//TODO long click action
} else {
//TODO click action
}
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}