mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Put the custom keys in MediaMetadataCompat to MediaMetadata.extras
PiperOrigin-RevId: 578473874 (cherry picked from commit 84022eacc560b90cf34253b2470aabdf4a4b767d)
This commit is contained in:
parent
fe8bbcaa12
commit
2237f4902d
@ -20,6 +20,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:
|
||||
|
@ -99,6 +99,7 @@ import androidx.media3.common.util.Util;
|
||||
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;
|
||||
@ -119,6 +120,41 @@ import java.util.concurrent.TimeoutException;
|
||||
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) {
|
||||
@ -510,6 +546,14 @@ import java.util.concurrent.TimeoutException;
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,7 @@ import static androidx.media.utils.MediaConstants.BROWSER_ROOT_HINTS_KEY_ROOT_CH
|
||||
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;
|
||||
@ -164,10 +165,7 @@ public final class MediaUtilsTest {
|
||||
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);
|
||||
}
|
||||
|
||||
@ -208,6 +206,25 @@ public final class MediaUtilsTest {
|
||||
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 {
|
||||
@ -272,9 +289,7 @@ public final class MediaUtilsTest {
|
||||
/* 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);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user