在Android中静音全局声音
是否有一种方法可用于从应用程序按钮静音全局声音?Android中有四种声音设置:在Android中静音全局声音,android,audio,global,mute,Android,Audio,Global,Mute,是否有一种方法可用于从应用程序按钮静音全局声音?Android中有四种声音设置: 警报 音乐 铃声 通知 首先,创建AudioManager类的对象: AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 如果要设置卷,请使用以下选项: 通知 报警 为了音乐 手机铃声 从技术上讲,不存在全局卷。巴尔加夫的回答应该会让你走上正确的道路。AudioManager类可以控制许多不同的“流”,即音乐
- 警报
- 音乐
- 铃声
- 通知
AudioManager
类的对象:
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
如果要设置卷,请使用以下选项:
通知
报警
为了音乐
手机铃声
从技术上讲,不存在全局卷。巴尔加夫的回答应该会让你走上正确的道路。AudioManager类可以控制许多不同的“流”,即音乐、振铃器、通话、报警、通知、系统和DMTF。您必须将所有这些单独流的体积设置为0,这是一个非常简单的过程,如图所示 只需创建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,并将其设置为相应的流。这会使其变得比必须的更复杂。你可以用它。请随意使用下面的代码
//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);
可以使用setRingerMode()方法执行此操作
AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT);
静音和振动振铃器\u模式\u振动标志
取消静音:振铃器\u模式\u正常提供的答案似乎已被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);
}
}
希望这能有所帮助……难道没有更多的流(系统、语音呼叫)吗?我见过那些在真实设备中使用的。此外,没有AudioManager#setStreamVolume(int,int)方法,只有一个方法接受三个参数(一个是要设置的卷)。您可以传递0,但并非所有流都接受。没有类似于此回答中给出的方法。不幸的是,由于API级别为22,已弃用。@Endzeit:请参阅@Lokanath的回答。对于最新的Android,只需将
adjustStreamVolume()
调用替换为ADJUST\u MUTE
。完美的解决方案!!如果您保持single method mute/unmute标志参数会更好,但这是可选的:)。
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);
//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);
AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT);
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);
}
}
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);