Add ProgressUpdateListener

Issue: #5834
PiperOrigin-RevId: 249067445
This commit is contained in:
bachinger 2019-05-20 17:48:15 +01:00 committed by Toni
parent 07c4569b5f
commit a458635540
2 changed files with 28 additions and 1 deletions

View file

@ -22,6 +22,8 @@
to indicate whether a controller sent a play or only a prepare command. This
allows to take advantage of decoder reuse with the MediaSessionConnector
([#5891](https://github.com/google/ExoPlayer/issues/5891)).
* Add ProgressUpdateListener to PlayerControlView
([#5834](https://github.com/google/ExoPlayer/issues/5834)).
### 2.10.1 ###

View file

@ -188,6 +188,18 @@ public class PlayerControlView extends FrameLayout {
void onVisibilityChange(int visibility);
}
/** Listener to be notified when progress has been updated. */
public interface ProgressUpdateListener {
/**
* Called when progress needs to be updated.
*
* @param position The current position.
* @param bufferedPosition The current buffered position.
*/
void onProgressUpdate(long position, long bufferedPosition);
}
/** The default fast forward increment, in milliseconds. */
public static final int DEFAULT_FAST_FORWARD_MS = 15000;
/** The default rewind increment, in milliseconds. */
@ -235,7 +247,8 @@ public class PlayerControlView extends FrameLayout {
@Nullable private Player player;
private com.google.android.exoplayer2.ControlDispatcher controlDispatcher;
private VisibilityListener visibilityListener;
@Nullable private VisibilityListener visibilityListener;
@Nullable private ProgressUpdateListener progressUpdateListener;
@Nullable private PlaybackPreparer playbackPreparer;
private boolean isAttachedToWindow;
@ -454,6 +467,15 @@ public class PlayerControlView extends FrameLayout {
this.visibilityListener = listener;
}
/**
* Sets the {@link ProgressUpdateListener}.
*
* @param listener The listener to be notified about when progress is updated.
*/
public void setProgressUpdateListener(@Nullable ProgressUpdateListener listener) {
this.progressUpdateListener = listener;
}
/**
* Sets the {@link PlaybackPreparer}.
*
@ -855,6 +877,9 @@ public class PlayerControlView extends FrameLayout {
timeBar.setPosition(position);
timeBar.setBufferedPosition(bufferedPosition);
}
if (progressUpdateListener != null) {
progressUpdateListener.onProgressUpdate(position, bufferedPosition);
}
// Cancel any pending updates and schedule a new one if necessary.
removeCallbacks(updateProgressAction);