2012-12-26 1 views
20

Come si aggiunge il suono a una notifica creata da NotificationCompat.Builder? Ho creato una cartella raw in res e aggiunto il suono lì. Quindi, come posso aggiungerlo alla notifica? Questo è il mio codice di notificaCome aggiungere suoni alla notifica?

int NOTIFY_ID=100; 
    Intent notificationIntent = new Intent(this, Notification.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT); 

    NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(this) 
      .setContentIntent(pendingIntent) 
      .setSmallIcon(R.drawable.notification) 
      .setContentTitle("Warning") 
      .setContentText("Help!") 

    NotificationManager mgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    mgr.notify(NOTIFY_ID, mBuilder.build()); 
+0

C'è un metodo [setSound] (http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setSound (android.net.Uri)) in [NotificationCompat.Builder ] (http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html). E 'quello che stai cercando? –

risposta

40

Sto indovinando il problema qui è come fare riferimento il suono con un Uri, in quanto v'è un metodo evidente nella classe NotificationCompat.Builder-setSound(Uri soundUri).

per accedere al vostro raw risorse è necessario creare la Uri come segue:

android.resource://[PACKAGE_NAME]/[RESOURCE_ID]

Quindi il codice potrebbe finire per assomigliare che:

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

In che formato deve essere inserito il mio file audio? Ricevo un suono predefinito al posto mio. – karl

+2

Ho risposto alla mia stessa domanda con tentativi ed errori: 1) mp3 funziona, wav no, e 2) ho bisogno di disabilitare il suono predefinito costruendo la notifica e poi facendo 'n.defaults & = ~ Notification.DEFAULT_SOUND ; ' – karl

+3

Se si utilizza Notification.Builder, * builder.setDefaults (~ Notification.DEFAULT_SOUND); * farà il trucco. Grazie a @karl per il suggerimento – Maragues

15

Per riprodurre un suono con la notifica:

Notification notification = new Notification(icon, tickerText, when); 

Fare notifica normale procedure

per riprodurre l'audio di default con la notifica:

notification.defaults |= Notification.DEFAULT_SOUND; 

Per riprodurre un suono personalizzato con il vostro notifica:

notification.sound = Uri.parse("file:///sdcard/notification/notification.mp3"); 

Poi basta utilizzare il gestore di notifica per inviare la notifica. Se si utilizzano entrambe queste istruzioni, l'applicazione utilizzerà automaticamente il suono predefinito.