Commit a4586355 by bachinger Committed by Toni

Add ProgressUpdateListener

Issue: #5834
PiperOrigin-RevId: 249067445
parent 07c4569b
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
to indicate whether a controller sent a play or only a prepare command. This to indicate whether a controller sent a play or only a prepare command. This
allows to take advantage of decoder reuse with the MediaSessionConnector allows to take advantage of decoder reuse with the MediaSessionConnector
([#5891](https://github.com/google/ExoPlayer/issues/5891)). ([#5891](https://github.com/google/ExoPlayer/issues/5891)).
* Add ProgressUpdateListener to PlayerControlView
([#5834](https://github.com/google/ExoPlayer/issues/5834)).
### 2.10.1 ### ### 2.10.1 ###
......
...@@ -188,6 +188,18 @@ public class PlayerControlView extends FrameLayout { ...@@ -188,6 +188,18 @@ public class PlayerControlView extends FrameLayout {
void onVisibilityChange(int visibility); 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. */ /** The default fast forward increment, in milliseconds. */
public static final int DEFAULT_FAST_FORWARD_MS = 15000; public static final int DEFAULT_FAST_FORWARD_MS = 15000;
/** The default rewind increment, in milliseconds. */ /** The default rewind increment, in milliseconds. */
...@@ -235,7 +247,8 @@ public class PlayerControlView extends FrameLayout { ...@@ -235,7 +247,8 @@ public class PlayerControlView extends FrameLayout {
@Nullable private Player player; @Nullable private Player player;
private com.google.android.exoplayer2.ControlDispatcher controlDispatcher; private com.google.android.exoplayer2.ControlDispatcher controlDispatcher;
private VisibilityListener visibilityListener; @Nullable private VisibilityListener visibilityListener;
@Nullable private ProgressUpdateListener progressUpdateListener;
@Nullable private PlaybackPreparer playbackPreparer; @Nullable private PlaybackPreparer playbackPreparer;
private boolean isAttachedToWindow; private boolean isAttachedToWindow;
...@@ -455,6 +468,15 @@ public class PlayerControlView extends FrameLayout { ...@@ -455,6 +468,15 @@ public class PlayerControlView extends FrameLayout {
} }
/** /**
* 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}. * Sets the {@link PlaybackPreparer}.
* *
* @param playbackPreparer The {@link PlaybackPreparer}. * @param playbackPreparer The {@link PlaybackPreparer}.
...@@ -855,6 +877,9 @@ public class PlayerControlView extends FrameLayout { ...@@ -855,6 +877,9 @@ public class PlayerControlView extends FrameLayout {
timeBar.setPosition(position); timeBar.setPosition(position);
timeBar.setBufferedPosition(bufferedPosition); timeBar.setBufferedPosition(bufferedPosition);
} }
if (progressUpdateListener != null) {
progressUpdateListener.onProgressUpdate(position, bufferedPosition);
}
// 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);
......
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