Ответ 1
Удалите строку в builder.setDefaults(Notification.DEFAULT_ALL);
, Он не будет воспроизводить звук, но вам может потребоваться включить все другие уведомления по умолчанию, если они предпочтительны
Как я могу сделать уведомление, которое не создает звук при его создании? Я создаю уведомление, и моим пользователям не нравится тот факт, что он делает звук.
Как я могу изменить его на тихий/нет звука?
Как я показываю уведомление:
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
Удалите строку в builder.setDefaults(Notification.DEFAULT_ALL);
, Он не будет воспроизводить звук, но вам может потребоваться включить все другие уведомления по умолчанию, если они предпочтительны
Чтобы отключить звук в OREO 8.1, измените приоритет уведомления на НИЗКИЙ, и он отключит звук уведомления:
NotificationManager.IMPORTANCE_LOW
Код похож на:
NotificationChannel chan1 = new NotificationChannel("default", "default", NotificationManager.IMPORTANCE_LOW);
В android O, для меня он работал с этими настройками в уведомлении:
.setGroupAlertBehavior(GROUP_ALERT_SUMMARY)
.setGroup("My group")
.setGroupSummary(false)
.setDefaults(NotificationCompat.DEFAULT_ALL)
Он работает для меня в Android Oreo.
Вы должны просто написать свой канал следующим образом:
NotificationChannel notificationChannel = new NotificationChannel("Id" , "Name", NotificationManager.IMPORTANCE_DEFAULT);
notificationChannel.setSound(null, null);
notificationChannel.setShowBadge(false);
notificationManager.createNotificationChannel(notificationChannel);
Используйте это, если вы хотите, чтобы все (звук, вибрация и свет) были в уведомлениях.
builder.setDefaults(Notification.DEFAULT_ALL);
Или вы можете включать или отключать элементы в соответствии с вашими требованиями.
builder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
прокомментируйте эту строку, если вы ничего не хотите.
Легкий способ показать уведомление с любым приоритетом - установить звук, который фактически является тишиной. Просто сгенерируйте молчание.mp3, поместите его в "сырую" папку и установите звуки уведомлений с помощью Uri:
Uri.parse("android.resource://"+YOUR_APP_PACKAGE_NAME+"/"+R.raw.silence)
Вы можете создать этот.mp3 с приложением вроде Audacity. У него есть опция генерации тишины, просто установите сколько секунд, и вам хорошо идти.
Если вы установите значения по умолчанию 0 и установите звук равным нулю, уведомление будет отображаться без вашего слуха, но вы не сможете показывать уведомления с некоторым более высоким приоритетом.
Я столкнулся с той же проблемой в 8.1. Сделал следующее изменение.. use NotificationManager.IMPORTANCE_LOW
код выглядит так: NotificationChannel chan1 = new NotificationChannel ("default", "default", NotificationManager.IMPORTANCE_LOW);
Я мог бы опоздать, но все еще хочет добавить это. Вы можете отключить звук с помощью .setSound(null)
в NotificationCompat.Builder builder
для всех ОС ниже O.
Для O версии n выше добавьте channel.setSound(null,null)
после создания NotificationChannel channel
Все вышеперечисленные решения либо устарели, либо охватывают только некоторые версии ОС
используйте этот точный код:
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_DEFAULT);
NOTIFICATION_CHANNEL_ID --> random String.
channelName ==> random string