diff options
| author | 2023-08-09 03:50:32 +0000 | |
|---|---|---|
| committer | 2023-08-09 03:50:32 +0000 | |
| commit | bc8c625b65a55eeeb4792cfb490fa1322d3496e1 (patch) | |
| tree | 20e110b0b1170285ae169b05f21201dd623f4d99 | |
| parent | 2e96ec4c85a2a6752f7f863442c8b252d5ca02c1 (diff) | |
| parent | 129a648345aca7e989368f31fc867514208ddd70 (diff) | |
Merge "[Output Switcher] Improve volume control" into udc-qpr-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java index b88eba9081f7..a3d1d8c6959d 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java @@ -157,6 +157,7 @@ public abstract class MediaOutputBaseAdapter extends private String mDeviceId; private ValueAnimator mCornerAnimator; private ValueAnimator mVolumeAnimator; + private int mLatestUpdateVolume = -1; MediaDeviceBaseViewHolder(View view) { super(view); @@ -314,7 +315,11 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar.setMaxVolume(device.getMaxVolume()); final int currentVolume = device.getCurrentVolume(); if (!mIsDragging) { - if (mSeekBar.getVolume() != currentVolume) { + if (mSeekBar.getVolume() != currentVolume && (mLatestUpdateVolume == -1 + || currentVolume == mLatestUpdateVolume)) { + // Update only if volume of device and value of volume bar doesn't match. + // Check if response volume match with the latest request, to ignore obsolete + // response if (isCurrentSeekbarInvisible && !mIsInitVolumeFirstTime) { updateTitleIcon(currentVolume == 0 ? R.drawable.media_output_icon_volume_off : R.drawable.media_output_icon_volume, @@ -330,12 +335,16 @@ public abstract class MediaOutputBaseAdapter extends updateUnmutedVolumeIcon(); } mSeekBar.setVolume(currentVolume); + mLatestUpdateVolume = -1; } } } else if (currentVolume == 0) { mSeekBar.resetVolume(); updateMutedVolumeIcon(); } + if (currentVolume == mLatestUpdateVolume) { + mLatestUpdateVolume = -1; + } } if (mIsInitVolumeFirstTime) { mIsInitVolumeFirstTime = false; @@ -360,6 +369,7 @@ public abstract class MediaOutputBaseAdapter extends mStartFromMute = false; } if (progressToVolume != deviceVolume) { + mLatestUpdateVolume = progressToVolume; mController.adjustVolume(device, progressToVolume); } } |