Loading services/core/java/com/android/server/notification/NotificationManagerService.java +53 −44 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.notification; import static android.app.NotificationManager.IMPORTANCE_MIN; import static android.app.NotificationManager.IMPORTANCE_NONE; import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_TELEVISION; Loading Loading @@ -3659,14 +3660,6 @@ public class NotificationManagerService extends SystemService { " intercept=" + record.isIntercepted() ); final int currentUser; final long token = Binder.clearCallingIdentity(); try { currentUser = ActivityManager.getCurrentUser(); } finally { Binder.restoreCallingIdentity(token); } // If we're not supposed to beep, vibrate, etc. then don't. final String disableEffects = disableNotificationEffects(record); if (disableEffects != null) { Loading @@ -3676,19 +3669,22 @@ public class NotificationManagerService extends SystemService { // Remember if this notification already owns the notification channels. boolean wasBeep = key != null && key.equals(mSoundNotificationKey); boolean wasBuzz = key != null && key.equals(mVibrateNotificationKey); // These are set inside the conditional if the notification is allowed to make noise. boolean hasValidVibrate = false; boolean hasValidSound = false; if (isNotificationForCurrentUser(record)) { // If the notification will appear in the status bar, it should send an accessibility // event if (!record.isUpdate && record.getImportance() > IMPORTANCE_MIN) { sendAccessibilityEvent(notification, record.sbn.getPackageName()); } if (disableEffects == null && (record.getUserId() == UserHandle.USER_ALL || record.getUserId() == currentUser || mUserProfiles.isCurrentProfile(record.getUserId())) && canInterrupt && mSystemReady && mAudioManager != null) { if (DBG) Slog.v(TAG, "Interrupting!"); Uri soundUri = record.getSound(); hasValidSound = soundUri != null && !Uri.EMPTY.equals(soundUri); long[] vibration = record.getVibration(); Loading @@ -3702,8 +3698,6 @@ public class NotificationManagerService extends SystemService { hasValidVibrate = vibration != null; if (!shouldMuteNotificationLocked(record)) { sendAccessibilityEvent(notification, record.sbn.getPackageName()); if (hasValidSound) { mSoundNotificationKey = key; if (mInCall) { Loading @@ -3715,7 +3709,8 @@ public class NotificationManagerService extends SystemService { } final boolean ringerModeSilent = mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; if (!mInCall && hasValidVibrate && !ringerModeSilent) { mVibrateNotificationKey = key; Loading @@ -3723,6 +3718,7 @@ public class NotificationManagerService extends SystemService { } } } } // If a notification is updated to remove the actively playing sound or vibrate, // cancel that feedback now if (wasBeep && !hasValidSound) { Loading Loading @@ -3819,6 +3815,19 @@ public class NotificationManagerService extends SystemService { } } private boolean isNotificationForCurrentUser(NotificationRecord record) { final int currentUser; final long token = Binder.clearCallingIdentity(); try { currentUser = ActivityManager.getCurrentUser(); } finally { Binder.restoreCallingIdentity(token); } return (record.getUserId() == UserHandle.USER_ALL || record.getUserId() == currentUser || mUserProfiles.isCurrentProfile(record.getUserId())); } private void playInCallNotification() { new Thread() { @Override Loading Loading
services/core/java/com/android/server/notification/NotificationManagerService.java +53 −44 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.notification; import static android.app.NotificationManager.IMPORTANCE_MIN; import static android.app.NotificationManager.IMPORTANCE_NONE; import static android.content.pm.PackageManager.FEATURE_LEANBACK; import static android.content.pm.PackageManager.FEATURE_TELEVISION; Loading Loading @@ -3659,14 +3660,6 @@ public class NotificationManagerService extends SystemService { " intercept=" + record.isIntercepted() ); final int currentUser; final long token = Binder.clearCallingIdentity(); try { currentUser = ActivityManager.getCurrentUser(); } finally { Binder.restoreCallingIdentity(token); } // If we're not supposed to beep, vibrate, etc. then don't. final String disableEffects = disableNotificationEffects(record); if (disableEffects != null) { Loading @@ -3676,19 +3669,22 @@ public class NotificationManagerService extends SystemService { // Remember if this notification already owns the notification channels. boolean wasBeep = key != null && key.equals(mSoundNotificationKey); boolean wasBuzz = key != null && key.equals(mVibrateNotificationKey); // These are set inside the conditional if the notification is allowed to make noise. boolean hasValidVibrate = false; boolean hasValidSound = false; if (isNotificationForCurrentUser(record)) { // If the notification will appear in the status bar, it should send an accessibility // event if (!record.isUpdate && record.getImportance() > IMPORTANCE_MIN) { sendAccessibilityEvent(notification, record.sbn.getPackageName()); } if (disableEffects == null && (record.getUserId() == UserHandle.USER_ALL || record.getUserId() == currentUser || mUserProfiles.isCurrentProfile(record.getUserId())) && canInterrupt && mSystemReady && mAudioManager != null) { if (DBG) Slog.v(TAG, "Interrupting!"); Uri soundUri = record.getSound(); hasValidSound = soundUri != null && !Uri.EMPTY.equals(soundUri); long[] vibration = record.getVibration(); Loading @@ -3702,8 +3698,6 @@ public class NotificationManagerService extends SystemService { hasValidVibrate = vibration != null; if (!shouldMuteNotificationLocked(record)) { sendAccessibilityEvent(notification, record.sbn.getPackageName()); if (hasValidSound) { mSoundNotificationKey = key; if (mInCall) { Loading @@ -3715,7 +3709,8 @@ public class NotificationManagerService extends SystemService { } final boolean ringerModeSilent = mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT; if (!mInCall && hasValidVibrate && !ringerModeSilent) { mVibrateNotificationKey = key; Loading @@ -3723,6 +3718,7 @@ public class NotificationManagerService extends SystemService { } } } } // If a notification is updated to remove the actively playing sound or vibrate, // cancel that feedback now if (wasBeep && !hasValidSound) { Loading Loading @@ -3819,6 +3815,19 @@ public class NotificationManagerService extends SystemService { } } private boolean isNotificationForCurrentUser(NotificationRecord record) { final int currentUser; final long token = Binder.clearCallingIdentity(); try { currentUser = ActivityManager.getCurrentUser(); } finally { Binder.restoreCallingIdentity(token); } return (record.getUserId() == UserHandle.USER_ALL || record.getUserId() == currentUser || mUserProfiles.isCurrentProfile(record.getUserId())); } private void playInCallNotification() { new Thread() { @Override Loading