From 184b86da382b8e24cdd0e5629e70d7057d418883 Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 12 Apr 2017 13:27:58 -0400 Subject: [PATCH] Allow notification channels to be silent. This better accomodates those apps that play their own sounds. Since most apps don't play their own sounds, update the documentation on notificationchannel to add guidance about when they should add a sound. Fixes: 37237013 Test: runtest systemui-notification Change-Id: If00b15b1b44da66d24dacb2895e9a6c0a06d1890 --- core/java/android/app/NotificationChannel.java | 8 +++++--- .../com/android/server/notification/RankingHelper.java | 4 ---- .../android/server/notification/BuzzBeepBlinkTest.java | 2 ++ .../android/server/notification/RankingHelperTest.java | 9 --------- 4 files changed, 7 insertions(+), 16 deletions(-) diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java index 92216d15ec95e..e50bc136bc5a3 100644 --- a/core/java/android/app/NotificationChannel.java +++ b/core/java/android/app/NotificationChannel.java @@ -26,6 +26,7 @@ import android.media.AudioAttributes; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; +import android.provider.Settings; import android.service.notification.NotificationListenerService; import android.text.TextUtils; @@ -139,7 +140,7 @@ public final class NotificationChannel implements Parcelable { private int mImportance = DEFAULT_IMPORTANCE; private boolean mBypassDnd; private int mLockscreenVisibility = DEFAULT_VISIBILITY; - private Uri mSound; + private Uri mSound = Settings.System.DEFAULT_NOTIFICATION_URI; private boolean mLights; private int mLightColor = DEFAULT_LIGHT_COLOR; private long[] mVibration; @@ -330,7 +331,8 @@ public final class NotificationChannel implements Parcelable { /** * Sets the sound that should be played for notifications posted to this channel and its - * audio attributes. + * audio attributes. Notification channels with an {@link #getImportance() importance} of at + * least {@link NotificationManager#IMPORTANCE_DEFAULT} should have a sound. * * Only modifiable before the channel is submitted to * {@link NotificationManager#notify(String, int, Notification)}. @@ -445,7 +447,7 @@ public final class NotificationChannel implements Parcelable { } /** - * Returns the user specified importance {e.g. @link NotificationManager#IMPORTANCE_LOW} for + * Returns the user specified importance e.g. {@link NotificationManager#IMPORTANCE_LOW} for * notifications posted to this channel. */ public int getImportance() { diff --git a/services/core/java/com/android/server/notification/RankingHelper.java b/services/core/java/com/android/server/notification/RankingHelper.java index 9e12f919c4171..44dc61de0ea9c 100644 --- a/services/core/java/com/android/server/notification/RankingHelper.java +++ b/services/core/java/com/android/server/notification/RankingHelper.java @@ -570,10 +570,6 @@ public class RankingHelper implements RankingConfig { if (!r.showBadge) { channel.setShowBadge(false); } - if (channel.getSound() == null) { - channel.setSound(Settings.System.DEFAULT_NOTIFICATION_URI, - Notification.AUDIO_ATTRIBUTES_DEFAULT); - } r.channels.put(channel.getId(), channel); MetricsLogger.action(getChannelLog(channel, pkg).setType( MetricsProto.MetricsEvent.TYPE_OPEN)); diff --git a/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java index e28566931d23e..d383aea5a679c 100644 --- a/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java +++ b/services/tests/notification/src/com/android/server/notification/BuzzBeepBlinkTest.java @@ -215,6 +215,8 @@ public class BuzzBeepBlinkTest { builder.setSound(CUSTOM_SOUND); channel.setSound(CUSTOM_SOUND, CUSTOM_ATTRIBUTES); } + } else { + channel.setSound(null, null); } if (buzzy) { if (defaultVibration) { diff --git a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java index 885eb2ea235ac..303054e777934 100644 --- a/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java +++ b/services/tests/notification/src/com/android/server/notification/RankingHelperTest.java @@ -737,15 +737,6 @@ public class RankingHelperTest { mHelper.getNotificationChannel(PKG, UID, newChannel.getId(), false)); } - @Test - public void testCreateChannel_addMissingSound() throws Exception { - final NotificationChannel channel = - new NotificationChannel("id2", "name2", IMPORTANCE_LOW); - mHelper.createNotificationChannel(PKG, UID, channel, true); - assertNotNull(mHelper.getNotificationChannel( - PKG, UID, channel.getId(), false).getSound()); - } - @Test public void testCreateChannel_noOverrideSound() throws Exception { Uri sound = new Uri.Builder().scheme("test").build();