Commit 4f5ac9e0 by aquilescanta Committed by Oliver Woodman

Extract Player interface from ExoPlayer

This is the first step towards facilitating Cast integration to ExoPlayer.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=162366198
parent 41028faf
...@@ -39,6 +39,7 @@ import com.google.android.exoplayer2.ExoPlaybackException; ...@@ -39,6 +39,7 @@ import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ExoPlayerFactory; import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player.EventListener;
import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.drm.DefaultDrmSessionManager; import com.google.android.exoplayer2.drm.DefaultDrmSessionManager;
...@@ -82,7 +83,7 @@ import java.util.UUID; ...@@ -82,7 +83,7 @@ import java.util.UUID;
/** /**
* An activity that plays media using {@link SimpleExoPlayer}. * An activity that plays media using {@link SimpleExoPlayer}.
*/ */
public class PlayerActivity extends Activity implements OnClickListener, ExoPlayer.EventListener, public class PlayerActivity extends Activity implements OnClickListener, EventListener,
PlaybackControlView.VisibilityListener { PlaybackControlView.VisibilityListener {
public static final String DRM_SCHEME_UUID_EXTRA = "drm_scheme_uuid"; public static final String DRM_SCHEME_UUID_EXTRA = "drm_scheme_uuid";
......
...@@ -35,6 +35,7 @@ import com.google.android.exoplayer2.ExoPlaybackException; ...@@ -35,6 +35,7 @@ import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ExoPlayerLibraryInfo; import com.google.android.exoplayer2.ExoPlayerLibraryInfo;
import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
...@@ -484,7 +485,7 @@ public final class MediaSessionConnector { ...@@ -484,7 +485,7 @@ public final class MediaSessionConnector {
Pair<Integer, String> message = errorMessageProvider.getErrorMessage(playbackException); Pair<Integer, String> message = errorMessageProvider.getErrorMessage(playbackException);
builder.setErrorMessage(message.first, message.second); builder.setErrorMessage(message.first, message.second);
} }
if (player.getPlaybackState() != ExoPlayer.STATE_IDLE) { if (player.getPlaybackState() != Player.STATE_IDLE) {
playbackException = null; playbackException = null;
} }
} }
...@@ -507,7 +508,7 @@ public final class MediaSessionConnector { ...@@ -507,7 +508,7 @@ public final class MediaSessionConnector {
if (queue == null || queue.size() < 2) { if (queue == null || queue.size() < 2) {
removePlaybackActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT removePlaybackActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT
| PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS); | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS);
} else if (player.getRepeatMode() != ExoPlayer.REPEAT_MODE_OFF) { } else if (player.getRepeatMode() != Player.REPEAT_MODE_OFF) {
addPlaybackActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT addPlaybackActions(PlaybackStateCompat.ACTION_SKIP_TO_NEXT
| PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS); | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS);
} else if (activeQueueItemId == queue.get(0).getQueueId()) { } else if (activeQueueItemId == queue.get(0).getQueueId()) {
...@@ -576,11 +577,11 @@ public final class MediaSessionConnector { ...@@ -576,11 +577,11 @@ public final class MediaSessionConnector {
private int mapPlaybackState(int exoPlayerPlaybackState, boolean playWhenReady) { private int mapPlaybackState(int exoPlayerPlaybackState, boolean playWhenReady) {
switch (exoPlayerPlaybackState) { switch (exoPlayerPlaybackState) {
case ExoPlayer.STATE_BUFFERING: case Player.STATE_BUFFERING:
return PlaybackStateCompat.STATE_BUFFERING; return PlaybackStateCompat.STATE_BUFFERING;
case ExoPlayer.STATE_READY: case Player.STATE_READY:
return playWhenReady ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED; return playWhenReady ? PlaybackStateCompat.STATE_PLAYING : PlaybackStateCompat.STATE_PAUSED;
case ExoPlayer.STATE_ENDED: case Player.STATE_ENDED:
return PlaybackStateCompat.STATE_PAUSED; return PlaybackStateCompat.STATE_PAUSED;
default: default:
return PlaybackStateCompat.STATE_NONE; return PlaybackStateCompat.STATE_NONE;
...@@ -599,7 +600,7 @@ public final class MediaSessionConnector { ...@@ -599,7 +600,7 @@ public final class MediaSessionConnector {
return playbackPreparer != null && isActionPublished(action); return playbackPreparer != null && isActionPublished(action);
} }
private class ExoPlayerEventListener implements ExoPlayer.EventListener { private class ExoPlayerEventListener implements Player.EventListener {
@Override @Override
public void onTimelineChanged(Timeline timeline, Object manifest) { public void onTimelineChanged(Timeline timeline, Object manifest) {
if (queueNavigator != null) { if (queueNavigator != null) {
...@@ -625,9 +626,9 @@ public final class MediaSessionConnector { ...@@ -625,9 +626,9 @@ public final class MediaSessionConnector {
} }
@Override @Override
public void onRepeatModeChanged(@ExoPlayer.RepeatMode int repeatMode) { public void onRepeatModeChanged(@Player.RepeatMode int repeatMode) {
mediaSession.setRepeatMode(repeatMode == ExoPlayer.REPEAT_MODE_ONE mediaSession.setRepeatMode(repeatMode == Player.REPEAT_MODE_ONE
? PlaybackStateCompat.REPEAT_MODE_ONE : repeatMode == ExoPlayer.REPEAT_MODE_ALL ? PlaybackStateCompat.REPEAT_MODE_ONE : repeatMode == Player.REPEAT_MODE_ALL
? PlaybackStateCompat.REPEAT_MODE_ALL : PlaybackStateCompat.REPEAT_MODE_NONE); ? PlaybackStateCompat.REPEAT_MODE_ALL : PlaybackStateCompat.REPEAT_MODE_NONE);
updateMediaSessionPlaybackState(); updateMediaSessionPlaybackState();
} }
......
...@@ -19,6 +19,7 @@ import android.content.Context; ...@@ -19,6 +19,7 @@ import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.media.session.PlaybackStateCompat; import android.support.v4.media.session.PlaybackStateCompat;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.util.RepeatModeUtil; import com.google.android.exoplayer2.util.RepeatModeUtil;
/** /**
...@@ -81,15 +82,15 @@ public final class RepeatModeActionProvider implements MediaSessionConnector.Cus ...@@ -81,15 +82,15 @@ public final class RepeatModeActionProvider implements MediaSessionConnector.Cus
CharSequence actionLabel; CharSequence actionLabel;
int iconResourceId; int iconResourceId;
switch (player.getRepeatMode()) { switch (player.getRepeatMode()) {
case ExoPlayer.REPEAT_MODE_ONE: case Player.REPEAT_MODE_ONE:
actionLabel = repeatOneDescription; actionLabel = repeatOneDescription;
iconResourceId = R.drawable.exo_media_action_repeat_one; iconResourceId = R.drawable.exo_media_action_repeat_one;
break; break;
case ExoPlayer.REPEAT_MODE_ALL: case Player.REPEAT_MODE_ALL:
actionLabel = repeatAllDescription; actionLabel = repeatAllDescription;
iconResourceId = R.drawable.exo_media_action_repeat_all; iconResourceId = R.drawable.exo_media_action_repeat_all;
break; break;
case ExoPlayer.REPEAT_MODE_OFF: case Player.REPEAT_MODE_OFF:
default: default:
actionLabel = repeatOffDescription; actionLabel = repeatOffDescription;
iconResourceId = R.drawable.exo_media_action_repeat_off; iconResourceId = R.drawable.exo_media_action_repeat_off;
......
...@@ -23,6 +23,7 @@ import com.google.android.exoplayer2.C; ...@@ -23,6 +23,7 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.source.MediaSource.Listener; import com.google.android.exoplayer2.source.MediaSource.Listener;
import com.google.android.exoplayer2.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.FakeMediaSource;
...@@ -352,12 +353,12 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { ...@@ -352,12 +353,12 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase {
} }
@Override @Override
public void addListener(EventListener listener) { public void addListener(Player.EventListener listener) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
@Override @Override
public void removeListener(EventListener listener) { public void removeListener(Player.EventListener listener) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
......
...@@ -46,7 +46,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -46,7 +46,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
private final TrackSelectionArray emptyTrackSelections; private final TrackSelectionArray emptyTrackSelections;
private final Handler eventHandler; private final Handler eventHandler;
private final ExoPlayerImplInternal internalPlayer; private final ExoPlayerImplInternal internalPlayer;
private final CopyOnWriteArraySet<EventListener> listeners; private final CopyOnWriteArraySet<Player.EventListener> listeners;
private final Timeline.Window window; private final Timeline.Window window;
private final Timeline.Period period; private final Timeline.Period period;
...@@ -114,12 +114,12 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -114,12 +114,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
} }
@Override @Override
public void addListener(EventListener listener) { public void addListener(Player.EventListener listener) {
listeners.add(listener); listeners.add(listener);
} }
@Override @Override
public void removeListener(EventListener listener) { public void removeListener(Player.EventListener listener) {
listeners.remove(listener); listeners.remove(listener);
} }
...@@ -139,7 +139,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -139,7 +139,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
if (!timeline.isEmpty() || manifest != null) { if (!timeline.isEmpty() || manifest != null) {
timeline = Timeline.EMPTY; timeline = Timeline.EMPTY;
manifest = null; manifest = null;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onTimelineChanged(timeline, manifest); listener.onTimelineChanged(timeline, manifest);
} }
} }
...@@ -148,7 +148,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -148,7 +148,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
trackGroups = TrackGroupArray.EMPTY; trackGroups = TrackGroupArray.EMPTY;
trackSelections = emptyTrackSelections; trackSelections = emptyTrackSelections;
trackSelector.onSelectionActivated(null); trackSelector.onSelectionActivated(null);
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onTracksChanged(trackGroups, trackSelections); listener.onTracksChanged(trackGroups, trackSelections);
} }
} }
...@@ -162,7 +162,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -162,7 +162,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
if (this.playWhenReady != playWhenReady) { if (this.playWhenReady != playWhenReady) {
this.playWhenReady = playWhenReady; this.playWhenReady = playWhenReady;
internalPlayer.setPlayWhenReady(playWhenReady); internalPlayer.setPlayWhenReady(playWhenReady);
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPlayerStateChanged(playWhenReady, playbackState); listener.onPlayerStateChanged(playWhenReady, playbackState);
} }
} }
...@@ -178,7 +178,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -178,7 +178,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
if (this.repeatMode != repeatMode) { if (this.repeatMode != repeatMode) {
this.repeatMode = repeatMode; this.repeatMode = repeatMode;
internalPlayer.setRepeatMode(repeatMode); internalPlayer.setRepeatMode(repeatMode);
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onRepeatModeChanged(repeatMode); listener.onRepeatModeChanged(repeatMode);
} }
} }
...@@ -238,7 +238,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -238,7 +238,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
} else { } else {
maskingWindowPositionMs = positionMs; maskingWindowPositionMs = positionMs;
internalPlayer.seekTo(timeline, windowIndex, C.msToUs(positionMs)); internalPlayer.seekTo(timeline, windowIndex, C.msToUs(positionMs));
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPositionDiscontinuity(); listener.onPositionDiscontinuity();
} }
} }
...@@ -420,14 +420,14 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -420,14 +420,14 @@ import java.util.concurrent.CopyOnWriteArraySet;
} }
case ExoPlayerImplInternal.MSG_STATE_CHANGED: { case ExoPlayerImplInternal.MSG_STATE_CHANGED: {
playbackState = msg.arg1; playbackState = msg.arg1;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPlayerStateChanged(playWhenReady, playbackState); listener.onPlayerStateChanged(playWhenReady, playbackState);
} }
break; break;
} }
case ExoPlayerImplInternal.MSG_LOADING_CHANGED: { case ExoPlayerImplInternal.MSG_LOADING_CHANGED: {
isLoading = msg.arg1 != 0; isLoading = msg.arg1 != 0;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onLoadingChanged(isLoading); listener.onLoadingChanged(isLoading);
} }
break; break;
...@@ -439,7 +439,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -439,7 +439,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
trackGroups = trackSelectorResult.groups; trackGroups = trackSelectorResult.groups;
trackSelections = trackSelectorResult.selections; trackSelections = trackSelectorResult.selections;
trackSelector.onSelectionActivated(trackSelectorResult.info); trackSelector.onSelectionActivated(trackSelectorResult.info);
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onTracksChanged(trackGroups, trackSelections); listener.onTracksChanged(trackGroups, trackSelections);
} }
} }
...@@ -449,7 +449,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -449,7 +449,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
if (--pendingSeekAcks == 0) { if (--pendingSeekAcks == 0) {
playbackInfo = (ExoPlayerImplInternal.PlaybackInfo) msg.obj; playbackInfo = (ExoPlayerImplInternal.PlaybackInfo) msg.obj;
if (msg.arg1 != 0) { if (msg.arg1 != 0) {
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPositionDiscontinuity(); listener.onPositionDiscontinuity();
} }
} }
...@@ -459,7 +459,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -459,7 +459,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
case ExoPlayerImplInternal.MSG_POSITION_DISCONTINUITY: { case ExoPlayerImplInternal.MSG_POSITION_DISCONTINUITY: {
if (pendingSeekAcks == 0) { if (pendingSeekAcks == 0) {
playbackInfo = (ExoPlayerImplInternal.PlaybackInfo) msg.obj; playbackInfo = (ExoPlayerImplInternal.PlaybackInfo) msg.obj;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPositionDiscontinuity(); listener.onPositionDiscontinuity();
} }
} }
...@@ -472,7 +472,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -472,7 +472,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
timeline = sourceInfo.timeline; timeline = sourceInfo.timeline;
manifest = sourceInfo.manifest; manifest = sourceInfo.manifest;
playbackInfo = sourceInfo.playbackInfo; playbackInfo = sourceInfo.playbackInfo;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onTimelineChanged(timeline, manifest); listener.onTimelineChanged(timeline, manifest);
} }
} }
...@@ -482,7 +482,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -482,7 +482,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
PlaybackParameters playbackParameters = (PlaybackParameters) msg.obj; PlaybackParameters playbackParameters = (PlaybackParameters) msg.obj;
if (!this.playbackParameters.equals(playbackParameters)) { if (!this.playbackParameters.equals(playbackParameters)) {
this.playbackParameters = playbackParameters; this.playbackParameters = playbackParameters;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPlaybackParametersChanged(playbackParameters); listener.onPlaybackParametersChanged(playbackParameters);
} }
} }
...@@ -490,7 +490,7 @@ import java.util.concurrent.CopyOnWriteArraySet; ...@@ -490,7 +490,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
} }
case ExoPlayerImplInternal.MSG_ERROR: { case ExoPlayerImplInternal.MSG_ERROR: {
ExoPlaybackException exception = (ExoPlaybackException) msg.obj; ExoPlaybackException exception = (ExoPlaybackException) msg.obj;
for (EventListener listener : listeners) { for (Player.EventListener listener : listeners) {
listener.onPlayerError(exception); listener.onPlayerError(exception);
} }
break; break;
......
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
package com.google.android.exoplayer2; package com.google.android.exoplayer2;
import android.util.Pair; import android.util.Pair;
import com.google.android.exoplayer2.ExoPlayer.RepeatMode;
import com.google.android.exoplayer2.ExoPlayerImplInternal.PlaybackInfo; import com.google.android.exoplayer2.ExoPlayerImplInternal.PlaybackInfo;
import com.google.android.exoplayer2.Player.RepeatMode;
import com.google.android.exoplayer2.source.MediaPeriod; import com.google.android.exoplayer2.source.MediaPeriod;
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId; import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
......
...@@ -524,12 +524,12 @@ public class SimpleExoPlayer implements ExoPlayer { ...@@ -524,12 +524,12 @@ public class SimpleExoPlayer implements ExoPlayer {
} }
@Override @Override
public void addListener(EventListener listener) { public void addListener(Player.EventListener listener) {
player.addListener(listener); player.addListener(listener);
} }
@Override @Override
public void removeListener(EventListener listener) { public void removeListener(Player.EventListener listener) {
player.removeListener(listener); player.removeListener(listener);
} }
......
...@@ -17,7 +17,7 @@ package com.google.android.exoplayer2.source; ...@@ -17,7 +17,7 @@ package com.google.android.exoplayer2.source;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ExoPlayer.RepeatMode; import com.google.android.exoplayer2.Player.RepeatMode;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.Allocator;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
......
...@@ -31,9 +31,10 @@ import android.widget.ImageView; ...@@ -31,9 +31,10 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ExoPlayerLibraryInfo; import com.google.android.exoplayer2.ExoPlayerLibraryInfo;
import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.Player.RepeatMode;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.source.TrackGroupArray; import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
...@@ -45,7 +46,7 @@ import java.util.Formatter; ...@@ -45,7 +46,7 @@ import java.util.Formatter;
import java.util.Locale; import java.util.Locale;
/** /**
* A view for controlling {@link ExoPlayer} instances. * A view for controlling {@link Player} instances.
* <p> * <p>
* A PlaybackControlView can be customized by setting attributes (or calling corresponding methods), * A PlaybackControlView can be customized by setting attributes (or calling corresponding methods),
* overriding the view's layout file or by specifying a custom view layout file, as outlined below. * overriding the view's layout file or by specifying a custom view layout file, as outlined below.
...@@ -183,7 +184,7 @@ public class PlaybackControlView extends FrameLayout { ...@@ -183,7 +184,7 @@ public class PlaybackControlView extends FrameLayout {
} }
/** /**
* Dispatches operations to the player. * Dispatches operations to the {@link Player}.
* <p> * <p>
* Implementations may choose to suppress (e.g. prevent playback from resuming if audio focus is * Implementations may choose to suppress (e.g. prevent playback from resuming if audio focus is
* denied) or modify (e.g. change the seek position to prevent a user from seeking past a * denied) or modify (e.g. change the seek position to prevent a user from seeking past a
...@@ -192,33 +193,34 @@ public class PlaybackControlView extends FrameLayout { ...@@ -192,33 +193,34 @@ public class PlaybackControlView extends FrameLayout {
public interface ControlDispatcher { public interface ControlDispatcher {
/** /**
* Dispatches a {@link ExoPlayer#setPlayWhenReady(boolean)} operation. * Dispatches a {@link Player#setPlayWhenReady(boolean)} operation.
* *
* @param player The player to which the operation should be dispatched. * @param player The {@link Player} to which the operation should be dispatched.
* @param playWhenReady Whether playback should proceed when ready. * @param playWhenReady Whether playback should proceed when ready.
* @return True if the operation was dispatched. False if suppressed. * @return True if the operation was dispatched. False if suppressed.
*/ */
boolean dispatchSetPlayWhenReady(ExoPlayer player, boolean playWhenReady); boolean dispatchSetPlayWhenReady(Player player, boolean playWhenReady);
/** /**
* Dispatches a {@link ExoPlayer#seekTo(int, long)} operation. * Dispatches a {@link Player#seekTo(int, long)} operation.
* *
* @param player The player to which the operation should be dispatched. * @param player The {@link Player} to which the operation should be dispatched.
* @param windowIndex The index of the window. * @param windowIndex The index of the window.
* @param positionMs The seek position in the specified window, or {@link C#TIME_UNSET} to seek * @param positionMs The seek position in the specified window, or {@link C#TIME_UNSET} to seek
* to the window's default position. * to the window's default position.
* @return True if the operation was dispatched. False if suppressed. * @return True if the operation was dispatched. False if suppressed.
*/ */
boolean dispatchSeekTo(ExoPlayer player, int windowIndex, long positionMs); boolean dispatchSeekTo(Player player, int windowIndex, long positionMs);
/** /**
* Dispatches a {@link ExoPlayer#setRepeatMode(int)} operation. * Dispatches a {@link Player#setRepeatMode(int)} operation.
* *
* @param player The player to which the operation should be dispatched. * @param player The {@link Player} to which the operation should be dispatched.
* @param repeatMode The repeat mode. * @param repeatMode The repeat mode.
* @return True if the operation was dispatched. False if suppressed. * @return True if the operation was dispatched. False if suppressed.
*/ */
boolean dispatchSetRepeatMode(ExoPlayer player, @ExoPlayer.RepeatMode int repeatMode); boolean dispatchSetRepeatMode(Player player, @RepeatMode int repeatMode);
} }
/** /**
...@@ -228,19 +230,19 @@ public class PlaybackControlView extends FrameLayout { ...@@ -228,19 +230,19 @@ public class PlaybackControlView extends FrameLayout {
public static final ControlDispatcher DEFAULT_CONTROL_DISPATCHER = new ControlDispatcher() { public static final ControlDispatcher DEFAULT_CONTROL_DISPATCHER = new ControlDispatcher() {
@Override @Override
public boolean dispatchSetPlayWhenReady(ExoPlayer player, boolean playWhenReady) { public boolean dispatchSetPlayWhenReady(Player player, boolean playWhenReady) {
player.setPlayWhenReady(playWhenReady); player.setPlayWhenReady(playWhenReady);
return true; return true;
} }
@Override @Override
public boolean dispatchSeekTo(ExoPlayer player, int windowIndex, long positionMs) { public boolean dispatchSeekTo(Player player, int windowIndex, long positionMs) {
player.seekTo(windowIndex, positionMs); player.seekTo(windowIndex, positionMs);
return true; return true;
} }
@Override @Override
public boolean dispatchSetRepeatMode(ExoPlayer player, @ExoPlayer.RepeatMode int repeatMode) { public boolean dispatchSetRepeatMode(Player player, @RepeatMode int repeatMode) {
player.setRepeatMode(repeatMode); player.setRepeatMode(repeatMode);
return true; return true;
} }
...@@ -283,7 +285,7 @@ public class PlaybackControlView extends FrameLayout { ...@@ -283,7 +285,7 @@ public class PlaybackControlView extends FrameLayout {
private final String repeatOneButtonContentDescription; private final String repeatOneButtonContentDescription;
private final String repeatAllButtonContentDescription; private final String repeatAllButtonContentDescription;
private ExoPlayer player; private Player player;
private ControlDispatcher controlDispatcher; private ControlDispatcher controlDispatcher;
private VisibilityListener visibilityListener; private VisibilityListener visibilityListener;
...@@ -409,18 +411,19 @@ public class PlaybackControlView extends FrameLayout { ...@@ -409,18 +411,19 @@ public class PlaybackControlView extends FrameLayout {
} }
/** /**
* Returns the player currently being controlled by this view, or null if no player is set. * Returns the {@link Player} currently being controlled by this view, or null if no player is
* set.
*/ */
public ExoPlayer getPlayer() { public Player getPlayer() {
return player; return player;
} }
/** /**
* Sets the {@link ExoPlayer} to control. * Sets the {@link Player} to control.
* *
* @param player The {@code ExoPlayer} to control. * @param player The {@link Player} to control.
*/ */
public void setPlayer(ExoPlayer player) { public void setPlayer(Player player) {
if (this.player == player) { if (this.player == player) {
return; return;
} }
...@@ -528,16 +531,16 @@ public class PlaybackControlView extends FrameLayout { ...@@ -528,16 +531,16 @@ public class PlaybackControlView extends FrameLayout {
public void setRepeatToggleModes(@RepeatModeUtil.RepeatToggleModes int repeatToggleModes) { public void setRepeatToggleModes(@RepeatModeUtil.RepeatToggleModes int repeatToggleModes) {
this.repeatToggleModes = repeatToggleModes; this.repeatToggleModes = repeatToggleModes;
if (player != null) { if (player != null) {
@ExoPlayer.RepeatMode int currentMode = player.getRepeatMode(); @Player.RepeatMode int currentMode = player.getRepeatMode();
if (repeatToggleModes == RepeatModeUtil.REPEAT_TOGGLE_MODE_NONE if (repeatToggleModes == RepeatModeUtil.REPEAT_TOGGLE_MODE_NONE
&& currentMode != ExoPlayer.REPEAT_MODE_OFF) { && currentMode != Player.REPEAT_MODE_OFF) {
controlDispatcher.dispatchSetRepeatMode(player, ExoPlayer.REPEAT_MODE_OFF); controlDispatcher.dispatchSetRepeatMode(player, Player.REPEAT_MODE_OFF);
} else if (repeatToggleModes == RepeatModeUtil.REPEAT_TOGGLE_MODE_ONE } else if (repeatToggleModes == RepeatModeUtil.REPEAT_TOGGLE_MODE_ONE
&& currentMode == ExoPlayer.REPEAT_MODE_ALL) { && currentMode == Player.REPEAT_MODE_ALL) {
controlDispatcher.dispatchSetRepeatMode(player, ExoPlayer.REPEAT_MODE_ONE); controlDispatcher.dispatchSetRepeatMode(player, Player.REPEAT_MODE_ONE);
} else if (repeatToggleModes == RepeatModeUtil.REPEAT_TOGGLE_MODE_ALL } else if (repeatToggleModes == RepeatModeUtil.REPEAT_TOGGLE_MODE_ALL
&& currentMode == ExoPlayer.REPEAT_MODE_ONE) { && currentMode == Player.REPEAT_MODE_ONE) {
controlDispatcher.dispatchSetRepeatMode(player, ExoPlayer.REPEAT_MODE_ALL); controlDispatcher.dispatchSetRepeatMode(player, Player.REPEAT_MODE_ALL);
} }
} }
} }
...@@ -658,15 +661,15 @@ public class PlaybackControlView extends FrameLayout { ...@@ -658,15 +661,15 @@ public class PlaybackControlView extends FrameLayout {
return; return;
} }
switch (player.getRepeatMode()) { switch (player.getRepeatMode()) {
case ExoPlayer.REPEAT_MODE_OFF: case Player.REPEAT_MODE_OFF:
repeatToggleButton.setImageDrawable(repeatOffButtonDrawable); repeatToggleButton.setImageDrawable(repeatOffButtonDrawable);
repeatToggleButton.setContentDescription(repeatOffButtonContentDescription); repeatToggleButton.setContentDescription(repeatOffButtonContentDescription);
break; break;
case ExoPlayer.REPEAT_MODE_ONE: case Player.REPEAT_MODE_ONE:
repeatToggleButton.setImageDrawable(repeatOneButtonDrawable); repeatToggleButton.setImageDrawable(repeatOneButtonDrawable);
repeatToggleButton.setContentDescription(repeatOneButtonContentDescription); repeatToggleButton.setContentDescription(repeatOneButtonContentDescription);
break; break;
case ExoPlayer.REPEAT_MODE_ALL: case Player.REPEAT_MODE_ALL:
repeatToggleButton.setImageDrawable(repeatAllButtonDrawable); repeatToggleButton.setImageDrawable(repeatAllButtonDrawable);
repeatToggleButton.setContentDescription(repeatAllButtonContentDescription); repeatToggleButton.setContentDescription(repeatAllButtonContentDescription);
break; break;
...@@ -765,10 +768,10 @@ public class PlaybackControlView extends FrameLayout { ...@@ -765,10 +768,10 @@ public class PlaybackControlView extends FrameLayout {
// Cancel any pending updates and schedule a new one if necessary. // Cancel any pending updates and schedule a new one if necessary.
removeCallbacks(updateProgressAction); removeCallbacks(updateProgressAction);
int playbackState = player == null ? ExoPlayer.STATE_IDLE : player.getPlaybackState(); int playbackState = player == null ? Player.STATE_IDLE : player.getPlaybackState();
if (playbackState != ExoPlayer.STATE_IDLE && playbackState != ExoPlayer.STATE_ENDED) { if (playbackState != Player.STATE_IDLE && playbackState != Player.STATE_ENDED) {
long delayMs; long delayMs;
if (player.getPlayWhenReady() && playbackState == ExoPlayer.STATE_READY) { if (player.getPlayWhenReady() && playbackState == Player.STATE_READY) {
delayMs = 1000 - (position % 1000); delayMs = 1000 - (position % 1000);
if (delayMs < 200) { if (delayMs < 200) {
delayMs += 1000; delayMs += 1000;
...@@ -995,7 +998,7 @@ public class PlaybackControlView extends FrameLayout { ...@@ -995,7 +998,7 @@ public class PlaybackControlView extends FrameLayout {
return true; return true;
} }
private final class ComponentListener implements ExoPlayer.EventListener, TimeBar.OnScrubListener, private final class ComponentListener implements Player.EventListener, TimeBar.OnScrubListener,
OnClickListener { OnClickListener {
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment