Existe-t-il une méthode qui peut être utilisée pour couper le son global à partir d'un bouton d'application?
Ils rendent cela plus compliqué qu'il ne doit l'être. Vous pouvez simplement utiliser AudioManager.setStreamMute()
. N'hésitez pas à utiliser le code ci-dessous.
//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);
La réponse fournie semble être obsolète de Android M (API 23) donc c'est une solution alternative
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);
}
}
j'espère que cela t'aides...
Il existe quatre types de paramètres sonores dans Android:
Créez d'abord un objet de la classe AudioManager
:
AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
Si vous souhaitez régler le volume, utilisez-les:
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);
Vous pouvez utiliser la méthode setRingerMode () pour ce faire
AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT);
couper et vibrer RINGER_MODE_VIBRATE flag
réactiver: RINGER_MODE_NORMAL
Techniquement, il n'y a pas de volume global. La réponse de Bhargav devrait vous mettre sur la bonne voie. Il existe de nombreux "flux" différents qui peuvent être contrôlés par la classe AudioManager, à savoir la musique, la sonnerie, l'appel en cours, l'alarme, la notification, le système et le DMTF. Vous devez régler le volume de tous ces flux individuels sur 0, ce qui est un processus incroyablement simple comme Bhargav, comme indiqué.
Créez simplement un objet Audiomanager: -
AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE);
Et puis utilisez-le pour changer le volume de tous les flux: -
audioManager.setStreamVolume(AudioManager.Stream, Extra Flags or null);
Au lieu de taper AudioManager.Stream, tapez "AudioManager". et appuyez sur Ctrl + Barre d'espace pour voir tous les différents flux que vous pouvez utiliser. Consultez la documentation pour les différents types de drapeaux pouvant ajouter un son ou une vibration ou afficher l'interface utilisateur du volume lorsque le volume est modifié.
Chaque flux peut avoir un volume maximum différent, assurez-vous donc d'utiliser getMaxStreamVolume pour obtenir les valeurs maximales et réglez le volume en conséquence au cas où vous utilisez une seule valeur pour éditer tous les flux. Donc, si l'utilisateur souhaite régler le volume global à 50%, obtenez le volume maximum pour chaque flux, multipliez-le par 0,5 et réglez-le sur les flux correspondants.
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);