Как показать уведомление без звука java

Как я могу сделать уведомление, которое не создает звук при его создании? Я создаю уведомление, и моим пользователям не нравится тот факт, что он делает звук.

Как я могу изменить его на тихий/нет звука?

Как я показываю уведомление:

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

Я пытался искать в google, но единственными результатами, которые я получаю, является КАК играть звук, а не КАК не воспроизводить звук...

Редактировать Это, возможно, дубликат в глазах некоторых людей, но по моему я не мог найти альтернативу для указанного заданного значения по умолчанию, тогда как этот новый метод называется setDefaults

Ответы

Ответ 1

Удалите строку в builder.setDefaults(Notification.DEFAULT_ALL); , Он не будет воспроизводить звук, но вам может потребоваться включить все другие уведомления по умолчанию, если они предпочтительны

Ответ 2

Чтобы отключить звук в OREO 8.1, измените приоритет уведомления на НИЗКИЙ, и он отключит звук уведомления:

NotificationManager.IMPORTANCE_LOW

Код похож на:

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

Ответ 3

В android O, для меня он работал с этими настройками в уведомлении:

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

Ответ 4

Он работает для меня в Android Oreo.

Вы должны просто написать свой канал следующим образом:

NotificationChannel notificationChannel = new NotificationChannel("Id" , "Name", NotificationManager.IMPORTANCE_DEFAULT);
            notificationChannel.setSound(null, null);
            notificationChannel.setShowBadge(false);
            notificationManager.createNotificationChannel(notificationChannel);

Ответ 5

Используйте это, если вы хотите, чтобы все (звук, вибрация и свет) были в уведомлениях.

builder.setDefaults(Notification.DEFAULT_ALL);

Или вы можете включать или отключать элементы в соответствии с вашими требованиями.

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

прокомментируйте эту строку, если вы ничего не хотите.

Ответ 6

Легкий способ показать уведомление с любым приоритетом - установить звук, который фактически является тишиной. Просто сгенерируйте молчание.mp3, поместите его в "сырую" папку и установите звуки уведомлений с помощью Uri:

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

Вы можете создать этот.mp3 с приложением вроде Audacity. У него есть опция генерации тишины, просто установите сколько секунд, и вам хорошо идти.

Если вы установите значения по умолчанию 0 и установите звук равным нулю, уведомление будет отображаться без вашего слуха, но вы не сможете показывать уведомления с некоторым более высоким приоритетом.

Ответ 7

Я столкнулся с той же проблемой в 8.1. Сделал следующее изменение.. use NotificationManager.IMPORTANCE_LOW

код выглядит так: NotificationChannel chan1 = new NotificationChannel ("default", "default", NotificationManager.IMPORTANCE_LOW);

Ответ 8

Я мог бы опоздать, но все еще хочет добавить это. Вы можете отключить звук с помощью .setSound(null) в NotificationCompat.Builder builder для всех ОС ниже O.

Для O версии n выше добавьте channel.setSound(null,null) после создания NotificationChannel channel

Все вышеперечисленные решения либо устарели, либо охватывают только некоторые версии ОС

Ответ 9

используйте этот точный код:

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

NOTIFICATION_CHANNEL_ID --> random String.
channelName ==> random string