2014-09-12 17 views
-1

我試圖聽一個android硬件按鈕手動取消倒數計時器。從Android的內部類使用硬件按鍵偵聽器

我環顧四周,解決方案似乎是重寫按鈕的「onKeyUp」或「onKeyDown」。 問題是我認爲我只能爲活動類或UI元素編寫重寫方法。但是,我不知道如何聽Java類內部類的硬件關鍵事件。

在我目前的實施中,在重寫方法是隨機放在我的活動,我的定時器對象的取消被無限地執行...

請幫幫忙!

編輯: 我的建議如下:將聽衆轉移到當前焦點。我從我的timer類的onTick方法中調用這個方法。但仍然沒有運氣。調試器顯示重寫方法永遠不會被調用。在我的應用程序仍按鈕點擊結果音量上/下。

public void getVolBtnEvent(){ 

    parent.setOnKeyListener(new View.OnKeyListener() { 

     @SuppressWarnings("unused") 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      // TODO Auto-generated method stub 


      if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP || event.getKeyCode()== KeyEvent.KEYCODE_VOLUME_UP) 
       volBtnClicked++;      


      if (volBtnClicked ==1){ 

       if (currentV ==1 && MyConstants.RHYTHM_WITH_VOL_BTN) 
        processTouchEventR();} 
      else if (volBtnClicked ==2){ 

       if (currentV ==1 && MyConstants.RHYTHM_WITH_VOL_BTN) { 
        stopTimerR(); 
        parent.setEnabled(false); 
        writeToFile ("blah"); 
        getConfirmation(); 
       } 
      } 

      return true; 

     }// end of onkey 
    }); 


}//end of getVolbtn 
+0

您應該覆蓋具有當前焦點的控件上的方法。你可以在背景佈局視圖AFAIK – 2014-09-12 13:49:52

+0

得到它感謝!順便問一下,你在什麼基礎上排名這個問題? – user3793196 2014-09-12 14:08:10

+0

不知道。不要問我,因爲它不是我:) – 2014-09-12 14:08:57

回答

0

這根本無法完成,因爲一個定時器類運行一個小的毫秒數的方法和機會,我按一下按鈕的一個實例是在確切相同的時間內發生的事情是非常低...