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