para - manual de programacion android pdf
Silencia el sonido global en Android (6)
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 desea configurar el volumen, utilice 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);
¿Existe algún método que pueda usarse para silenciar el sonido global desde un botón de aplicación?
La respuesta proporcionada parece estar en desuso de Android M (API 23), por lo que esta es 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...
Puedes usar el método setRingerMode () para hacer esto
AudioManager audioManager=(AudioManager)getSystemService(AUDIO_SERVICE);
audioManager.setRingerMode(audioManager.RINGER_MODE_SILENT);
silenciar y vibrar el indicador RINGER_MODE_VIBRATE
dejar de silenciar: RINGER_MODE_NORMAL
Técnicamente no existe tal cosa como un volumen global. La respuesta de Bhargav debería ponerte en el camino correcto. Hay muchos "flujos" diferentes que pueden ser controlados por la clase AudioManager, a saber, Música, Timbre, Llamada, Alarma, Notificación, Sistema y DMTF. Debe configurar el volumen para todas estas transmisiones individuales a 0, lo que es un proceso increíblemente sencillo 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 de volumen cuando se cambia el volumen.
Cada flujo puede tener un volumen máximo diferente, así que asegúrese de usar getMaxStreamVolume para obtener los valores máximos y establecer el volumen en consecuencia en caso de que esté usando un solo valor para editar todos los flujos. Entonces, si el usuario desea configurar el volumen global al 50%, obtenga el volumen máximo para cada flujo, multiplíquelos por 0.5 y ajústelo a los flujos correspondientes.
Lo hacen más complicado de lo que tiene que ser. Solo puede usar AudioManager.setStreamMute()
. Siéntase libre de usar el código de abajo.
//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);
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);