diff --git a/media/java/android/media/VolumePolicy.java b/media/java/android/media/VolumePolicy.java index 2d3376ad80a69..1d33128ba752d 100644 --- a/media/java/android/media/VolumePolicy.java +++ b/media/java/android/media/VolumePolicy.java @@ -19,6 +19,8 @@ package android.media; import android.os.Parcel; import android.os.Parcelable; +import java.util.Objects; + /** @hide */ public final class VolumePolicy implements Parcelable { public static final VolumePolicy DEFAULT = new VolumePolicy(false, false, true, 400); @@ -52,6 +54,23 @@ public final class VolumePolicy implements Parcelable { + ",vibrateToSilentDebounce=" + vibrateToSilentDebounce + "]"; } + @Override + public int hashCode() { + return Objects.hash(volumeDownToEnterSilent, volumeUpToExitSilent, doNotDisturbWhenSilent, + vibrateToSilentDebounce); + } + + @Override + public boolean equals(Object o) { + if (!(o instanceof VolumePolicy)) return false; + if (o == this) return true; + final VolumePolicy other = (VolumePolicy) o; + return other.volumeDownToEnterSilent == volumeDownToEnterSilent + && other.volumeUpToExitSilent == volumeUpToExitSilent + && other.doNotDisturbWhenSilent == doNotDisturbWhenSilent + && other.vibrateToSilentDebounce == vibrateToSilentDebounce; + } + @Override public int describeContents() { return 0; diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java index e1d49ce65de71..86abfcc348e39 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java @@ -43,6 +43,12 @@ public class VolumeDialogComponent implements VolumeComponent { private final VolumeDialogController mController; private final ZenModeController mZenModeController; private final VolumeDialog mDialog; + private final VolumePolicy mVolumePolicy = new VolumePolicy( + true, // volumeDownToEnterSilent + true, // volumeUpToExitSilent + true, // doNotDisturbWhenSilent + 400 // vibrateToSilentDebounce + ); public VolumeDialogComponent(SystemUI sysui, Context context, Handler handler, ZenModeController zen) { @@ -74,7 +80,7 @@ public class VolumeDialogComponent implements VolumeComponent { mDialog.setZenFooter(true); mDialog.setAutomute(true); mDialog.setSilentMode(false); - mController.setVolumePolicy(VolumePolicy.DEFAULT); + mController.setVolumePolicy(mVolumePolicy); mController.showDndTile(false); } diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java index 5bc8c3ec55a2b..012eb41b2d305 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java @@ -99,7 +99,7 @@ public class VolumeDialogController { private boolean mEnabled; private boolean mDestroyed; - private VolumePolicy mVolumePolicy = new VolumePolicy(true, true, false, 400); + private VolumePolicy mVolumePolicy; private boolean mShowDndTile = false; public VolumeDialogController(Context context, ComponentName component) { @@ -147,6 +147,7 @@ public class VolumeDialogController { public void setVolumePolicy(VolumePolicy policy) { mVolumePolicy = policy; + if (mVolumePolicy == null) return; try { mAudio.setVolumePolicy(mVolumePolicy); } catch (NoSuchMethodError e) { diff --git a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java index 9dbe1c8444cf8..775c87d65ab88 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java +++ b/packages/SystemUI/src/com/android/systemui/volume/ZenFooter.java @@ -244,8 +244,7 @@ public class ZenFooter extends LinearLayout { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (D.BUG) Log.d(TAG, "onCheckedChanged " + isChecked); if (isChecked != isZen()) { - final int newZen = isChecked ? Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS - : Global.ZEN_MODE_OFF; + final int newZen = isChecked ? Global.ZEN_MODE_ALARMS : Global.ZEN_MODE_OFF; mZen = newZen; // this one's optimistic setFooterExpanded(isChecked); mController.setZen(newZen, null, TAG); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 1eddc8e21aa27..9a30f0dd83712 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -5577,8 +5577,9 @@ public class AudioService extends IAudioService.Stub { @Override public void setVolumePolicy(VolumePolicy policy) { enforceVolumeController("set volume policy"); - if (policy != null) { + if (policy != null && !policy.equals(mVolumePolicy)) { mVolumePolicy = policy; + if (DEBUG_VOL) Log.d(TAG, "Volume policy changed: " + mVolumePolicy); } } diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 683d1fdcbafd3..40218bb43e778 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -501,7 +501,7 @@ public class ZenModeHelper { if (isChange && policy.doNotDisturbWhenSilent) { if (mZenMode != Global.ZEN_MODE_NO_INTERRUPTIONS && mZenMode != Global.ZEN_MODE_ALARMS) { - newZen = Global.ZEN_MODE_NO_INTERRUPTIONS; + newZen = Global.ZEN_MODE_ALARMS; } } break;