J'essaie d'ajouter un son personnalisé à la notification pour l'API> 26. Voici le code
NotificationChannel notificationChannel = new NotificationChannel("channel id","channel name",NotificationManager.IMPORTANCE_HIGH);
mNotificationManager.createNotificationChannel(notificationChannel);
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_NOTIFICATION)
.build();
notificationChannel.setSound(Uri.parse("Android.resource://" + BuildConfig.APPLICATION_ID + "/raw/beep"),audioAttributes);
Le problème ici est qu'il joue le son de piano par défaut de l'appareil plutôt que de jouer un bip sonore à partir des ressources. Je ne suis pas autorisé à utiliser le gestionnaire de sonnerie, mais les statistiques de bon sens selon lesquelles le son de notification devrait être celui qui est spécifié plutôt que par défaut.
Cela fonctionne bien pour l'API <= 26
Enfin, j'ai réussi à trouver une solution par moi-même. Ci-dessous le code
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.O) {
if(notificationSoundUri != null){
// Changing Default mode of notification
notificationCompatBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
// Creating an Audio Attribute
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build();
// Creating Channel
NotificationChannel notificationChannel = new NotificationChannel(context.getString(R.string.channel_id_prayers),context.getString(R.string.channel_name_prayers),NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setSound(notificationSoundUri,audioAttributes);
mNotificationManager.createNotificationChannel(notificationChannel);
}
}
mNotificationManager.notify(0, notificationCompatBuilder.build());