2011-12-07 11 views
7

Tengo un temporizador de cuenta regresiva en mi actividad y cuando llega a cero, envío una notificación a la barra de estado que también reproduce un archivo wav personalizado para alertar al usuario. Solo quiero que aparezca la notificación de la barra de estado si el usuario no está usando la aplicación en ese momento, pero aún quiero que el archivo wav se reproduzca, ya sea que la aplicación del temporizador esté visible o no.Notificación de Android para reproducir sonido solo

¿Es posible hacer que la notificación de Android solo reproduzca la alerta de audio? Intenté usar MediaPlayer para reproducir el archivo wav, pero esto usa su propia configuración de volumen y no el volumen de notificación normal, por lo que si el volumen de medios es bajo, el sonido de notificación también se reproduce en un volumen bajo que no quiero. Quiero que el sonido se reproduzca con el mismo volumen que otras notificaciones.

estoy usando esto: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

y suministrar el sonido de esta manera:

notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd); 
+0

Sí es posible jugar sólo una alerta de audio. –

+1

Gracias @ coder_For_Life22, ¿me mostrarías cómo? – Daniel

Respuesta

5

En 'Adición de un sonido' en la sección http://developer.android.com/guide/topics/ui/notifiers/notifications.html hay esta nota:

Note: If the defaults field includes DEFAULT_SOUND, then the default sound overrides any sound defined by the sound field.

Por lo tanto, si desea personalizar solo el sonido, puede usar -

notification.sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notifysnd); 
notification.defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE; 
3

De acuerdo con mi experimento, puedes enviar una notificación sin que aparezca en el área de notificación pero aún así se reproduzca el sonido.

Todo lo que necesita hacer es construir un generador de notificaciones y configurar el sonido, pero omita el intento pendiente, el icono, el título del contenido y el texto del contenido.

NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
builder.setSound(your_sound_uri); 
notificationManager.notify(1234, builder.build()); 
+1

Estas respuestas son particularmente útiles ya que los documentos están equivocados al respecto. http://developer.android.com/guide/topics/ui/notifiers/notifications.html#CreateNotification dice: "Un objeto de notificación * debe * contener lo siguiente: Un pequeño icono, establecido por setSmallIcon(); Un título, establecer por setContentTitle(); Texto de detalle, establecido por setContentText() " – Jerry101

+2

El icono es obligatorio. Esto causa un error: java.lang.IllegalArgumentException: notificación inválida (no es un ícono pequeño válido) –

0
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

Notification mNotification = new Notification.Builder(this) 

      .setContentTitle("New Post!") 
      .setContentText("Here's an awesome update for you!") 
      .setSmallIcon(R.drawable.ic_lancher) 
      .setContentIntent(pIntent) 
      .setSound(soundUri) 
      .build(); 
0
NotificationCompat.Builder builder= new NotificationCompat.Builder(this); 

tres maneras de setSound

builder.setDefaults(Notification.DEFAULT_SOUND); 
builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)); 
builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI); 
Cuestiones relacionadas