单击音量键时禁用声音
Disable sound when volume keys clicked
在我的应用程序中,我覆盖了 volume up
和 volume down
键。问题是当用户单击这两个键之一时,会播放声音。我想以某种方式disable/mute这个声音。
这是我的代码片段:
@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);
}
我自己想出来了。
有一种方法可以在按下音量键时停止声音。您需要无限播放空声音,因此当用户单击音量键时 "trying" 会更改媒体音量,因此不会播放点击声音。
您可以通过搜索 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);
}
使用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);
}
}
在我的应用程序中,我覆盖了 volume up
和 volume down
键。问题是当用户单击这两个键之一时,会播放声音。我想以某种方式disable/mute这个声音。
这是我的代码片段:
@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);
}
我自己想出来了。
有一种方法可以在按下音量键时停止声音。您需要无限播放空声音,因此当用户单击音量键时 "trying" 会更改媒体音量,因此不会播放点击声音。
您可以通过搜索 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);
}
使用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);
}
}