web-dev-qa-db-fra.com

Comment ajouter du son à la notification?

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());
24
Vladimir

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);
48
Paul

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.

16
Antrromet

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

0
B-GangsteR