Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 526fa0e6 authored by Daniel Sandler's avatar Daniel Sandler
Browse files

PRIORITY_MIN notifications should be truly ambient.

If your notification is set to MIN priority, it will never
attempt to interrupt the user, either by an icon (already
implemented), or (new in this patch) by LED, vibration, or
sound.

Bug: 7648785
Change-Id: Ia0f8e010e62029d8d8ef1955dd20b7c79fb68398
parent e0a676a3
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -110,6 +110,11 @@ public class NotificationManagerService extends INotificationManager.Stub
    private static final int NOTIFICATION_PRIORITY_MULTIPLIER = 10;
    private static final int SCORE_DISPLAY_THRESHOLD = Notification.PRIORITY_MIN * NOTIFICATION_PRIORITY_MULTIPLIER;

    // Notifications with scores below this will not interrupt the user, either via LED or
    // sound or vibration
    private static final int SCORE_INTERRUPTION_THRESHOLD =
            Notification.PRIORITY_LOW * NOTIFICATION_PRIORITY_MULTIPLIER;

    private static final boolean ENABLE_BLOCKED_NOTIFICATIONS = true;
    private static final boolean ENABLE_BLOCKED_TOASTS = true;

@@ -991,6 +996,9 @@ public class NotificationManagerService extends INotificationManager.Stub
            return;
        }

        // Should this notification make noise, vibe, or use the LED?
        final boolean canInterrupt = (score >= SCORE_INTERRUPTION_THRESHOLD);

        synchronized (mNotificationList) {
            NotificationRecord r = new NotificationRecord(pkg, tag, id, 
                    callingUid, callingPid, userId,
@@ -1042,7 +1050,8 @@ public class NotificationManagerService extends INotificationManager.Stub
                    long identity = Binder.clearCallingIdentity();
                    try {
                        r.statusBarKey = mStatusBar.addNotification(n);
                        if ((n.notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0) {
                        if ((n.notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0
                                && canInterrupt) {
                            mAttentionLight.pulse();
                        }
                    }
@@ -1073,6 +1082,7 @@ public class NotificationManagerService extends INotificationManager.Stub
                        && (notification.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0 ))
                    && (r.userId == UserHandle.USER_ALL ||
                        (r.userId == userId && r.userId == currentUser))
                    && canInterrupt
                    && mSystemReady) {

                final AudioManager audioManager = (AudioManager) mContext
@@ -1171,7 +1181,8 @@ public class NotificationManagerService extends INotificationManager.Stub
            }
            //Slog.i(TAG, "notification.lights="
            //        + ((old.notification.lights.flags & Notification.FLAG_SHOW_LIGHTS) != 0));
            if ((notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0) {
            if ((notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0
                    && canInterrupt) {
                mLights.add(r);
                updateLightsLocked();
            } else {