Skip to content

Commit

Permalink
Put the custom keys in MediaMetadataCompat to MediaMetadata.extras
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 578473874
  • Loading branch information
tianyif authored and Copybara-Service committed Nov 1, 2023
1 parent 1a09430 commit 84022ea
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 7 deletions.
3 changes: 3 additions & 0 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
* Muxers:
* IMA extension:
* Session:
* Put the custom keys and values in `MediaMetadataCompat` to
`MediaMetadata.extras`
([#756](https://github.com/androidx/media/issues/756)).
* UI:
* Downloads:
* OkHttp Extension:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@
import androidx.media3.session.MediaLibraryService.LibraryParams;
import androidx.media3.session.PlayerInfo.BundlingExclusions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
Expand All @@ -119,6 +120,41 @@
public static final BrowserRoot defaultBrowserRoot =
new BrowserRoot(MediaLibraryService.SERVICE_INTERFACE, null);

public static final ImmutableSet<String> KNOWN_METADATA_COMPAT_KEYS =
ImmutableSet.of(
MediaMetadataCompat.METADATA_KEY_TITLE,
MediaMetadataCompat.METADATA_KEY_ARTIST,
MediaMetadataCompat.METADATA_KEY_DURATION,
MediaMetadataCompat.METADATA_KEY_ALBUM,
MediaMetadataCompat.METADATA_KEY_AUTHOR,
MediaMetadataCompat.METADATA_KEY_WRITER,
MediaMetadataCompat.METADATA_KEY_COMPOSER,
MediaMetadataCompat.METADATA_KEY_COMPILATION,
MediaMetadataCompat.METADATA_KEY_DATE,
MediaMetadataCompat.METADATA_KEY_YEAR,
MediaMetadataCompat.METADATA_KEY_GENRE,
MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER,
MediaMetadataCompat.METADATA_KEY_NUM_TRACKS,
MediaMetadataCompat.METADATA_KEY_DISC_NUMBER,
MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST,
MediaMetadataCompat.METADATA_KEY_ART,
MediaMetadataCompat.METADATA_KEY_ART_URI,
MediaMetadataCompat.METADATA_KEY_ALBUM_ART,
MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
MediaMetadataCompat.METADATA_KEY_USER_RATING,
MediaMetadataCompat.METADATA_KEY_RATING,
MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE,
MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE,
MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION,
MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON,
MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI,
MediaMetadataCompat.METADATA_KEY_MEDIA_ID,
MediaMetadataCompat.METADATA_KEY_MEDIA_URI,
MediaMetadataCompat.METADATA_KEY_BT_FOLDER_TYPE,
MediaMetadataCompat.METADATA_KEY_ADVERTISEMENT,
MediaMetadataCompat.METADATA_KEY_DOWNLOAD_STATUS,
MediaConstants.EXTRAS_KEY_MEDIA_TYPE_COMPAT);

/** Returns whether two {@link PlaybackStateCompat} have equal error. */
public static boolean areEqualError(
@Nullable PlaybackStateCompat a, @Nullable PlaybackStateCompat b) {
Expand Down Expand Up @@ -510,6 +546,14 @@ public static MediaMetadata convertToMediaMetadata(

builder.setIsPlayable(true);

Bundle extras = metadataCompat.getBundle();
for (String key : KNOWN_METADATA_COMPAT_KEYS) {
extras.remove(key);
}
if (!extras.isEmpty()) {
builder.setExtras(extras);
}

return builder.build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import static androidx.media3.common.MimeTypes.AUDIO_AAC;
import static androidx.media3.common.MimeTypes.VIDEO_H264;
import static androidx.media3.common.MimeTypes.VIDEO_H265;
import static androidx.media3.session.MediaConstants.EXTRAS_KEY_MEDIA_TYPE_COMPAT;
import static androidx.media3.session.MediaConstants.EXTRA_KEY_ROOT_CHILDREN_BROWSABLE_ONLY;
import static androidx.media3.test.session.common.TestUtils.getCommandsAsList;
import static com.google.common.truth.Truth.assertThat;
Expand Down Expand Up @@ -164,10 +165,7 @@ public void convertToMediaDescriptionCompat_setsExpectedValues() {
assertThat(descriptionCompat.getMediaId()).isEqualTo(mediaId);
assertThat(descriptionCompat.getTitle().toString()).isEqualTo(title);
assertThat(descriptionCompat.getDescription().toString()).isEqualTo(description);
assertThat(
descriptionCompat
.getExtras()
.getLong(androidx.media3.session.MediaConstants.EXTRAS_KEY_MEDIA_TYPE_COMPAT))
assertThat(descriptionCompat.getExtras().getLong(EXTRAS_KEY_MEDIA_TYPE_COMPAT))
.isEqualTo(MediaMetadata.MEDIA_TYPE_MUSIC);
}

Expand Down Expand Up @@ -208,6 +206,25 @@ public void convertToMediaMetadata_withTitle() {
assertThat(MediaUtils.convertToMediaMetadata(title).title.toString()).isEqualTo(title);
}

@Test
public void convertToMediaMetadata_withCustomKey() {
MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, "title");
builder.putLong(EXTRAS_KEY_MEDIA_TYPE_COMPAT, (long) MediaMetadata.MEDIA_TYPE_MUSIC);
builder.putString("custom_key", "value");
MediaMetadataCompat testMediaMetadataCompat = builder.build();

MediaMetadata mediaMetadata =
MediaUtils.convertToMediaMetadata(testMediaMetadataCompat, RatingCompat.RATING_NONE);

assertThat(mediaMetadata.title.toString()).isEqualTo("title");
assertThat(mediaMetadata.mediaType).isEqualTo(MediaMetadata.MEDIA_TYPE_MUSIC);
assertThat(mediaMetadata.extras).isNotNull();
assertThat(mediaMetadata.extras.getString("custom_key")).isEqualTo("value");
assertThat(mediaMetadata.extras.containsKey(MediaMetadataCompat.METADATA_KEY_TITLE)).isFalse();
assertThat(mediaMetadata.extras.containsKey(EXTRAS_KEY_MEDIA_TYPE_COMPAT)).isFalse();
}

@Test
public void convertToMediaMetadata_roundTripViaMediaMetadataCompat_returnsEqualMediaItemMetadata()
throws Exception {
Expand Down Expand Up @@ -272,9 +289,7 @@ public void convertToMediaMetadataCompat_withMediaType_setsMediaType() {
/* durationMs= */ C.TIME_UNSET,
/* artworkBitmap= */ null);

assertThat(
mediaMetadataCompat.getLong(
androidx.media3.session.MediaConstants.EXTRAS_KEY_MEDIA_TYPE_COMPAT))
assertThat(mediaMetadataCompat.getLong(EXTRAS_KEY_MEDIA_TYPE_COMPAT))
.isEqualTo(MediaMetadata.MEDIA_TYPE_MUSIC);
}

Expand Down

0 comments on commit 84022ea

Please sign in to comment.