我想在Volume Up和Down上接受过量输入.目前我的代码是:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.v(TAG, event.toString());
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
mLamp.moveBackward();
return false;
}
else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
mLamp.moveForward();
return false;
}
return true;
}
public boolean onKeyUp(int keyCode, KeyEvent event) {
Log.v(TAG, event.toString());
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
return false;
}
else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这会触发mLamp.moveBackward()和mLamp.moveForward()功能,但它仍然会改变铃声的音量.我需要做些什么才能使铃声响度不变?
小智 8
如果处理事件,则返回true非常重要,但如果您没有处理事件,最好确保事件仍由超类处理.这是我的应用程序中的一些代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ||
keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
changeColor(keyCode);
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN ||
keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// do nothing
return true;
}
return super.onKeyUp(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,超类调用是必要的,以便我的设备上的其他硬件按钮继续工作.
| 归档时间: |
|
| 查看次数: |
13736 次 |
| 最近记录: |