Обработка длинных нажатий клавиш в Android 1.5 - PullRequest
1 голос
/ 21 апреля 2010

Я хочу обработать нажатие клавиши и долгое нажатие клавиши для кода клавиши KEYCODE_BACK (кнопка возврата). Может ли кто-нибудь предложить мне, как это сделать в Android 1.5 (API уровень 3).

Вот код.

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {

                if(event.getRepeatCount()==0) {
                   // normal key press
                   //Do something here
                   // But problem is, this code is hitting for long press also, how to avoid this
                } else {
                    // Long key press
                    //Do something here
                }
                // Always consume back key event by returning true
                //so that default behavior of back is overrided
                return true;
            }
        return super.onKeyDown(keyCode, event);
    }

Проблема в том, что код обычного нажатия клавиш также выполняется при длительном нажатии. Я хочу избежать этого.

Примечание. Я не могу использовать такие методы, как onKeyLongPress(), startTracking() и т. Д., Поскольку они представлены на уровне API 5

1 Ответ

0 голосов
/ 22 апреля 2010

Фактический код диспетчеризации событий не имеет концепции длительных нажатий, и все, что вам нужно сделать, это синхронизировать их в главном потоке приложения, приложение может работать достаточно медленно, чтобы не обновляться в течение длительного нажатия тайм-аут.

Это потому, что в Android 1.5 нет реальной обработки событий нажатия клавиш. В Android 2.0 представлен настоящий API-интерфейс KeyEvent и функции обратного вызова для длительных нажатий.

...