diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java index 7be92db023..d2d50ccf67 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryService.java @@ -518,6 +518,20 @@ public abstract class MediaLibraryService extends MediaSessionService { return super.setShowPlayButtonIfPlaybackIsSuppressed(showPlayButtonIfPlaybackIsSuppressed); } + /** + * Sets whether periodic position updates should be sent to controllers while playing. If + * false, no periodic position updates are sent to controllers. + * + *
The default is {@code true}. + * + * @param isEnabled Whether periodic position update is enabled. + */ + @UnstableApi + @Override + public Builder setPeriodicPositionUpdateEnabled(boolean isEnabled) { + return super.setPeriodicPositionUpdateEnabled(isEnabled); + } + /** * Builds a {@link MediaLibrarySession}. * @@ -539,7 +553,8 @@ public abstract class MediaLibraryService extends MediaSessionService { callback, extras, checkNotNull(bitmapLoader), - playIfSuppressed); + playIfSuppressed, + isPeriodicPositionUpdateEnabled); } } @@ -552,7 +567,8 @@ public abstract class MediaLibraryService extends MediaSessionService { MediaSession.Callback callback, Bundle tokenExtras, BitmapLoader bitmapLoader, - boolean playIfSuppressed) { + boolean playIfSuppressed, + boolean isPeriodicPositionUpdateEnabled) { super( context, id, @@ -562,7 +578,8 @@ public abstract class MediaLibraryService extends MediaSessionService { callback, tokenExtras, bitmapLoader, - playIfSuppressed); + playIfSuppressed, + isPeriodicPositionUpdateEnabled); } @Override @@ -575,7 +592,8 @@ public abstract class MediaLibraryService extends MediaSessionService { MediaSession.Callback callback, Bundle tokenExtras, BitmapLoader bitmapLoader, - boolean playIfSuppressed) { + boolean playIfSuppressed, + boolean isPeriodicPositionUpdateEnabled) { return new MediaLibrarySessionImpl( this, context, @@ -586,7 +604,8 @@ public abstract class MediaLibraryService extends MediaSessionService { (Callback) callback, tokenExtras, bitmapLoader, - playIfSuppressed); + playIfSuppressed, + isPeriodicPositionUpdateEnabled); } @Override diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java index b25fda59be..53f2098091 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java @@ -75,7 +75,8 @@ import java.util.concurrent.Future; MediaLibrarySession.Callback callback, Bundle tokenExtras, BitmapLoader bitmapLoader, - boolean playIfSuppressed) { + boolean playIfSuppressed, + boolean isPeriodicPositionUpdateEnabled) { super( instance, context, @@ -86,7 +87,8 @@ import java.util.concurrent.Future; callback, tokenExtras, bitmapLoader, - playIfSuppressed); + playIfSuppressed, + isPeriodicPositionUpdateEnabled); this.instance = instance; this.callback = callback; parentIdToSubscribedControllers = HashMultimap.create(); diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java index 995e6543cc..42aa9b2b3d 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSession.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSession.java @@ -376,6 +376,20 @@ public class MediaSession { return super.setCustomLayout(customLayout); } + /** + * Sets whether periodic position updates should be sent to controllers while playing. If false, + * no periodic position updates are sent to controllers. + * + *
The default is {@code true}.
+ *
+ * @param isEnabled Whether periodic position update is enabled.
+ */
+ @UnstableApi
+ @Override
+ public Builder setPeriodicPositionUpdateEnabled(boolean isEnabled) {
+ return super.setPeriodicPositionUpdateEnabled(isEnabled);
+ }
+
/**
* Sets whether a play button is shown if playback is {@linkplain
* Player#getPlaybackSuppressionReason() suppressed}.
@@ -413,7 +427,8 @@ public class MediaSession {
callback,
extras,
checkNotNull(bitmapLoader),
- playIfSuppressed);
+ playIfSuppressed,
+ isPeriodicPositionUpdateEnabled);
}
}
@@ -606,7 +621,8 @@ public class MediaSession {
Callback callback,
Bundle tokenExtras,
BitmapLoader bitmapLoader,
- boolean playIfSuppressed) {
+ boolean playIfSuppressed,
+ boolean isPeriodicPositionUpdateEnabled) {
synchronized (STATIC_LOCK) {
if (SESSION_ID_TO_SESSION_MAP.containsKey(id)) {
throw new IllegalStateException("Session ID must be unique. ID=" + id);
@@ -623,7 +639,8 @@ public class MediaSession {
callback,
tokenExtras,
bitmapLoader,
- playIfSuppressed);
+ playIfSuppressed,
+ isPeriodicPositionUpdateEnabled);
}
/* package */ MediaSessionImpl createImpl(
@@ -635,7 +652,8 @@ public class MediaSession {
Callback callback,
Bundle tokenExtras,
BitmapLoader bitmapLoader,
- boolean playIfSuppressed) {
+ boolean playIfSuppressed,
+ boolean isPeriodicPositionUpdateEnabled) {
return new MediaSessionImpl(
this,
context,
@@ -646,7 +664,8 @@ public class MediaSession {
callback,
tokenExtras,
bitmapLoader,
- playIfSuppressed);
+ playIfSuppressed,
+ isPeriodicPositionUpdateEnabled);
}
/* package */ MediaSessionImpl getImpl() {
@@ -1798,8 +1817,8 @@ public class MediaSession {
/* package */ Bundle extras;
/* package */ @MonotonicNonNull BitmapLoader bitmapLoader;
/* package */ boolean playIfSuppressed;
-
/* package */ ImmutableList