Remove setMediaUri/onSetMediaUri

This code path is now completely redundant as the same effect can be
achieved by using player.setMediaItem.

PiperOrigin-RevId: 455115567
(cherry picked from commit 21d4e8581701e12743626f49823a667d9f05ed68)
This commit is contained in:
tonihei 2022-06-15 13:32:25 +00:00 committed by Marc Baechinger
parent 6ed3e40681
commit 6791532778
17 changed files with 12 additions and 296 deletions

View File

@ -181,6 +181,10 @@
`MediaSession.Callback.onAddMediaItems` instead of `onSetMediaUri`.
* Support `setMediaItems(s)` methods when `MediaController` connects to a
legacy media session.
* Remove `MediaController.setMediaUri` and
`MediaSession.Callback.onSetMediaUri`. The same functionality can be
achieved by using `MediaController.setMediaItem` and
`MediaSession.Callback.onAddMediaItems`.
* Data sources:
* Rename `DummyDataSource` to `PlaceholderDataSource`.
* Workaround OkHttp interrupt handling.

View File

@ -32,7 +32,6 @@ oneway interface IMediaSession {
// Id < 3000 is reserved to avoid potential collision with media2 1.x.
void setMediaUri(IMediaController caller, int seq, in Uri uri, in Bundle extras) = 3000;
void setVolume(IMediaController caller, int seq, float volume) = 3001;
void setDeviceVolume(IMediaController caller, int seq, int volume) = 3002;
void increaseDeviceVolume(IMediaController caller, int seq) = 3003;

View File

@ -15,7 +15,6 @@
*/
package androidx.media3.session;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.media.session.MediaControllerCompat;
import android.support.v4.media.session.MediaSessionCompat;
@ -25,99 +24,6 @@ import androidx.media3.session.MediaLibraryService.LibraryParams;
/** Constants that can be shared between media session and controller. */
public final class MediaConstants {
/**
* A {@link Uri} scheme used in a media uri.
*
* @see MediaController#setMediaUri
* @see MediaSession.Callback#onSetMediaUri
*/
public static final String MEDIA_URI_SCHEME = "androidx";
/**
* A {@link Uri} authority used in a media uri.
*
* @see MediaController#setMediaUri
* @see MediaSession.Callback#onSetMediaUri
*/
public static final String MEDIA_URI_AUTHORITY = "media3-session";
/**
* A {@link Uri} path used by {@code
* android.support.v4.media.session.MediaControllerCompat.TransportControls#playFromMediaId}.
*
* @see MediaController#setMediaUri
* @see MediaSession.Callback#onSetMediaUri
*/
public static final String MEDIA_URI_PATH_PLAY_FROM_MEDIA_ID = "playFromMediaId";
/**
* A {@link Uri} path used by {@code
* android.support.v4.media.session.MediaControllerCompat.TransportControls#playFromSearch}.
*
* @see MediaController#setMediaUri
* @see MediaSession.Callback#onSetMediaUri
*/
public static final String MEDIA_URI_PATH_PLAY_FROM_SEARCH = "playFromSearch";
/**
* A {@link Uri} path used by {@link
* android.support.v4.media.session.MediaControllerCompat.TransportControls#prepareFromMediaId}.
*
* @see MediaController#setMediaUri
* @see MediaSession.Callback#onSetMediaUri
*/
public static final String MEDIA_URI_PATH_PREPARE_FROM_MEDIA_ID = "prepareFromMediaId";
/**
* A {@link Uri} path used by {@link
* android.support.v4.media.session.MediaControllerCompat.TransportControls#prepareFromSearch}.
*
* @see MediaController#setMediaUri
* @see MediaSession.Callback#onSetMediaUri
*/
public static final String MEDIA_URI_PATH_PREPARE_FROM_SEARCH = "prepareFromSearch";
/**
* A {@link Uri} path for encoding how the uri will be translated when connected to {@link
* android.support.v4.media.session.MediaSessionCompat}.
*
* @see MediaController#setMediaUri
*/
public static final String MEDIA_URI_PATH_SET_MEDIA_URI = "setMediaUri";
// From scheme to path, plus path delimiter
/* package */ static final String MEDIA_URI_SET_MEDIA_URI_PREFIX =
new Uri.Builder()
.scheme(MEDIA_URI_SCHEME)
.authority(MEDIA_URI_AUTHORITY)
.path(MEDIA_URI_PATH_SET_MEDIA_URI)
.build()
.toString()
+ "?";
/**
* A {@link Uri} query for media id.
*
* @see MediaSession.Callback#onSetMediaUri
* @see MediaController#setMediaUri
*/
public static final String MEDIA_URI_QUERY_ID = "id";
/**
* A {@link Uri} query for search query.
*
* @see MediaSession.Callback#onSetMediaUri
* @see MediaController#setMediaUri
*/
public static final String MEDIA_URI_QUERY_QUERY = "query";
/**
* A {@link Uri} query for media uri.
*
* @see MediaController#setMediaUri
*/
public static final String MEDIA_URI_QUERY_URI = "uri";
/**
* Bundle key to indicate a preference that a region of space for the skip to next control should
* always be blocked out in the UI, even when the seek to next standard action is not supported.

View File

@ -24,7 +24,6 @@ import static androidx.media3.common.util.Util.postOrRun;
import android.app.PendingIntent;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@ -985,36 +984,6 @@ public class MediaController implements Player {
impl.setMediaItems(mediaItems, startIndex, startPositionMs);
}
/**
* Requests that the connected {@link MediaSession} sets a specific {@link Uri} for playback. Use
* this, or {@link #setMediaItems} to specify which item(s) to play.
*
* <p>This can be called multiple times in any states. This would override previous call of this,
* or {@link #setMediaItems}.
*
* <p>The {@link Player.Listener#onTimelineChanged} and/or {@link
* Player.Listener#onMediaItemTransition} would be called when it's completed.
*
* <p>Returned {@link ListenableFuture} will return {@link SessionResult#RESULT_SUCCESS} when it's
* handled together with {@link #prepare} or {@link #play}. If this API is called multiple times
* without prepare or play, then {@link SessionResult#RESULT_INFO_SKIPPED} will be returned for
* previous calls.
*
* @param uri The uri of the item(s) to play.
* @param extras A {@link Bundle} to send extra information. May be empty.
* @return A {@link ListenableFuture} of {@link SessionResult} representing the pending
* completion.
*/
public ListenableFuture<SessionResult> setMediaUri(Uri uri, Bundle extras) {
verifyApplicationThread();
checkNotNull(uri);
checkNotNull(extras);
if (isConnected()) {
return impl.setMediaUri(uri, extras);
}
return createDisconnectedFuture();
}
@Override
public void setPlaylistMetadata(MediaMetadata playlistMetadata) {
verifyApplicationThread();
@ -1928,8 +1897,6 @@ public class MediaController implements Player {
void setMediaItems(List<MediaItem> mediaItems, int startIndex, long startPositionMs);
ListenableFuture<SessionResult> setMediaUri(Uri uri, Bundle extras);
void setPlaylistMetadata(MediaMetadata playlistMetadata);
MediaMetadata getPlaylistMetadata();

View File

@ -76,7 +76,6 @@ import static androidx.media3.common.util.Util.usToMs;
import static androidx.media3.session.MediaUtils.calculateBufferedPercentage;
import static androidx.media3.session.MediaUtils.intersect;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_CUSTOM;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING;
import static androidx.media3.session.SessionResult.RESULT_ERROR_PERMISSION_DENIED;
import static androidx.media3.session.SessionResult.RESULT_ERROR_SESSION_DISCONNECTED;
@ -93,7 +92,6 @@ import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@ -934,14 +932,6 @@ import org.checkerframework.checker.nullness.qual.NonNull;
mediaItems, startIndex, startPositionMs, /* resetToDefaultPosition= */ false);
}
@Override
public ListenableFuture<SessionResult> setMediaUri(Uri uri, Bundle extras) {
return dispatchRemoteSessionTaskWithSessionCommand(
COMMAND_CODE_SESSION_SET_MEDIA_URI,
(RemoteSessionTask)
(iSession, seq) -> iSession.setMediaUri(controllerStub, seq, uri, extras));
}
@Override
public void setPlaylistMetadata(MediaMetadata playlistMetadata) {
if (!isPlayerCommandAvailable(COMMAND_SET_MEDIA_ITEMS_METADATA)) {

View File

@ -44,7 +44,6 @@ import static java.lang.Math.min;
import android.app.PendingIntent;
import android.content.Context;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.ResultReceiver;
@ -667,12 +666,6 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
}
}
@Override
public ListenableFuture<SessionResult> setMediaUri(Uri uri, Bundle extras) {
Log.w(TAG, "Session doesn't support setMediaUri");
return Futures.immediateCancelledFuture();
}
@Override
public void setPlaylistMetadata(MediaMetadata playlistMetadata) {
Log.w(TAG, "Session doesn't support setting playlist metadata");

View File

@ -940,24 +940,6 @@ public class MediaSession {
return Futures.immediateFuture(new SessionResult(RESULT_ERROR_NOT_SUPPORTED));
}
/**
* Called when a controller requested to set the specific media item(s) represented by a URI
* through {@link MediaController#setMediaUri(Uri, Bundle)}.
*
* <p>The implementation should create proper {@link MediaItem media item(s)} for the given
* {@code uri} and call {@link Player#setMediaItems}.
*
* @param session The session for this event.
* @param controller The controller information.
* @param uri The uri.
* @param extras An extra {@link Bundle}. May be empty.
* @return A result code.
*/
default @SessionResult.Code int onSetMediaUri(
MediaSession session, ControllerInfo controller, Uri uri, Bundle extras) {
return RESULT_ERROR_NOT_SUPPORTED;
}
/**
* Called when a controller sent a custom command through {@link
* MediaController#sendCustomCommand(SessionCommand, Bundle)}.

View File

@ -442,11 +442,6 @@ import org.checkerframework.checker.initialization.qual.Initialized;
callback.onDisconnected(instance, controller);
}
public @SessionResult.Code int onSetMediaUriOnHandler(
ControllerInfo controller, Uri uri, Bundle extras) {
return callback.onSetMediaUri(instance, controller, uri, extras);
}
public @SessionResult.Code int onPlayerCommandRequestOnHandler(
ControllerInfo controller, @Player.Command int playerCommand) {
return callback.onPlayerCommandRequest(instance, controller, playerCommand);

View File

@ -49,10 +49,8 @@ import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_GET_SE
import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_SEARCH;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_SUBSCRIBE;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_LIBRARY_UNSUBSCRIBE;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
@ -1013,21 +1011,6 @@ import java.util.concurrent.ExecutionException;
player.setMediaItems(mediaItems, startIndex, startPositionMs)));
}
@Override
public void setMediaUri(
@Nullable IMediaController caller, int seq, @Nullable Uri uri, @Nullable Bundle extras) {
if (caller == null || uri == null || extras == null) {
return;
}
dispatchSessionTaskWithSessionCommand(
caller,
seq,
COMMAND_CODE_SESSION_SET_MEDIA_URI,
(sessionImpl, controller) ->
new SessionResult(sessionImpl.onSetMediaUriOnHandler(controller, uri, extras)),
MediaSessionStub::sendSessionResult);
}
@Override
public void setPlaylistMetadata(
@Nullable IMediaController caller, int seq, @Nullable Bundle playlistMetadataBundle) {

View File

@ -49,7 +49,6 @@ public final class SessionCommand implements Bundleable {
@Target(TYPE_USE)
@IntDef({
COMMAND_CODE_CUSTOM,
COMMAND_CODE_SESSION_SET_MEDIA_URI,
COMMAND_CODE_SESSION_SET_RATING,
COMMAND_CODE_LIBRARY_GET_LIBRARY_ROOT,
COMMAND_CODE_LIBRARY_SUBSCRIBE,
@ -74,11 +73,8 @@ public final class SessionCommand implements Bundleable {
/** Command code for {@link MediaController#setRating(String, Rating)}. */
public static final int COMMAND_CODE_SESSION_SET_RATING = 40010;
/** Command code for {@link MediaController#setMediaUri}. */
public static final int COMMAND_CODE_SESSION_SET_MEDIA_URI = 40011;
/* package */ static final ImmutableList<Integer> SESSION_COMMANDS =
ImmutableList.of(COMMAND_CODE_SESSION_SET_RATING, COMMAND_CODE_SESSION_SET_MEDIA_URI);
ImmutableList.of(COMMAND_CODE_SESSION_SET_RATING);
//////////////////////////////////////////////////////////////////////////////////////////////////
// Library commands (i.e. commands to {@link MediaLibrarySession#MediaLibrarySessionCallback})

View File

@ -52,7 +52,6 @@ interface IRemoteMediaController {
void setMediaItemsWithStartIndex(
String controllerId, in List<Bundle> mediaItems, int startIndex, long startPositionMs);
void createAndSetFakeMediaItems(String controllerId, int size);
void setMediaUri(String controllerId, in Uri uri, in Bundle extras);
void setPlaylistMetadata(String controllerId, in Bundle playlistMetadata);
void addMediaItem(String controllerId, in Bundle mediaitem);
void addMediaItemWithIndex(String controllerId, int index, in Bundle mediaitem);

View File

@ -24,6 +24,7 @@ import static androidx.media3.common.Player.STATE_BUFFERING;
import static androidx.media3.session.MediaTestUtils.createTimeline;
import static androidx.media3.session.MediaUtils.createPlayerCommandsWith;
import static androidx.media3.session.MediaUtils.createPlayerCommandsWithout;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING;
import static androidx.media3.session.SessionResult.RESULT_SUCCESS;
import static androidx.media3.test.session.common.CommonConstants.DEFAULT_TEST_NAME;
import static androidx.media3.test.session.common.CommonConstants.MOCK_MEDIA3_LIBRARY_SERVICE;
@ -1535,7 +1536,8 @@ public class MediaControllerListenerTest {
SessionCommands commands =
new SessionCommands.Builder()
.add(new SessionCommand(SessionCommand.COMMAND_CODE_SESSION_SET_RATING))
.addAllSessionCommands()
.remove(COMMAND_CODE_SESSION_SET_RATING)
.build();
remoteSession.setAvailableCommands(commands, Player.Commands.EMPTY);

View File

@ -943,7 +943,7 @@ public class MediaControllerTest {
public void isSessionCommandAvailable_withAvailablePredefinedSessionCommand_returnsTrue()
throws Exception {
@SessionCommand.CommandCode
int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI;
int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_RATING;
SessionCommand sessionCommand = new SessionCommand(sessionCommandCode);
Bundle tokenExtras = new Bundle();
tokenExtras.putBundle(
@ -969,7 +969,7 @@ public class MediaControllerTest {
public void isSessionCommandAvailable_withUnavailablePredefinedSessionCommand_returnsFalse()
throws Exception {
@SessionCommand.CommandCode
int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI;
int sessionCommandCode = SessionCommand.COMMAND_CODE_SESSION_SET_RATING;
SessionCommand sessionCommand = new SessionCommand(sessionCommandCode);
Bundle tokenExtras = new Bundle();
tokenExtras.putBundle(

View File

@ -27,7 +27,6 @@ import static com.google.common.truth.Truth.assertThat;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.media3.common.MediaItem;
@ -239,43 +238,6 @@ public class MediaSessionCallbackTest {
assertThat(TestUtils.equals(testArgs, argsRef.get())).isTrue();
}
@Test
public void onSetMediaUri() throws Exception {
Uri testUri = Uri.parse("foo://boo");
Bundle testExtras = TestUtils.createTestBundle();
CountDownLatch latch = new CountDownLatch(1);
AtomicReference<Uri> uriRef = new AtomicReference<>();
AtomicReference<Bundle> extrasRef = new AtomicReference<>();
MediaSession.Callback callback =
new MediaSession.Callback() {
@Override
public int onSetMediaUri(
MediaSession session, ControllerInfo controller, Uri uri, Bundle extras) {
if (!TextUtils.equals(controller.getPackageName(), SUPPORT_APP_PACKAGE_NAME)) {
return RESULT_INFO_SKIPPED;
}
uriRef.set(uri);
extrasRef.set(extras);
latch.countDown();
return RESULT_SUCCESS;
}
};
MediaSession session =
sessionTestRule.ensureReleaseAfterTest(
new MediaSession.Builder(context, player)
.setCallback(callback)
.setId("testOnSetMediaUri")
.build());
RemoteMediaController controller =
controllerTestRule.createRemoteController(session.getToken());
controller.setMediaUri(testUri, testExtras);
assertThat(latch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
assertThat(uriRef.get()).isEqualTo(testUri);
assertThat(TestUtils.equals(testExtras, extrasRef.get())).isTrue();
}
@Test
public void onSetRatingWithMediaId() throws Exception {
float ratingValue = 3.5f;

View File

@ -27,7 +27,6 @@ import static androidx.media3.common.Player.COMMAND_SET_MEDIA_ITEMS_METADATA;
import static androidx.media3.common.Player.COMMAND_SET_TRACK_SELECTION_PARAMETERS;
import static androidx.media3.session.MediaUtils.createPlayerCommandsWith;
import static androidx.media3.session.MediaUtils.createPlayerCommandsWithout;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI;
import static androidx.media3.session.SessionCommand.COMMAND_CODE_SESSION_SET_RATING;
import static androidx.media3.session.SessionResult.RESULT_SUCCESS;
import static androidx.media3.test.session.common.CommonConstants.SUPPORT_APP_PACKAGE_NAME;
@ -37,7 +36,6 @@ import static com.google.common.truth.Truth.assertThat;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.media3.common.MediaMetadata;
@ -50,7 +48,6 @@ import androidx.media3.test.session.common.HandlerThreadTestRule;
import androidx.media3.test.session.common.MainLooperTestRule;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.ext.truth.os.BundleSubject;
import androidx.test.filters.LargeTest;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@ -184,31 +181,6 @@ public class MediaSessionPermissionTest {
testOnCommandRequest(COMMAND_SET_DEVICE_VOLUME, controller -> controller.setDeviceMuted(true));
}
@Test
public void setMediaUri() throws Exception {
Uri uri = Uri.parse("media://uri");
createSessionWithAvailableCommands(
createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)),
Player.Commands.EMPTY);
controllerTestRule
.createRemoteController(session.getToken())
.setMediaUri(uri, /* extras= */ Bundle.EMPTY);
assertThat(callback.countDownLatch.await(TIMEOUT_MS, MILLISECONDS)).isTrue();
assertThat(callback.onSetMediaUriCalled).isTrue();
assertThat(callback.uri).isEqualTo(uri);
BundleSubject.assertThat(callback.extras).isEmpty();
createSessionWithAvailableCommands(
createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_RATING)),
Player.Commands.EMPTY);
controllerTestRule
.createRemoteController(session.getToken())
.setMediaUri(uri, /* extras= */ Bundle.EMPTY);
assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse();
assertThat(callback.onSetMediaUriCalled).isFalse();
}
@Test
public void setRating() throws Exception {
String mediaId = "testSetRating";
@ -223,9 +195,7 @@ public class MediaSessionPermissionTest {
assertThat(callback.mediaId).isEqualTo(mediaId);
assertThat(callback.rating).isEqualTo(rating);
createSessionWithAvailableCommands(
createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)),
Player.Commands.EMPTY);
createSession(SessionCommands.EMPTY, Player.Commands.EMPTY);
controllerTestRule.createRemoteController(session.getToken()).setRating(mediaId, rating);
assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse();
assertThat(callback.onSetRatingCalled).isFalse();
@ -248,9 +218,7 @@ public class MediaSessionPermissionTest {
// Change allowed commands.
session.setAvailableCommands(
getTestControllerInfo(),
createSessionCommandsWith(new SessionCommand(COMMAND_CODE_SESSION_SET_MEDIA_URI)),
Player.Commands.EMPTY);
getTestControllerInfo(), SessionCommands.EMPTY, Player.Commands.EMPTY);
controller.setRating(mediaId, rating);
assertThat(callback.countDownLatch.await(NO_RESPONSE_TIMEOUT_MS, MILLISECONDS)).isFalse();
@ -315,12 +283,10 @@ public class MediaSessionPermissionTest {
public @Player.Command int command;
public String mediaId;
public Uri uri;
public Bundle extras;
public Rating rating;
public boolean onCommandRequestCalled;
public boolean onSetMediaUriCalled;
public boolean onSetRatingCalled;
public MySessionCallback() {
@ -333,7 +299,6 @@ public class MediaSessionPermissionTest {
mediaId = null;
onCommandRequestCalled = false;
onSetMediaUriCalled = false;
onSetRatingCalled = false;
}
@ -347,17 +312,6 @@ public class MediaSessionPermissionTest {
return MediaSession.Callback.super.onPlayerCommandRequest(session, controller, command);
}
@Override
public int onSetMediaUri(
MediaSession session, ControllerInfo controller, Uri uri, Bundle extras) {
assertThat(TextUtils.equals(SUPPORT_APP_PACKAGE_NAME, controller.getPackageName())).isTrue();
onSetMediaUriCalled = true;
this.uri = uri;
this.extras = extras;
countDownLatch.countDown();
return RESULT_SUCCESS;
}
@Override
public ListenableFuture<SessionResult> onSetRating(
MediaSession session, ControllerInfo controller, String mediaId, Rating rating) {

View File

@ -23,7 +23,6 @@ import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
@ -366,16 +365,6 @@ public class MediaControllerProviderService extends Service {
});
}
@Override
@SuppressWarnings("FutureReturnValueIgnored")
public void setMediaUri(String controllerId, Uri uri, Bundle extras) throws RemoteException {
runOnHandler(
() -> {
MediaController controller = mediaControllerMap.get(controllerId);
controller.setMediaUri(uri, extras);
});
}
@Override
public void setPlaylistMetadata(String controllerId, Bundle playlistMetadataBundle)
throws RemoteException {

View File

@ -25,7 +25,6 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
@ -180,10 +179,6 @@ public class RemoteMediaController {
binder.createAndSetFakeMediaItems(controllerId, size);
}
public void setMediaUri(Uri uri, Bundle extras) throws RemoteException {
binder.setMediaUri(controllerId, uri, extras);
}
public void setPlaylistMetadata(MediaMetadata playlistMetadata) throws RemoteException {
binder.setPlaylistMetadata(controllerId, playlistMetadata.toBundle());
}