Я пытаюсь заставить мое приложение реагировать на длинное нажатие клавиши на томе вниз с помощью следующего кода:
public boolean onKeyLongPress(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { Log.w("myApp", "LONG PRESS"); } return super.onKeyLongPress(keyCode, event); }
Тем не менее, он только спамает кучу onKeyPress()
событий для уменьшения громкости, а onKeyLongPress()
никогда не onKeyLongPress()
. Мое намерение состоит в том, чтобы оставить громкость «вниз» и «короткие» нажатия в одиночку, и мое приложение реагирует по-разному на громкость.
Может ли кто-нибудь указать, что мне не хватает?
Вы почти там. Вам нужно обнаружить одно и то же ключевое событие в обработчике onKeyPress и начать отслеживать его, чтобы длительное нажатие могло работать. Вот код, который вам нужен:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); }