【问题标题】:How to redefine the "volume" button on android如何重新定义android上的“音量”按钮
【发布时间】:2012-05-28 14:52:39
【问题描述】:

我想重新定义安卓手机上的“音量”按钮。例如,当我按下增加或减少时,音量不会改变,而只会打印一个字。

【问题讨论】:

  • 查看我已经测试过的代码!

标签: android button redefine


【解决方案1】:

只需像这样覆盖 OnKeyDown 方法:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
       //Do whatever you want to do on Volume Up
       return true;
    } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
       //Do whatever you want to do on Volume Down
       return true
    }
    return false;
}

PROTIP:如果您希望所有活动都具有这种行为,而不仅仅是一个,只需在 MainActivity.java(或任何您想调用的名称)中执行此操作,并让所有其他 Activity 扩展 MainActivity。

PROTIP 2:不要这样做,除非绝对必要并且你通知用户它是这样工作的。 Android 用户通常抱怨它在应用之间没有共同的行为。

【讨论】:

    【解决方案2】:

    你必须像这样重写 dispatchKeyEvent() 方法:

      @Override
        public boolean dispatchKeyEvent(KeyEvent event) {
            int action = event.getAction();
            int keyCode = event.getKeyCode();
                switch (keyCode) {
                case KeyEvent.KEYCODE_VOLUME_UP:
                    if (action == KeyEvent.ACTION_UP) {
                        //TODO
                        Toast.makeText(this,"Your First Word",Toast.LENGTH_SHORT).show();
                    }
                    return true;
                case KeyEvent.KEYCODE_VOLUME_DOWN:
                    if (action == KeyEvent.ACTION_DOWN) {
                        //TODO
                        Toast.makeText(this,"Your Second Word",Toast.LENGTH_SHORT).show();
                    }
                    return true;
                default:
                    return super.dispatchKeyEvent(event);
                }
            }
    

    【讨论】:

    • 这样,当您按下音量增大或释放音量减小时,您将创建吐司。 KeyEvent.ACTION_UP 与音量无关,是按下时的动作,KeyEvent.ACTION_DOWN 是松开时的动作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多