Further media3 session cleanup
* Remove casting getInstance and getCallback methods and just use member variables that have the more specific types. I didn't manage to get rid of casting completely; there are still one-off casts during construction. We should look at removing those in the future, but it's not completely trivial due to the way the Impl classes back-reference their wrapping classes. * Move all callback invocations inside the Impl classes for consistency, and properly encapsulate the callbacks there. Sticking with the "OnHandler" naming convention for these methods, but we should probably tweak that in a subsequent change. * Encapsulate MediaItemFiller in MediaSessionImpl. * Some misc cleanup (e.g., converting anonymous inner classes to lambdas where possible). PiperOrigin-RevId: 414401978
This commit is contained in:
parent
e59e15d29d
commit
e765f7a8eb
@ -128,7 +128,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
if (sessionImpl.isReleased()) {
|
||||
return;
|
||||
}
|
||||
sessionImpl.getCallback().onDisconnected(sessionImpl.getInstance(), controllerInfo);
|
||||
sessionImpl.onDisconnectedOnHandler(controllerInfo);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -465,7 +465,14 @@ public abstract class MediaLibraryService extends MediaSessionService {
|
||||
MediaItemFiller mediaItemFiller,
|
||||
Bundle tokenExtras) {
|
||||
return new MediaLibrarySessionImpl(
|
||||
this, context, id, player, sessionActivity, callback, mediaItemFiller, tokenExtras);
|
||||
this,
|
||||
context,
|
||||
id,
|
||||
player,
|
||||
sessionActivity,
|
||||
(MediaLibrarySession.MediaLibrarySessionCallback) callback,
|
||||
mediaItemFiller,
|
||||
tokenExtras);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -308,11 +308,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||
return;
|
||||
}
|
||||
ListenableFuture<SessionResult> future =
|
||||
checkNotNull(
|
||||
librarySessionImpl
|
||||
.getCallback()
|
||||
.onCustomCommand(
|
||||
librarySessionImpl.getInstance(), controller, command, extras));
|
||||
librarySessionImpl.onCustomCommandOnHandler(controller, command, extras);
|
||||
sendCustomActionResultWhenReady(result, future);
|
||||
});
|
||||
}
|
||||
|
@ -47,19 +47,25 @@ import java.util.concurrent.Future;
|
||||
|
||||
/* package */ class MediaLibrarySessionImpl extends MediaSessionImpl {
|
||||
|
||||
private final MediaLibrarySession instance;
|
||||
private final MediaLibrarySession.MediaLibrarySessionCallback callback;
|
||||
|
||||
@GuardedBy("lock")
|
||||
private final ArrayMap<ControllerCb, Set<String>> subscriptions = new ArrayMap<>();
|
||||
private final ArrayMap<ControllerCb, Set<String>> subscriptions;
|
||||
|
||||
public MediaLibrarySessionImpl(
|
||||
MediaSession instance,
|
||||
MediaLibrarySession instance,
|
||||
Context context,
|
||||
String id,
|
||||
Player player,
|
||||
@Nullable PendingIntent sessionActivity,
|
||||
MediaSession.SessionCallback callback,
|
||||
MediaLibrarySession.MediaLibrarySessionCallback callback,
|
||||
MediaSession.MediaItemFiller mediaItemFiller,
|
||||
Bundle tokenExtras) {
|
||||
super(instance, context, id, player, sessionActivity, callback, mediaItemFiller, tokenExtras);
|
||||
this.instance = instance;
|
||||
this.callback = callback;
|
||||
subscriptions = new ArrayMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -115,7 +121,7 @@ import java.util.concurrent.Future;
|
||||
// onGetLibraryRoot is defined to return a non-null result but it's implemented by applications,
|
||||
// so we explicitly null-check the result to fail early if an app accidentally returns null.
|
||||
return checkNotNull(
|
||||
getCallback().onGetLibraryRoot(getInstance(), browser, params),
|
||||
callback.onGetLibraryRoot(instance, browser, params),
|
||||
"onGetLibraryRoot must return non-null future");
|
||||
}
|
||||
|
||||
@ -124,8 +130,7 @@ import java.util.concurrent.Future;
|
||||
// onGetItem is defined to return a non-null result but it's implemented by applications,
|
||||
// so we explicitly null-check the result to fail early if an app accidentally returns null.
|
||||
return checkNotNull(
|
||||
getCallback().onGetItem(getInstance(), browser, mediaId),
|
||||
"onGetItem must return non-null future");
|
||||
callback.onGetItem(instance, browser, mediaId), "onGetItem must return non-null future");
|
||||
}
|
||||
|
||||
public ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> onGetChildrenOnHandler(
|
||||
@ -138,7 +143,7 @@ import java.util.concurrent.Future;
|
||||
// so we explicitly null-check the result to fail early if an app accidentally returns null.
|
||||
ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> future =
|
||||
checkNotNull(
|
||||
getCallback().onGetChildren(getInstance(), browser, parentId, page, pageSize, params),
|
||||
callback.onGetChildren(instance, browser, parentId, page, pageSize, params),
|
||||
"onGetChildren must return non-null future");
|
||||
future.addListener(
|
||||
() -> {
|
||||
@ -170,7 +175,7 @@ import java.util.concurrent.Future;
|
||||
// so we explicitly null-check the result to fail early if an app accidentally returns null.
|
||||
ListenableFuture<LibraryResult<Void>> future =
|
||||
checkNotNull(
|
||||
getCallback().onSubscribe(getInstance(), browser, parentId, params),
|
||||
callback.onSubscribe(instance, browser, parentId, params),
|
||||
"onSubscribe must return non-null future");
|
||||
|
||||
// When error happens, remove from the subscription list.
|
||||
@ -194,7 +199,7 @@ import java.util.concurrent.Future;
|
||||
// so we explicitly null-check the result to fail early if an app accidentally returns null.
|
||||
ListenableFuture<LibraryResult<Void>> future =
|
||||
checkNotNull(
|
||||
getCallback().onUnsubscribe(getInstance(), browser, parentId),
|
||||
callback.onUnsubscribe(instance, browser, parentId),
|
||||
"onUnsubscribe must return non-null future");
|
||||
|
||||
future.addListener(
|
||||
@ -213,7 +218,7 @@ import java.util.concurrent.Future;
|
||||
// onSearch is defined to return a non-null result but it's implemented by applications,
|
||||
// so we explicitly null-check the result to fail early if an app accidentally returns null.
|
||||
return checkNotNull(
|
||||
getCallback().onSearch(getInstance(), browser, query, params),
|
||||
callback.onSearch(instance, browser, query, params),
|
||||
"onSearch must return non-null future");
|
||||
}
|
||||
|
||||
@ -228,7 +233,7 @@ import java.util.concurrent.Future;
|
||||
// returns null.
|
||||
ListenableFuture<LibraryResult<ImmutableList<MediaItem>>> future =
|
||||
checkNotNull(
|
||||
getCallback().onGetSearchResult(getInstance(), browser, query, page, pageSize, params),
|
||||
callback.onGetSearchResult(instance, browser, query, page, pageSize, params),
|
||||
"onGetSearchResult must return non-null future");
|
||||
future.addListener(
|
||||
() -> {
|
||||
@ -241,16 +246,6 @@ import java.util.concurrent.Future;
|
||||
return future;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MediaLibrarySession getInstance() {
|
||||
return (MediaLibrarySession) super.getInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MediaLibrarySession.MediaLibrarySessionCallback getCallback() {
|
||||
return (MediaLibrarySession.MediaLibrarySessionCallback) super.getCallback();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
protected MediaLibraryServiceLegacyStub getLegacyBrowserService() {
|
||||
|
@ -1018,21 +1018,6 @@ public class MediaSession {
|
||||
* Called to fill in the {@link MediaItem#localConfiguration} of the media item from
|
||||
* controllers.
|
||||
*
|
||||
* <p>Specifically, it's called by the following methods
|
||||
*
|
||||
* <ol>
|
||||
* <li>{@link MediaController#setMediaItem(MediaItem)}
|
||||
* <li>{@link MediaController#setMediaItem(MediaItem,long)}
|
||||
* <li>{@link MediaController#setMediaItem(MediaItem, boolean)}
|
||||
* <li>{@link MediaController#setMediaItems(List)}
|
||||
* <li>{@link MediaController#setMediaItems(List, boolean)}
|
||||
* <li>{@link MediaController#setMediaItems(List, int, long)}
|
||||
* <li>{@link MediaController#addMediaItem(MediaItem)}
|
||||
* <li>{@link MediaController#addMediaItem(int, MediaItem)}
|
||||
* <li>{@link MediaController#addMediaItems(List)}
|
||||
* <li>{@link MediaController#addMediaItems(int, List)}
|
||||
* </ol>
|
||||
*
|
||||
* @param session The session for this event.
|
||||
* @param controller The controller information.
|
||||
* @param mediaItem The media item whose local configuration will be filled in.
|
||||
|
@ -15,6 +15,7 @@
|
||||
*/
|
||||
package androidx.media3.session;
|
||||
|
||||
import static androidx.media3.common.util.Assertions.checkNotNull;
|
||||
import static androidx.media3.common.util.Assertions.checkStateNotNull;
|
||||
import static androidx.media3.common.util.Util.castNonNull;
|
||||
import static androidx.media3.common.util.Util.postOrRun;
|
||||
@ -57,6 +58,7 @@ import androidx.media3.common.Player;
|
||||
import androidx.media3.common.Player.DiscontinuityReason;
|
||||
import androidx.media3.common.Player.PositionInfo;
|
||||
import androidx.media3.common.Player.RepeatMode;
|
||||
import androidx.media3.common.Rating;
|
||||
import androidx.media3.common.Timeline;
|
||||
import androidx.media3.common.TrackSelectionParameters;
|
||||
import androidx.media3.common.VideoSize;
|
||||
@ -346,13 +348,7 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
public ListenableFuture<SessionResult> setCustomLayout(
|
||||
ControllerInfo controller, List<CommandButton> layout) {
|
||||
return dispatchRemoteControllerTask(
|
||||
controller,
|
||||
new RemoteControllerTask() {
|
||||
@Override
|
||||
public void run(ControllerCb controller, int seq) throws RemoteException {
|
||||
controller.setCustomLayout(seq, layout);
|
||||
}
|
||||
});
|
||||
controller, (controller1, seq) -> controller1.setCustomLayout(seq, layout));
|
||||
}
|
||||
|
||||
public void setAvailableCommands(
|
||||
@ -363,12 +359,8 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
.updateCommandsFromSession(controller, sessionCommands, playerCommands);
|
||||
dispatchRemoteControllerTaskWithoutReturn(
|
||||
controller,
|
||||
new RemoteControllerTask() {
|
||||
@Override
|
||||
public void run(ControllerCb callback, int seq) throws RemoteException {
|
||||
callback.onAvailableCommandsChangedFromSession(seq, sessionCommands, playerCommands);
|
||||
}
|
||||
});
|
||||
(callback, seq) ->
|
||||
callback.onAvailableCommandsChangedFromSession(seq, sessionCommands, playerCommands));
|
||||
onPlayerInfoChangedHandler.sendPlayerInfoChangedMessage(/* excludeTimeline= */ false);
|
||||
} else {
|
||||
sessionLegacyStub
|
||||
@ -438,6 +430,50 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
controller, (cb, seq) -> cb.sendCustomCommand(seq, command, args));
|
||||
}
|
||||
|
||||
public MediaSession.ConnectionResult onConnectOnHandler(ControllerInfo controller) {
|
||||
return checkNotNull(
|
||||
callback.onConnect(instance, controller), "onConntext must return non-null future");
|
||||
}
|
||||
|
||||
public void onPostConnectOnHandler(ControllerInfo controller) {
|
||||
callback.onPostConnect(instance, controller);
|
||||
}
|
||||
|
||||
public void onDisconnectedOnHandler(ControllerInfo controller) {
|
||||
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);
|
||||
}
|
||||
|
||||
public ListenableFuture<SessionResult> onSetRatingOnHandler(
|
||||
ControllerInfo controller, String mediaId, Rating rating) {
|
||||
return checkNotNull(
|
||||
callback.onSetRating(instance, controller, mediaId, rating),
|
||||
"onSetRating must return non-null future");
|
||||
}
|
||||
|
||||
public ListenableFuture<SessionResult> onSetRatingOnHandler(
|
||||
ControllerInfo controller, Rating rating) {
|
||||
return checkNotNull(
|
||||
callback.onSetRating(instance, controller, rating),
|
||||
"onSetRating must return non-null future");
|
||||
}
|
||||
|
||||
public ListenableFuture<SessionResult> onCustomCommandOnHandler(
|
||||
ControllerInfo browser, SessionCommand command, Bundle extras) {
|
||||
return checkNotNull(
|
||||
callback.onCustomCommand(instance, browser, command, extras),
|
||||
"onCustomCommandOnHandler must return non-null future");
|
||||
}
|
||||
|
||||
public void connectFromService(
|
||||
IMediaController caller,
|
||||
int controllerVersion,
|
||||
@ -457,10 +493,6 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
sessionLegacyStub.setLegacyControllerDisconnectTimeoutMs(timeoutMs);
|
||||
}
|
||||
|
||||
protected MediaSession getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
protected Context getContext() {
|
||||
return context;
|
||||
}
|
||||
@ -469,12 +501,9 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
return applicationHandler;
|
||||
}
|
||||
|
||||
protected SessionCallback getCallback() {
|
||||
return callback;
|
||||
}
|
||||
|
||||
protected MediaItemFiller getMediaItemFiller() {
|
||||
return mediaItemFiller;
|
||||
protected MediaItem fillInLocalConfiguration(
|
||||
MediaSession.ControllerInfo controller, MediaItem mediaItem) {
|
||||
return mediaItemFiller.fillInLocalConfiguration(instance, controller, mediaItem);
|
||||
}
|
||||
|
||||
protected boolean isReleased() {
|
||||
|
@ -177,15 +177,8 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
command,
|
||||
controller -> {
|
||||
ListenableFuture<SessionResult> future =
|
||||
checkNotNull(
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onCustomCommand(
|
||||
sessionImpl.getInstance(),
|
||||
controller,
|
||||
command,
|
||||
args == null ? Bundle.EMPTY : args),
|
||||
"SessionCallback#onCustomCommand must not return null");
|
||||
sessionImpl.onCustomCommandOnHandler(
|
||||
controller, command, args == null ? Bundle.EMPTY : args);
|
||||
if (cb != null) {
|
||||
sendCustomCommandResultWhenReady(cb, future);
|
||||
} else {
|
||||
@ -280,13 +273,8 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
dispatchSessionTaskWithSessionCommand(
|
||||
SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI,
|
||||
controller -> {
|
||||
if (sessionImpl
|
||||
.getCallback()
|
||||
.onSetMediaUri(
|
||||
sessionImpl.getInstance(),
|
||||
controller,
|
||||
mediaUri,
|
||||
extras == null ? Bundle.EMPTY : extras)
|
||||
if (sessionImpl.onSetMediaUriOnHandler(
|
||||
controller, mediaUri, extras == null ? Bundle.EMPTY : extras)
|
||||
== RESULT_SUCCESS) {
|
||||
sessionImpl.getPlayerWrapper().prepare();
|
||||
}
|
||||
@ -330,13 +318,8 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
dispatchSessionTaskWithSessionCommand(
|
||||
SessionCommand.COMMAND_CODE_SESSION_SET_MEDIA_URI,
|
||||
controller -> {
|
||||
if (sessionImpl
|
||||
.getCallback()
|
||||
.onSetMediaUri(
|
||||
sessionImpl.getInstance(),
|
||||
controller,
|
||||
mediaUri,
|
||||
extras == null ? Bundle.EMPTY : extras)
|
||||
if (sessionImpl.onSetMediaUriOnHandler(
|
||||
controller, mediaUri, extras == null ? Bundle.EMPTY : extras)
|
||||
== RESULT_SUCCESS) {
|
||||
sessionImpl.getPlayerWrapper().play();
|
||||
}
|
||||
@ -440,10 +423,7 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
return;
|
||||
}
|
||||
// MediaControllerCompat#setRating doesn't return a value.
|
||||
ignoreFuture(
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onSetRating(sessionImpl.getInstance(), controller, currentItem.mediaId, rating));
|
||||
ignoreFuture(sessionImpl.onSetRatingOnHandler(controller, currentItem.mediaId, rating));
|
||||
});
|
||||
}
|
||||
|
||||
@ -597,10 +577,7 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
if (!connectedControllersManager.isPlayerCommandAvailable(controller, command)) {
|
||||
return;
|
||||
}
|
||||
int resultCode =
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onPlayerCommandRequest(sessionImpl.getInstance(), controller, command);
|
||||
int resultCode = sessionImpl.onPlayerCommandRequestOnHandler(controller, command);
|
||||
if (resultCode != RESULT_SUCCESS) {
|
||||
// Don't run rejected command.
|
||||
return;
|
||||
@ -702,8 +679,7 @@ import org.checkerframework.checker.initialization.qual.Initialized;
|
||||
sessionManager.isTrustedForMediaControl(remoteUserInfo),
|
||||
controllerCb,
|
||||
/* connectionHints= */ Bundle.EMPTY);
|
||||
MediaSession.ConnectionResult connectionResult =
|
||||
sessionImpl.getCallback().onConnect(sessionImpl.getInstance(), controller);
|
||||
MediaSession.ConnectionResult connectionResult = sessionImpl.onConnectOnHandler(controller);
|
||||
if (!connectionResult.isAccepted) {
|
||||
try {
|
||||
controllerCb.onDisconnected(/* seq= */ 0);
|
||||
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
package androidx.media3.session;
|
||||
|
||||
import static androidx.media3.common.util.Assertions.checkNotNull;
|
||||
import static androidx.media3.common.util.Util.postOrRun;
|
||||
|
||||
import android.os.Bundle;
|
||||
@ -69,10 +68,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||
postOrRun(
|
||||
sessionImpl.getApplicationHandler(),
|
||||
() -> {
|
||||
resultReference.set(
|
||||
checkNotNull(
|
||||
sessionImpl.getCallback().onConnect(sessionImpl.getInstance(), controller),
|
||||
"onConnect must return non-null future"));
|
||||
resultReference.set(sessionImpl.onConnectOnHandler(controller));
|
||||
haveResult.open();
|
||||
});
|
||||
try {
|
||||
|
@ -220,10 +220,7 @@ import java.util.concurrent.ExecutionException;
|
||||
return;
|
||||
}
|
||||
@SessionResult.Code
|
||||
int resultCode =
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onPlayerCommandRequest(sessionImpl.getInstance(), controller, command);
|
||||
int resultCode = sessionImpl.onPlayerCommandRequestOnHandler(controller, command);
|
||||
if (resultCode != SessionResult.RESULT_SUCCESS) {
|
||||
// Don't run rejected command.
|
||||
sendSessionResult(controller, seq, new SessionResult(resultCode));
|
||||
@ -346,7 +343,7 @@ import java.util.concurrent.ExecutionException;
|
||||
checkStateNotNull((Controller2Cb) controllerInfo.getControllerCb())
|
||||
.getCallbackBinder();
|
||||
MediaSession.ConnectionResult connectionResult =
|
||||
sessionImpl.getCallback().onConnect(sessionImpl.getInstance(), controllerInfo);
|
||||
sessionImpl.onConnectOnHandler(controllerInfo);
|
||||
// Don't reject connection for the request from trusted app.
|
||||
// Otherwise server will fail to retrieve session's information to dispatch
|
||||
// media keys to.
|
||||
@ -406,7 +403,7 @@ import java.util.concurrent.ExecutionException;
|
||||
// Controller may be died prematurely.
|
||||
}
|
||||
|
||||
sessionImpl.getCallback().onPostConnect(sessionImpl.getInstance(), controllerInfo);
|
||||
sessionImpl.onPostConnectOnHandler(controllerInfo);
|
||||
} else {
|
||||
try {
|
||||
caller.onDisconnected(0);
|
||||
@ -674,10 +671,7 @@ import java.util.concurrent.ExecutionException;
|
||||
seq,
|
||||
command,
|
||||
(sessionImpl, controller) ->
|
||||
checkNotNull(
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onCustomCommand(sessionImpl.getInstance(), controller, command, args)),
|
||||
sessionImpl.onCustomCommandOnHandler(controller, command, args),
|
||||
MediaSessionStub::sendSessionResultWhenReady);
|
||||
}
|
||||
|
||||
@ -702,11 +696,7 @@ import java.util.concurrent.ExecutionException;
|
||||
caller,
|
||||
seq,
|
||||
COMMAND_CODE_SESSION_SET_RATING,
|
||||
(sessionImpl, controller) ->
|
||||
checkNotNull(
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onSetRating(sessionImpl.getInstance(), controller, mediaId, rating)),
|
||||
(sessionImpl, controller) -> sessionImpl.onSetRatingOnHandler(controller, mediaId, rating),
|
||||
MediaSessionStub::sendSessionResultWhenReady);
|
||||
}
|
||||
|
||||
@ -726,11 +716,7 @@ import java.util.concurrent.ExecutionException;
|
||||
caller,
|
||||
seq,
|
||||
COMMAND_CODE_SESSION_SET_RATING,
|
||||
(sessionImpl, controller) ->
|
||||
checkNotNull(
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onSetRating(sessionImpl.getInstance(), controller, rating)),
|
||||
(sessionImpl, controller) -> sessionImpl.onSetRatingOnHandler(controller, rating),
|
||||
MediaSessionStub::sendSessionResultWhenReady);
|
||||
}
|
||||
|
||||
@ -788,9 +774,7 @@ import java.util.concurrent.ExecutionException;
|
||||
COMMAND_CHANGE_MEDIA_ITEMS,
|
||||
(sessionImpl, controller) -> {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
sessionImpl.getPlayerWrapper().setMediaItem(mediaItemWithPlaybackProperties);
|
||||
return SessionResult.RESULT_SUCCESS;
|
||||
},
|
||||
@ -819,9 +803,7 @@ import java.util.concurrent.ExecutionException;
|
||||
COMMAND_CHANGE_MEDIA_ITEMS,
|
||||
(sessionImpl, controller) -> {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
sessionImpl
|
||||
.getPlayerWrapper()
|
||||
.setMediaItem(mediaItemWithPlaybackProperties, startPositionMs);
|
||||
@ -852,9 +834,7 @@ import java.util.concurrent.ExecutionException;
|
||||
COMMAND_CHANGE_MEDIA_ITEMS,
|
||||
(sessionImpl, controller) -> {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
sessionImpl
|
||||
.getPlayerWrapper()
|
||||
.setMediaItem(mediaItemWithPlaybackProperties, resetPosition);
|
||||
@ -888,9 +868,7 @@ import java.util.concurrent.ExecutionException;
|
||||
ImmutableList.builder();
|
||||
for (MediaItem mediaItem : mediaItemList) {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
mediaItemWithPlaybackPropertiesListBuilder.add(mediaItemWithPlaybackProperties);
|
||||
}
|
||||
sessionImpl
|
||||
@ -928,9 +906,7 @@ import java.util.concurrent.ExecutionException;
|
||||
ImmutableList.builder();
|
||||
for (MediaItem mediaItem : mediaItemList) {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
mediaItemWithPlaybackPropertiesListBuilder.add(mediaItemWithPlaybackProperties);
|
||||
}
|
||||
sessionImpl
|
||||
@ -969,9 +945,7 @@ import java.util.concurrent.ExecutionException;
|
||||
ImmutableList.builder();
|
||||
for (MediaItem mediaItem : mediaItemList) {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
mediaItemWithPlaybackPropertiesListBuilder.add(mediaItemWithPlaybackProperties);
|
||||
}
|
||||
|
||||
@ -995,10 +969,7 @@ import java.util.concurrent.ExecutionException;
|
||||
seq,
|
||||
COMMAND_CODE_SESSION_SET_MEDIA_URI,
|
||||
(sessionImpl, controller) ->
|
||||
new SessionResult(
|
||||
sessionImpl
|
||||
.getCallback()
|
||||
.onSetMediaUri(sessionImpl.getInstance(), controller, uri, extras)),
|
||||
new SessionResult(sessionImpl.onSetMediaUriOnHandler(controller, uri, extras)),
|
||||
MediaSessionStub::sendSessionResult);
|
||||
}
|
||||
|
||||
@ -1044,9 +1015,7 @@ import java.util.concurrent.ExecutionException;
|
||||
COMMAND_CHANGE_MEDIA_ITEMS,
|
||||
(sessionImpl, controller) -> {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
sessionImpl.getPlayerWrapper().addMediaItem(mediaItemWithPlaybackProperties);
|
||||
return SessionResult.RESULT_SUCCESS;
|
||||
},
|
||||
@ -1072,9 +1041,7 @@ import java.util.concurrent.ExecutionException;
|
||||
COMMAND_CHANGE_MEDIA_ITEMS,
|
||||
(sessionImpl, controller) -> {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
sessionImpl.getPlayerWrapper().addMediaItem(index, mediaItemWithPlaybackProperties);
|
||||
return SessionResult.RESULT_SUCCESS;
|
||||
},
|
||||
@ -1105,9 +1072,7 @@ import java.util.concurrent.ExecutionException;
|
||||
ImmutableList.builder();
|
||||
for (MediaItem mediaItem : mediaItems) {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
mediaItemsWithPlaybackPropertiesBuilder.add(mediaItemWithPlaybackProperties);
|
||||
}
|
||||
|
||||
@ -1146,9 +1111,7 @@ import java.util.concurrent.ExecutionException;
|
||||
ImmutableList.builder();
|
||||
for (MediaItem mediaItem : mediaItems) {
|
||||
MediaItem mediaItemWithPlaybackProperties =
|
||||
sessionImpl
|
||||
.getMediaItemFiller()
|
||||
.fillInLocalConfiguration(sessionImpl.getInstance(), controller, mediaItem);
|
||||
sessionImpl.fillInLocalConfiguration(controller, mediaItem);
|
||||
mediaItemsWithPlaybackPropertiesBuilder.add(mediaItemWithPlaybackProperties);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user