diff --git a/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java b/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java index b5e0f034c1..6e94e7822f 100644 --- a/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java +++ b/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java @@ -898,6 +898,8 @@ import java.util.concurrent.TimeoutException; return metadata.writer; case MediaMetadataCompat.METADATA_KEY_COMPOSER: return metadata.composer; + case MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE: + return metadata.subtitle; default: return null; } diff --git a/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java b/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java index 547db505be..6a2121a774 100644 --- a/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java +++ b/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java @@ -317,7 +317,8 @@ public final class MediaMetadataCompat implements Parcelable { METADATA_KEY_ALBUM_ARTIST, METADATA_KEY_WRITER, METADATA_KEY_AUTHOR, - METADATA_KEY_COMPOSER + METADATA_KEY_COMPOSER, + METADATA_KEY_DISPLAY_SUBTITLE }; private static final @BitmapKey String[] PREFERRED_BITMAP_ORDER = { diff --git a/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java b/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java index ff49a4f0e3..fd670d9e9c 100644 --- a/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java +++ b/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java @@ -267,74 +267,35 @@ public final class LegacyConversionsTest { } @Test - public void convertToMediaMetadataCompat_displayTitleAndTitleHandledCorrectly() { - MediaMetadata mediaMetadataWithTitleOnly = - new MediaMetadata.Builder() - .setTitle("title") - .setSubtitle("subtitle") - .setDescription("description") - .setArtist("artist") - .setAlbumArtist("albumArtist") - .build(); - MediaMetadata mediaMetadataWithDisplayTitleOnly = - new MediaMetadata.Builder() - .setDisplayTitle("displayTitle") - .setSubtitle("subtitle") - .setDescription("description") - .setArtist("artist") - .setAlbumArtist("albumArtist") - .build(); - MediaMetadata mediaMetadataWithDisplayTitleAndTitle = - new MediaMetadata.Builder() - .setTitle("title") - .setDisplayTitle("displayTitle") - .setSubtitle("subtitle") - .setDescription("description") - .setArtist("artist") - .setAlbumArtist("albumArtist") - .build(); + public void + convertToMediaDescriptionCompat_withoutDisplayTitleWithSubtitle_subtitleUsedAsSubtitle() { + MediaMetadata metadata = + new MediaMetadata.Builder().setTitle("a_title").setSubtitle("a_subtitle").build(); + MediaItem mediaItem = + new MediaItem.Builder().setMediaId("testId").setMediaMetadata(metadata).build(); - MediaDescriptionCompat mediaDescriptionCompatFromDisplayTitleAndTitle = - LegacyConversions.convertToMediaMetadataCompat( - mediaMetadataWithDisplayTitleAndTitle, - "mediaId", - /* mediaUri= */ null, - /* durationMs= */ 10_000L, - /* artworkBitmap= */ null) - .getDescription(); - MediaDescriptionCompat mediaDescriptionCompatFromDisplayTitleOnly = - LegacyConversions.convertToMediaMetadataCompat( - mediaMetadataWithDisplayTitleOnly, - "mediaId", - /* mediaUri= */ null, - /* durationMs= */ 10_000L, - /* artworkBitmap= */ null) - .getDescription(); - MediaDescriptionCompat mediaDescriptionCompatFromTitleOnly = - LegacyConversions.convertToMediaMetadataCompat( - mediaMetadataWithTitleOnly, - "mediaId", - /* mediaUri= */ null, - /* durationMs= */ 10_000L, - /* artworkBitmap= */ null) - .getDescription(); + MediaDescriptionCompat descriptionCompat = + LegacyConversions.convertToMediaDescriptionCompat(mediaItem, /* artworkBitmap= */ null); - assertThat(mediaDescriptionCompatFromDisplayTitleAndTitle.getTitle().toString()) - .isEqualTo("displayTitle"); - assertThat(mediaDescriptionCompatFromDisplayTitleAndTitle.getSubtitle().toString()) - .isEqualTo("subtitle"); - assertThat(mediaDescriptionCompatFromDisplayTitleAndTitle.getDescription().toString()) - .isEqualTo("description"); - assertThat(mediaDescriptionCompatFromDisplayTitleOnly.getTitle().toString()) - .isEqualTo("displayTitle"); - assertThat(mediaDescriptionCompatFromDisplayTitleOnly.getSubtitle().toString()) - .isEqualTo("subtitle"); - assertThat(mediaDescriptionCompatFromDisplayTitleOnly.getDescription().toString()) - .isEqualTo("description"); - assertThat(mediaDescriptionCompatFromTitleOnly.getTitle().toString()).isEqualTo("title"); - assertThat(mediaDescriptionCompatFromTitleOnly.getSubtitle().toString()).isEqualTo("artist"); - assertThat(mediaDescriptionCompatFromTitleOnly.getDescription().toString()) - .isEqualTo("albumArtist"); + assertThat(descriptionCompat.getTitle().toString()).isEqualTo("a_title"); + assertThat(descriptionCompat.getSubtitle().toString()).isEqualTo("a_subtitle"); + } + + @Test + public void convertToMediaDescriptionCompat_withDisplayTitleAndSubtitle_subtitleUsedAsSubtitle() { + MediaMetadata metadata = + new MediaMetadata.Builder() + .setDisplayTitle("a_display_title") + .setSubtitle("a_subtitle") + .build(); + MediaItem mediaItem = + new MediaItem.Builder().setMediaId("testId").setMediaMetadata(metadata).build(); + + MediaDescriptionCompat descriptionCompat = + LegacyConversions.convertToMediaDescriptionCompat(mediaItem, /* artworkBitmap= */ null); + + assertThat(descriptionCompat.getTitle().toString()).isEqualTo("a_display_title"); + assertThat(descriptionCompat.getSubtitle().toString()).isEqualTo("a_subtitle"); } @Test