-1

我正在尝试听一个 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
4

1 回答 1

0

这根本无法完成,因为计时器类在少数毫秒内运行该方法,并且我的按钮单击的一个实例在完全相同的时间内发生的可能性非常低......

于 2014-09-12T16:08:30.107 回答