如何覆盖Android应用程序中的音量按钮的行为?

Jim*_*ler 22 android

我想在我的Android应用程序中将音量按钮用于其他内容.我被告知海豚浏览器这样做.谁知道怎么样?

Seg*_*ult 34

我想它看起来像这样:

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
   if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
       // Do your thing 
       return true;
   } else {
       return super.onKeyDown(keyCode, event); 
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 另外,为了完全抑制默认行为,您还应该捕获事件并在onKeyUp()重写中返回true. (10认同)
  • 甜.你必须'回归真实;' 在做了你的事情来抑制手机的默认音量行为. (6认同)
  • 或者您可以覆盖dispatchKeyEvent(KeyEvent事件)方法. (4认同)
  • dispatchKeyEvent(KeyEvent事件)方法是更好的选择.如果我使用onKeyDown(...)它仍会进入AudioManager并且我得到以下调试消息,即使我返回true:"AudioHardwareQSD(3394):AudioHardware pcm播放将进入待机状态." (4认同)

Moh*_*san 30

在你的活动中,

 @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        int keyCode = event.getKeyCode();
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案.使用onKeyDown或onKeyUp仍会提供更改音量的默认声音. (3认同)