Merge "[Output Switcher] Improve volume control" into udc-qpr-dev
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 b88eba9..a3d1d8c 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 @@
private String mDeviceId;
private ValueAnimator mCornerAnimator;
private ValueAnimator mVolumeAnimator;
+ private int mLatestUpdateVolume = -1;
MediaDeviceBaseViewHolder(View view) {
super(view);
@@ -314,7 +315,11 @@
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 @@
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 @@
mStartFromMute = false;
}
if (progressToVolume != deviceVolume) {
+ mLatestUpdateVolume = progressToVolume;
mController.adjustVolume(device, progressToVolume);
}
}