Make MediaSessionConnector use getPlaybackError
It's no longer necessary to stash a reference to the error yourself. This also correctly handles the case where setPlayer is called with a player that's already in an error state. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=194828387
This commit is contained in:
parent
fedf8dd5c1
commit
c8ec77ef96
@ -19,6 +19,7 @@ import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||
import com.google.android.exoplayer2.PlaybackParameters;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.Timeline;
|
||||
@ -308,7 +309,7 @@ public final class CastPlayer implements Player {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Exception getPlaybackError() {
|
||||
public ExoPlaybackException getPlaybackError() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -339,7 +339,6 @@ public final class MediaSessionConnector {
|
||||
private QueueNavigator queueNavigator;
|
||||
private QueueEditor queueEditor;
|
||||
private RatingCallback ratingCallback;
|
||||
private ExoPlaybackException playbackException;
|
||||
|
||||
/**
|
||||
* Creates an instance. Must be called on the same thread that is used to construct the player
|
||||
@ -443,7 +442,10 @@ public final class MediaSessionConnector {
|
||||
*/
|
||||
public void setErrorMessageProvider(
|
||||
ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider) {
|
||||
this.errorMessageProvider = errorMessageProvider;
|
||||
if (this.errorMessageProvider != errorMessageProvider) {
|
||||
this.errorMessageProvider = errorMessageProvider;
|
||||
updateMediaSessionPlaybackState();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -453,9 +455,11 @@ public final class MediaSessionConnector {
|
||||
* @param queueNavigator The queue navigator.
|
||||
*/
|
||||
public void setQueueNavigator(QueueNavigator queueNavigator) {
|
||||
unregisterCommandReceiver(this.queueNavigator);
|
||||
this.queueNavigator = queueNavigator;
|
||||
registerCommandReceiver(queueNavigator);
|
||||
if (this.queueNavigator != queueNavigator) {
|
||||
unregisterCommandReceiver(this.queueNavigator);
|
||||
this.queueNavigator = queueNavigator;
|
||||
registerCommandReceiver(queueNavigator);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -464,11 +468,13 @@ public final class MediaSessionConnector {
|
||||
* @param queueEditor The queue editor.
|
||||
*/
|
||||
public void setQueueEditor(QueueEditor queueEditor) {
|
||||
unregisterCommandReceiver(this.queueEditor);
|
||||
this.queueEditor = queueEditor;
|
||||
registerCommandReceiver(queueEditor);
|
||||
mediaSession.setFlags(queueEditor == null ? BASE_MEDIA_SESSION_FLAGS
|
||||
: EDITOR_MEDIA_SESSION_FLAGS);
|
||||
if (this.queueEditor != queueEditor) {
|
||||
unregisterCommandReceiver(this.queueEditor);
|
||||
this.queueEditor = queueEditor;
|
||||
registerCommandReceiver(queueEditor);
|
||||
mediaSession.setFlags(
|
||||
queueEditor == null ? BASE_MEDIA_SESSION_FLAGS : EDITOR_MEDIA_SESSION_FLAGS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -477,9 +483,11 @@ public final class MediaSessionConnector {
|
||||
* @param ratingCallback The rating callback.
|
||||
*/
|
||||
public void setRatingCallback(RatingCallback ratingCallback) {
|
||||
unregisterCommandReceiver(this.ratingCallback);
|
||||
this.ratingCallback = ratingCallback;
|
||||
registerCommandReceiver(this.ratingCallback);
|
||||
if (this.ratingCallback != ratingCallback) {
|
||||
unregisterCommandReceiver(this.ratingCallback);
|
||||
this.ratingCallback = ratingCallback;
|
||||
registerCommandReceiver(this.ratingCallback);
|
||||
}
|
||||
}
|
||||
|
||||
private void registerCommandReceiver(CommandReceiver commandReceiver) {
|
||||
@ -516,16 +524,16 @@ public final class MediaSessionConnector {
|
||||
}
|
||||
customActionMap = Collections.unmodifiableMap(currentActions);
|
||||
|
||||
int sessionPlaybackState = playbackException != null ? PlaybackStateCompat.STATE_ERROR
|
||||
: mapPlaybackState(player.getPlaybackState(), player.getPlayWhenReady());
|
||||
if (playbackException != null) {
|
||||
if (errorMessageProvider != null) {
|
||||
Pair<Integer, String> message = errorMessageProvider.getErrorMessage(playbackException);
|
||||
builder.setErrorMessage(message.first, message.second);
|
||||
}
|
||||
if (player.getPlaybackState() != Player.STATE_IDLE) {
|
||||
playbackException = null;
|
||||
}
|
||||
int playbackState = player.getPlaybackState();
|
||||
ExoPlaybackException playbackError =
|
||||
playbackState == Player.STATE_IDLE ? player.getPlaybackError() : null;
|
||||
int sessionPlaybackState =
|
||||
playbackError != null
|
||||
? PlaybackStateCompat.STATE_ERROR
|
||||
: mapPlaybackState(player.getPlaybackState(), player.getPlayWhenReady());
|
||||
if (playbackError != null && errorMessageProvider != null) {
|
||||
Pair<Integer, String> message = errorMessageProvider.getErrorMessage(playbackError);
|
||||
builder.setErrorMessage(message.first, message.second);
|
||||
}
|
||||
long activeQueueItemId = queueNavigator != null ? queueNavigator.getActiveQueueItemId(player)
|
||||
: MediaSessionCompat.QueueItem.UNKNOWN_ID;
|
||||
@ -701,12 +709,6 @@ public final class MediaSessionConnector {
|
||||
updateMediaSessionPlaybackState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerError(ExoPlaybackException error) {
|
||||
playbackException = error;
|
||||
updateMediaSessionPlaybackState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPositionDiscontinuity(@Player.DiscontinuityReason int reason) {
|
||||
if (currentWindowIndex != player.getCurrentWindowIndex()) {
|
||||
|
@ -468,7 +468,7 @@ public interface Player {
|
||||
* @return The error, or {@code null}.
|
||||
*/
|
||||
@Nullable
|
||||
Exception getPlaybackError();
|
||||
ExoPlaybackException getPlaybackError();
|
||||
|
||||
/**
|
||||
* Sets whether playback should proceed when {@link #getPlaybackState()} == {@link #STATE_READY}.
|
||||
|
Loading…
x
Reference in New Issue
Block a user