是否有一种方法可用于使应用程序按钮的全局声音静音?
AudioManager.setStreamMute()
。欢迎使用下面的代码。
//mute audio
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
amanager.setStreamMute(AudioManager.STREAM_ALARM, true);
amanager.setStreamMute(AudioManager.STREAM_MUSIC, true);
amanager.setStreamMute(AudioManager.STREAM_RING, true);
amanager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
//unmute audio
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
amanager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
amanager.setStreamMute(AudioManager.STREAM_ALARM, false);
amanager.setStreamMute(AudioManager.STREAM_MUSIC, false);
amanager.setStreamMute(AudioManager.STREAM_RING, false);
amanager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
提供的答案似乎已从 android M(API 23)中弃用,因此这提供了替代解决方案
public void MuteAudio(){
AudioManager mAlramMAnager = (AudioManager) aActivity.getSystemService(aContext.AUDIO_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_MUTE, 0);
} else {
mAlramMAnager.setStreamMute(AudioManager.STREAM_NOTIFICATION, true);
mAlramMAnager.setStreamMute(AudioManager.STREAM_ALARM, true);
mAlramMAnager.setStreamMute(AudioManager.STREAM_MUSIC, true);
mAlramMAnager.setStreamMute(AudioManager.STREAM_RING, true);
mAlramMAnager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
}
}
public void UnMuteAudio(){
AudioManager mAlramMAnager = (AudioManager) aActivity.getSystemService(aContext.AUDIO_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_UNMUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_UNMUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_UNMUTE,0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_UNMUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_UNMUTE, 0);
} else {
mAlramMAnager.setStreamMute(AudioManager.STREAM_NOTIFICATION, false);
mAlramMAnager.setStreamMute(AudioManager.STREAM_ALARM, false);
mAlramMAnager.setStreamMute(AudioManager.STREAM_MUSIC, false);
mAlramMAnager.setStreamMute(AudioManager.STREAM_RING, false);
mAlramMAnager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
}
}
希望这有帮助...
Android中有四种声音设置:
首先,创建
AudioManager
类的对象:
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
如果您想设置音量,请使用这些:
amanager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,
AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
amanager.setStreamVolume(AudioManager.STREAM_ALARM,
AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
amanager.setStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
amanager.setStreamVolume(AudioManager.STREAM_RING,
AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
您可以使用 setRingerMode() 方法来执行此操作
AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT);
静音和振动RINGER_MODE_VIBRATE标志
取消静音:RINGER_MODE_NORMAL
您可以使用 AudioManager.adjustStreamVolume():
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_TOGGLE_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_ALARM, AudioManager.ADJUST_TOGGLE_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_TOGGLE_MUTE,0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_TOGGLE_MUTE, 0);
mAlramMAnager.adjustStreamVolume(AudioManager.STREAM_SYSTEM, AudioManager.ADJUST_TOGGLE_MUTE, 0);
从技术上讲,不存在全球卷这样的东西。巴尔加夫的回答应该会让你走上正轨。 AudioManager 类可以控制许多不同的“流”,即音乐、铃声、通话中、闹钟、通知、系统和 DMTF。您必须将所有这些单独流的音量设置为 0,这是一个非常简单的过程,如图所示 Bhargav。
只需创建一个 Audiomanager 对象:-
AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
然后用它来更改所有流的音量:-
audioManager.setStreamVolume(AudioManager.Stream, Extra Flags or null);
不要输入 AudioManager.Stream,而是输入“AudioManager”。并按 Ctrl+空格键查看您可以使用的所有不同流。检查文档以了解许多不同类型的标志,这些标志可以添加声音或振动或在音量更改时调出音量 UI。
每个流可能有不同的最大音量,因此请务必使用 getMaxStreamVolume 获取最大值并相应地设置音量,以防您使用单个值编辑所有流。因此,如果用户想要将全局音量设置为 50%,请获取每个流的最大音量,将它们乘以 0.5,然后将其设置到相应的流。