diff --git a/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilderTest.java b/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilderTest.java index f7098941fb..c578b0ba8c 100644 --- a/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilderTest.java +++ b/extensions/media2/src/androidTest/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilderTest.java @@ -28,6 +28,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.media2.common.MediaItem; +import androidx.media2.common.MediaMetadata; import androidx.media2.common.Rating; import androidx.media2.common.SessionPlayer; import androidx.media2.common.UriMediaItem; @@ -135,7 +136,7 @@ public class SessionCallbackBuilderTest { SessionResult.RESULT_ERROR_BAD_VALUE) .setRewindIncrementMs(testRewindIncrementMs) .setFastForwardIncrementMs(testFastForwardIncrementMs) - .setMediaItemProvider(new SessionCallbackBuilder.DefaultMediaItemProvider()) + .setMediaItemProvider(new SessionCallbackBuilder.MediaIdMediaItemProvider()) .build())) { assertPlayerResultSuccess(sessionPlayerConnector.setMediaItem(TestUtils.createMediaItem())); assertPlayerResultSuccess(sessionPlayerConnector.prepare()); @@ -178,7 +179,7 @@ public class SessionCallbackBuilderTest { SessionResult.RESULT_ERROR_BAD_VALUE) .setRewindIncrementMs(testRewindIncrementMs) .setFastForwardIncrementMs(testFastForwardIncrementMs) - .setMediaItemProvider(new SessionCallbackBuilder.DefaultMediaItemProvider()) + .setMediaItemProvider(new SessionCallbackBuilder.MediaIdMediaItemProvider()) .build())) { assertPlayerResultSuccess(sessionPlayerConnector.setPlaylist(testPlaylist, null)); @@ -454,13 +455,13 @@ public class SessionCallbackBuilderTest { Uri testMediaUri = RawResourceDataSource.buildRawResourceUri(R.raw.audio); CountDownLatch providerLatch = new CountDownLatch(1); - SessionCallbackBuilder.DefaultMediaItemProvider defaultMediaItemProvider = - new SessionCallbackBuilder.DefaultMediaItemProvider(); + SessionCallbackBuilder.MediaIdMediaItemProvider mediaIdMediaItemProvider = + new SessionCallbackBuilder.MediaIdMediaItemProvider(); SessionCallbackBuilder.MediaItemProvider provider = (session, controllerInfo, mediaId) -> { assertThat(mediaId).isEqualTo(testMediaUri.toString()); providerLatch.countDown(); - return defaultMediaItemProvider.onCreateMediaItem(session, controllerInfo, mediaId); + return mediaIdMediaItemProvider.onCreateMediaItem(session, controllerInfo, mediaId); }; CountDownLatch currentMediaItemChangedLatch = new CountDownLatch(1); @@ -470,7 +471,9 @@ public class SessionCallbackBuilderTest { @Override public void onCurrentMediaItemChanged( @NonNull SessionPlayer player, @NonNull MediaItem item) { - assertThat(((UriMediaItem) item).getUri()).isEqualTo(testMediaUri); + MediaMetadata metadata = item.getMetadata(); + assertThat(metadata.getString(MediaMetadata.METADATA_KEY_MEDIA_ID)) + .isEqualTo(testMediaUri.toString()); currentMediaItemChangedLatch.countDown(); } }); diff --git a/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilder.java b/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilder.java index 746aad92e9..516ec20b3b 100644 --- a/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilder.java +++ b/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SessionCallbackBuilder.java @@ -19,7 +19,6 @@ import android.Manifest; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; -import android.net.Uri; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; @@ -30,7 +29,6 @@ import androidx.media2.common.MediaItem; import androidx.media2.common.MediaMetadata; import androidx.media2.common.Rating; import androidx.media2.common.SessionPlayer; -import androidx.media2.common.UriMediaItem; import androidx.media2.session.MediaController; import androidx.media2.session.MediaSession; import androidx.media2.session.MediaSession.ControllerInfo; @@ -38,8 +36,6 @@ import androidx.media2.session.SessionCommand; import androidx.media2.session.SessionCommandGroup; import androidx.media2.session.SessionResult; import com.google.android.exoplayer2.util.Assertions; -import java.net.URI; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; @@ -350,10 +346,8 @@ public final class SessionCallbackBuilder { } } - /** - * Default implementation of {@link MediaItemProvider} that assumes the media id is a URI string. - */ - public static final class DefaultMediaItemProvider implements MediaItemProvider { + /** A {@link MediaItemProvider} that creates media items containing only a media ID. */ + public static final class MediaIdMediaItemProvider implements MediaItemProvider { @Override @Nullable public MediaItem onCreateMediaItem( @@ -361,17 +355,11 @@ public final class SessionCallbackBuilder { if (TextUtils.isEmpty(mediaId)) { return null; } - try { - new URI(mediaId); - } catch (URISyntaxException e) { - // Ignore if mediaId isn't a URI. - return null; - } MediaMetadata metadata = new MediaMetadata.Builder() .putString(MediaMetadata.METADATA_KEY_MEDIA_ID, mediaId) .build(); - return new UriMediaItem.Builder(Uri.parse(mediaId)).setMetadata(metadata).build(); + return new MediaItem.Builder().setMetadata(metadata).build(); } }