Silencia el sonido global en Android

¿Hay algún método que pueda usarse para silenciar el sonido global desde un botón de aplicación?

Lo hacen más complicado de lo que debe ser. Solo puede usar AudioManager.setStreamMute() . Siéntase libre de usar el código a continuación.

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

Hay cuatro tipos de ajustes de sonido en Android:

  • Alarma
  • Música
  • Tono de llamada
  • Notificación

Primero, crea un objeto de la clase AudioManager :

 AudioManager amanager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 

Si quiere configurar el volumen, use estos:

Para la notificación

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

Para alarma

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

Por la música

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

Para tono de llamada

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

La respuesta proporcionada parece estar obsoleta de Android M (API 23) por lo que esto proporciona una solución alternativa

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

espero que esto ayude…

Puede usar el método setRingerMode () para hacer esto

 AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE); audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT); 

silenciar y vibrar RINGER_MODE_VIBRATE flag

dejar de silenciar: RINGER_MODE_NORMAL

Técnicamente no hay tal cosa como un volumen global. La respuesta de Bhargav debería ponerte en el camino correcto. Hay muchas “transmisiones” diferentes que pueden ser controladas por la clase AudioManager, a saber, Música, Timbre, En llamada, Alarma, Notificación, Sistema y DMTF. Tienes que configurar el volumen para todas estas transmisiones individuales en 0, que es un proceso increíblemente simple como Bhargav, como se muestra.

Solo crea un objeto Audiomanager: –

 AudioManager audioManager=(AudioManager)getSystemService(Context.AUDIO_SERVICE); 

Y luego úselo para cambiar el volumen de todas las transmisiones:

 audioManager.setStreamVolume(AudioManager.Stream, Extra Flags or null); 

En lugar de escribir AudioManager.Stream, escriba “AudioManager”. y presione Ctrl + Barra espaciadora para ver todas las diferentes transmisiones que puede usar. Consulte la documentación para ver los diferentes tipos de indicadores que pueden agregar un sonido o una vibración o mostrar la IU del volumen cuando se cambia el volumen.

Cada secuencia puede tener un volumen máximo diferente, así que asegúrese de usar getMaxStreamVolume para obtener los valores máximos y configurar el volumen en consecuencia en caso de que esté utilizando un único valor para editar todas las secuencias. Por lo tanto, si el usuario desea establecer el volumen global en 50%, obtenga el volumen máximo para cada flujo, multiplíquelo por 0.5 y configúrelo en las transmisiones correspondientes.

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