我正在开发一个Android应用程序,我的应用程序会在启动时发出警报,但我想禁用外部音量按钮,这样当手机发出警报时,用户无法关闭警报体积。我已经在Android手机上测试了Android版本2.3.5,但它无法正常工作。以下是我的编码。希望有人可以帮助我......谢谢。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP){
Toast.makeText(this, "Volume Up", Toast.LENGTH_LONG).show();
return true;
}
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN){
Toast.makeText(this, "Volume Down", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
答案 0 :(得分:11)
尝试覆盖dispatchKeyEvent(KeyEvent event)
:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
boolean result;
switch( event.getKeyCode() ) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
result = true;
break;
default:
result= super.dispatchKeyEvent(event);
break;
}
return result;
}
答案 1 :(得分:0)
最好的方法是在一个音频流(AudioManager.STREAM_ALARM)上播放闹钟声音,并使音量按钮与另一个音频流(setVolumeControlStream(AudioManager.STREAM_MUSIC);
)相关联。 http://developer.android.com/training/managing-audio/volume-playback.html#HardwareVolumeKeys
答案 2 :(得分:0)
只需返回true即可禁用卷操作。 现在您可以通过onVolumeDown()和onVolumeUp()函数执行其他操作。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN)
onVolumeDown();
if(keyCode==KeyEvent.KEYCODE_VOLUME_UP)
onVolumeUp();
return true;
//return super.onKeyDown(keyCode, event);
}