diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 1c8a26cc61d1b..d9cad0e4fa7c7 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -18,7 +18,6 @@ package com.android.systemui.volume; import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_ALL_MASK; import static android.accessibilityservice.AccessibilityServiceInfo.FEEDBACK_GENERIC; -import static android.media.AudioManager.RINGER_MODE_MAX; import static android.media.AudioManager.RINGER_MODE_NORMAL; import static android.media.AudioManager.RINGER_MODE_SILENT; import static android.media.AudioManager.RINGER_MODE_VIBRATE; @@ -570,7 +569,11 @@ public class VolumeDialogImpl implements VolumeDialog { return; } - enableRingerViewsH(mState.zenMode == Global.ZEN_MODE_OFF || !mState.disallowRinger); + boolean isZenMuted = mState.zenMode == Global.ZEN_MODE_ALARMS + || mState.zenMode == Global.ZEN_MODE_NO_INTERRUPTIONS + || (mState.zenMode == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS + && mState.disallowRinger); + enableRingerViewsH(!isZenMuted); switch (mState.ringerModeInternal) { case AudioManager.RINGER_MODE_VIBRATE: mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_vibrate); @@ -586,7 +589,7 @@ public class VolumeDialogImpl implements VolumeDialog { case AudioManager.RINGER_MODE_NORMAL: default: boolean muted = (mAutomute && ss.level == 0) || ss.muted; - if (muted) { + if (!isZenMuted && muted) { mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_mute); mRingerIcon.setContentDescription(mContext.getString( R.string.volume_stream_content_description_unmute, diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 5c823433afafb..586abc16fe349 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -933,11 +933,7 @@ public class ZenModeHelper { } break; case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS: - if (ZenModeConfig.areAllPriorityOnlyNotificationZenSoundsMuted(mConfig) - && ringerModeInternal != AudioManager.RINGER_MODE_SILENT) { - setPreviousRingerModeSetting(ringerModeInternal); - newRingerModeInternal = AudioManager.RINGER_MODE_SILENT; - } + // do not apply zen to ringer, streams zen muted in AudioService break; case Global.ZEN_MODE_OFF: if (ringerModeInternal == AudioManager.RINGER_MODE_SILENT) { diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java index 381e04c188b1c..3acc2773afb58 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java @@ -329,12 +329,12 @@ public class ZenModeHelperTest extends UiServiceTestCase { mZenModeHelperSpy.mConfig.allowEvents = false; mZenModeHelperSpy.mConfig.allowRepeatCallers= false; - // 2. apply priority only zen - verify ringer is set to silent + // 2. apply priority only zen - verify ringer is unchanged mZenModeHelperSpy.applyZenToRingerMode(); - verify(mAudioManager, atLeastOnce()).setRingerModeInternal(AudioManager.RINGER_MODE_SILENT, + verify(mAudioManager, never()).setRingerModeInternal(AudioManager.RINGER_MODE_SILENT, mZenModeHelperSpy.TAG); - // 3. apply zen off - verify zen is set to prevoius ringer (normal) + // 3. apply zen off - verify zen is set to previous ringer (normal) when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT); mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_OFF; mZenModeHelperSpy.applyZenToRingerMode();