我正在尝试听一个 android 硬件按钮来手动取消倒数计时器。
我环顾四周,解决方案似乎是覆盖按钮的“onKeyUp”或“onKeyDown”。问题是我认为我只能为活动类或 UI 元素编写覆盖方法。但是,我不知道如何从 Java 内部类中监听此类硬件按键事件。
在我当前的实现中,将覆盖方法随机放入我的活动中,我的计时器对象的取消被无限执行......
请帮忙!
编辑:我按照建议做了:将侦听器移动到当前焦点。我从计时器类的 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