web-dev-qa-db-fra.com

Comment afficher une notification sans son java

Comment puis-je faire une notification qui ne fait pas de son quand je la construit? Je construis une notification et mes utilisateurs n'aiment pas le fait que cela émette un son.

Comment puis-je le changer pour un silencieux/pas de son du tout?  

Comment j'affiche la notification:

Android.support.v7.app.NotificationCompat.Builder builder = new Android.support.v7.app.NotificationCompat.Builder(main);
builder.setStyle(new Android.support.v7.app.NotificationCompat.BigTextStyle().bigText(text));
builder.setSmallIcon(R.drawable.app);
builder.setContentTitle("Rooster Maandag:");
builder.setOngoing(false);
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
builder.setPriority(NotificationCompat.PRIORITY_DEFAULT);
notificationManager = (NotificationManager) main.getSystemService(main.NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, builder.build());

J'ai essayé de chercher sur google, mais le seul résultat que j'ai obtenu est comment jouer un son, pas comment ne pas jouer un son ...

Edit C'est peut-être un doublon aux yeux de certaines personnes, mais dans le mien, je ne pouvais pas trouver d'alternative à la valeur par défaut spécifiée, alors que cette nouvelle méthode s'appelle setDefaults

9
Jason

Supprimez la ligne à builder.setDefaults(Notification.DEFAULT_ALL);. Il ne jouera pas le son, mais vous devrez peut-être activer toutes les autres notifications par défaut si vous le souhaitez.

8

Dans Android O, pour moi, cela a fonctionné avec ces paramètres dans la notification:

                .setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
                .setGroup("My group")
                .setGroupSummary(false)
                .setDefaults(NotificationCompat.DEFAULT_ALL)
9

Pour désactiver le son dans OREO 8.1, modifiez la priorité de la notification en tant que BAS et le son de la notification sera désactivé:

NotificationManager.IMPORTANCE_LOW

Le code est comme:

NotificationChannel chan1 = new NotificationChannel("default", "default", NotificationManager.IMPORTANCE_LOW);
5
Kuldip Sharma

Cela fonctionne pour moi dans Android Oreo.

Vous devriez juste écrire votre chaîne comme ceci:

NotificationChannel notificationChannel = new NotificationChannel("Id" , "Name", NotificationManager.IMPORTANCE_DEFAULT);
            notificationChannel.setSound(null, null);
            notificationChannel.setShowBadge(false);
            notificationManager.createNotificationChannel(notificationChannel);
3
Михаил

Utilisez cette option si vous souhaitez que toutes les notifications (son, vibrations et lumières).

builder.setDefaults(Notification.DEFAULT_ALL);

Ou vous pouvez activer ou désactiver des éléments en fonction de vos besoins. 

builder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);

commentez cette ligne si vous ne voulez rien. 

2
albeee

Un moyen facile à suivre pour pouvoir afficher une notification avec n'importe quel type de priorité consiste à définir un son qui est en fait un silence. Il suffit de générer du silence.mp3 pour le placer dans un dossier "raw" et définir les sons de notification à l’aide de Uri:

Uri.parse("Android.resource://"+YOUR_APP_PACKAGE_NAME+"/"+R.raw.silence) 

Vous pouvez générer ce fichier .mp3 avec une application comme Audacity. Il a l'option générer un silence, il suffit de définir combien de secondes et vous êtes prêt à partir.

Si vous définissez les valeurs par défaut sur 0 et que le son est défini sur null, la notification sera affichée sans que vous ne l'entendiez, mais vous ne pourrez pas afficher les notifications avec une priorité plus élevée.

1
user1540907

utilisez ce code exact:

NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_DEFAULT);

NOTIFICATION_CHANNEL_ID --> random String.
channelName ==> random string
0
Ramy Bakkar