2014-09-12 64 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

这根本无法完成,因为一个定时器类运行一个小的毫秒数的方法和机会,我按一下按钮的一个实例是在确切相同的时间内发生的事情是非常低...