Loading core/java/android/preference/SeekBarVolumizer.java +2 −2 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba .PRIORITY_CATEGORY_ALARMS) != 0; mAllowMedia = (mNotificationPolicy.priorityCategories & NotificationManager.Policy .PRIORITY_CATEGORY_MEDIA) != 0; mAllowRinger = !ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted( mAllowRinger = !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted( mNotificationPolicy); mStreamType = streamType; mAffectedByRingerMode = mAudioManager.isStreamAffectedByRingerMode(mStreamType); Loading Loading @@ -571,7 +571,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba .PRIORITY_CATEGORY_ALARMS) != 0; mAllowMedia = (mNotificationPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA) != 0; mAllowRinger = !ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted( mAllowRinger = !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted( mNotificationPolicy); updateSlider(); } Loading core/java/android/service/notification/ZenModeConfig.java +15 −15 Original line number Diff line number Diff line Loading @@ -1904,10 +1904,10 @@ public class ZenModeConfig implements Parcelable { } /** * Determines whether dnd behavior should mute all notification/ringer sounds * (sounds associated with ringer volume discluding system) * Determines whether dnd behavior should mute all ringer-controlled sounds * This includes notification, ringer and system sounds */ public static boolean areAllPriorityOnlyNotificationZenSoundsMuted(NotificationManager.Policy public static boolean areAllPriorityOnlyRingerSoundsMuted(NotificationManager.Policy policy) { boolean allowReminders = (policy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_REMINDERS) != 0; Loading @@ -1920,20 +1920,19 @@ public class ZenModeConfig implements Parcelable { boolean allowRepeatCallers = (policy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS) != 0; boolean areChannelsBypassingDnd = (policy.state & Policy.STATE_CHANNELS_BYPASSING_DND) != 0; boolean allowSystem = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_SYSTEM) != 0; return !allowReminders && !allowCalls && !allowMessages && !allowEvents && !allowRepeatCallers && !areChannelsBypassingDnd; && !allowRepeatCallers && !areChannelsBypassingDnd && !allowSystem; } /** * Determines whether dnd behavior should mute all sounds controlled by ringer * Determines whether dnd behavior should mute all sounds */ public static boolean areAllZenBehaviorSoundsMuted(NotificationManager.Policy policy) { boolean allowAlarms = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_ALARMS) != 0; boolean allowMedia = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_MEDIA) != 0; boolean allowSystem = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_SYSTEM) != 0; return !allowAlarms && !allowMedia && !allowSystem && areAllPriorityOnlyNotificationZenSoundsMuted(policy); return !allowAlarms && !allowMedia && areAllPriorityOnlyRingerSoundsMuted(policy); } /** Loading @@ -1943,24 +1942,25 @@ public class ZenModeConfig implements Parcelable { return zen == Global.ZEN_MODE_NO_INTERRUPTIONS || zen == Global.ZEN_MODE_ALARMS || (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(consolidatedPolicy)); && ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(consolidatedPolicy)); } /** * Determines whether dnd behavior should mute all sounds controlled by ringer * Determines whether dnd behavior should mute all ringer-controlled sounds * This includes notification, ringer and system sounds */ public static boolean areAllPriorityOnlyNotificationZenSoundsMuted(ZenModeConfig config) { public static boolean areAllPriorityOnlyRingerSoundsMuted(ZenModeConfig config) { return !config.allowReminders && !config.allowCalls && !config.allowMessages && !config.allowEvents && !config.allowRepeatCallers && !config.areChannelsBypassingDnd; && !config.areChannelsBypassingDnd && !config.allowSystem; } /** * Determines whether all dnd mutes all sounds * Determines whether dnd mutes all sounds */ public static boolean areAllZenBehaviorSoundsMuted(ZenModeConfig config) { return !config.allowAlarms && !config.allowMedia && !config.allowSystem && areAllPriorityOnlyNotificationZenSoundsMuted(config); return !config.allowAlarms && !config.allowMedia && areAllPriorityOnlyRingerSoundsMuted(config); } /** Loading packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +3 −1 Original line number Diff line number Diff line Loading @@ -621,7 +621,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa .PRIORITY_CATEGORY_MEDIA) == 0; boolean disallowSystem = (policy.priorityCategories & NotificationManager.Policy .PRIORITY_CATEGORY_SYSTEM) == 0; boolean disallowRinger = ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(policy); // ringer controls notifications, ringer and system sounds, so only disallow ringer changes // if all relevant (notifications + ringer + system) sounds are not allowed to bypass DND boolean disallowRinger = ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(policy); if (mState.disallowAlarms == disallowAlarms && mState.disallowMedia == disallowMedia && mState.disallowRinger == disallowRinger Loading services/core/java/com/android/server/audio/AudioService.java +17 −5 Original line number Diff line number Diff line Loading @@ -3854,7 +3854,7 @@ public class AudioService extends IAudioService.Stub final boolean muteSystem = (zenPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_SYSTEM) == 0; final boolean muteNotificationAndRing = ZenModeConfig .areAllPriorityOnlyNotificationZenSoundsMuted( .areAllPriorityOnlyRingerSoundsMuted( mNm.getConsolidatedNotificationPolicy()); return muteAlarms && isAlarm(streamType) || muteMedia && isMedia(streamType) Loading @@ -3867,16 +3867,26 @@ public class AudioService extends IAudioService.Stub } /** * DND total silence: media and alarms streams are tied to the muted ringer * Notifications, ringer and system sounds are controlled by the ringer: * {@link ZenModeHelper.RingerModeDelegate#getRingerModeAffectedStreams(int)} * DND alarms only: notification, ringer + system muted (by default tied to muted ringer mode) * DND priority only: alarms, media, system streams can be muted separate from ringer based on * DND total silence: media and alarms streams can be muted by DND * DND alarms only: no streams additionally controlled by DND * DND priority only: alarms, media, system streams can be muted by DND based on * zenPolicy (this method determines which streams) * @return true if changed, else false */ private boolean updateZenModeAffectedStreams() { if (!mSystemReady) { return false; } int zenModeAffectedStreams = 0; if (mSystemReady && mNm.getZenMode() == Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) { final int zenMode = mNm.getZenMode(); if (zenMode == Settings.Global.ZEN_MODE_NO_INTERRUPTIONS) { zenModeAffectedStreams |= 1 << AudioManager.STREAM_ALARM; zenModeAffectedStreams |= 1 << AudioManager.STREAM_MUSIC; } else if (zenMode == Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) { NotificationManager.Policy zenPolicy = mNm.getConsolidatedNotificationPolicy(); if ((zenPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS) == 0) { Loading @@ -3888,6 +3898,8 @@ public class AudioService extends IAudioService.Stub zenModeAffectedStreams |= 1 << AudioManager.STREAM_MUSIC; } // even if zen isn't muting the system stream, the ringer mode can still mute // the system stream if ((zenPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_SYSTEM) == 0) { zenModeAffectedStreams |= 1 << AudioManager.STREAM_SYSTEM; Loading services/core/java/com/android/server/notification/ZenModeHelper.java +6 −14 Original line number Diff line number Diff line Loading @@ -1179,7 +1179,7 @@ public class ZenModeHelper { if (mZenMode == Global.ZEN_MODE_OFF || (mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && !ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(mConfig))) { && !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(mConfig))) { // in priority only with ringer not muted, save ringer mode changes // in dnd off, save ringer mode changes setPreviousRingerModeSetting(ringerModeNew); Loading @@ -1200,7 +1200,7 @@ public class ZenModeHelper { && (mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS || mZenMode == Global.ZEN_MODE_ALARMS || (mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted( && ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted( mConfig)))) { newZen = Global.ZEN_MODE_OFF; } else if (mZenMode != Global.ZEN_MODE_OFF) { Loading Loading @@ -1264,29 +1264,21 @@ public class ZenModeHelper { @Override public int getRingerModeAffectedStreams(int streams) { // ringtone and notification streams are always affected by ringer mode // system stream is affected by ringer mode when not in priority-only // ringtone, notification and system streams are always affected by ringer mode // zen muting is handled in AudioService.java's mZenModeAffectedStreams streams |= (1 << AudioSystem.STREAM_RING) | (1 << AudioSystem.STREAM_NOTIFICATION) | (1 << AudioSystem.STREAM_SYSTEM); if (mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS) { // alarm and music streams affected by ringer mode when in total silence // alarm and music streams affected by ringer mode (cannot be adjusted) when in // total silence streams |= (1 << AudioSystem.STREAM_ALARM) | (1 << AudioSystem.STREAM_MUSIC); } else { streams &= ~((1 << AudioSystem.STREAM_ALARM) | (1 << AudioSystem.STREAM_MUSIC)); } if (mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(mConfig)) { // system stream is not affected by ringer mode in priority only when the ringer // is zen muted (all other notification categories are muted) streams &= ~(1 << AudioSystem.STREAM_SYSTEM); } else { streams |= (1 << AudioSystem.STREAM_SYSTEM); } return streams; } } Loading Loading
core/java/android/preference/SeekBarVolumizer.java +2 −2 Original line number Diff line number Diff line Loading @@ -151,7 +151,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba .PRIORITY_CATEGORY_ALARMS) != 0; mAllowMedia = (mNotificationPolicy.priorityCategories & NotificationManager.Policy .PRIORITY_CATEGORY_MEDIA) != 0; mAllowRinger = !ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted( mAllowRinger = !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted( mNotificationPolicy); mStreamType = streamType; mAffectedByRingerMode = mAudioManager.isStreamAffectedByRingerMode(mStreamType); Loading Loading @@ -571,7 +571,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba .PRIORITY_CATEGORY_ALARMS) != 0; mAllowMedia = (mNotificationPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_MEDIA) != 0; mAllowRinger = !ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted( mAllowRinger = !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted( mNotificationPolicy); updateSlider(); } Loading
core/java/android/service/notification/ZenModeConfig.java +15 −15 Original line number Diff line number Diff line Loading @@ -1904,10 +1904,10 @@ public class ZenModeConfig implements Parcelable { } /** * Determines whether dnd behavior should mute all notification/ringer sounds * (sounds associated with ringer volume discluding system) * Determines whether dnd behavior should mute all ringer-controlled sounds * This includes notification, ringer and system sounds */ public static boolean areAllPriorityOnlyNotificationZenSoundsMuted(NotificationManager.Policy public static boolean areAllPriorityOnlyRingerSoundsMuted(NotificationManager.Policy policy) { boolean allowReminders = (policy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_REMINDERS) != 0; Loading @@ -1920,20 +1920,19 @@ public class ZenModeConfig implements Parcelable { boolean allowRepeatCallers = (policy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS) != 0; boolean areChannelsBypassingDnd = (policy.state & Policy.STATE_CHANNELS_BYPASSING_DND) != 0; boolean allowSystem = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_SYSTEM) != 0; return !allowReminders && !allowCalls && !allowMessages && !allowEvents && !allowRepeatCallers && !areChannelsBypassingDnd; && !allowRepeatCallers && !areChannelsBypassingDnd && !allowSystem; } /** * Determines whether dnd behavior should mute all sounds controlled by ringer * Determines whether dnd behavior should mute all sounds */ public static boolean areAllZenBehaviorSoundsMuted(NotificationManager.Policy policy) { boolean allowAlarms = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_ALARMS) != 0; boolean allowMedia = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_MEDIA) != 0; boolean allowSystem = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_SYSTEM) != 0; return !allowAlarms && !allowMedia && !allowSystem && areAllPriorityOnlyNotificationZenSoundsMuted(policy); return !allowAlarms && !allowMedia && areAllPriorityOnlyRingerSoundsMuted(policy); } /** Loading @@ -1943,24 +1942,25 @@ public class ZenModeConfig implements Parcelable { return zen == Global.ZEN_MODE_NO_INTERRUPTIONS || zen == Global.ZEN_MODE_ALARMS || (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(consolidatedPolicy)); && ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(consolidatedPolicy)); } /** * Determines whether dnd behavior should mute all sounds controlled by ringer * Determines whether dnd behavior should mute all ringer-controlled sounds * This includes notification, ringer and system sounds */ public static boolean areAllPriorityOnlyNotificationZenSoundsMuted(ZenModeConfig config) { public static boolean areAllPriorityOnlyRingerSoundsMuted(ZenModeConfig config) { return !config.allowReminders && !config.allowCalls && !config.allowMessages && !config.allowEvents && !config.allowRepeatCallers && !config.areChannelsBypassingDnd; && !config.areChannelsBypassingDnd && !config.allowSystem; } /** * Determines whether all dnd mutes all sounds * Determines whether dnd mutes all sounds */ public static boolean areAllZenBehaviorSoundsMuted(ZenModeConfig config) { return !config.allowAlarms && !config.allowMedia && !config.allowSystem && areAllPriorityOnlyNotificationZenSoundsMuted(config); return !config.allowAlarms && !config.allowMedia && areAllPriorityOnlyRingerSoundsMuted(config); } /** Loading
packages/SystemUI/src/com/android/systemui/volume/VolumeDialogControllerImpl.java +3 −1 Original line number Diff line number Diff line Loading @@ -621,7 +621,9 @@ public class VolumeDialogControllerImpl implements VolumeDialogController, Dumpa .PRIORITY_CATEGORY_MEDIA) == 0; boolean disallowSystem = (policy.priorityCategories & NotificationManager.Policy .PRIORITY_CATEGORY_SYSTEM) == 0; boolean disallowRinger = ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(policy); // ringer controls notifications, ringer and system sounds, so only disallow ringer changes // if all relevant (notifications + ringer + system) sounds are not allowed to bypass DND boolean disallowRinger = ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(policy); if (mState.disallowAlarms == disallowAlarms && mState.disallowMedia == disallowMedia && mState.disallowRinger == disallowRinger Loading
services/core/java/com/android/server/audio/AudioService.java +17 −5 Original line number Diff line number Diff line Loading @@ -3854,7 +3854,7 @@ public class AudioService extends IAudioService.Stub final boolean muteSystem = (zenPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_SYSTEM) == 0; final boolean muteNotificationAndRing = ZenModeConfig .areAllPriorityOnlyNotificationZenSoundsMuted( .areAllPriorityOnlyRingerSoundsMuted( mNm.getConsolidatedNotificationPolicy()); return muteAlarms && isAlarm(streamType) || muteMedia && isMedia(streamType) Loading @@ -3867,16 +3867,26 @@ public class AudioService extends IAudioService.Stub } /** * DND total silence: media and alarms streams are tied to the muted ringer * Notifications, ringer and system sounds are controlled by the ringer: * {@link ZenModeHelper.RingerModeDelegate#getRingerModeAffectedStreams(int)} * DND alarms only: notification, ringer + system muted (by default tied to muted ringer mode) * DND priority only: alarms, media, system streams can be muted separate from ringer based on * DND total silence: media and alarms streams can be muted by DND * DND alarms only: no streams additionally controlled by DND * DND priority only: alarms, media, system streams can be muted by DND based on * zenPolicy (this method determines which streams) * @return true if changed, else false */ private boolean updateZenModeAffectedStreams() { if (!mSystemReady) { return false; } int zenModeAffectedStreams = 0; if (mSystemReady && mNm.getZenMode() == Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) { final int zenMode = mNm.getZenMode(); if (zenMode == Settings.Global.ZEN_MODE_NO_INTERRUPTIONS) { zenModeAffectedStreams |= 1 << AudioManager.STREAM_ALARM; zenModeAffectedStreams |= 1 << AudioManager.STREAM_MUSIC; } else if (zenMode == Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) { NotificationManager.Policy zenPolicy = mNm.getConsolidatedNotificationPolicy(); if ((zenPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_ALARMS) == 0) { Loading @@ -3888,6 +3898,8 @@ public class AudioService extends IAudioService.Stub zenModeAffectedStreams |= 1 << AudioManager.STREAM_MUSIC; } // even if zen isn't muting the system stream, the ringer mode can still mute // the system stream if ((zenPolicy.priorityCategories & NotificationManager.Policy.PRIORITY_CATEGORY_SYSTEM) == 0) { zenModeAffectedStreams |= 1 << AudioManager.STREAM_SYSTEM; Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +6 −14 Original line number Diff line number Diff line Loading @@ -1179,7 +1179,7 @@ public class ZenModeHelper { if (mZenMode == Global.ZEN_MODE_OFF || (mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && !ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(mConfig))) { && !ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted(mConfig))) { // in priority only with ringer not muted, save ringer mode changes // in dnd off, save ringer mode changes setPreviousRingerModeSetting(ringerModeNew); Loading @@ -1200,7 +1200,7 @@ public class ZenModeHelper { && (mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS || mZenMode == Global.ZEN_MODE_ALARMS || (mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted( && ZenModeConfig.areAllPriorityOnlyRingerSoundsMuted( mConfig)))) { newZen = Global.ZEN_MODE_OFF; } else if (mZenMode != Global.ZEN_MODE_OFF) { Loading Loading @@ -1264,29 +1264,21 @@ public class ZenModeHelper { @Override public int getRingerModeAffectedStreams(int streams) { // ringtone and notification streams are always affected by ringer mode // system stream is affected by ringer mode when not in priority-only // ringtone, notification and system streams are always affected by ringer mode // zen muting is handled in AudioService.java's mZenModeAffectedStreams streams |= (1 << AudioSystem.STREAM_RING) | (1 << AudioSystem.STREAM_NOTIFICATION) | (1 << AudioSystem.STREAM_SYSTEM); if (mZenMode == Global.ZEN_MODE_NO_INTERRUPTIONS) { // alarm and music streams affected by ringer mode when in total silence // alarm and music streams affected by ringer mode (cannot be adjusted) when in // total silence streams |= (1 << AudioSystem.STREAM_ALARM) | (1 << AudioSystem.STREAM_MUSIC); } else { streams &= ~((1 << AudioSystem.STREAM_ALARM) | (1 << AudioSystem.STREAM_MUSIC)); } if (mZenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS && ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(mConfig)) { // system stream is not affected by ringer mode in priority only when the ringer // is zen muted (all other notification categories are muted) streams &= ~(1 << AudioSystem.STREAM_SYSTEM); } else { streams |= (1 << AudioSystem.STREAM_SYSTEM); } return streams; } } Loading