Handle audio content on People Tiles.
Bug: 188878426
Test: PeopleSpaceUtilsTest and manual
Change-Id: I4dbdbe2fa6e559988a9a33f7afebd006d5274623
diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
index 7b5ab0d..e53cc0b 100644
--- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java
@@ -52,6 +52,7 @@
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.util.ArrayUtils;
+import com.android.internal.widget.MessagingMessage;
import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.R;
import com.android.systemui.people.widget.PeopleSpaceWidgetManager;
@@ -265,10 +266,16 @@
boolean hasMessageText = message != null && !TextUtils.isEmpty(message.getText());
CharSequence content = (isMissedCall && !hasMessageText)
? context.getString(R.string.missed_call) : message.getText();
- Uri dataUri = message != null ? message.getDataUri() : null;
+
+ // We only use the URI if it's an image, otherwise we fallback to text (for example, with an
+ // audio URI)
+ Uri imageUri = message != null && MessagingMessage.hasImage(message)
+ ? message.getDataUri() : null;
+
if (DEBUG) {
Log.d(TAG, "Tile key: " + key.toString() + ". Notification message has text: "
- + hasMessageText + " Has last interaction: " + sbn.getPostTime());
+ + hasMessageText + ". Image URI: " + imageUri + ". Has last interaction: "
+ + sbn.getPostTime());
}
CharSequence sender = getSenderIfGroupConversation(notification, message);
@@ -278,7 +285,7 @@
.setNotificationCategory(notification.category)
.setNotificationContent(content)
.setNotificationSender(sender)
- .setNotificationDataUri(dataUri)
+ .setNotificationDataUri(imageUri)
.setMessagesCount(messagesCount)
.build();
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
index fd28c2c..007a3b9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java
@@ -285,6 +285,73 @@
}
@Test
+ public void testAugmentTileFromNotificationGroupWithImageUri() {
+ Notification notification = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_1)
+ .setStyle(new Notification.MessagingStyle(PERSON)
+ .addMessage(new Notification.MessagingStyle.Message(
+ NOTIFICATION_TEXT_1, 0, PERSON)
+ .setData("image/jpeg", URI))
+ )
+ .build();
+ NotificationEntry notificationEntry = new NotificationEntryBuilder()
+ .setNotification(notification)
+ .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+ .setUser(UserHandle.of(0))
+ .setPkg(PACKAGE_NAME)
+ .build();
+ PeopleSpaceTile tile =
+ new PeopleSpaceTile
+ .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
+ .setPackageName(PACKAGE_NAME)
+ .setUserHandle(new UserHandle(0))
+ .build();
+ PeopleTileKey key = new PeopleTileKey(tile);
+ PeopleSpaceTile actual = PeopleSpaceUtils
+ .augmentTileFromNotification(mContext, tile, key, notificationEntry, 0,
+ Optional.empty());
+
+ assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_1);
+ assertThat(actual.getNotificationDataUri()).isEqualTo(URI);
+ }
+
+ @Test
+ public void testAugmentTileFromNotificationGroupWithAudioUri() {
+ Notification notification = new Notification.Builder(mContext, "test")
+ .setContentTitle("TEST_TITLE")
+ .setContentText("TEST_TEXT")
+ .setShortcutId(SHORTCUT_ID_1)
+ .setStyle(new Notification.MessagingStyle(PERSON)
+ .addMessage(new Notification.MessagingStyle.Message(
+ NOTIFICATION_TEXT_1, 0, PERSON)
+ .setData("audio/ogg", URI))
+ )
+ .build();
+ NotificationEntry notificationEntry = new NotificationEntryBuilder()
+ .setNotification(notification)
+ .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build())
+ .setUser(UserHandle.of(0))
+ .setPkg(PACKAGE_NAME)
+ .build();
+ PeopleSpaceTile tile =
+ new PeopleSpaceTile
+ .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent())
+ .setPackageName(PACKAGE_NAME)
+ .setUserHandle(new UserHandle(0))
+ .build();
+ PeopleTileKey key = new PeopleTileKey(tile);
+ PeopleSpaceTile actual = PeopleSpaceUtils
+ .augmentTileFromNotification(mContext, tile, key, notificationEntry, 0,
+ Optional.empty());
+
+ assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_1);
+ assertThat(actual.getNotificationDataUri()).isNull();
+ }
+
+
+ @Test
public void testAugmentTileFromNotificationNoContent() {
PeopleSpaceTile tile =
new PeopleSpaceTile