Loading packages/SystemUI/src/com/android/systemui/flags/Flags.kt +0 −9 Original line number Diff line number Diff line Loading @@ -665,15 +665,6 @@ object Flags { val WARN_ON_BLOCKING_BINDER_TRANSACTIONS = unreleasedFlag(2400, "warn_on_blocking_binder_transactions") // 2500 - output switcher // TODO(b/261538825): Tracking Bug @JvmField val OUTPUT_SWITCHER_ADVANCED_LAYOUT = releasedFlag(2500, "output_switcher_advanced_layout") @JvmField val OUTPUT_SWITCHER_ROUTES_PROCESSING = releasedFlag(2501, "output_switcher_routes_processing") @JvmField val OUTPUT_SWITCHER_DEVICE_STATUS = releasedFlag(2502, "output_switcher_device_status") // 2700 - unfold transitions // TODO(b/265764985): Tracking Bug @Keep Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +59 −115 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { super.onCreateViewHolder(viewGroup, viewType); if (mController.isAdvancedLayoutSupported()) { switch (viewType) { case MediaItem.MediaItemType.TYPE_GROUP_DIVIDER: return new MediaGroupDividerViewHolder(mHolderView); Loading @@ -81,14 +80,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { default: return new MediaDeviceViewHolder(mHolderView); } } else { return new MediaDeviceViewHolder(mHolderView); } } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { if (mController.isAdvancedLayoutSupported()) { if (position >= mMediaItemList.size()) { if (DEBUG) { Log.d(TAG, "Incorrect position: " + position + " list size: " Loading @@ -112,23 +107,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { default: Log.d(TAG, "Incorrect position: " + position); } } else { final int size = mController.getMediaDevices().size(); if (position == size) { ((MediaDeviceViewHolder) viewHolder).onBind(CUSTOMIZED_ITEM_PAIR_NEW); } else if (position < size) { ((MediaDeviceViewHolder) viewHolder).onBind( ((List<MediaDevice>) (mController.getMediaDevices())).get(position), position); } else if (DEBUG) { Log.d(TAG, "Incorrect position: " + position); } } } @Override public long getItemId(int position) { if (mController.isAdvancedLayoutSupported()) { if (position >= mMediaItemList.size()) { Log.d(TAG, "Incorrect position for item id: " + position); return position; Loading @@ -138,36 +120,19 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { ? currentMediaItem.getMediaDevice().get().getId().hashCode() : position; } final int size = mController.getMediaDevices().size(); if (position == size) { return -1; } else if (position < size) { return ((List<MediaDevice>) (mController.getMediaDevices())) .get(position).getId().hashCode(); } else if (DEBUG) { Log.d(TAG, "Incorrect position for item id: " + position); } return position; } @Override public int getItemViewType(int position) { if (mController.isAdvancedLayoutSupported() && position >= mMediaItemList.size()) { if (position >= mMediaItemList.size()) { Log.d(TAG, "Incorrect position for item type: " + position); return MediaItem.MediaItemType.TYPE_GROUP_DIVIDER; } return mController.isAdvancedLayoutSupported() ? mMediaItemList.get(position).getMediaItemType() : super.getItemViewType(position); return mMediaItemList.get(position).getMediaItemType(); } @Override public int getItemCount() { // Add extra one for "pair new" return mController.isAdvancedLayoutSupported() ? mMediaItemList.size() : mController.getMediaDevices().size() + 1; return mMediaItemList.size(); } class MediaDeviceViewHolder extends MediaDeviceBaseViewHolder { Loading Loading @@ -203,17 +168,14 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { // Set different layout for each device if (device.isMutingExpectedDevice() && !mController.isCurrentConnectedDeviceRemote()) { if (!mController.isAdvancedLayoutSupported()) { updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); } mCurrentActivePosition = position; updateFullItemClickListener(v -> onItemClick(v, device)); setSingleLineLayout(getItemTitle(device)); initMutingExpectedDevice(); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && mController.isSubStatusSupported() && mController.isAdvancedLayoutSupported() && device.hasSubtext()) { && device.hasSubtext()) { boolean isActiveWithOngoingSession = (device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded( mController.getSelectedMediaDevice(), device))); Loading Loading @@ -284,10 +246,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { // selected device in group boolean isDeviceDeselectable = isDeviceIncluded( mController.getDeselectableMediaDevice(), device); if (!mController.isAdvancedLayoutSupported()) { updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); } updateGroupableCheckBox(true, isDeviceDeselectable, device); updateEndClickArea(device, isDeviceDeselectable); setUpContentDescriptionForView(mContainerLayout, false, device); Loading @@ -305,8 +265,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { updateFullItemClickListener(v -> cancelMuteAwaitConnection()); setSingleLineLayout(getItemTitle(device)); } else if (mController.isCurrentConnectedDeviceRemote() && !mController.getSelectableMediaDevice().isEmpty() && mController.isAdvancedLayoutSupported()) { && !mController.getSelectableMediaDevice().isEmpty()) { //If device is connected and there's other selectable devices, layout as // one of selected devices. updateTitleIcon(R.drawable.media_output_icon_volume, Loading Loading @@ -334,20 +293,14 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { //groupable device setUpDeviceIcon(device); updateGroupableCheckBox(false, true, device); if (mController.isAdvancedLayoutSupported()) { updateEndClickArea(device, true); } updateFullItemClickListener(mController.isAdvancedLayoutSupported() ? v -> onItemClick(v, device) : v -> onGroupActionTriggered(true, device)); updateFullItemClickListener(v -> onItemClick(v, device)); setSingleLineLayout(getItemTitle(device), false /* showSeekBar */, false /* showProgressBar */, true /* showCheckBox */, true /* showEndTouchArea */); } else { setUpDeviceIcon(device); setSingleLineLayout(getItemTitle(device)); if (mController.isAdvancedLayoutSupported() && mController.isSubStatusSupported()) { Drawable deviceStatusIcon = device.hasOngoingSession() ? mContext.getDrawable( R.drawable.ic_sound_bars_anim) Loading @@ -361,9 +314,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { updateSingleLineLayoutContentAlpha( updateClickActionBasedOnSelectionBehavior(device) ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA); } else { updateFullItemClickListener(v -> onItemClick(v, device)); } } } } Loading Loading @@ -400,11 +350,9 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } public void updateEndClickAreaColor(int color) { if (mController.isAdvancedLayoutSupported()) { mEndTouchArea.setBackgroundTintList( ColorStateList.valueOf(color)); } } private boolean updateClickActionBasedOnSelectionBehavior(MediaDevice device) { View.OnClickListener clickListener = Api34Impl.getClickListenerBasedOnSelectionBehavior( Loading Loading @@ -440,10 +388,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { isDeviceDeselectable ? (v) -> mCheckBox.performClick() : null); mEndTouchArea.setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_YES); if (mController.isAdvancedLayoutSupported()) { mEndTouchArea.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemBackground())); } setUpContentDescriptionForView(mEndTouchArea, true, device); } Loading Loading @@ -473,10 +419,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mTitleIcon.setImageDrawable(addDrawable); mTitleIcon.setImageTintList( ColorStateList.valueOf(mController.getColorItemContent())); if (mController.isAdvancedLayoutSupported()) { mIconAreaLayout.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemBackground())); } mContainerLayout.setOnClickListener(mController::launchBluetoothPairing); } } Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +83 −131 Original line number Diff line number Diff line Loading @@ -89,9 +89,8 @@ public abstract class MediaOutputBaseAdapter extends public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { mContext = viewGroup.getContext(); mHolderView = LayoutInflater.from(mContext).inflate( mController.isAdvancedLayoutSupported() ? MediaItem.getMediaLayoutId(viewType) : R.layout.media_output_list_item, viewGroup, false); mHolderView = LayoutInflater.from(mContext).inflate(MediaItem.getMediaLayoutId(viewType), viewGroup, false); return null; } Loading Loading @@ -173,15 +172,9 @@ public abstract class MediaOutputBaseAdapter extends mStatusIcon = view.requireViewById(R.id.media_output_item_status); mCheckBox = view.requireViewById(R.id.check_box); mEndTouchArea = view.requireViewById(R.id.end_action_area); if (mController.isAdvancedLayoutSupported()) { mEndClickIcon = view.requireViewById(R.id.media_output_item_end_click_icon); mVolumeValueText = view.requireViewById(R.id.volume_value); mIconAreaLayout = view.requireViewById(R.id.icon_area); } else { mVolumeValueText = null; mIconAreaLayout = null; mEndClickIcon = null; } initAnimator(); } Loading @@ -197,9 +190,7 @@ public abstract class MediaOutputBaseAdapter extends mTitleText.setTextColor(mController.getColorItemContent()); mSubTitleText.setTextColor(mController.getColorItemContent()); mTwoLineTitleText.setTextColor(mController.getColorItemContent()); if (mController.isAdvancedLayoutSupported()) { mVolumeValueText.setTextColor(mController.getColorItemContent()); } mSeekBar.setProgressTintList( ColorStateList.valueOf(mController.getColorSeekbarProgress())); } Loading Loading @@ -230,12 +221,10 @@ public abstract class MediaOutputBaseAdapter extends mItemLayout.setBackgroundTintList( ColorStateList.valueOf(isActive ? mController.getColorConnectedItemBackground() : mController.getColorItemBackground())); if (mController.isAdvancedLayoutSupported()) { mIconAreaLayout.setBackgroundTintList( ColorStateList.valueOf(showSeekBar ? mController.getColorSeekbarProgress() : showProgressBar ? mController.getColorConnectedItemBackground() : mController.getColorItemBackground())); } mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE); mSeekBar.setAlpha(1); mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE); Loading @@ -246,12 +235,10 @@ public abstract class MediaOutputBaseAdapter extends mTitleText.setVisibility(View.VISIBLE); mCheckBox.setVisibility(showCheckBox ? View.VISIBLE : View.GONE); mEndTouchArea.setVisibility(showEndTouchArea ? View.VISIBLE : View.GONE); if (mController.isAdvancedLayoutSupported()) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mItemLayout.getLayoutParams(); params.rightMargin = showEndTouchArea ? mController.getItemMarginEndSelectable() : mController.getItemMarginEndDefault(); } mTitleIcon.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemContent())); } Loading @@ -272,7 +259,6 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar.setAlpha(1); mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE); final Drawable backgroundDrawable; if (mController.isAdvancedLayoutSupported() && mController.isSubStatusSupported()) { backgroundDrawable = mContext.getDrawable( showSeekBar || isFakeActive ? R.drawable.media_output_item_background_active : R.drawable.media_output_item_background).mutate(); Loading @@ -295,13 +281,6 @@ public abstract class MediaOutputBaseAdapter extends (ViewGroup.MarginLayoutParams) mItemLayout.getLayoutParams(); params.rightMargin = showEndTouchArea ? mController.getItemMarginEndSelectable() : mController.getItemMarginEndDefault(); } else { backgroundDrawable = mContext.getDrawable( R.drawable.media_output_item_background) .mutate(); mItemLayout.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemBackground())); } mItemLayout.setBackground(backgroundDrawable); mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE); mSubTitleText.setVisibility(showSubtitle ? View.VISIBLE : View.GONE); Loading @@ -319,15 +298,11 @@ public abstract class MediaOutputBaseAdapter extends .findDrawableByLayerId(android.R.id.progress); final GradientDrawable progressDrawable = (GradientDrawable) clipDrawable.getDrawable(); if (mController.isAdvancedLayoutSupported()) { progressDrawable.setCornerRadii( new float[]{0, 0, mController.getActiveRadius(), mController.getActiveRadius(), mController.getActiveRadius(), mController.getActiveRadius(), 0, 0}); } else { progressDrawable.setCornerRadius(mController.getActiveRadius()); } } void initSeekbar(MediaDevice device, boolean isCurrentSeekbarInvisible) { Loading @@ -340,17 +315,11 @@ public abstract class MediaOutputBaseAdapter extends final int currentVolume = device.getCurrentVolume(); if (mSeekBar.getVolume() != currentVolume) { if (isCurrentSeekbarInvisible && !mIsInitVolumeFirstTime) { if (mController.isAdvancedLayoutSupported()) { updateTitleIcon(currentVolume == 0 ? R.drawable.media_output_icon_volume_off : R.drawable.media_output_icon_volume, mController.getColorItemContent()); } else { animateCornerAndVolume(mSeekBar.getProgress(), MediaOutputSeekbar.scaleVolumeToProgress(currentVolume)); } } else { if (!mVolumeAnimator.isStarted()) { if (mController.isAdvancedLayoutSupported()) { int percentage = (int) ((double) currentVolume * VOLUME_PERCENTAGE_SCALE_SIZE / (double) mSeekBar.getMax()); Loading @@ -359,11 +328,10 @@ public abstract class MediaOutputBaseAdapter extends } else { updateUnmutedVolumeIcon(); } } mSeekBar.setVolume(currentVolume); } } } else if (mController.isAdvancedLayoutSupported() && currentVolume == 0) { } else if (currentVolume == 0) { mSeekBar.resetVolume(); updateMutedVolumeIcon(); } Loading @@ -378,17 +346,15 @@ public abstract class MediaOutputBaseAdapter extends } int progressToVolume = MediaOutputSeekbar.scaleProgressToVolume(progress); int deviceVolume = device.getCurrentVolume(); if (mController.isAdvancedLayoutSupported()) { int percentage = (int) ((double) progressToVolume * VOLUME_PERCENTAGE_SCALE_SIZE / (double) seekBar.getMax()); mVolumeValueText.setText(mContext.getResources().getString( R.string.media_output_dialog_volume_percentage, percentage)); mVolumeValueText.setVisibility(View.VISIBLE); } if (progressToVolume != deviceVolume) { mController.adjustVolume(device, progressToVolume); if (mController.isAdvancedLayoutSupported() && deviceVolume == 0) { if (deviceVolume == 0) { updateUnmutedVolumeIcon(); } } Loading @@ -396,16 +362,13 @@ public abstract class MediaOutputBaseAdapter extends @Override public void onStartTrackingTouch(SeekBar seekBar) { if (mController.isAdvancedLayoutSupported()) { mTitleIcon.setVisibility(View.INVISIBLE); mVolumeValueText.setVisibility(View.VISIBLE); } mIsDragging = true; } @Override public void onStopTrackingTouch(SeekBar seekBar) { if (mController.isAdvancedLayoutSupported()) { int currentVolume = MediaOutputSeekbar.scaleProgressToVolume( seekBar.getProgress()); int percentage = Loading @@ -419,7 +382,6 @@ public abstract class MediaOutputBaseAdapter extends } mTitleIcon.setVisibility(View.VISIBLE); mVolumeValueText.setVisibility(View.GONE); } mController.logInteractionAdjustVolume(device); mIsDragging = false; } Loading @@ -444,11 +406,9 @@ public abstract class MediaOutputBaseAdapter extends void updateTitleIcon(@DrawableRes int id, int color) { mTitleIcon.setImageDrawable(mContext.getDrawable(id)); mTitleIcon.setImageTintList(ColorStateList.valueOf(color)); if (mController.isAdvancedLayoutSupported()) { mIconAreaLayout.setBackgroundTintList( ColorStateList.valueOf(mController.getColorSeekbarProgress())); } } void updateIconAreaClickListener(View.OnClickListener listener) { mTitleIcon.setOnClickListener(listener); Loading @@ -475,13 +435,10 @@ public abstract class MediaOutputBaseAdapter extends (ClipDrawable) ((LayerDrawable) mSeekBar.getProgressDrawable()) .findDrawableByLayerId(android.R.id.progress); final GradientDrawable targetBackgroundDrawable = (GradientDrawable) (mController.isAdvancedLayoutSupported() ? mIconAreaLayout.getBackground() : clipDrawable.getDrawable()); (GradientDrawable) (mIconAreaLayout.getBackground()); mCornerAnimator.addUpdateListener(animation -> { float value = (float) animation.getAnimatedValue(); layoutBackgroundDrawable.setCornerRadius(value); if (mController.isAdvancedLayoutSupported()) { if (toProgress == 0) { targetBackgroundDrawable.setCornerRadius(value); } else { Loading @@ -491,9 +448,6 @@ public abstract class MediaOutputBaseAdapter extends 0, 0, 0, 0, value, value }); } } else { targetBackgroundDrawable.setCornerRadius(value); } }); mVolumeAnimator.setIntValues(fromProgress, toProgress); mVolumeAnimator.start(); Loading Loading @@ -539,10 +493,8 @@ public abstract class MediaOutputBaseAdapter extends protected void disableSeekBar() { mSeekBar.setEnabled(false); mSeekBar.setOnTouchListener((v, event) -> true); if (mController.isAdvancedLayoutSupported()) { updateIconAreaClickListener(null); } } private void enableSeekBar(MediaDevice device) { mSeekBar.setEnabled(true); Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +2 −4 Original line number Diff line number Diff line Loading @@ -270,11 +270,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements dismiss(); }); mAppButton.setOnClickListener(mMediaOutputController::tryToLaunchMediaApplication); if (mMediaOutputController.isAdvancedLayoutSupported()) { mMediaMetadataSectionLayout.setOnClickListener( mMediaOutputController::tryToLaunchMediaApplication); } } @Override public void start() { Loading packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +11 −116 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
packages/SystemUI/src/com/android/systemui/flags/Flags.kt +0 −9 Original line number Diff line number Diff line Loading @@ -665,15 +665,6 @@ object Flags { val WARN_ON_BLOCKING_BINDER_TRANSACTIONS = unreleasedFlag(2400, "warn_on_blocking_binder_transactions") // 2500 - output switcher // TODO(b/261538825): Tracking Bug @JvmField val OUTPUT_SWITCHER_ADVANCED_LAYOUT = releasedFlag(2500, "output_switcher_advanced_layout") @JvmField val OUTPUT_SWITCHER_ROUTES_PROCESSING = releasedFlag(2501, "output_switcher_routes_processing") @JvmField val OUTPUT_SWITCHER_DEVICE_STATUS = releasedFlag(2502, "output_switcher_device_status") // 2700 - unfold transitions // TODO(b/265764985): Tracking Bug @Keep Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputAdapter.java +59 −115 Original line number Diff line number Diff line Loading @@ -72,7 +72,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { super.onCreateViewHolder(viewGroup, viewType); if (mController.isAdvancedLayoutSupported()) { switch (viewType) { case MediaItem.MediaItemType.TYPE_GROUP_DIVIDER: return new MediaGroupDividerViewHolder(mHolderView); Loading @@ -81,14 +80,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { default: return new MediaDeviceViewHolder(mHolderView); } } else { return new MediaDeviceViewHolder(mHolderView); } } @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) { if (mController.isAdvancedLayoutSupported()) { if (position >= mMediaItemList.size()) { if (DEBUG) { Log.d(TAG, "Incorrect position: " + position + " list size: " Loading @@ -112,23 +107,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { default: Log.d(TAG, "Incorrect position: " + position); } } else { final int size = mController.getMediaDevices().size(); if (position == size) { ((MediaDeviceViewHolder) viewHolder).onBind(CUSTOMIZED_ITEM_PAIR_NEW); } else if (position < size) { ((MediaDeviceViewHolder) viewHolder).onBind( ((List<MediaDevice>) (mController.getMediaDevices())).get(position), position); } else if (DEBUG) { Log.d(TAG, "Incorrect position: " + position); } } } @Override public long getItemId(int position) { if (mController.isAdvancedLayoutSupported()) { if (position >= mMediaItemList.size()) { Log.d(TAG, "Incorrect position for item id: " + position); return position; Loading @@ -138,36 +120,19 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { ? currentMediaItem.getMediaDevice().get().getId().hashCode() : position; } final int size = mController.getMediaDevices().size(); if (position == size) { return -1; } else if (position < size) { return ((List<MediaDevice>) (mController.getMediaDevices())) .get(position).getId().hashCode(); } else if (DEBUG) { Log.d(TAG, "Incorrect position for item id: " + position); } return position; } @Override public int getItemViewType(int position) { if (mController.isAdvancedLayoutSupported() && position >= mMediaItemList.size()) { if (position >= mMediaItemList.size()) { Log.d(TAG, "Incorrect position for item type: " + position); return MediaItem.MediaItemType.TYPE_GROUP_DIVIDER; } return mController.isAdvancedLayoutSupported() ? mMediaItemList.get(position).getMediaItemType() : super.getItemViewType(position); return mMediaItemList.get(position).getMediaItemType(); } @Override public int getItemCount() { // Add extra one for "pair new" return mController.isAdvancedLayoutSupported() ? mMediaItemList.size() : mController.getMediaDevices().size() + 1; return mMediaItemList.size(); } class MediaDeviceViewHolder extends MediaDeviceBaseViewHolder { Loading Loading @@ -203,17 +168,14 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { // Set different layout for each device if (device.isMutingExpectedDevice() && !mController.isCurrentConnectedDeviceRemote()) { if (!mController.isAdvancedLayoutSupported()) { updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); } mCurrentActivePosition = position; updateFullItemClickListener(v -> onItemClick(v, device)); setSingleLineLayout(getItemTitle(device)); initMutingExpectedDevice(); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && mController.isSubStatusSupported() && mController.isAdvancedLayoutSupported() && device.hasSubtext()) { && device.hasSubtext()) { boolean isActiveWithOngoingSession = (device.hasOngoingSession() && (currentlyConnected || isDeviceIncluded( mController.getSelectedMediaDevice(), device))); Loading Loading @@ -284,10 +246,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { // selected device in group boolean isDeviceDeselectable = isDeviceIncluded( mController.getDeselectableMediaDevice(), device); if (!mController.isAdvancedLayoutSupported()) { updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent()); } updateGroupableCheckBox(true, isDeviceDeselectable, device); updateEndClickArea(device, isDeviceDeselectable); setUpContentDescriptionForView(mContainerLayout, false, device); Loading @@ -305,8 +265,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { updateFullItemClickListener(v -> cancelMuteAwaitConnection()); setSingleLineLayout(getItemTitle(device)); } else if (mController.isCurrentConnectedDeviceRemote() && !mController.getSelectableMediaDevice().isEmpty() && mController.isAdvancedLayoutSupported()) { && !mController.getSelectableMediaDevice().isEmpty()) { //If device is connected and there's other selectable devices, layout as // one of selected devices. updateTitleIcon(R.drawable.media_output_icon_volume, Loading Loading @@ -334,20 +293,14 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { //groupable device setUpDeviceIcon(device); updateGroupableCheckBox(false, true, device); if (mController.isAdvancedLayoutSupported()) { updateEndClickArea(device, true); } updateFullItemClickListener(mController.isAdvancedLayoutSupported() ? v -> onItemClick(v, device) : v -> onGroupActionTriggered(true, device)); updateFullItemClickListener(v -> onItemClick(v, device)); setSingleLineLayout(getItemTitle(device), false /* showSeekBar */, false /* showProgressBar */, true /* showCheckBox */, true /* showEndTouchArea */); } else { setUpDeviceIcon(device); setSingleLineLayout(getItemTitle(device)); if (mController.isAdvancedLayoutSupported() && mController.isSubStatusSupported()) { Drawable deviceStatusIcon = device.hasOngoingSession() ? mContext.getDrawable( R.drawable.ic_sound_bars_anim) Loading @@ -361,9 +314,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { updateSingleLineLayoutContentAlpha( updateClickActionBasedOnSelectionBehavior(device) ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA); } else { updateFullItemClickListener(v -> onItemClick(v, device)); } } } } Loading Loading @@ -400,11 +350,9 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { } public void updateEndClickAreaColor(int color) { if (mController.isAdvancedLayoutSupported()) { mEndTouchArea.setBackgroundTintList( ColorStateList.valueOf(color)); } } private boolean updateClickActionBasedOnSelectionBehavior(MediaDevice device) { View.OnClickListener clickListener = Api34Impl.getClickListenerBasedOnSelectionBehavior( Loading Loading @@ -440,10 +388,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { isDeviceDeselectable ? (v) -> mCheckBox.performClick() : null); mEndTouchArea.setImportantForAccessibility( View.IMPORTANT_FOR_ACCESSIBILITY_YES); if (mController.isAdvancedLayoutSupported()) { mEndTouchArea.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemBackground())); } setUpContentDescriptionForView(mEndTouchArea, true, device); } Loading Loading @@ -473,10 +419,8 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter { mTitleIcon.setImageDrawable(addDrawable); mTitleIcon.setImageTintList( ColorStateList.valueOf(mController.getColorItemContent())); if (mController.isAdvancedLayoutSupported()) { mIconAreaLayout.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemBackground())); } mContainerLayout.setOnClickListener(mController::launchBluetoothPairing); } } Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseAdapter.java +83 −131 Original line number Diff line number Diff line Loading @@ -89,9 +89,8 @@ public abstract class MediaOutputBaseAdapter extends public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) { mContext = viewGroup.getContext(); mHolderView = LayoutInflater.from(mContext).inflate( mController.isAdvancedLayoutSupported() ? MediaItem.getMediaLayoutId(viewType) : R.layout.media_output_list_item, viewGroup, false); mHolderView = LayoutInflater.from(mContext).inflate(MediaItem.getMediaLayoutId(viewType), viewGroup, false); return null; } Loading Loading @@ -173,15 +172,9 @@ public abstract class MediaOutputBaseAdapter extends mStatusIcon = view.requireViewById(R.id.media_output_item_status); mCheckBox = view.requireViewById(R.id.check_box); mEndTouchArea = view.requireViewById(R.id.end_action_area); if (mController.isAdvancedLayoutSupported()) { mEndClickIcon = view.requireViewById(R.id.media_output_item_end_click_icon); mVolumeValueText = view.requireViewById(R.id.volume_value); mIconAreaLayout = view.requireViewById(R.id.icon_area); } else { mVolumeValueText = null; mIconAreaLayout = null; mEndClickIcon = null; } initAnimator(); } Loading @@ -197,9 +190,7 @@ public abstract class MediaOutputBaseAdapter extends mTitleText.setTextColor(mController.getColorItemContent()); mSubTitleText.setTextColor(mController.getColorItemContent()); mTwoLineTitleText.setTextColor(mController.getColorItemContent()); if (mController.isAdvancedLayoutSupported()) { mVolumeValueText.setTextColor(mController.getColorItemContent()); } mSeekBar.setProgressTintList( ColorStateList.valueOf(mController.getColorSeekbarProgress())); } Loading Loading @@ -230,12 +221,10 @@ public abstract class MediaOutputBaseAdapter extends mItemLayout.setBackgroundTintList( ColorStateList.valueOf(isActive ? mController.getColorConnectedItemBackground() : mController.getColorItemBackground())); if (mController.isAdvancedLayoutSupported()) { mIconAreaLayout.setBackgroundTintList( ColorStateList.valueOf(showSeekBar ? mController.getColorSeekbarProgress() : showProgressBar ? mController.getColorConnectedItemBackground() : mController.getColorItemBackground())); } mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE); mSeekBar.setAlpha(1); mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE); Loading @@ -246,12 +235,10 @@ public abstract class MediaOutputBaseAdapter extends mTitleText.setVisibility(View.VISIBLE); mCheckBox.setVisibility(showCheckBox ? View.VISIBLE : View.GONE); mEndTouchArea.setVisibility(showEndTouchArea ? View.VISIBLE : View.GONE); if (mController.isAdvancedLayoutSupported()) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mItemLayout.getLayoutParams(); params.rightMargin = showEndTouchArea ? mController.getItemMarginEndSelectable() : mController.getItemMarginEndDefault(); } mTitleIcon.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemContent())); } Loading @@ -272,7 +259,6 @@ public abstract class MediaOutputBaseAdapter extends mSeekBar.setAlpha(1); mSeekBar.setVisibility(showSeekBar ? View.VISIBLE : View.GONE); final Drawable backgroundDrawable; if (mController.isAdvancedLayoutSupported() && mController.isSubStatusSupported()) { backgroundDrawable = mContext.getDrawable( showSeekBar || isFakeActive ? R.drawable.media_output_item_background_active : R.drawable.media_output_item_background).mutate(); Loading @@ -295,13 +281,6 @@ public abstract class MediaOutputBaseAdapter extends (ViewGroup.MarginLayoutParams) mItemLayout.getLayoutParams(); params.rightMargin = showEndTouchArea ? mController.getItemMarginEndSelectable() : mController.getItemMarginEndDefault(); } else { backgroundDrawable = mContext.getDrawable( R.drawable.media_output_item_background) .mutate(); mItemLayout.setBackgroundTintList( ColorStateList.valueOf(mController.getColorItemBackground())); } mItemLayout.setBackground(backgroundDrawable); mProgressBar.setVisibility(showProgressBar ? View.VISIBLE : View.GONE); mSubTitleText.setVisibility(showSubtitle ? View.VISIBLE : View.GONE); Loading @@ -319,15 +298,11 @@ public abstract class MediaOutputBaseAdapter extends .findDrawableByLayerId(android.R.id.progress); final GradientDrawable progressDrawable = (GradientDrawable) clipDrawable.getDrawable(); if (mController.isAdvancedLayoutSupported()) { progressDrawable.setCornerRadii( new float[]{0, 0, mController.getActiveRadius(), mController.getActiveRadius(), mController.getActiveRadius(), mController.getActiveRadius(), 0, 0}); } else { progressDrawable.setCornerRadius(mController.getActiveRadius()); } } void initSeekbar(MediaDevice device, boolean isCurrentSeekbarInvisible) { Loading @@ -340,17 +315,11 @@ public abstract class MediaOutputBaseAdapter extends final int currentVolume = device.getCurrentVolume(); if (mSeekBar.getVolume() != currentVolume) { if (isCurrentSeekbarInvisible && !mIsInitVolumeFirstTime) { if (mController.isAdvancedLayoutSupported()) { updateTitleIcon(currentVolume == 0 ? R.drawable.media_output_icon_volume_off : R.drawable.media_output_icon_volume, mController.getColorItemContent()); } else { animateCornerAndVolume(mSeekBar.getProgress(), MediaOutputSeekbar.scaleVolumeToProgress(currentVolume)); } } else { if (!mVolumeAnimator.isStarted()) { if (mController.isAdvancedLayoutSupported()) { int percentage = (int) ((double) currentVolume * VOLUME_PERCENTAGE_SCALE_SIZE / (double) mSeekBar.getMax()); Loading @@ -359,11 +328,10 @@ public abstract class MediaOutputBaseAdapter extends } else { updateUnmutedVolumeIcon(); } } mSeekBar.setVolume(currentVolume); } } } else if (mController.isAdvancedLayoutSupported() && currentVolume == 0) { } else if (currentVolume == 0) { mSeekBar.resetVolume(); updateMutedVolumeIcon(); } Loading @@ -378,17 +346,15 @@ public abstract class MediaOutputBaseAdapter extends } int progressToVolume = MediaOutputSeekbar.scaleProgressToVolume(progress); int deviceVolume = device.getCurrentVolume(); if (mController.isAdvancedLayoutSupported()) { int percentage = (int) ((double) progressToVolume * VOLUME_PERCENTAGE_SCALE_SIZE / (double) seekBar.getMax()); mVolumeValueText.setText(mContext.getResources().getString( R.string.media_output_dialog_volume_percentage, percentage)); mVolumeValueText.setVisibility(View.VISIBLE); } if (progressToVolume != deviceVolume) { mController.adjustVolume(device, progressToVolume); if (mController.isAdvancedLayoutSupported() && deviceVolume == 0) { if (deviceVolume == 0) { updateUnmutedVolumeIcon(); } } Loading @@ -396,16 +362,13 @@ public abstract class MediaOutputBaseAdapter extends @Override public void onStartTrackingTouch(SeekBar seekBar) { if (mController.isAdvancedLayoutSupported()) { mTitleIcon.setVisibility(View.INVISIBLE); mVolumeValueText.setVisibility(View.VISIBLE); } mIsDragging = true; } @Override public void onStopTrackingTouch(SeekBar seekBar) { if (mController.isAdvancedLayoutSupported()) { int currentVolume = MediaOutputSeekbar.scaleProgressToVolume( seekBar.getProgress()); int percentage = Loading @@ -419,7 +382,6 @@ public abstract class MediaOutputBaseAdapter extends } mTitleIcon.setVisibility(View.VISIBLE); mVolumeValueText.setVisibility(View.GONE); } mController.logInteractionAdjustVolume(device); mIsDragging = false; } Loading @@ -444,11 +406,9 @@ public abstract class MediaOutputBaseAdapter extends void updateTitleIcon(@DrawableRes int id, int color) { mTitleIcon.setImageDrawable(mContext.getDrawable(id)); mTitleIcon.setImageTintList(ColorStateList.valueOf(color)); if (mController.isAdvancedLayoutSupported()) { mIconAreaLayout.setBackgroundTintList( ColorStateList.valueOf(mController.getColorSeekbarProgress())); } } void updateIconAreaClickListener(View.OnClickListener listener) { mTitleIcon.setOnClickListener(listener); Loading @@ -475,13 +435,10 @@ public abstract class MediaOutputBaseAdapter extends (ClipDrawable) ((LayerDrawable) mSeekBar.getProgressDrawable()) .findDrawableByLayerId(android.R.id.progress); final GradientDrawable targetBackgroundDrawable = (GradientDrawable) (mController.isAdvancedLayoutSupported() ? mIconAreaLayout.getBackground() : clipDrawable.getDrawable()); (GradientDrawable) (mIconAreaLayout.getBackground()); mCornerAnimator.addUpdateListener(animation -> { float value = (float) animation.getAnimatedValue(); layoutBackgroundDrawable.setCornerRadius(value); if (mController.isAdvancedLayoutSupported()) { if (toProgress == 0) { targetBackgroundDrawable.setCornerRadius(value); } else { Loading @@ -491,9 +448,6 @@ public abstract class MediaOutputBaseAdapter extends 0, 0, 0, 0, value, value }); } } else { targetBackgroundDrawable.setCornerRadius(value); } }); mVolumeAnimator.setIntValues(fromProgress, toProgress); mVolumeAnimator.start(); Loading Loading @@ -539,10 +493,8 @@ public abstract class MediaOutputBaseAdapter extends protected void disableSeekBar() { mSeekBar.setEnabled(false); mSeekBar.setOnTouchListener((v, event) -> true); if (mController.isAdvancedLayoutSupported()) { updateIconAreaClickListener(null); } } private void enableSeekBar(MediaDevice device) { mSeekBar.setEnabled(true); Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputBaseDialog.java +2 −4 Original line number Diff line number Diff line Loading @@ -270,11 +270,9 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements dismiss(); }); mAppButton.setOnClickListener(mMediaOutputController::tryToLaunchMediaApplication); if (mMediaOutputController.isAdvancedLayoutSupported()) { mMediaMetadataSectionLayout.setOnClickListener( mMediaOutputController::tryToLaunchMediaApplication); } } @Override public void start() { Loading
packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputController.java +11 −116 File changed.Preview size limit exceeded, changes collapsed. Show changes