diff options
| author | 2022-10-12 20:38:18 +0000 | |
|---|---|---|
| committer | 2022-10-12 20:38:18 +0000 | |
| commit | 07edc2a049572bc2fdfd7c4aa87198a8e1512795 (patch) | |
| tree | e643945a1b6b9256a611c3cb82fce2d8bede3f4f | |
| parent | b26534a83a2066c2309e9df15358c01abf038331 (diff) | |
| parent | 18492d79dc05a2123730f2752895b6edf211e60e (diff) | |
Merge "Separate notification/ring volume sliders in UI" into tm-qpr-dev am: 1387d8d4ac am: 18492d79dc
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19939977
Change-Id: I1fa3c65e2d3bfe71f064e72fd5b8b236e66e005e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 23 insertions, 3 deletions
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index ddfbc6847ed0..302d1469e1fb 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -159,6 +159,7 @@ interface INotificationManager void clearRequestedListenerHints(in INotificationListener token); void requestHintsFromListener(in INotificationListener token, int hints); int getHintsFromListener(in INotificationListener token); + int getHintsFromListenerNoToken(); void requestInterruptionFilterFromListener(in INotificationListener token, int interruptionFilter); int getInterruptionFilterFromListener(in INotificationListener token); void setOnNotificationPostedTrimFromListener(in INotificationListener token, int trim); diff --git a/core/java/android/preference/SeekBarVolumizer.java b/core/java/android/preference/SeekBarVolumizer.java index 2c0be870836a..3bf9ca044141 100644 --- a/core/java/android/preference/SeekBarVolumizer.java +++ b/core/java/android/preference/SeekBarVolumizer.java @@ -115,6 +115,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private final int mMaxStreamVolume; private boolean mAffectedByRingerMode; private boolean mNotificationOrRing; + private final boolean mNotifAliasRing; private final Receiver mReceiver = new Receiver(); private Handler mHandler; @@ -179,6 +180,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba if (mNotificationOrRing) { mRingerMode = mAudioManager.getRingerModeInternal(); } + mNotifAliasRing = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_alias_ring_notif_stream_types); mZenMode = mNotificationManager.getZenMode(); if (hasAudioProductStrategies()) { @@ -280,7 +283,15 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba if (zenMuted) { mSeekBar.setProgress(mLastAudibleStreamVolume, true); } else if (mNotificationOrRing && mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { - mSeekBar.setProgress(0, true); + /** + * the first variable above is preserved and the conditions below are made explicit + * so that when user attempts to slide the notification seekbar out of vibrate the + * seekbar doesn't wrongly snap back to 0 when the streams aren't aliased + */ + if (mNotifAliasRing || mStreamType == AudioManager.STREAM_RING + || (mStreamType == AudioManager.STREAM_NOTIFICATION && mMuted)) { + mSeekBar.setProgress(0, true); + } } else if (mMuted) { mSeekBar.setProgress(0, true); } else { @@ -354,6 +365,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba // set the time of stop volume if ((mStreamType == AudioManager.STREAM_VOICE_CALL || mStreamType == AudioManager.STREAM_RING + || (!mNotifAliasRing && mStreamType == AudioManager.STREAM_NOTIFICATION) || mStreamType == AudioManager.STREAM_ALARM)) { sStopVolumeTime = java.lang.System.currentTimeMillis(); } @@ -632,8 +644,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } private void updateVolumeSlider(int streamType, int streamValue) { - final boolean streamMatch = mNotificationOrRing ? isNotificationOrRing(streamType) - : (streamType == mStreamType); + final boolean streamMatch = mNotifAliasRing && mNotificationOrRing + ? isNotificationOrRing(streamType) : streamType == mStreamType; if (mSeekBar != null && streamMatch && streamValue != -1) { final boolean muted = mAudioManager.isStreamMute(mStreamType) || streamValue == 0; diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 4b18add39999..77fea09b5ecc 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -4872,6 +4872,13 @@ public class NotificationManagerService extends SystemService { } @Override + public int getHintsFromListenerNoToken() { + synchronized (mNotificationLock) { + return mListenerHints; + } + } + + @Override public void requestInterruptionFilterFromListener(INotificationListener token, int interruptionFilter) throws RemoteException { final long identity = Binder.clearCallingIdentity(); |