summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/layout/media_smartspace_recommendations.xml74
-rw-r--r--packages/SystemUI/res/values/dimens.xml7
-rw-r--r--packages/SystemUI/res/xml/media_recommendation_collapsed.xml110
-rw-r--r--packages/SystemUI/res/xml/media_recommendation_expanded.xml142
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java91
-rw-r--r--packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt23
6 files changed, 159 insertions, 288 deletions
diff --git a/packages/SystemUI/res/layout/media_smartspace_recommendations.xml b/packages/SystemUI/res/layout/media_smartspace_recommendations.xml
index 8c54e2c1cec4..5fb4819cb8b5 100644
--- a/packages/SystemUI/res/layout/media_smartspace_recommendations.xml
+++ b/packages/SystemUI/res/layout/media_smartspace_recommendations.xml
@@ -46,117 +46,83 @@
<com.android.internal.widget.CachingIconView
android:id="@+id/recommendation_card_icon"
- android:layout_width="@dimen/qs_aa_media_rec_header_icon_size"
- android:layout_height="@dimen/qs_aa_media_rec_header_icon_size"
+ android:layout_width="@dimen/qs_media_icon_size"
+ android:layout_height="@dimen/qs_media_icon_size"
android:src="@drawable/ic_headset"
- android:tint="?android:attr/textColor" />
+ style="@style/MediaPlayer.AppIcon"/>
<TextView
android:id="@+id/recommendation_card_text"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:singleLine="true"
+ android:maxLines="2"
android:text="@string/controls_media_smartspace_rec_title"
android:fontFamily="google-sans-medium"
android:textDirection="locale"
- android:textSize="@dimen/qq_aa_media_rec_header_text_size" />
+ android:textSize="@dimen/qq_aa_media_rec_header_text_size"
+ android:breakStrategy="balanced"
+ android:hyphenationFrequency="none"/>
<ImageView
android:id="@+id/media_cover1"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
android:adjustViewBounds="true"
android:background="@drawable/bg_smartspace_media_item"
style="@style/MediaPlayer.Album"
android:clipToOutline="true"
android:scaleType="centerCrop"/>
- <com.android.internal.widget.CachingIconView
- android:id="@+id/media_logo1"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- style="@style/MediaPlayer.AppIcon" />
-
<ImageView
android:id="@+id/media_cover2"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
android:adjustViewBounds="true"
android:background="@drawable/bg_smartspace_media_item"
style="@style/MediaPlayer.Album"
android:clipToOutline="true"
android:scaleType="centerCrop"/>
- <com.android.internal.widget.CachingIconView
- android:id="@+id/media_logo2"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- style="@style/MediaPlayer.AppIcon" />
-
<ImageView
android:id="@+id/media_cover3"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
android:adjustViewBounds="true"
android:background="@drawable/bg_smartspace_media_item"
style="@style/MediaPlayer.Album"
android:clipToOutline="true"
android:scaleType="centerCrop"/>
- <com.android.internal.widget.CachingIconView
- android:id="@+id/media_logo3"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- style="@style/MediaPlayer.AppIcon" />
-
<ImageView
android:id="@+id/media_cover4"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
android:adjustViewBounds="true"
android:background="@drawable/bg_smartspace_media_item"
style="@style/MediaPlayer.Album"
android:clipToOutline="true"
android:scaleType="centerCrop"/>
- <com.android.internal.widget.CachingIconView
- android:id="@+id/media_logo4"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- style="@style/MediaPlayer.AppIcon" />
-
<ImageView
android:id="@+id/media_cover5"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
android:adjustViewBounds="true"
android:background="@drawable/bg_smartspace_media_item"
style="@style/MediaPlayer.Album"
android:clipToOutline="true"
android:scaleType="centerCrop"/>
- <com.android.internal.widget.CachingIconView
- android:id="@+id/media_logo5"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- style="@style/MediaPlayer.AppIcon" />
-
<ImageView
android:id="@+id/media_cover6"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
android:adjustViewBounds="true"
android:background="@drawable/bg_smartspace_media_item"
style="@style/MediaPlayer.Album"
android:clipToOutline="true"
android:scaleType="centerCrop"/>
- <com.android.internal.widget.CachingIconView
- android:id="@+id/media_logo6"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- style="@style/MediaPlayer.AppIcon" />
-
<!-- Long press menu -->
<TextView
android:layout_width="wrap_content"
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index b292d7e29171..56a02d736d42 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1277,10 +1277,9 @@
<dimen name="qs_media_disabled_seekbar_vertical_padding">36dp</dimen>
<!-- Size of Smartspace media recommendations cards in the QSPanel carousel -->
- <dimen name="qs_aa_media_rec_header_icon_start_margin">10dp</dimen>
- <dimen name="qs_aa_media_rec_header_icon_size">18dp</dimen>
- <dimen name="qs_aa_media_rec_album_size">72dp</dimen>
- <dimen name="qs_aa_media_rec_album_vertical_margin">8dp</dimen>
+ <dimen name="qs_aa_media_rec_album_size_collapsed">66dp</dimen>
+ <dimen name="qs_aa_media_rec_album_size_expanded">80dp</dimen>
+ <dimen name="qs_aa_media_rec_album_margin">8dp</dimen>
<dimen name="qq_aa_media_rec_header_text_size">16sp</dimen>
<!-- Window magnification -->
diff --git a/packages/SystemUI/res/xml/media_recommendation_collapsed.xml b/packages/SystemUI/res/xml/media_recommendation_collapsed.xml
index 31a924cf4892..795c9087cec0 100644
--- a/packages/SystemUI/res/xml/media_recommendation_collapsed.xml
+++ b/packages/SystemUI/res/xml/media_recommendation_collapsed.xml
@@ -20,10 +20,9 @@
<Constraint
android:id="@+id/recommendation_card_icon"
- android:layout_width="@dimen/qs_aa_media_rec_header_icon_size"
- android:layout_height="@dimen/qs_aa_media_rec_header_icon_size"
+ android:layout_width="@dimen/qs_media_icon_size"
+ android:layout_height="@dimen/qs_media_icon_size"
android:layout_marginTop="@dimen/qs_media_padding"
- android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline"
@@ -31,9 +30,8 @@
<Constraint
android:id="@+id/recommendation_card_text"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin"
app:layout_constraintTop_toBottomOf="@id/recommendation_card_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline"
@@ -41,137 +39,87 @@
<Constraint
android:id="@+id/media_cover1"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_collapsed"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/qs_media_padding"
android:layout_marginBottom="@dimen/qs_media_padding"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline"
app:layout_constraintEnd_toStartOf="@id/media_cover2"
- app:layout_constraintHorizontal_chainStyle="spread"
- app:layout_constraintVertical_chainStyle="spread"
- android:visibility="gone" />
-
- <Constraint
- android:id="@+id/media_logo1"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover1"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover1"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
android:visibility="gone" />
<Constraint
android:id="@+id/media_cover2"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_collapsed"
android:layout_marginTop="@dimen/qs_media_padding"
android:layout_marginBottom="@dimen/qs_media_padding"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/media_cover1"
app:layout_constraintEnd_toStartOf="@id/media_cover3"
- app:layout_constraintHorizontal_chainStyle="spread"
- android:visibility="gone" />
-
- <Constraint
- android:id="@+id/media_logo2"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover2"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover2"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
android:visibility="gone" />
<Constraint
android:id="@+id/media_cover3"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_collapsed"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_collapsed"
android:layout_marginTop="@dimen/qs_media_padding"
android:layout_marginBottom="@dimen/qs_media_padding"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/media_cover2"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintHorizontal_bias="1"
android:visibility="gone" />
<Constraint
- android:id="@+id/media_logo3"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover3"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover3"
- android:visibility="gone" />
-
- <Constraint
android:id="@+id/media_cover4"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
android:layout_height="0dp"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toBottomOf="@+id/media_cover1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline"
app:layout_constraintEnd_toStartOf="@id/media_cover5"
- app:layout_constraintHorizontal_chainStyle="spread"
- android:visibility="gone" />
-
- <Constraint
- android:id="@+id/media_logo4"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="0dp"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover4"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover4"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
android:visibility="gone" />
<Constraint
android:id="@+id/media_cover5"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
android:layout_height="0dp"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toBottomOf="@+id/media_cover2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/media_cover4"
app:layout_constraintEnd_toStartOf="@+id/media_cover6"
- app:layout_constraintHorizontal_chainStyle="spread"
- android:visibility="gone" />
-
- <Constraint
- android:id="@+id/media_logo5"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="0dp"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover5"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover5"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
android:visibility="gone" />
<Constraint
android:id="@+id/media_cover6"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/media_cover3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/media_cover5"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintHorizontal_bias="1"
android:visibility="gone" />
- <Constraint
- android:id="@+id/media_logo6"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="0dp"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover6"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover6"
- android:visibility="gone" />
-
</ConstraintSet>
diff --git a/packages/SystemUI/res/xml/media_recommendation_expanded.xml b/packages/SystemUI/res/xml/media_recommendation_expanded.xml
index 1411030a7431..3d03a9a3c52e 100644
--- a/packages/SystemUI/res/xml/media_recommendation_expanded.xml
+++ b/packages/SystemUI/res/xml/media_recommendation_expanded.xml
@@ -20,10 +20,9 @@
<Constraint
android:id="@+id/recommendation_card_icon"
- android:layout_width="@dimen/qs_aa_media_rec_header_icon_size"
- android:layout_height="@dimen/qs_aa_media_rec_header_icon_size"
+ android:layout_width="@dimen/qs_media_icon_size"
+ android:layout_height="@dimen/qs_media_icon_size"
android:layout_marginTop="@dimen/qs_media_padding"
- android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline"
@@ -31,9 +30,8 @@
<Constraint
android:id="@+id/recommendation_card_text"
- android:layout_width="wrap_content"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/qs_aa_media_rec_header_icon_start_margin"
app:layout_constraintTop_toBottomOf="@id/recommendation_card_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/media_vertical_start_guideline"
@@ -41,154 +39,108 @@
<Constraint
android:id="@+id/media_cover1"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded"
android:layout_marginTop="@dimen/qs_media_padding"
- android:layout_marginBottom="@dimen/qs_aa_media_rec_album_vertical_margin"
+ android:layout_marginBottom="@dimen/qs_aa_media_rec_album_margin"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/media_horizontal_center_guideline"
app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline"
app:layout_constraintEnd_toStartOf="@id/media_cover2"
- app:layout_constraintHorizontal_chainStyle="spread"
- app:layout_constraintVertical_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
+ app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintVertical_bias="0"
android:visibility="gone" />
<Constraint
- android:id="@+id/media_logo1"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover1"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover1"
- android:visibility="gone" />
-
- <Constraint
android:id="@+id/media_cover2"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded"
android:layout_marginTop="@dimen/qs_media_padding"
- android:layout_marginBottom="@dimen/qs_aa_media_rec_album_vertical_margin"
+ android:layout_marginBottom="@dimen/qs_aa_media_rec_album_margin"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/media_horizontal_center_guideline"
app:layout_constraintStart_toEndOf="@id/media_cover1"
app:layout_constraintEnd_toStartOf="@id/media_cover3"
- app:layout_constraintHorizontal_chainStyle="spread"
- app:layout_constraintVertical_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
+ app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintVertical_bias="0"
android:visibility="gone" />
<Constraint
- android:id="@+id/media_logo2"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover2"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover2"
- android:visibility="gone" />
-
- <Constraint
android:id="@+id/media_cover3"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded"
android:layout_marginTop="@dimen/qs_media_padding"
- android:layout_marginBottom="@dimen/qs_aa_media_rec_album_vertical_margin"
+ android:layout_marginBottom="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@+id/media_horizontal_center_guideline"
app:layout_constraintStart_toEndOf="@id/media_cover2"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintHorizontal_bias="1"
- app:layout_constraintVertical_chainStyle="spread"
+ app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintVertical_bias="0"
android:visibility="gone" />
<Constraint
- android:id="@+id/media_logo3"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover3"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover3"
- android:visibility="gone" />
-
- <Constraint
android:id="@+id/media_cover4"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
- android:layout_marginTop="@dimen/qs_aa_media_rec_album_vertical_margin"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded"
+ android:layout_marginTop="@dimen/qs_aa_media_rec_album_margin"
android:layout_marginBottom="@dimen/qs_media_padding"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toBottomOf="@+id/media_horizontal_center_guideline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/media_vertical_start_guideline"
app:layout_constraintEnd_toStartOf="@id/media_cover5"
- app:layout_constraintHorizontal_chainStyle="spread"
- app:layout_constraintVertical_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
+ app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintVertical_bias="1"
android:visibility="gone" />
<Constraint
- android:id="@+id/media_logo4"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover4"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover4"
- android:visibility="gone" />
-
- <Constraint
android:id="@+id/media_cover5"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
- android:layout_marginTop="@dimen/qs_aa_media_rec_album_vertical_margin"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded"
+ android:layout_marginTop="@dimen/qs_aa_media_rec_album_margin"
android:layout_marginBottom="@dimen/qs_media_padding"
+ android:layout_marginEnd="@dimen/qs_aa_media_rec_album_margin"
app:layout_constraintTop_toBottomOf="@+id/media_horizontal_center_guideline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/media_cover4"
app:layout_constraintEnd_toStartOf="@+id/media_cover6"
- app:layout_constraintHorizontal_chainStyle="spread"
- app:layout_constraintVertical_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintHorizontal_bias="1"
+ app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintVertical_bias="1"
android:visibility="gone" />
<Constraint
- android:id="@+id/media_logo5"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover5"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover5"
- android:visibility="gone" />
-
- <Constraint
android:id="@+id/media_cover6"
- android:layout_width="@dimen/qs_aa_media_rec_album_size"
- android:layout_height="@dimen/qs_aa_media_rec_album_size"
- android:layout_marginTop="@dimen/qs_aa_media_rec_album_vertical_margin"
+ android:layout_width="0dp"
+ android:layout_height="@dimen/qs_aa_media_rec_album_size_expanded"
+ app:layout_constraintWidth_max="@dimen/qs_aa_media_rec_album_size_expanded"
+ android:layout_marginTop="@dimen/qs_aa_media_rec_album_margin"
android:layout_marginBottom="@dimen/qs_media_padding"
app:layout_constraintTop_toBottomOf="@id/media_horizontal_center_guideline"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@id/media_cover5"
app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_chainStyle="spread"
+ app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintHorizontal_bias="1"
- app:layout_constraintVertical_chainStyle="spread"
+ app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintVertical_bias="1"
android:visibility="gone" />
- <Constraint
- android:id="@+id/media_logo6"
- android:layout_width="@dimen/qs_media_icon_size"
- android:layout_height="@dimen/qs_media_icon_size"
- android:translationY="@dimen/qs_media_icon_offset"
- android:translationX="@dimen/qs_media_icon_offset"
- app:layout_constraintEnd_toEndOf="@+id/media_cover6"
- app:layout_constraintBottom_toBottomOf="@+id/media_cover6"
- android:visibility="gone" />
-
</ConstraintSet>
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
index c26a39615812..a873abf3dc30 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
@@ -23,6 +23,7 @@ import android.app.smartspace.SmartspaceAction;
import android.app.smartspace.SmartspaceTarget;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.graphics.ColorMatrix;
@@ -511,10 +512,31 @@ public class MediaControlPanel {
return;
}
+ // Set up recommendation card's header.
+ ApplicationInfo applicationInfo = getApplicationInfo(target);
+ if (applicationInfo == null) {
+ Log.w(TAG, "No valid application info is found for media recommendations");
+ return;
+ }
+
+ PackageManager packageManager = mContext.getPackageManager();
+ // Set up media source app's logo.
+ Drawable icon = packageManager.getApplicationIcon(applicationInfo);
+ 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.
+ 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(), target.getBaseAction());
+
List<ImageView> mediaCoverItems = mRecommendationViewHolder.getMediaCoverItems();
- List<ImageView> mediaLogoItems = mRecommendationViewHolder.getMediaLogoItems();
List<Integer> mediaCoverItemsResIds = mRecommendationViewHolder.getMediaCoverItemsResIds();
- List<Integer> mediaLogoItemsResIds = mRecommendationViewHolder.getMediaLogoItemsResIds();
ConstraintSet expandedSet = mMediaViewController.getExpandedLayout();
ConstraintSet collapsedSet = mMediaViewController.getCollapsedLayout();
int mediaRecommendationNum = Math.min(mediaRecommendationList.size(),
@@ -528,50 +550,22 @@ public class MediaControlPanel {
continue;
}
- // Get media source app's logo.
- Bundle extras = recommendation.getExtras();
- Drawable icon = null;
- if (extras != null && extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME) != null) {
- // Get the logo from app's package name when applicable.
- String packageName = extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME);
- try {
- icon = mContext.getPackageManager().getApplicationIcon(
- packageName);
- icon.setColorFilter(getGrayscaleFilter());
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, "No media source icon can be fetched via package name", e);
- }
- } else {
- Log.w(TAG, "No media source icon is provided. Skipping this item...");
- continue;
- }
-
- // Set up media source app's logo.
- ImageView mediaSourceLogoImageView = mediaLogoItems.get(uiComponentIndex);
- mediaSourceLogoImageView.setImageDrawable(icon);
-
// Set up media item cover.
ImageView mediaCoverImageView = mediaCoverItems.get(uiComponentIndex);
mediaCoverImageView.setImageIcon(recommendation.getIcon());
- // Set up the click listener if applicable.
+ // Set up the media item's click listener if applicable.
setSmartspaceRecItemOnClickListener(mediaCoverImageView, recommendation);
if (uiComponentIndex < MEDIA_RECOMMENDATION_ITEMS_PER_ROW) {
setVisibleAndAlpha(collapsedSet,
mediaCoverItemsResIds.get(uiComponentIndex), true);
- setVisibleAndAlpha(collapsedSet,
- mediaLogoItemsResIds.get(uiComponentIndex), true);
} else {
setVisibleAndAlpha(collapsedSet,
mediaCoverItemsResIds.get(uiComponentIndex), false);
- setVisibleAndAlpha(collapsedSet,
- mediaLogoItemsResIds.get(uiComponentIndex), false);
}
setVisibleAndAlpha(expandedSet,
mediaCoverItemsResIds.get(uiComponentIndex), true);
- setVisibleAndAlpha(expandedSet,
- mediaLogoItemsResIds.get(uiComponentIndex), true);
uiComponentIndex++;
}
@@ -681,7 +675,8 @@ public class MediaControlPanel {
private void setSmartspaceRecItemOnClickListener(
@NonNull View view,
@NonNull SmartspaceAction action) {
- if (view == null || action == null || action.getIntent() == null) {
+ if (view == null || action == null || action.getIntent() == null
+ || action.getIntent().getExtras() == null) {
Log.e(TAG, "No tap action can be set up");
return;
}
@@ -732,6 +727,38 @@ public class MediaControlPanel {
}
/**
+ * Returns the application info for the media recommendation's source app.
+ *
+ * @param target Smartspace target contains a list of media recommendations. Each item should
+ * contain the same source app's info.
+ *
+ * @return The source app's application info. This value can be null if no valid application
+ * info can be obtained.
+ */
+ private ApplicationInfo getApplicationInfo(@NonNull SmartspaceTarget target) {
+ List<SmartspaceAction> mediaRecommendationList = target.getIconGrid();
+ if (mediaRecommendationList == null || mediaRecommendationList.isEmpty()) {
+ return null;
+ }
+
+ for (SmartspaceAction recommendation: mediaRecommendationList) {
+ Bundle extras = recommendation.getExtras();
+ if (extras != null && extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME) != null) {
+ // Get the logo from app's package name when applicable.
+ String packageName = extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME);
+ try {
+ return mContext.getPackageManager()
+ .getApplicationInfo(packageName, 0 /* flags */);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.w(TAG, "Fail to get media recommendation's app info", e);
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
* Get the surface given the current end location for MediaViewController
* @return surface used for Smartspace logging
*/
diff --git a/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt b/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt
index 3d0e6533b33b..a3f991080b1e 100644
--- a/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/RecommendationViewHolder.kt
@@ -40,13 +40,6 @@ class RecommendationViewHolder private constructor(itemView: View) {
itemView.requireViewById(R.id.media_cover4),
itemView.requireViewById(R.id.media_cover5),
itemView.requireViewById(R.id.media_cover6))
- val mediaLogoItems = listOf<ImageView>(
- itemView.requireViewById(R.id.media_logo1),
- itemView.requireViewById(R.id.media_logo2),
- itemView.requireViewById(R.id.media_logo3),
- itemView.requireViewById(R.id.media_logo4),
- itemView.requireViewById(R.id.media_logo5),
- itemView.requireViewById(R.id.media_logo6))
val mediaCoverItemsResIds = listOf<@IntegerRes Int>(
R.id.media_cover1,
R.id.media_cover2,
@@ -54,13 +47,6 @@ class RecommendationViewHolder private constructor(itemView: View) {
R.id.media_cover4,
R.id.media_cover5,
R.id.media_cover6)
- val mediaLogoItemsResIds = listOf<@IntegerRes Int>(
- R.id.media_logo1,
- R.id.media_logo2,
- R.id.media_logo3,
- R.id.media_logo4,
- R.id.media_logo5,
- R.id.media_logo6)
// Settings/Guts screen
val cancel = itemView.requireViewById<View>(R.id.cancel)
@@ -71,7 +57,6 @@ class RecommendationViewHolder private constructor(itemView: View) {
init {
(recommendations.background as IlluminationDrawable).let { background ->
mediaCoverItems.forEach { background.registerLightSource(it) }
- mediaLogoItems.forEach { background.registerLightSource(it) }
background.registerLightSource(cancel)
background.registerLightSource(dismiss)
background.registerLightSource(dismissLabel)
@@ -109,13 +94,7 @@ class RecommendationViewHolder private constructor(itemView: View) {
R.id.media_cover3,
R.id.media_cover4,
R.id.media_cover5,
- R.id.media_cover6,
- R.id.media_logo1,
- R.id.media_logo2,
- R.id.media_logo3,
- R.id.media_logo4,
- R.id.media_logo5,
- R.id.media_logo6
+ R.id.media_cover6
)
// Res Ids for the components on the guts panel.