使用下面的代码我已停止使用音量按钮,除非我正在播放音频(否则会令人烦恼地改变铃声音量),但“后退”按钮不起作用。
按'返回'应该到我的手机桌面(或退出我的应用程序,就像你期望的那样),但它没有做任何事情。如果我打开菜单,“返回”将关闭菜单,但我不能离开应用程序。
如果我在我的应用程序中打开另一个活动,我已将代码复制到我的应用程序中的其他活动,因为“后退”按钮不起作用,我无法返回主屏幕:)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Suppress the use of the volume keys unless we are currently listening to the stream
if(keyCode==KeyEvent.KEYCODE_VOLUME_UP) {
if(StreamService.INT_PLAY_STATE==0){
return true;
}else{
return false;
}
}
if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN) {
if(StreamService.INT_PLAY_STATE==0){
return true;
}else{
return false;
}
}
return false;
为什么会这样?
答案 0 :(得分:5)
没有经过测试,但我认为你需要在你调用super.onKeyDown时包含一个else,即:
if(keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
code
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
more code
} else {
super.onKeyDown(keyCode, event);
}
否则,您将捕获所有密钥代码并在检查卷代码后返回false。
答案 1 :(得分:5)
让音量键始终控制媒体音量的一种更简单,更健壮的方法是将此行插入到您的活动onCreate()
中:
setVolumeControlStream(AudioManager.STREAM_MUSIC);
答案 2 :(得分:3)
老兄,只需将该活动的音频上下文更改为媒体卷:
http://developer.android.com/reference/android/media/AudioManager.html
编辑:
private AudioManager audio;
在onCreate中:
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
覆盖onKeyDown:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
return true;
default:
return false;
}
}
答案 3 :(得分:0)
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
//your code
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
//your code
return true;
} else {
super.onKeyDown(keyCode, event);
}
return true;
}