Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6dda82f9 authored by David Zhao's avatar David Zhao Committed by Android (Google) Code Review
Browse files

Merge "Unhide timeshift apis"

parents 62ab6c19 9f5509a5
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -27162,6 +27162,10 @@ package android.media.tv {
    field public static final int SIGNAL_STRENGTH_STRONG = 3; // 0x3
    field public static final int SIGNAL_STRENGTH_WEAK = 2; // 0x2
    field public static final long TIME_SHIFT_INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L
    field public static final int TIME_SHIFT_MODE_AUTO = 4; // 0x4
    field public static final int TIME_SHIFT_MODE_LOCAL = 2; // 0x2
    field public static final int TIME_SHIFT_MODE_NETWORK = 3; // 0x3
    field public static final int TIME_SHIFT_MODE_OFF = 1; // 0x1
    field public static final int TIME_SHIFT_STATUS_AVAILABLE = 3; // 0x3
    field public static final int TIME_SHIFT_STATUS_UNAVAILABLE = 2; // 0x2
    field public static final int TIME_SHIFT_STATUS_UNKNOWN = 0; // 0x0
@@ -27246,11 +27250,14 @@ package android.media.tv {
    method public void notifyAitInfoUpdated(@NonNull android.media.tv.AitInfo);
    method public void notifyAudioPresentationChanged(@NonNull java.util.List<android.media.AudioPresentation>);
    method public void notifyAudioPresentationSelected(int, int);
    method public void notifyAvailableSpeeds(@NonNull float[]);
    method public void notifyBroadcastInfoResponse(@NonNull android.media.tv.BroadcastInfoResponse);
    method public void notifyChannelRetuned(android.net.Uri);
    method public void notifyContentAllowed();
    method public void notifyContentBlocked(@NonNull android.media.tv.TvContentRating);
    method public void notifyCueingMessageAvailability(boolean);
    method public void notifySignalStrength(int);
    method public void notifyTimeShiftMode(int);
    method public void notifyTimeShiftStatusChanged(int);
    method public void notifyTrackSelected(int, String);
    method public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
@@ -27285,6 +27292,7 @@ package android.media.tv {
    method public void onTimeShiftPlay(android.net.Uri);
    method public void onTimeShiftResume();
    method public void onTimeShiftSeekTo(long);
    method public void onTimeShiftSetMode(int);
    method public void onTimeShiftSetPlaybackParams(android.media.PlaybackParams);
    method public boolean onTouchEvent(android.view.MotionEvent);
    method public boolean onTrackballEvent(android.view.MotionEvent);
@@ -27424,6 +27432,7 @@ package android.media.tv {
    method public void timeShiftPlay(String, android.net.Uri);
    method public void timeShiftResume();
    method public void timeShiftSeekTo(long);
    method public void timeShiftSetMode(int);
    method public void timeShiftSetPlaybackParams(@NonNull android.media.PlaybackParams);
    method public void tune(@NonNull String, android.net.Uri);
    method public void tune(String, android.net.Uri, android.os.Bundle);
@@ -27444,12 +27453,15 @@ package android.media.tv {
    method public void onAitInfoUpdated(@NonNull String, @NonNull android.media.tv.AitInfo);
    method public void onAudioPresentationSelected(@NonNull String, int, int);
    method public void onAudioPresentationsChanged(@NonNull String, @NonNull java.util.List<android.media.AudioPresentation>);
    method public void onAvailableSpeeds(@NonNull String, @NonNull float[]);
    method public void onChannelRetuned(String, android.net.Uri);
    method public void onConnectionFailed(String);
    method public void onContentAllowed(String);
    method public void onContentBlocked(String, android.media.tv.TvContentRating);
    method public void onCueingMessageAvailability(@NonNull String, boolean);
    method public void onDisconnected(String);
    method public void onSignalStrengthUpdated(@NonNull String, int);
    method public void onTimeShiftMode(@NonNull String, int);
    method public void onTimeShiftStatusChanged(String, int);
    method public void onTrackSelected(String, int, String);
    method public void onTracksChanged(String, java.util.List<android.media.tv.TvTrackInfo>);
@@ -27531,7 +27543,11 @@ package android.media.tv.interactive {
    field public static final String COMMAND_PARAMETER_KEY_CHANGE_CHANNEL_QUIETLY = "command_change_channel_quietly";
    field public static final String COMMAND_PARAMETER_KEY_CHANNEL_URI = "command_channel_uri";
    field public static final String COMMAND_PARAMETER_KEY_INPUT_ID = "command_input_id";
    field public static final String COMMAND_PARAMETER_KEY_PLAYBACK_PARAMS = "command_playback_params";
    field public static final String COMMAND_PARAMETER_KEY_PROGRAM_URI = "command_program_uri";
    field public static final String COMMAND_PARAMETER_KEY_STOP_MODE = "command_stop_mode";
    field public static final String COMMAND_PARAMETER_KEY_TIME_POSITION = "command_time_position";
    field public static final String COMMAND_PARAMETER_KEY_TIME_SHIFT_MODE = "command_time_shift_mode";
    field public static final String COMMAND_PARAMETER_KEY_TRACK_ID = "command_track_id";
    field public static final String COMMAND_PARAMETER_KEY_TRACK_TYPE = "command_track_type";
    field public static final String COMMAND_PARAMETER_KEY_VOLUME = "command_volume";
@@ -27545,6 +27561,12 @@ package android.media.tv.interactive {
    field public static final String PLAYBACK_COMMAND_TYPE_TUNE_PREV = "tune_previous";
    field public static final String SERVICE_INTERFACE = "android.media.tv.interactive.TvInteractiveAppService";
    field public static final String SERVICE_META_DATA = "android.media.tv.interactive.app";
    field public static final String TIME_SHIFT_COMMAND_TYPE_PAUSE = "pause";
    field public static final String TIME_SHIFT_COMMAND_TYPE_PLAY = "play";
    field public static final String TIME_SHIFT_COMMAND_TYPE_RESUME = "resume";
    field public static final String TIME_SHIFT_COMMAND_TYPE_SEEK_TO = "seek_to";
    field public static final String TIME_SHIFT_COMMAND_TYPE_SET_MODE = "set_mode";
    field public static final String TIME_SHIFT_COMMAND_TYPE_SET_PLAYBACK_PARAMS = "set_playback_params";
  }
  public abstract static class TvInteractiveAppService.Session implements android.view.KeyEvent.Callback {
@@ -27557,6 +27579,7 @@ package android.media.tv.interactive {
    method @CallSuper public final void notifyTeletextAppStateChanged(int);
    method public void onAdBufferConsumed(@NonNull android.media.tv.AdBuffer);
    method public void onAdResponse(@NonNull android.media.tv.AdResponse);
    method public void onAvailableSpeeds(@NonNull float[]);
    method public void onBroadcastInfoResponse(@NonNull android.media.tv.BroadcastInfoResponse);
    method public void onContentAllowed();
    method public void onContentBlocked(@NonNull android.media.tv.TvContentRating);
@@ -27586,6 +27609,11 @@ package android.media.tv.interactive {
    method public void onStopInteractiveApp();
    method public void onStreamVolume(float);
    method public void onSurfaceChanged(int, int, int);
    method public void onTimeShiftCurrentPositionChanged(@NonNull String, long);
    method public void onTimeShiftMode(int);
    method public void onTimeShiftPlaybackParams(@NonNull android.media.PlaybackParams);
    method public void onTimeShiftStartPositionChanged(@NonNull String, long);
    method public void onTimeShiftStatusChanged(@NonNull String, int);
    method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
    method public void onTrackInfoList(@NonNull java.util.List<android.media.tv.TvTrackInfo>);
    method public void onTrackSelected(int, @NonNull String);
@@ -27599,6 +27627,7 @@ package android.media.tv.interactive {
    method public void onVideoUnavailable(int);
    method @CallSuper public void removeBroadcastInfo(int);
    method @CallSuper public void requestAd(@NonNull android.media.tv.AdRequest);
    method @CallSuper public void requestAvailableSpeeds();
    method @CallSuper public void requestBroadcastInfo(@NonNull android.media.tv.BroadcastInfoRequest);
    method @CallSuper public void requestCurrentChannelLcn();
    method @CallSuper public void requestCurrentChannelUri();
@@ -27608,10 +27637,12 @@ package android.media.tv.interactive {
    method @CallSuper public void requestStartRecording(@Nullable android.net.Uri);
    method @CallSuper public void requestStopRecording(@NonNull String);
    method @CallSuper public void requestStreamVolume();
    method @CallSuper public void requestTimeShiftMode();
    method @CallSuper public void requestTrackInfoList();
    method @CallSuper public void requestTvRecordingInfo(@NonNull String);
    method @CallSuper public void requestTvRecordingInfoList(@NonNull int);
    method @CallSuper public void sendPlaybackCommandRequest(@NonNull String, @Nullable android.os.Bundle);
    method @CallSuper public void sendTimeShiftCommandRequest(@NonNull String, @Nullable android.os.Bundle);
    method @CallSuper public void setMediaViewEnabled(boolean);
    method @CallSuper public void setTvRecordingInfo(@NonNull String, @NonNull android.media.tv.TvRecordingInfo);
    method @CallSuper public void setVideoBounds(@NonNull android.graphics.Rect);
@@ -27643,6 +27674,10 @@ package android.media.tv.interactive {
    method public void notifyError(@NonNull String, @NonNull android.os.Bundle);
    method public void notifyRecordingStarted(@NonNull String);
    method public void notifyRecordingStopped(@NonNull String);
    method public void notifyTimeShiftCurrentPositionChanged(@NonNull String, long);
    method public void notifyTimeShiftPlaybackParams(@NonNull android.media.PlaybackParams);
    method public void notifyTimeShiftStartPositionChanged(@NonNull String, long);
    method public void notifyTimeShiftStatusChanged(@NonNull String, int);
    method public void notifyTvMessage(@NonNull String, @NonNull android.os.Bundle);
    method public void onAttachedToWindow();
    method public void onDetachedFromWindow();
@@ -27653,12 +27688,14 @@ package android.media.tv.interactive {
    method public void prepareInteractiveApp(@NonNull String, int);
    method public void reset();
    method public void resetInteractiveApp();
    method public void sendAvailableSpeeds(@NonNull float[]);
    method public void sendCurrentChannelLcn(int);
    method public void sendCurrentChannelUri(@Nullable android.net.Uri);
    method public void sendCurrentTvInputId(@Nullable String);
    method public void sendCurrentVideoBounds(@NonNull android.graphics.Rect);
    method public void sendSigningResult(@NonNull String, @NonNull byte[]);
    method public void sendStreamVolume(float);
    method public void sendTimeShiftMode(int);
    method public void sendTrackInfoList(@Nullable java.util.List<android.media.tv.TvTrackInfo>);
    method public void sendTvRecordingInfo(@Nullable android.media.tv.TvRecordingInfo);
    method public void sendTvRecordingInfoList(@NonNull java.util.List<android.media.tv.TvRecordingInfo>);
@@ -27684,6 +27721,7 @@ package android.media.tv.interactive {
    ctor public TvInteractiveAppView.TvInteractiveAppCallback();
    method public void onBiInteractiveAppCreated(@NonNull String, @NonNull android.net.Uri, @Nullable String);
    method public void onPlaybackCommandRequest(@NonNull String, @NonNull String, @NonNull android.os.Bundle);
    method public void onRequestAvailableSpeeds(@NonNull String);
    method public void onRequestCurrentChannelLcn(@NonNull String);
    method public void onRequestCurrentChannelUri(@NonNull String);
    method public void onRequestCurrentTvInputId(@NonNull String);
@@ -27692,6 +27730,7 @@ package android.media.tv.interactive {
    method public void onRequestStartRecording(@NonNull String, @Nullable android.net.Uri);
    method public void onRequestStopRecording(@NonNull String, @NonNull String);
    method public void onRequestStreamVolume(@NonNull String);
    method public void onRequestTimeShiftMode(@NonNull String);
    method public void onRequestTrackInfoList(@NonNull String);
    method public void onRequestTvRecordingInfo(@NonNull String, @NonNull String);
    method public void onRequestTvRecordingInfoList(@NonNull String, @NonNull int);
@@ -27699,6 +27738,7 @@ package android.media.tv.interactive {
    method public void onSetVideoBounds(@NonNull String, @NonNull android.graphics.Rect);
    method public void onStateChanged(@NonNull String, int, int);
    method public void onTeletextAppStateChanged(@NonNull String, int);
    method public void onTimeShiftCommandRequest(@NonNull String, @NonNull String, @NonNull android.os.Bundle);
  }
}
+5 −5
Original line number Diff line number Diff line
@@ -317,25 +317,21 @@ public final class TvInputManager {
    /**
     * Time shift mode: off.
     * <p>Time shift is disabled.
     * @hide
     */
    public static final int TIME_SHIFT_MODE_OFF = 1;
    /**
     * Time shift mode: local.
     * <p>Time shift is handle locally, using on-device data. E.g. playing a local file.
     * @hide
     */
    public static final int TIME_SHIFT_MODE_LOCAL = 2;
    /**
     * Time shift mode: network.
     * <p>Time shift is handle remotely via network. E.g. online streaming.
     * @hide
     */
    public static final int TIME_SHIFT_MODE_NETWORK = 3;
    /**
     * Time shift mode: auto.
     * <p>Time shift mode is handled automatically.
     * @hide
     */
    public static final int TIME_SHIFT_MODE_AUTO = 4;

@@ -774,7 +770,11 @@ public final class TvInputManager {
         * Informs the app available speeds for time-shifting.
         * @param session A {@link TvInputManager.Session} associated with this callback.
         * @param speeds An ordered array of playback speeds, expressed as values relative to the
         *               normal playback speed 1.0.
         *               normal playback speed (1.0), at which the current content can be played as
         *               a time-shifted broadcast. This is an empty array if the supported playback
         *               speeds are unknown or the video/broadcast is not in time shift mode. If
         *               currently in time shift mode, this array will normally include at least
         *               the values 1.0 (normal speed) and 0.0 (paused).
         * @see PlaybackParams#getSpeed()
         */
        public void onAvailableSpeeds(Session session, float[] speeds) {
+5 −5
Original line number Diff line number Diff line
@@ -1117,7 +1117,6 @@ public abstract class TvInputService extends Service {
         * {@link TvInputManager#TIME_SHIFT_MODE_OFF}, {@link TvInputManager#TIME_SHIFT_MODE_LOCAL},
         * {@link TvInputManager#TIME_SHIFT_MODE_NETWORK},
         * {@link TvInputManager#TIME_SHIFT_MODE_AUTO}.
         * @hide
         */
        public void notifyTimeShiftMode(@android.media.tv.TvInputManager.TimeShiftMode int mode) {
            executeOrPostRunnableOnMainThread(new Runnable() {
@@ -1141,9 +1140,12 @@ public abstract class TvInputService extends Service {
         * <p>This should be called when time-shifting is enabled.
         *
         * @param speeds An ordered array of playback speeds, expressed as values relative to the
         *               normal playback speed 1.0.
         *               normal playback speed (1.0), at which the current content can be played as
         *               a time-shifted broadcast. This is an empty array if the supported playback
         *               speeds are unknown or the video/broadcast is not in time shift mode. If
         *               currently in time shift mode, this array will normally include at least
         *               the values 1.0 (normal speed) and 0.0 (paused).
         * @see PlaybackParams#getSpeed()
         * @hide
         */
        public void notifyAvailableSpeeds(@NonNull float[] speeds) {
            executeOrPostRunnableOnMainThread(new Runnable() {
@@ -1191,7 +1193,6 @@ public abstract class TvInputService extends Service {
         *
         * @param available {@code true} if cueing message is available; {@code false} if it becomes
         *                  unavailable.
         * @hide
         */
        public void notifyCueingMessageAvailability(boolean available) {
            executeOrPostRunnableOnMainThread(new Runnable() {
@@ -1575,7 +1576,6 @@ public abstract class TvInputService extends Service {
         * {@link TvInputManager#TIME_SHIFT_MODE_OFF}, {@link TvInputManager#TIME_SHIFT_MODE_LOCAL},
         * {@link TvInputManager#TIME_SHIFT_MODE_NETWORK},
         * {@link TvInputManager#TIME_SHIFT_MODE_AUTO}.
         * @hide
         */
        public void onTimeShiftSetMode(@android.media.tv.TvInputManager.TimeShiftMode int mode) {
        }
+6 −6
Original line number Diff line number Diff line
@@ -633,7 +633,6 @@ public class TvView extends ViewGroup {
     * {@link TvInputManager#TIME_SHIFT_MODE_OFF}, {@link TvInputManager#TIME_SHIFT_MODE_LOCAL},
     * {@link TvInputManager#TIME_SHIFT_MODE_NETWORK},
     * {@link TvInputManager#TIME_SHIFT_MODE_AUTO}.
     * @hide
     */
    public void timeShiftSetMode(@android.media.tv.TvInputManager.TimeShiftMode int mode) {
        if (mSession != null) {
@@ -1193,7 +1192,6 @@ public class TvView extends ViewGroup {
         * @param inputId The ID of the TV input bound to this view.
         * @param available The current availability of cueing message. {@code true} if cueing
         *                  message is available; {@code false} if it becomes unavailable.
         * @hide
         */
        public void onCueingMessageAvailability(@NonNull String inputId, boolean available) {
        }
@@ -1206,7 +1204,6 @@ public class TvView extends ViewGroup {
         * {@link TvInputManager#TIME_SHIFT_MODE_OFF}, {@link TvInputManager#TIME_SHIFT_MODE_LOCAL},
         * {@link TvInputManager#TIME_SHIFT_MODE_NETWORK},
         * {@link TvInputManager#TIME_SHIFT_MODE_AUTO}.
         * @hide
         */
        public void onTimeShiftMode(
                @NonNull String inputId, @TvInputManager.TimeShiftMode int mode) {
@@ -1217,11 +1214,14 @@ public class TvView extends ViewGroup {
         *
         * @param inputId The ID of the TV input bound to this view.
         * @param speeds An ordered array of playback speeds, expressed as values relative to the
         *               normal playback speed 1.0.
         *               normal playback speed (1.0), at which the current content can be played as
         *               a time-shifted broadcast. This is an empty array if the supported playback
         *               speeds are unknown or the video/broadcast is not in time shift mode. If
         *               currently in time shift mode, this array will normally include at least
         *               the values 1.0 (normal speed) and 0.0 (paused).
         * @see PlaybackParams#getSpeed()
         * @hide
         */
        public void onAvailableSpeeds(@NonNull String inputId, float[] speeds) {
        public void onAvailableSpeeds(@NonNull String inputId, @NonNull float[] speeds) {
        }

        /**
+24 −23
Original line number Diff line number Diff line
@@ -231,41 +231,34 @@ public abstract class TvInteractiveAppService extends Service {
     * Time shift command type: play.
     *
     * @see TvView#timeShiftPlay(String, Uri)
     * @hide
     */
    public static final String TIME_SHIFT_COMMAND_TYPE_PLAY = "play";
    /**
     * Time shift command type: pause.
     *
     * @see TvView#timeShiftPause()
     * @hide
     */
    public static final String TIME_SHIFT_COMMAND_TYPE_PAUSE = "pause";
    /**
     * Time shift command type: resume.
     *
     * @see TvView#timeShiftResume()
     * @hide
     */
    public static final String TIME_SHIFT_COMMAND_TYPE_RESUME = "resume";
    /**
     * Time shift command type: seek to.
     *
     * @see TvView#timeShiftSeekTo(long)
     * @hide
     */
    public static final String TIME_SHIFT_COMMAND_TYPE_SEEK_TO = "seek_to";
    /**
     * Time shift command type: set playback params.
     *
     * @see TvView#timeShiftSetPlaybackParams(PlaybackParams)
     * @hide
     */
    public static final String TIME_SHIFT_COMMAND_TYPE_SET_PLAYBACK_PARAMS = "set_playback_params";
    /**
     * Time shift command type: set time shift mode.
     *
     * @hide
     */
    public static final String TIME_SHIFT_COMMAND_TYPE_SET_MODE = "set_mode";

@@ -274,7 +267,6 @@ public abstract class TvInteractiveAppService extends Service {
     * <p>Type: android.net.Uri
     *
     * @see #TIME_SHIFT_COMMAND_TYPE_PLAY
     * @hide
     */
    public static final String COMMAND_PARAMETER_KEY_PROGRAM_URI = "command_program_uri";
    /**
@@ -282,7 +274,6 @@ public abstract class TvInteractiveAppService extends Service {
     * <p>Type: long
     *
     * @see #TIME_SHIFT_COMMAND_TYPE_SEEK_TO
     * @hide
     */
    public static final String COMMAND_PARAMETER_KEY_TIME_POSITION = "command_time_position";
    /**
@@ -290,7 +281,6 @@ public abstract class TvInteractiveAppService extends Service {
     * <p>Type: android.media.PlaybackParams
     *
     * @see #TIME_SHIFT_COMMAND_TYPE_SET_PLAYBACK_PARAMS
     * @hide
     */
    public static final String COMMAND_PARAMETER_KEY_PLAYBACK_PARAMS = "command_playback_params";
    /**
@@ -301,7 +291,6 @@ public abstract class TvInteractiveAppService extends Service {
     * {@link TvInputManager#TIME_SHIFT_MODE_AUTO}.
     *
     * @see #TIME_SHIFT_COMMAND_TYPE_SET_MODE
     * @hide
     */
    public static final String COMMAND_PARAMETER_KEY_TIME_SHIFT_MODE = "command_time_shift_mode";

@@ -589,18 +578,24 @@ public abstract class TvInteractiveAppService extends Service {

        /**
         * Receives current time shift mode.
         *
         * @param mode The current time shift mode. The value is one of the following:
         * {@link TvInputManager#TIME_SHIFT_MODE_OFF}, {@link TvInputManager#TIME_SHIFT_MODE_LOCAL},
         * {@link TvInputManager#TIME_SHIFT_MODE_NETWORK},
         * {@link TvInputManager#TIME_SHIFT_MODE_AUTO}.
         * @hide
         */
        public void onTimeShiftMode(@android.media.tv.TvInputManager.TimeShiftMode int mode) {
        }

        /**
         * Receives available speeds.
         * @hide
         * Receives available playback speeds.
         *
         * @param speeds An ordered array of playback speeds, expressed as values relative to the
         *               normal playback speed (1.0), at which the current content can be played as
         *               a time-shifted broadcast. This is an empty array if the supported playback
         *               speeds are unknown or the video/broadcast is not in time shift mode. If
         *               currently in time shift mode, this array will normally include at least
         *               the values 1.0 (normal speed) and 0.0 (paused).
         */
        public void onAvailableSpeeds(@NonNull float[] speeds) {
        }
@@ -742,8 +737,8 @@ public abstract class TvInteractiveAppService extends Service {
        /**
         * Called when the time shift {@link android.media.PlaybackParams} is set or changed.
         *
         * @param params The new {@link PlaybackParams} that was set or changed.
         * @see TvView#timeShiftSetPlaybackParams(PlaybackParams)
         * @hide
         */
        public void onTimeShiftPlaybackParams(@NonNull PlaybackParams params) {
        }
@@ -753,17 +748,25 @@ public abstract class TvInteractiveAppService extends Service {
         *
         * @see TvView.TvInputCallback#onTimeShiftStatusChanged(String, int)
         * @see android.media.tv.TvInputService.Session#notifyTimeShiftStatusChanged(int)
         * @hide
         * @param inputId The ID of the input for which the time shift status has changed.
         * @param status The status of which the input has changed to. Should be one of the
         *               following.
         *               <ul>
         *                  <li>{@link TvInputManager#TIME_SHIFT_STATUS_UNKNOWN}
         *                  <li>{@link TvInputManager#TIME_SHIFT_STATUS_UNSUPPORTED}
         *                  <li>{@link TvInputManager#TIME_SHIFT_STATUS_UNAVAILABLE}
         *                  <li>{@link TvInputManager#TIME_SHIFT_STATUS_AVAILABLE}
         *               </ul>
         */
        public void onTimeShiftStatusChanged(
                @NonNull String inputId, @TvInputManager.TimeShiftStatus int status) {
        }
                @NonNull String inputId, @TvInputManager.TimeShiftStatus int status) {}

        /**
         * Called when time shift start position is changed.
         *
         * @see TvView.TimeShiftPositionCallback#onTimeShiftStartPositionChanged(String, long)
         * @hide
         * @param inputId The ID of the input for which the time shift start position has changed.
         * @param timeMs The start position for time shifting, in milliseconds since the epoch.
         */
        public void onTimeShiftStartPositionChanged(@NonNull String inputId, long timeMs) {
        }
@@ -772,7 +775,8 @@ public abstract class TvInteractiveAppService extends Service {
         * Called when time shift current position is changed.
         *
         * @see TvView.TimeShiftPositionCallback#onTimeShiftCurrentPositionChanged(String, long)
         * @hide
         * @param inputId The ID of the input for which the time shift current position has changed.
         * @param timeMs The current position for time shifting, in milliseconds since the epoch.
         */
        public void onTimeShiftCurrentPositionChanged(@NonNull String inputId, long timeMs) {
        }
@@ -1086,7 +1090,6 @@ public abstract class TvInteractiveAppService extends Service {
         *
         * @param cmdType type of the specific command
         * @param parameters parameters of the specific command
         * @hide
         */
        @CallSuper
        public void sendTimeShiftCommandRequest(
@@ -1275,7 +1278,6 @@ public abstract class TvInteractiveAppService extends Service {

        /**
         * Requests time shift mode.
         * @hide
         */
        @CallSuper
        public void requestTimeShiftMode() {
@@ -1299,7 +1301,6 @@ public abstract class TvInteractiveAppService extends Service {

        /**
         * Requests available speeds for time shift.
         * @hide
         */
        @CallSuper
        public void requestAvailableSpeeds() {
Loading