android-覆盖的音量按钮影响了后退按钮?
使用下面的代码,我已经停止了音量按钮的使用,除非我正在播放音频(否则它会令人烦恼地改变振铃器的音量),但是“后退”按钮不起作用 按“后退”键应该可以进入我的手机桌面(或者像你所期望的那样退出我的应用程序),但它什么都没做。如果我打开菜单,“后退”将关闭菜单,但我不能离开应用程序 我已将代码复制到我的应用程序中的其他活动中,如果我在我的应用程序中打开另一个活动,因为“后退”按钮不起作用,我无法返回主屏幕:)android-覆盖的音量按钮影响了后退按钮?,android,overriding,volume,back,android-audiomanager,Android,Overriding,Volume,Back,Android Audiomanager,使用下面的代码,我已经停止了音量按钮的使用,除非我正在播放音频(否则它会令人烦恼地改变振铃器的音量),但是“后退”按钮不起作用 按“后退”键应该可以进入我的手机桌面(或者像你所期望的那样退出我的应用程序),但它什么都没做。如果我打开菜单,“后退”将关闭菜单,但我不能离开应用程序 我已将代码复制到我的应用程序中的其他活动中,如果我在我的应用程序中打开另一个活动,因为“后退”按钮不起作用,我无法返回主屏幕:) 为什么会发生这种情况?尚未测试,但我认为您需要包括一个名为super.onKeyDown的
为什么会发生这种情况?尚未测试,但我认为您需要包括一个名为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。都德,只需将该活动的音频上下文更改为媒体音量: 编辑: 内部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;
}
}
让音量键始终控制媒体音量的一种更简单、更可靠的方法是将此行插入活动的
onCreate()
:
其他按钮是否受到影响?是否确实要阻止用户更改铃声音量?安卓设备上的正常行为是在没有声音播放时更改振铃器音量,在播放时更改媒体音量,无论您使用的是什么应用程序。这就是用户从过去的经验中期望发生的事情。正如你所拥有的,他们需要关闭你的应用程序来更改铃声音量。如果我是你的用户,我会称之为烦恼,而不是功能。嗨,路易,是的,我同意,但这是一个音频流应用程序,大多数用户告诉我,他们打开应用程序时,点击“收听”(流连接时会有一秒或两秒的暂停)感谢你指出:)这是我最后的工作代码:@Override public boolean onKeyDown(int-keyCode,KeyEvent-event事件){if(keyCode==KeyEvent.keyCode_volume_-UP){if(StreamService.int-PLAY_-STATE==0){return true;}else{return false;}else if(keyCode==KeyEvent.keyCode\u VOLUME\u DOWN){if(StreamService.INT\u PLAY\u STATE==0){return true;}else{return false;}else{super.onKeyDown(keyCode,event);}return false;}裤子,这不是我所说的:)对于其他有相同错误的人,这里是:嗨,谢谢。其他人回答了我原来的问题,但事实上我已经用我的代码换了这个,这是一个更好的方法。谢谢:)
audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
@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;
}
}
setVolumeControlStream(AudioManager.STREAM_MUSIC);
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;
}