【发布时间】:2012-05-28 14:52:39
【问题描述】:
我想重新定义安卓手机上的“音量”按钮。例如,当我按下增加或减少时,音量不会改变,而只会打印一个字。
【问题讨论】:
-
查看我已经测试过的代码!
我想重新定义安卓手机上的“音量”按钮。例如,当我按下增加或减少时,音量不会改变,而只会打印一个字。
【问题讨论】:
只需像这样覆盖 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 用户通常抱怨它在应用之间没有共同的行为。
【讨论】:
你必须像这样重写 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 是松开时的动作。