diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 3fe6acd947944..7f4e4751312e0 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -2821,9 +2821,17 @@ Resume Settings + + %1$s by %2$s is playing from %3$s Play + + Open %1$s + + Play %1$s by %2$s from %3$s + + Play %1$s from %2$s Inactive, check app diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index d698142674ce5..4201411b168af 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -71,12 +71,14 @@ import kotlin.Unit; */ public class MediaControlPanel { private static final String TAG = "MediaControlPanel"; + private static final float DISABLED_ALPHA = 0.38f; private static final String EXTRAS_SMARTSPACE_INTENT = "com.google.android.apps.gsa.smartspace.extra.SMARTSPACE_INTENT"; - private static final String KEY_SMARTSPACE_OPEN_IN_FOREGROUND = "KEY_OPEN_IN_FOREGROUND"; private static final int MEDIA_RECOMMENDATION_ITEMS_PER_ROW = 3; private static final int MEDIA_RECOMMENDATION_MAX_NUM = 6; + private static final String KEY_SMARTSPACE_ARTIST_NAME = "artist_name"; + private static final String KEY_SMARTSPACE_OPEN_IN_FOREGROUND = "KEY_OPEN_IN_FOREGROUND"; private static final Intent SETTINGS_INTENT = new Intent(ACTION_MEDIA_CONTROLS_SETTINGS); @@ -292,6 +294,12 @@ public class MediaControlPanel { }); } + // Accessibility label + mPlayerViewHolder.getPlayer().setContentDescription( + mContext.getString( + R.string.controls_media_playing_item_description, + data.getSong(), data.getArtist(), data.getApp())); + ImageView albumView = mPlayerViewHolder.getAlbumView(); boolean hasArtwork = data.getArtwork() != null; if (hasArtwork) { @@ -330,7 +338,6 @@ public class MediaControlPanel { } // Song name - TextView titleText = mPlayerViewHolder.getTitleText(); titleText.setText(data.getSong()); @@ -497,8 +504,8 @@ public class MediaControlPanel { mInstanceId = data.getTargetId().hashCode(); mBackgroundColor = data.getBackgroundColor(); - mRecommendationViewHolder.getRecommendations() - .setBackgroundTintList(ColorStateList.valueOf(mBackgroundColor)); + TransitionLayout recommendationCard = mRecommendationViewHolder.getRecommendations(); + recommendationCard.setBackgroundTintList(ColorStateList.valueOf(mBackgroundColor)); List mediaRecommendationList = data.getRecommendations(); if (mediaRecommendationList == null || mediaRecommendationList.isEmpty()) { @@ -522,15 +529,17 @@ public class MediaControlPanel { icon.setColorFilter(getGrayscaleFilter()); ImageView headerLogoImageView = mRecommendationViewHolder.getCardIcon(); headerLogoImageView.setImageDrawable(icon); - // Set up media source app's label text. Fallback to "Play" if the found label is empty. + // Set up media source app's label text. CharSequence appLabel = packageManager.getApplicationLabel(applicationInfo); if (appLabel.length() != 0) { TextView headerTitleText = mRecommendationViewHolder.getCardText(); headerTitleText.setText(appLabel); } - // Set up media card's tap action if applicable. - setSmartspaceRecItemOnClickListener( - mRecommendationViewHolder.getRecommendations(), data.getCardAction()); + // Set up media rec card's tap action if applicable. + setSmartspaceRecItemOnClickListener(recommendationCard, data.getCardAction()); + // Set up media rec card's accessibility label. + recommendationCard.setContentDescription( + mContext.getString(R.string.controls_media_smartspace_rec_description, appLabel)); List mediaCoverItems = mRecommendationViewHolder.getMediaCoverItems(); List mediaCoverItemsResIds = mRecommendationViewHolder.getMediaCoverItemsResIds(); @@ -554,6 +563,21 @@ public class MediaControlPanel { // Set up the media item's click listener if applicable. setSmartspaceRecItemOnClickListener(mediaCoverImageView, recommendation); + // Set up the accessibility label for the media item. + String artistName = recommendation.getExtras() + .getString(KEY_SMARTSPACE_ARTIST_NAME, ""); + if (artistName.isEmpty()) { + mediaCoverImageView.setContentDescription( + mContext.getString( + R.string.controls_media_smartspace_rec_item_no_artist_description, + recommendation.getTitle(), appLabel)); + } else { + mediaCoverImageView.setContentDescription( + mContext.getString( + R.string.controls_media_smartspace_rec_item_description, + recommendation.getTitle(), artistName, appLabel)); + } + if (uiComponentIndex < MEDIA_RECOMMENDATION_ITEMS_PER_ROW) { setVisibleAndAlpha(collapsedSet, mediaCoverItemsResIds.get(uiComponentIndex), true);