From a0873e6f7da9b8aed0cd8ab5c181b9ebe1a163c1 Mon Sep 17 00:00:00 2001 From: bachinger Date: Thu, 6 Jan 2022 11:27:37 +0000 Subject: [PATCH] Include mediaId when marshalling a MediaItem to JSON When sending a MediaItem to a MediaSession with a Media3 MediaController important information is removed for privacy reason. To look up the fully populated MediaItem the mediaId is used as a key. Hence having the mediaId marhalled to the JSON representation that is sent to a Cast device enables app developers to use the same look up facilities. #minor-release PiperOrigin-RevId: 420022868 --- .../java/androidx/media3/cast/DefaultMediaItemConverter.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/cast/src/main/java/androidx/media3/cast/DefaultMediaItemConverter.java b/libraries/cast/src/main/java/androidx/media3/cast/DefaultMediaItemConverter.java index 04f6c74705..62cd2aaf32 100644 --- a/libraries/cast/src/main/java/androidx/media3/cast/DefaultMediaItemConverter.java +++ b/libraries/cast/src/main/java/androidx/media3/cast/DefaultMediaItemConverter.java @@ -36,6 +36,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { private static final String KEY_MEDIA_ITEM = "mediaItem"; private static final String KEY_PLAYER_CONFIG = "exoPlayerConfig"; + private static final String KEY_MEDIA_ID = "mediaId"; private static final String KEY_URI = "uri"; private static final String KEY_TITLE = "title"; private static final String KEY_MIME_TYPE = "mimeType"; @@ -79,6 +80,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { JSONObject mediaItemJson = customData.getJSONObject(KEY_MEDIA_ITEM); MediaItem.Builder builder = new MediaItem.Builder(); builder.setUri(Uri.parse(mediaItemJson.getString(KEY_URI))); + builder.setMediaId(mediaItemJson.getString(KEY_MEDIA_ID)); if (mediaItemJson.has(KEY_TITLE)) { androidx.media3.common.MediaMetadata mediaMetadata = new androidx.media3.common.MediaMetadata.Builder() @@ -132,6 +134,7 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { private static JSONObject getMediaItemJson(MediaItem mediaItem) throws JSONException { Assertions.checkNotNull(mediaItem.localConfiguration); JSONObject json = new JSONObject(); + json.put(KEY_MEDIA_ID, mediaItem.mediaId); json.put(KEY_TITLE, mediaItem.mediaMetadata.title); json.put(KEY_URI, mediaItem.localConfiguration.uri.toString()); json.put(KEY_MIME_TYPE, mediaItem.localConfiguration.mimeType);