該当アクティビティのdispatchKeyEventをOverrideすることで実現できる。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP || event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
//行いたい動作
}
return true;
}
return super.dispatchKeyEvent(event);
}
8行目のreturn trueが重要で、これによりキーの標準動作(音量キーならば
着信音量の変更)が行われなくなる。ifに引っかからず、10行目まで行けば
標準動作が行われる。
つまり5行目からのコードを次のようにしてしまうと、
if (event.getAction() == KeyEvent.ACTION_DOWN) {
//行いたい動作
return true; ←この位置
}
ACTION_UPイベントで着信音量が変更されてしまう。(ここでしばらく悩んで
しまった。)
ifでの捕まえ方、trueの返す位置で様々な動作が可能で、求める動作に応じて
考えなければならないポイント。
0 件のコメント:
コメントを投稿