Comment ajoutez-vous du son à une notification créée par NotificationCompat.Builder? J'ai créé un dossier brut dans res et y ai ajouté le son. Alors, comment puis-je l'ajouter à la notification? Ceci est mon code de notification
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());
Je suppose que le problème ici est de savoir comment référencer le son avec un Uri
, car il existe une méthode évidente dans la classe NotificationCompat.Builder
- setSound(Uri soundUri)
.
Pour accéder à vos ressources raw
, vous devez créer le Uri
comme suit:
Android.resource: // [PACKAGE_NAME]/[RESOURCE_ID]
Le code pourrait donc finir par ressembler à ça:
Uri sound = Uri.parse("Android.resource://" + getPackageName() + "/" + R.raw.notifysnd);
mBuilder.setSound(sound);
Pour jouer un son avec votre notification:
Notification notification = new Notification(icon, tickerText, when);
Faire des procédures de notification normales
Pour lire le son par défaut avec votre notification:
notification.defaults |= Notification.DEFAULT_SOUND;
Pour jouer un son personnalisé avec votre notification:
notification.sound = Uri.parse("file:///sdcard/notification/notification.mp3");
Utilisez ensuite le gestionnaire de notifications pour envoyer la notification. Si ces deux instructions sont utilisées, l'application utilisera par défaut le son par défaut.
Pour Android 8 (Oreo) et au-dessus, vous devez utiliser Notification Channel pour afficher les notifications, et elles auront automatiquement un son si vous ne l'avez pas désactivé.
Pour les appareils plus anciens, vous pouvez définir le son avec Notification Builder. Vous pouvez utiliser Notification.Builder.setSound()
pour définir un son personnalisé, ou vous pouvez utiliser
Notification.Builder.setDefaults(NotificationCompat.DEFAULT_SOUND)
pour définir le son par défaut.
Il y a aussi par défaut pour les vibrations et les lumières