/*Google AdSense自動広告*/

2013年11月6日水曜日

【Android開発Tips】音量キーの動作を横取りする

該当アクティビティの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 件のコメント:

コメントを投稿