单击音量键时禁用声音

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击音量键时禁用声音相关的知识,希望对你有一定的参考价值。

在我的应用程序中,我重写volume upvolume down键。问题是当用户单击这两个键中的一个时,会播放声音。我想以某种方式禁用/静音这个声音。

这是我的代码片段:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    switch (keyCode) {

        case KeyEvent.KEYCODE_VOLUME_DOWN: {
            // do something when user click volume down key

            return true;
        }
        case KeyEvent.KEYCODE_VOLUME_UP: {
            // do something when user click volume up key

            return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}
答案

使用onKeyDown或onKeyUp仍会提供更改音量的默认声音。请改用dispatchKeyEvent。

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int keyCode = event.getKeyCode();
    switch (keyCode) {
    case KeyEvent.KEYCODE_VOLUME_UP:
    case KeyEvent.KEYCODE_VOLUME_DOWN:
        return true;
    default:
        return super.dispatchKeyEvent(event);
    }
}
另一答案

我为自己想出来了。按下音量键时有一种方法可以停止声音。您需要无限播放空音,因此当用户单击音量键时,它“尝试”更改媒体音量,因此没有播放单击声音。您可以通过搜索empty sound下载空声,然后将其放入项目中的raw文件夹中。最后一步是覆盖音量键。

这是您需要的代码:

定义MediaPlayer变量。

private MediaPlayer infinite_sound;

onResume()你需要无限播放空音。

@Override
protected void onResume() {
    super.onResume();

    infinite_sound = MediaPlayer.create(this, R.raw.empty);
    infinite_sound.setLooping(true);
    infinite_sound.start();
}

onPause()你需要停止声音。

@Override
public void onPause() {
    super.onPause();

    infinite_sound.release();
}

最后重写按钮的动作。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_DOWN: {
            // Do something when volume down button is clicked

            return true;
        }
        case KeyEvent.KEYCODE_VOLUME_UP: {
            // Do something when volume up button is clicked

            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

以上是关于单击音量键时禁用声音的主要内容,如果未能解决你的问题,请参考以下文章

请问哪位电脑大神知道这个板载设备HD-Audio/音频设备禁用了怎么解决呀,现在电脑没声音了,驱动

在android中禁用按钮单击声音

win7音量合成器怎么添加设备

点击 Android/Java 列表视图项时,如何禁用单击声音?

最小化应用程序时停止播放声音和音量

如何在Ubuntu启动时禁用声音效果?