diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java index ffcb8c68527dd..d555d05437a13 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java @@ -146,6 +146,11 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { @Override public int getItemViewType(int position) { + if (mController.isAdvancedLayoutSupported() + && position >= mController.getMediaItemList().size()) { + Log.d(TAG, "Incorrect position for item type: " + position); + return MediaItem.MediaItemType.TYPE_GROUP_DIVIDER; + } return mController.isAdvancedLayoutSupported() ? mController.getMediaItemList().get(position).getMediaItemType() : super.getItemViewType(position); 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 b1cbee8e54a1c..2a2cf63464ce6 100644 --- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java @@ -333,7 +333,7 @@ public abstract class MediaOutputBaseAdapter extends if (!mController.isVolumeControlEnabled(device)) { disableSeekBar(); } else { - enableSeekBar(); + enableSeekBar(device); } mSeekBar.setMaxVolume(device.getMaxVolume()); final int currentVolume = device.getCurrentVolume(); @@ -369,13 +369,6 @@ public abstract class MediaOutputBaseAdapter extends if (mIsInitVolumeFirstTime) { mIsInitVolumeFirstTime = false; } - if (mController.isAdvancedLayoutSupported()) { - updateIconAreaClickListener((v) -> { - mSeekBar.resetVolume(); - mController.adjustVolume(device, 0); - updateMutedVolumeIcon(); - }); - } mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { @@ -556,11 +549,21 @@ public abstract class MediaOutputBaseAdapter extends protected void disableSeekBar() { mSeekBar.setEnabled(false); mSeekBar.setOnTouchListener((v, event) -> true); + if (mController.isAdvancedLayoutSupported()) { + updateIconAreaClickListener(null); + } } - private void enableSeekBar() { + private void enableSeekBar(MediaDevice device) { mSeekBar.setEnabled(true); mSeekBar.setOnTouchListener((v, event) -> false); + if (mController.isAdvancedLayoutSupported()) { + updateIconAreaClickListener((v) -> { + mSeekBar.resetVolume(); + mController.adjustVolume(device, 0); + updateMutedVolumeIcon(); + }); + } } protected void setUpDeviceIcon(MediaDevice device) {