Merge "TIAF API review: Setup Interactive App session" into tm-dev
diff --git a/core/api/current.txt b/core/api/current.txt
index 9edc2df..1391408a 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -26088,7 +26088,7 @@
method @NonNull public java.util.List<android.media.tv.interactive.TvInteractiveAppInfo> getTvInteractiveAppServiceList();
method public void prepare(@NonNull String, int);
method public void registerAppLinkInfo(@NonNull String, @NonNull android.media.tv.interactive.AppLinkInfo);
- method public void registerCallback(@NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback, @NonNull java.util.concurrent.Executor);
+ method public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback);
method public void sendAppLinkCommand(@NonNull String, @NonNull android.os.Bundle);
method public void unregisterAppLinkInfo(@NonNull String, @NonNull android.media.tv.interactive.AppLinkInfo);
method public void unregisterCallback(@NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback);
@@ -26158,10 +26158,10 @@
public abstract static class TvInteractiveAppService.Session implements android.view.KeyEvent.Callback {
ctor public TvInteractiveAppService.Session(@NonNull android.content.Context);
- method public void layoutSurface(int, int, int, int);
- method public final void notifyBiInteractiveAppCreated(@NonNull android.net.Uri, @Nullable String);
- method public void notifySessionStateChanged(int, int);
- method public final void notifyTeletextAppStateChanged(int);
+ method @CallSuper public void layoutSurface(int, int, int, int);
+ method @CallSuper public final void notifyBiInteractiveAppCreated(@NonNull android.net.Uri, @Nullable String);
+ method @CallSuper public void notifySessionStateChanged(int, int);
+ method @CallSuper public final void notifyTeletextAppStateChanged(int);
method public void onAdResponse(@NonNull android.media.tv.AdResponse);
method public void onBroadcastInfoResponse(@NonNull android.media.tv.BroadcastInfoResponse);
method public void onContentAllowed();
@@ -26195,17 +26195,17 @@
method public void onTuned(@NonNull android.net.Uri);
method public void onVideoAvailable();
method public void onVideoUnavailable(int);
- method public void removeBroadcastInfo(int);
- method public void requestAd(@NonNull android.media.tv.AdRequest);
- method public void requestBroadcastInfo(@NonNull android.media.tv.BroadcastInfoRequest);
- method public void requestCurrentChannelLcn();
- method public void requestCurrentChannelUri();
- method public void requestCurrentTvInputId();
- method public void requestStreamVolume();
- method public void requestTrackInfoList();
- method public void sendPlaybackCommandRequest(@NonNull String, @Nullable android.os.Bundle);
- method public void setMediaViewEnabled(boolean);
- method public void setVideoBounds(@NonNull android.graphics.Rect);
+ method @CallSuper public void removeBroadcastInfo(int);
+ method @CallSuper public void requestAd(@NonNull android.media.tv.AdRequest);
+ method @CallSuper public void requestBroadcastInfo(@NonNull android.media.tv.BroadcastInfoRequest);
+ method @CallSuper public void requestCurrentChannelLcn();
+ method @CallSuper public void requestCurrentChannelUri();
+ method @CallSuper public void requestCurrentTvInputId();
+ method @CallSuper public void requestStreamVolume();
+ method @CallSuper public void requestTrackInfoList();
+ method @CallSuper public void sendPlaybackCommandRequest(@NonNull String, @Nullable android.os.Bundle);
+ method @CallSuper public void setMediaViewEnabled(boolean);
+ method @CallSuper public void setVideoBounds(@NonNull android.graphics.Rect);
}
public class TvInteractiveAppView extends android.view.ViewGroup {
diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppManager.java b/media/java/android/media/tv/interactive/TvInteractiveAppManager.java
index b6db4cf..9eb4a6c 100755
--- a/media/java/android/media/tv/interactive/TvInteractiveAppManager.java
+++ b/media/java/android/media/tv/interactive/TvInteractiveAppManager.java
@@ -626,6 +626,7 @@
/**
* This is called when the state of the interactive app service is changed.
*
+ * @param iAppServiceId The ID of the TV Interactive App service.
* @param type the interactive app type
* @param state the current state of the service of the given type
* @param err the error code for error state. {@link #ERROR_NONE} is used when the state is
@@ -815,8 +816,8 @@
* @param executor A {@link Executor} that the status change will be delivered to.
*/
public void registerCallback(
- @NonNull TvInteractiveAppCallback callback,
- @CallbackExecutor @NonNull Executor executor) {
+ @CallbackExecutor @NonNull Executor executor,
+ @NonNull TvInteractiveAppCallback callback) {
Preconditions.checkNotNull(callback);
Preconditions.checkNotNull(executor);
synchronized (mLock) {
diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppService.java b/media/java/android/media/tv/interactive/TvInteractiveAppService.java
index bb6edf5..d22fd83 100755
--- a/media/java/android/media/tv/interactive/TvInteractiveAppService.java
+++ b/media/java/android/media/tv/interactive/TvInteractiveAppService.java
@@ -16,6 +16,7 @@
package android.media.tv.interactive;
+import android.annotation.CallSuper;
import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -351,6 +352,7 @@
* @param enable {@code true} if you want to enable the media view. {@code false}
* otherwise.
*/
+ @CallSuper
public void setMediaViewEnabled(final boolean enable) {
mHandler.post(new Runnable() {
@Override
@@ -467,11 +469,11 @@
* in {@link #onSetSurface}. This method is always called at least once, after
* {@link #onSetSurface} is called with non-null surface.
*
- * @param format The new PixelFormat of the surface.
+ * @param format The new {@link PixelFormat} of the surface.
* @param width The new width of the surface.
* @param height The new height of the surface.
*/
- public void onSurfaceChanged(int format, int width, int height) {
+ public void onSurfaceChanged(@PixelFormat.Format int format, int width, int height) {
}
/**
@@ -631,6 +633,7 @@
* @param right Right position in pixels, relative to the overlay view.
* @param bottom Bottom position in pixels, relative to the overlay view.
*/
+ @CallSuper
public void layoutSurface(final int left, final int top, final int right,
final int bottom) {
if (left > right || top > bottom) {
@@ -659,6 +662,7 @@
* Requests broadcast related information from the related TV input.
* @param request the request for broadcast info
*/
+ @CallSuper
public void requestBroadcastInfo(@NonNull final BroadcastInfoRequest request) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -683,6 +687,7 @@
* Remove broadcast information request from the related TV input.
* @param requestId the ID of the request
*/
+ @CallSuper
public void removeBroadcastInfo(final int requestId) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -709,6 +714,7 @@
* @param cmdType type of the specific command
* @param parameters parameters of the specific command
*/
+ @CallSuper
public void sendPlaybackCommandRequest(
@PlaybackCommandType @NonNull String cmdType, @Nullable Bundle parameters) {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -733,6 +739,7 @@
/**
* Sets broadcast video bounds.
*/
+ @CallSuper
public void setVideoBounds(@NonNull Rect rect) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -755,6 +762,7 @@
/**
* Requests the URI of the current channel.
*/
+ @CallSuper
public void requestCurrentChannelUri() {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -777,6 +785,7 @@
/**
* Requests the logic channel number (LCN) of the current channel.
*/
+ @CallSuper
public void requestCurrentChannelLcn() {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -799,6 +808,7 @@
/**
* Requests stream volume.
*/
+ @CallSuper
public void requestStreamVolume() {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -821,6 +831,7 @@
/**
* Requests the list of {@link TvTrackInfo}.
*/
+ @CallSuper
public void requestTrackInfoList() {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -845,6 +856,7 @@
*
* @see android.media.tv.TvInputInfo
*/
+ @CallSuper
public void requestCurrentTvInputId() {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -869,6 +881,7 @@
*
* @param request The advertisement request
*/
+ @CallSuper
public void requestAd(@NonNull final AdRequest request) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@@ -1032,6 +1045,7 @@
* used when the state is not
* {@link TvInteractiveAppManager#INTERACTIVE_APP_STATE_ERROR}.
*/
+ @CallSuper
public void notifySessionStateChanged(
@TvInteractiveAppManager.InteractiveAppState int state,
@TvInteractiveAppManager.ErrorCode int err) {
@@ -1062,6 +1076,7 @@
*
* @see #onCreateBiInteractiveApp(Uri, Bundle)
*/
+ @CallSuper
public final void notifyBiInteractiveAppCreated(
@NonNull Uri biIAppUri, @Nullable String biIAppId) {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -1087,6 +1102,7 @@
* Notifies when the digital teletext app state is changed.
* @param state the current state.
*/
+ @CallSuper
public final void notifyTeletextAppStateChanged(
@TvInteractiveAppManager.TeletextAppState int state) {
executeOrPostRunnableOnMainThread(new Runnable() {