android - 重写的音量按钮是否影响了后退按钮?

jwb*_*ley 5 android overriding volume back android-audiomanager

使用下面的代码我已停止使用音量按钮,除非我正在播放音频(否则会令人烦恼地改变铃声音量),但"后退"按钮不起作用.

按"后退"应该到我的手机桌面(或退出我的应用程序,就像你期望的那样),但它没有做任何事情.如果我打开菜单,"返回"将关闭菜单,但我不能离开应用程序.

我已将代码复制到我的应用程序中的其他活动,如果我在我的应用程序中打开另一个活动,因为"后退"按钮不起作用,我无法返回主屏幕:)

@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;
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

小智 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);
}
Run Code Online (Sandbox Code Playgroud)

否则,您将捕获所有密钥代码并在检查卷代码后返回false.


Eva*_*van 5

使音量键始终控制媒体音量的更简单,更健壮的方法是将此行插入到您的活动中onCreate():

setVolumeControlStream(AudioManager.STREAM_MUSIC);
Run Code Online (Sandbox Code Playgroud)