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);