-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