Cómo configurar el volumen de sonido de notificación mediante programación?

Tengo este método en mi actividad principal

private void beep() { AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); Uri notification = RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } 

Según entiendo, el volumen de sonido de la notificación debe ser regulado por STREAM_NOTIFICATION. Pero la notificación siempre se reproduce con el mismo volumen a pesar de ese número de volumen en el método setStreamVolume. ¿Porqué es eso?

Fui por otro camino. No es exactamente la respuesta a mi pregunta, pero apropiado. Cuando toco la notificación en STREAM_MUSIC todo está bien. Así que la notificación juega exactamente con el volumen que paso como parámetro a la función

 private void beep(int volume) { AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0); Uri notification = RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); MediaPlayer player = MediaPlayer.create(getApplicationContext(), notification); player.start(); } 

En primer lugar, espero que te das cuenta de que estás tratando de jugar dos notificaciones justo después del otro, por lo que podría haber un conflicto sobre eso. AudioManager.FLAG_PLAY_SOUND y r.play() intentarán reproducir el sonido. Por lo general, es suficiente dar al usuario un tipo de información, ya sea por interfaz de usuario o por reproducir el pitido con nuevo volumen. Le sugiero que elimine una de las banderas. Si no lo necesitas, solo dale 0.

En cuanto a la pregunta principal, no estoy seguro de si puede establecer el nivel de volumen a 0. Intenta poner 1, como

 manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 1, AudioManager.FLAG_SHOW_UI); 

Si desea silenciar la notificación, pruebe a utilizar setStreamMute , lo que equivale a establecer el volumen en 0.

Escribir una función como sigue, o copiar y pegar lo siguiente,

 public void ringtone() { try { Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } catch (Exception e) {} } 

Y el ringtone() cuando desee hacer una notificación de pitido.

  • Actividad actual de la aplicación de Android
  • Android La intención pendiente iniciada desde notificaion no sustituye a la última
  • La notificación en curso en Android honeycomb tiene un comportamiento inconsistente
  • Icono de muestra de Android en la barra de estado
  • Problemas con Android Bluetooth LE Notificaciones
  • Mostrar una notificación sólo en el dispositivo portátil
  • Android: no se pueden mostrar varias líneas de texto en la notificación
  • ¿Cómo mostrar la notificación múltiple como un grupo?
  • Los extras de intenciones de recreación de actividad son nulos
  • Android Parse, notificaciones y buildTypes
  • Android: actualización de la barra de progreso de la notificación, correctamente
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.