Merge "Unhide FreezeVideo APIs" into main
diff --git a/core/api/current.txt b/core/api/current.txt
index 08c23dd..1135315 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -27438,6 +27438,7 @@
method public void notifyTuned(@NonNull android.net.Uri);
method public void notifyTvMessage(int, @NonNull android.os.Bundle);
method public void notifyVideoAvailable();
+ method @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public void notifyVideoFreezeUpdated(boolean);
method public void notifyVideoUnavailable(int);
method public void onAdBufferReady(@NonNull android.media.tv.AdBuffer);
method public void onAppPrivateCommand(@NonNull String, android.os.Bundle);
@@ -27608,6 +27609,7 @@
method public void setStreamVolume(@FloatRange(from=0.0, to=1.0) float);
method public void setTimeShiftPositionCallback(@Nullable android.media.tv.TvView.TimeShiftPositionCallback);
method public void setTvMessageEnabled(int, boolean);
+ method @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public void setVideoFrozen(boolean);
method public void setZOrderMediaOverlay(boolean);
method public void setZOrderOnTop(boolean);
method @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public void stopPlayback(int);
@@ -27651,6 +27653,7 @@
method public void onTuned(@NonNull String, @NonNull android.net.Uri);
method public void onTvMessage(@NonNull String, int, @NonNull android.os.Bundle);
method public void onVideoAvailable(String);
+ method @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public void onVideoFreezeUpdated(@NonNull String, boolean);
method public void onVideoSizeChanged(String, int, int);
method public void onVideoUnavailable(String, int);
}
@@ -27907,6 +27910,7 @@
method public void onTvRecordingInfo(@Nullable android.media.tv.TvRecordingInfo);
method public void onTvRecordingInfoList(@NonNull java.util.List<android.media.tv.TvRecordingInfo>);
method public void onVideoAvailable();
+ method @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public void onVideoFreezeUpdated(boolean);
method public void onVideoUnavailable(int);
method @CallSuper public void removeBroadcastInfo(int);
method @CallSuper public void requestAd(@NonNull android.media.tv.AdRequest);
@@ -27969,6 +27973,7 @@
method public void notifyTimeShiftStartPositionChanged(@NonNull String, long);
method public void notifyTimeShiftStatusChanged(@NonNull String, int);
method public void notifyTvMessage(@NonNull int, @NonNull android.os.Bundle);
+ method @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public void notifyVideoFreezeUpdated(boolean);
method public void onAttachedToWindow();
method public void onDetachedFromWindow();
method public void onLayout(boolean, int, int, int, int);
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index 432e109..6658918 100644
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -768,12 +768,12 @@
/**
* Informs the application that the video freeze state has been updated.
*
- * When {@code true}, the video is frozen on the last frame but audio playback remains
+ * <p>When {@code true}, the video is frozen on the last frame but audio playback remains
* active.
*
* @param isFrozen Whether or not the video is frozen
- * @hide
*/
+ @FlaggedApi(Flags.FLAG_TIAF_V_APIS)
public void notifyVideoFreezeUpdated(boolean isFrozen) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java
index ffc121e..e604cb7 100644
--- a/media/java/android/media/tv/TvView.java
+++ b/media/java/android/media/tv/TvView.java
@@ -683,13 +683,15 @@
* Sets whether or not the video is frozen. While the video is frozen, audio playback will
* continue.
*
- * <p> This should be invoked after a {@link TvInteractiveAppService.Session#requestCommand} is
+ * <p>This should be invoked after a {@link TvInteractiveAppService.Session#requestCommand} is
* received with the command to freeze the video.
*
- * <p> This will freeze the video to the last frame when the state is set to {@code true}.
+ * <p>This will freeze the video to the last frame when the state is set to {@code true}.
+ *
+ * @see TvView.TvInputCallback#setVideoFrozen(boolean)
* @param isFrozen whether or not the video is frozen.
- * @hide
*/
+ @FlaggedApi(Flags.FLAG_TIAF_V_APIS)
public void setVideoFrozen(boolean isFrozen) {
if (mSession != null) {
mSession.setVideoFrozen(isFrozen);
@@ -1325,6 +1327,16 @@
public void onTvMessage(@NonNull String inputId,
@TvInputManager.TvMessageType int type, @NonNull Bundle data) {
}
+
+ /**
+ * This is called when the video freeze status is updated.
+ *
+ * @see #setVideoFrozen(boolean)
+ * @param inputId The ID of the TV input bound to this view.
+ * @param isFrozen Whether or not the video is currently frozen on the las
+ */
+ @FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+ public void onVideoFreezeUpdated(@NonNull String inputId, boolean isFrozen) {}
}
/**
@@ -1753,5 +1765,19 @@
mCallback.onTvMessage(mInputId, type, data);
}
}
+
+ @Override
+ public void onVideoFreezeUpdated(Session session, boolean isFrozen) {
+ if (DEBUG) {
+ Log.d(TAG, "onVideoFreezeUpdated(isFrozen=" + isFrozen + ")");
+ }
+ if (this != mSessionCallback) {
+ Log.w(TAG, "onVideoFreezeUpdated - session not created");
+ return;
+ }
+ if (mCallback != null) {
+ mCallback.onVideoFreezeUpdated(mInputId, isFrozen);
+ }
+ }
}
}
diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppService.java b/media/java/android/media/tv/interactive/TvInteractiveAppService.java
index 6b0620c..3064f2e 100755
--- a/media/java/android/media/tv/interactive/TvInteractiveAppService.java
+++ b/media/java/android/media/tv/interactive/TvInteractiveAppService.java
@@ -896,13 +896,13 @@
}
/**
- * Called when video becomes frozen or unfrozen. Audio playback will continue while
- * video will be frozen to the last frame if {@code true}.
+ * Called when video becomes frozen or unfrozen. Audio playback will continue while video
+ * will be frozen to the last frame if {@code true}.
+ *
* @param isFrozen Whether or not the video is frozen.
- * @hide
*/
- public void onVideoFreezeUpdated(boolean isFrozen) {
- }
+ @FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+ public void onVideoFreezeUpdated(boolean isFrozen) {}
/**
* Called when content is allowed.
diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppView.java b/media/java/android/media/tv/interactive/TvInteractiveAppView.java
index 584ea84..80727cc 100755
--- a/media/java/android/media/tv/interactive/TvInteractiveAppView.java
+++ b/media/java/android/media/tv/interactive/TvInteractiveAppView.java
@@ -723,12 +723,12 @@
}
/**
- * Alerts the TV Interactive app that the video freeze state has been updated.
- * If {@code true}, the video is frozen on the last frame while audio playback continues.
+ * Alerts the TV Interactive app that the video freeze state has been updated. If {@code true},
+ * the video is frozen on the last frame while audio playback continues.
*
* @param isFrozen Whether the video is frozen.
- * @hide
*/
+ @FlaggedApi(Flags.FLAG_TIAF_V_APIS)
public void notifyVideoFreezeUpdated(boolean isFrozen) {
if (DEBUG) {
Log.d(TAG, "notifyVideoFreezeUpdated");