web-dev-qa-db-fra.com

Désactiver le son global dans Android

Existe-t-il une méthode qui peut être utilisée pour couper le son global à partir d'un bouton d'application?

24
Yuen Tong

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);
44

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...

18
Lokanath

Il existe quatre types de paramètres sonores dans Android:

  • Alarme
  • La musique
  • Sonnerie
  • Notification

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:

Pour notification

amanager.setStreamVolume(AudioManager.STREAM_NOTIFICATION,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Pour alarme

amanager.setStreamVolume(AudioManager.STREAM_ALARM,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Pour la musique

amanager.setStreamVolume(AudioManager.STREAM_MUSIC,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);

Pour sonnerie

amanager.setStreamVolume(AudioManager.STREAM_RING,
    AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);
11
Bhargav Panchal

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

4
CodeNinja

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.

3
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);
2
amr osama