Захват двух физических нажатий кнопок - PullRequest
0 голосов
/ 29 октября 2010

Как бы я зафиксировал два нажатия любой из физических кнопок (включая оптическую кнопку)?

Что-то вроде того, что QuickDesk делает с двумя нажатиями кнопки Домой.

Спасибо

1 Ответ

0 голосов
/ 29 октября 2010

Просто идея:
Если в Android уже нет API, который мог бы справиться с этим, то вы могли бы попытаться отложить вывод о единственном / двойном / тройном / и т.д.щелкните, установив небольшой тайм-аут (скажем, ~ 300 мс) в этом переопределенном обработчике кнопок встроенного программного обеспечения, и в то же время подсчитайте количество вызовов, сделанных на эту конкретную кнопку, проверьте его, когда отметится таймер, и вы его получили.


Редактировать:

Вот что-то из головы.Отрегулируйте его немного для более оптимальной производительности.

private Timer mDoubleClickTimer;
private boolean possibleDoubleClick = false;

@Override
public boolean onKeyUp(int keyCode, KeyEvent event){
    if(keyCode==KeyEvent.KEYCODE_MENU){ //or whatever key you want to check for double-clicks
        if(mDoubleClickTimer!=null) {mDoubleClickTimer.cancel();}
        if(!possibleDoubleClick){
            possibleDoubleClick = true;
            mDoubleClickTimer = new Timer();
            mDoubleClickTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    //single click detected
                    //handle it here
                    possibleDoubleClick = false;
                }
            },300);
        }else{
            //double click detected
            //handle it here
            possibleDoubleClick = false;
        }
//... other key processing if you need it
return false;
}
...