diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaController.java b/libraries/session/src/main/java/androidx/media3/session/MediaController.java index df08acc7b9..2cdbba2276 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaController.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaController.java @@ -15,6 +15,7 @@ */ package androidx.media3.session; +import static androidx.annotation.VisibleForTesting.NONE; import static androidx.media3.common.util.Assertions.checkArgument; import static androidx.media3.common.util.Assertions.checkNotEmpty; import static androidx.media3.common.util.Assertions.checkNotNull; @@ -343,7 +344,7 @@ public class MediaController implements Player { /* package */ final Handler applicationHandler; - @VisibleForTesting long timeDiffMs; + private long timeDiffMs; private boolean connectionNotified; @@ -1722,10 +1723,19 @@ public class MediaController implements Player { } /** - * Sets the time diff forcefully when calculating current position. - * - * @param timeDiffMs {@code C.TIME_UNSET} for reset. + * Gets the optional time diff (in milliseconds) used for calculating the current position, or + * {@link C#TIME_UNSET} if no diff should be applied. */ + /* package */ long getTimeDiffMs() { + return timeDiffMs; + } + + /** + * Sets the time diff (in milliseconds) used when calculating the current position. + * + * @param timeDiffMs {@link C#TIME_UNSET} for reset. + */ + @VisibleForTesting(otherwise = NONE) /* package */ void setTimeDiffMs(long timeDiffMs) { verifyApplicationThread(); this.timeDiffMs = timeDiffMs; diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java index 0c269ba2ae..c3a8794fa3 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java @@ -644,8 +644,8 @@ import org.checkerframework.checker.nullness.qual.NonNull; return playerInfo.sessionPositionInfo.positionInfo.positionMs; } long elapsedTimeMs = - (instance.timeDiffMs != C.TIME_UNSET) - ? instance.timeDiffMs + (instance.getTimeDiffMs() != C.TIME_UNSET) + ? instance.getTimeDiffMs() : SystemClock.elapsedRealtime() - playerInfo.sessionPositionInfo.eventTimeMs; long estimatedPositionMs = playerInfo.sessionPositionInfo.positionInfo.positionMs @@ -686,8 +686,8 @@ import org.checkerframework.checker.nullness.qual.NonNull; return playerInfo.sessionPositionInfo.positionInfo.contentPositionMs; } long elapsedTimeMs = - (instance.timeDiffMs != C.TIME_UNSET) - ? instance.timeDiffMs + (instance.getTimeDiffMs() != C.TIME_UNSET) + ? instance.getTimeDiffMs() : SystemClock.elapsedRealtime() - playerInfo.sessionPositionInfo.eventTimeMs; long estimatedPositionMs = playerInfo.sessionPositionInfo.positionInfo.contentPositionMs diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java index 74159bc4d0..a88f438b28 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java @@ -1305,14 +1305,14 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; controllerCompat.getFlags(), controllerCompat.isSessionReady(), controllerCompat.getRatingType(), - instance.timeDiffMs); + instance.getTimeDiffMs()); Pair<@NullableType Integer, @NullableType Integer> reasons = calculateDiscontinuityAndTransitionReason( legacyPlayerInfo, controllerInfo, newLegacyPlayerInfo, newControllerInfo, - instance.timeDiffMs); + instance.getTimeDiffMs()); updateControllerInfo( notifyConnected, newLegacyPlayerInfo,