web-dev-qa-db-fra.com

Android Oreo ne lit pas le son personnalisé pour la notification

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

9
Mehroze Yaqoob

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());
11
Mehroze Yaqoob