From 5d1911a24673ff4f7f491d1a1ec16c39d24ed1c6 Mon Sep 17 00:00:00 2001 From: Behnam Heydarshahi Date: Wed, 18 Jan 2023 20:06:35 +0000 Subject: [PATCH] Ring volume icon stuck at normal Fix the bug where dragging ring volume slider all the way to left would not trigger an icon change, on devices that do not have a vibrator. Solution: offer a boolean config for volumeDownToEnterSilent. Bug: 265459313 Test: Manual. Slide ring volume to left in settings. Ring volume icon should switch to mute/vibrate and not get stuck at normal. Change-Id: I0d5f71a86703eda61c0d831046b2e0c3f5dabb84 --- core/res/res/values/config.xml | 3 +++ core/res/res/values/symbols.xml | 1 + .../volume/VolumeDialogComponent.java | 25 +++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 2f5efd12a2ba8..72ef918ab7ccd 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2074,6 +2074,9 @@ STREAM_MUSIC as if it's on TV platform. --> false + + false + 7 diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 41281fa0d40fe..a8a9d34d449d3 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -321,6 +321,7 @@ + diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java index f71d98827e4b5..a4537267ed625 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogComponent.java @@ -25,6 +25,7 @@ import android.os.Bundle; import android.provider.Settings; import android.view.WindowManager.LayoutParams; +import com.android.internal.R; import com.android.settingslib.applications.InterestingConfigChanges; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.demomode.DemoMode; @@ -55,7 +56,7 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna public static final String VOLUME_UP_SILENT = "sysui_volume_up_silent"; public static final String VOLUME_SILENT_DO_NOT_DISTURB = "sysui_do_not_disturb"; - public static final boolean DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT = false; + private final boolean mDefaultVolumeDownToEnterSilent; public static final boolean DEFAULT_VOLUME_UP_TO_EXIT_SILENT = false; public static final boolean DEFAULT_DO_NOT_DISTURB_WHEN_SILENT = false; @@ -72,12 +73,7 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna private final KeyguardViewMediator mKeyguardViewMediator; private final ActivityStarter mActivityStarter; private VolumeDialog mDialog; - private VolumePolicy mVolumePolicy = new VolumePolicy( - DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT, // volumeDownToEnterSilent - DEFAULT_VOLUME_UP_TO_EXIT_SILENT, // volumeUpToExitSilent - DEFAULT_DO_NOT_DISTURB_WHEN_SILENT, // doNotDisturbWhenSilent - 400 // vibrateToSilentDebounce - ); + private VolumePolicy mVolumePolicy; @Inject public VolumeDialogComponent( @@ -107,7 +103,20 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna mDialog = dialog; mDialog.init(LayoutParams.TYPE_VOLUME_OVERLAY, mVolumeDialogCallback); }).build(); + + + mDefaultVolumeDownToEnterSilent = mContext.getResources() + .getBoolean(R.bool.config_volume_down_to_enter_silent); + + mVolumePolicy = new VolumePolicy( + mDefaultVolumeDownToEnterSilent, // volumeDownToEnterSilent + DEFAULT_VOLUME_UP_TO_EXIT_SILENT, // volumeUpToExitSilent + DEFAULT_DO_NOT_DISTURB_WHEN_SILENT, // doNotDisturbWhenSilent + 400 // vibrateToSilentDebounce + ); + applyConfiguration(); + tunerService.addTunable(this, VOLUME_DOWN_SILENT, VOLUME_UP_SILENT, VOLUME_SILENT_DO_NOT_DISTURB); demoModeController.addCallback(this); @@ -121,7 +130,7 @@ public class VolumeDialogComponent implements VolumeComponent, TunerService.Tuna if (VOLUME_DOWN_SILENT.equals(key)) { volumeDownToEnterSilent = - TunerService.parseIntegerSwitch(newValue, DEFAULT_VOLUME_DOWN_TO_ENTER_SILENT); + TunerService.parseIntegerSwitch(newValue, mDefaultVolumeDownToEnterSilent); } else if (VOLUME_UP_SILENT.equals(key)) { volumeUpToExitSilent = TunerService.parseIntegerSwitch(newValue, DEFAULT_VOLUME_UP_TO_EXIT_SILENT);