diff --git a/core/api/current.txt b/core/api/current.txt index 86fbcee7ffad7..fd417c833d16f 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -26177,6 +26177,15 @@ package android.media.session { package android.media.tv { + public final class AitInfo implements android.os.Parcelable { + ctor public AitInfo(int, int); + method public int describeContents(); + method public int getType(); + method public int getVersion(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; + } + public final class TvContentRating { method public boolean contains(@NonNull android.media.tv.TvContentRating); method public static android.media.tv.TvContentRating createRating(String, String, String, java.lang.String...); @@ -26747,6 +26756,7 @@ package android.media.tv { public abstract static class TvInputService.Session implements android.view.KeyEvent.Callback { ctor public TvInputService.Session(android.content.Context); method public void layoutSurface(int, int, int, int); + method public void notifyAitInfoUpdated(@NonNull android.media.tv.AitInfo); method public void notifyChannelRetuned(android.net.Uri); method public void notifyContentAllowed(); method public void notifyContentBlocked(@NonNull android.media.tv.TvContentRating); @@ -26766,6 +26776,7 @@ package android.media.tv { method public abstract void onRelease(); method public boolean onSelectTrack(int, @Nullable String); method public abstract void onSetCaptionEnabled(boolean); + method public void onSetInteractiveAppNotificationEnabled(boolean); method public abstract void onSetStreamVolume(@FloatRange(from=0.0, to=1.0) float); method public abstract boolean onSetSurface(@Nullable android.view.Surface); method public void onSurfaceChanged(int, int, int); @@ -26867,6 +26878,7 @@ package android.media.tv { method public void sendAppPrivateCommand(@NonNull String, android.os.Bundle); method public void setCallback(@Nullable android.media.tv.TvView.TvInputCallback); method public void setCaptionEnabled(boolean); + method public void setInteractiveAppNotificationEnabled(boolean); method public void setOnUnhandledInputEventListener(android.media.tv.TvView.OnUnhandledInputEventListener); method public void setStreamVolume(@FloatRange(from=0.0, to=1.0) float); method public void setTimeShiftPositionCallback(@Nullable android.media.tv.TvView.TimeShiftPositionCallback); @@ -26893,6 +26905,7 @@ package android.media.tv { public abstract static class TvView.TvInputCallback { ctor public TvView.TvInputCallback(); + method public void onAitInfoUpdated(@NonNull String, @NonNull android.media.tv.AitInfo); method public void onChannelRetuned(String, android.net.Uri); method public void onConnectionFailed(String); method public void onContentAllowed(String); @@ -26925,26 +26938,69 @@ package android.media.tv.interactive { public final class TvInteractiveAppManager { method @NonNull public java.util.List getTvInteractiveAppServiceList(); + method public void registerCallback(@NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback, @NonNull java.util.concurrent.Executor); + method public void unregisterCallback(@NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback); + field public static final int ERROR_BLOCKED = 5; // 0x5 + field public static final int ERROR_ENCRYPTED = 6; // 0x6 + field public static final int ERROR_NONE = 0; // 0x0 + field public static final int ERROR_NOT_SUPPORTED = 2; // 0x2 + field public static final int ERROR_RESOURCE_UNAVAILABLE = 4; // 0x4 + field public static final int ERROR_UNKNOWN = 1; // 0x1 + field public static final int ERROR_UNKNOWN_CHANNEL = 7; // 0x7 + field public static final int ERROR_WEAK_SIGNAL = 3; // 0x3 + field public static final int INTERACTIVE_APP_STATE_ERROR = 3; // 0x3 + field public static final int INTERACTIVE_APP_STATE_RUNNING = 2; // 0x2 + field public static final int INTERACTIVE_APP_STATE_STOPPED = 1; // 0x1 + field public static final int SERVICE_STATE_ERROR = 4; // 0x4 + field public static final int SERVICE_STATE_PREPARING = 2; // 0x2 + field public static final int SERVICE_STATE_READY = 3; // 0x3 + field public static final int SERVICE_STATE_UNREALIZED = 1; // 0x1 + } + + public abstract static class TvInteractiveAppManager.TvInteractiveAppCallback { + ctor public TvInteractiveAppManager.TvInteractiveAppCallback(); + method public void onTvInteractiveAppServiceStateChanged(@NonNull String, int, int, int); } public abstract class TvInteractiveAppService extends android.app.Service { ctor public TvInteractiveAppService(); + method public final void notifyStateChanged(int, int, int); method public final android.os.IBinder onBind(android.content.Intent); + method @Nullable public abstract android.media.tv.interactive.TvInteractiveAppService.Session onCreateSession(@NonNull String, int); + method public abstract void onPrepare(int); 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"; } + 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 void notifySessionStateChanged(int, int); + method public boolean onKeyDown(int, @NonNull android.view.KeyEvent); + method public boolean onKeyLongPress(int, @NonNull android.view.KeyEvent); + method public boolean onKeyMultiple(int, int, @NonNull android.view.KeyEvent); + method public boolean onKeyUp(int, @NonNull android.view.KeyEvent); + method public abstract boolean onSetSurface(@Nullable android.view.Surface); + method public void onStartInteractiveApp(); + method public void onStopInteractiveApp(); + method public void onSurfaceChanged(int, int, int); + } + public class TvInteractiveAppView extends android.view.ViewGroup { ctor public TvInteractiveAppView(@NonNull android.content.Context); ctor public TvInteractiveAppView(@NonNull android.content.Context, @Nullable android.util.AttributeSet); ctor public TvInteractiveAppView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int); method public void clearCallback(); + method public void prepareInteractiveApp(@NonNull String, int); method public void setCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.interactive.TvInteractiveAppView.TvInteractiveAppCallback); + method public int setTvView(@Nullable android.media.tv.TvView); method public void startInteractiveApp(); + method public void stopInteractiveApp(); } public abstract static class TvInteractiveAppView.TvInteractiveAppCallback { ctor public TvInteractiveAppView.TvInteractiveAppCallback(); + method public void onStateChanged(@NonNull String, int, int); } } diff --git a/media/java/android/media/tv/AitInfo.java b/media/java/android/media/tv/AitInfo.java index 71b1634cef926..8e80a62be3de3 100644 --- a/media/java/android/media/tv/AitInfo.java +++ b/media/java/android/media/tv/AitInfo.java @@ -23,7 +23,6 @@ import android.os.Parcelable; /** * AIT (Application Information Table) info. - * @hide */ public final class AitInfo implements Parcelable { static final String TAG = "AitInfo"; diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java index 9bc736743ecc9..c72e97d7761ba 100755 --- a/media/java/android/media/tv/TvInputService.java +++ b/media/java/android/media/tv/TvInputService.java @@ -947,12 +947,11 @@ public abstract class TvInputService extends Service { /** * Informs the app that the AIT (Application Information Table) is updated. * - *

This method should also be call when + *

This method should also be called when * {@link #onSetInteractiveAppNotificationEnabled(boolean)} is called to send the first AIT * info. * * @see #onSetInteractiveAppNotificationEnabled(boolean) - * @hide */ public void notifyAitInfoUpdated(@NonNull final AitInfo aitInfo) { executeOrPostRunnableOnMainThread(new Runnable() { @@ -1214,7 +1213,6 @@ public abstract class TvInputService extends Service { * * @see TvView#setInteractiveAppNotificationEnabled(boolean) * @see Session#notifyAitInfoUpdated(android.media.tv.AitInfo) - * @hide */ public void onSetInteractiveAppNotificationEnabled(boolean enabled) { } diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java index d2086c502a5cf..6c25a70ae5a16 100644 --- a/media/java/android/media/tv/TvView.java +++ b/media/java/android/media/tv/TvView.java @@ -493,7 +493,6 @@ public class TvView extends ViewGroup { * * @see TvInputService.Session#notifyAitInfoUpdated(android.media.tv.AitInfo) * @see android.media.tv.interactive.TvInteractiveAppView#setTvView(TvView) - * @hide */ public void setInteractiveAppNotificationEnabled(boolean enabled) { if (mSession != null) { @@ -1074,7 +1073,6 @@ public class TvView extends ViewGroup { * This is called when the AIT (Application Information Table) info has been updated. * * @param aitInfo The current AIT info. - * @hide */ public void onAitInfoUpdated(@NonNull String inputId, @NonNull AitInfo aitInfo) { } diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppManager.java b/media/java/android/media/tv/interactive/TvInteractiveAppManager.java index 39be501a072d8..c5dfaa2470995 100755 --- a/media/java/android/media/tv/interactive/TvInteractiveAppManager.java +++ b/media/java/android/media/tv/interactive/TvInteractiveAppManager.java @@ -57,7 +57,7 @@ import java.util.concurrent.Executor; /** * Central system API to the overall TV interactive application framework (TIAF) architecture, which - * arbitrates interaction between applications and interactive apps. + * arbitrates interaction between Android applications and TV interactive apps. */ @SystemService(Context.TV_INTERACTIVE_APP_SERVICE) public final class TvInteractiveAppManager { @@ -75,22 +75,22 @@ public final class TvInteractiveAppManager { /** * Unrealized state of interactive app service. - * @hide */ public static final int SERVICE_STATE_UNREALIZED = 1; /** * Preparing state of interactive app service. - * @hide */ public static final int SERVICE_STATE_PREPARING = 2; /** * Ready state of interactive app service. - * @hide + * + *

In this state, the interactive app service is ready, and interactive apps can be started. + * + * @see TvInteractiveAppView#startInteractiveApp() */ public static final int SERVICE_STATE_READY = 3; /** * Error state of interactive app service. - * @hide */ public static final int SERVICE_STATE_ERROR = 4; @@ -105,17 +105,14 @@ public final class TvInteractiveAppManager { /** * Stopped (or not started) state of interactive application. - * @hide */ public static final int INTERACTIVE_APP_STATE_STOPPED = 1; /** * Running state of interactive application. - * @hide */ public static final int INTERACTIVE_APP_STATE_RUNNING = 2; /** * Error state of interactive application. - * @hide */ public static final int INTERACTIVE_APP_STATE_ERROR = 3; @@ -136,46 +133,37 @@ public final class TvInteractiveAppManager { /** * No error. - * @hide */ public static final int ERROR_NONE = 0; /** * Unknown error code. - * @hide */ public static final int ERROR_UNKNOWN = 1; /** * Error code for an unsupported channel. - * @hide */ public static final int ERROR_NOT_SUPPORTED = 2; /** * Error code for weak signal. - * @hide */ public static final int ERROR_WEAK_SIGNAL = 3; /** * Error code when resource (e.g. tuner) is unavailable. - * @hide */ public static final int ERROR_RESOURCE_UNAVAILABLE = 4; /** * Error code for blocked contents. - * @hide */ public static final int ERROR_BLOCKED = 5; /** * Error code when the key or module is missing for the encrypted channel. - * @hide */ public static final int ERROR_ENCRYPTED = 6; /** * Error code when the current channel is an unknown channel. - * @hide */ public static final int ERROR_UNKNOWN_CHANNEL = 7; - /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(flag = false, prefix = "TELETEXT_APP_STATE_", value = { @@ -561,7 +549,6 @@ public final class TvInteractiveAppManager { /** * Callback used to monitor status of the TV Interactive App. - * @hide */ public abstract static class TvInteractiveAppCallback { /** @@ -796,7 +783,6 @@ public final class TvInteractiveAppManager { * * @param callback A callback used to monitor status of the TV Interactive App services. * @param executor A {@link Executor} that the status change will be delivered to. - * @hide */ public void registerCallback( @NonNull TvInteractiveAppCallback callback, @@ -812,7 +798,6 @@ public final class TvInteractiveAppManager { * Unregisters the existing {@link TvInteractiveAppCallback}. * * @param callback The existing callback to remove. - * @hide */ public void unregisterCallback(@NonNull final TvInteractiveAppCallback callback) { Preconditions.checkNotNull(callback); diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppService.java b/media/java/android/media/tv/interactive/TvInteractiveAppService.java index d599d0a609956..c1433b655639d 100755 --- a/media/java/android/media/tv/interactive/TvInteractiveAppService.java +++ b/media/java/android/media/tv/interactive/TvInteractiveAppService.java @@ -34,6 +34,7 @@ import android.media.tv.BroadcastInfoResponse; import android.media.tv.TvContentRating; import android.media.tv.TvInputManager; import android.media.tv.TvTrackInfo; +import android.media.tv.TvView; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; @@ -65,7 +66,8 @@ import java.util.ArrayList; import java.util.List; /** - * The TvInteractiveAppService class represents a TV interactive applications RTE. + * A TV interactive application service is a service that provides runtime environment and runs TV + * interactive applications. */ public abstract class TvInteractiveAppService extends Service { private static final boolean DEBUG = false; @@ -201,10 +203,8 @@ public abstract class TvInteractiveAppService extends Service { /** * Prepares TV Interactive App service for the given type. - * @hide */ - public void onPrepare(@TvInteractiveAppInfo.InteractiveAppType int type) { - } + public abstract void onPrepare(@TvInteractiveAppInfo.InteractiveAppType int type); /** * Registers App link info. @@ -239,14 +239,11 @@ public abstract class TvInteractiveAppService extends Service { * * @param iAppServiceId The ID of the TV Interactive App associated with the session. * @param type The type of the TV Interactive App associated with the session. - * @hide */ @Nullable - public Session onCreateSession( + public abstract Session onCreateSession( @NonNull String iAppServiceId, - @TvInteractiveAppInfo.InteractiveAppType int type) { - return null; - } + @TvInteractiveAppInfo.InteractiveAppType int type); /** * Notifies the system when the state of the interactive app RTE has been changed. @@ -256,7 +253,6 @@ public abstract class TvInteractiveAppService extends Service { * @param error the error code for error state. {@link TvInteractiveAppManager#ERROR_NONE} is * used when the state is not * {@link TvInteractiveAppManager#SERVICE_STATE_ERROR}. - * @hide */ public final void notifyStateChanged( @TvInteractiveAppInfo.InteractiveAppType int type, @@ -272,7 +268,12 @@ public abstract class TvInteractiveAppService extends Service { /** * Base class for derived classes to implement to provide a TV interactive app session. - * @hide + * + *

A session is associated with a {@link TvInteractiveAppView} instance and handles + * corresponding communications. It also handles the communications with + * {@link android.media.tv.TvInputService.Session} if connected. + * + * @see TvInteractiveAppView#setTvView(TvView) */ public abstract static class Session implements KeyEvent.Callback { private final KeyEvent.DispatcherState mDispatcherState = new KeyEvent.DispatcherState(); diff --git a/media/java/android/media/tv/interactive/TvInteractiveAppView.java b/media/java/android/media/tv/interactive/TvInteractiveAppView.java index 12e21998f226a..a2b9ed325896f 100755 --- a/media/java/android/media/tv/interactive/TvInteractiveAppView.java +++ b/media/java/android/media/tv/interactive/TvInteractiveAppView.java @@ -387,7 +387,6 @@ public class TvInteractiveAppView extends ViewGroup { * {@link TvInteractiveAppInfo#getId()}. * * @see android.media.tv.interactive.TvInteractiveAppManager#getTvInteractiveAppServiceList() - * @hide */ public void prepareInteractiveApp( @NonNull String iAppServiceId, @@ -416,7 +415,6 @@ public class TvInteractiveAppView extends ViewGroup { /** * Stops the interactive application. - * @hide */ public void stopInteractiveApp() { if (DEBUG) { @@ -564,7 +562,6 @@ public class TvInteractiveAppView extends ViewGroup { * * @param tvView the TvView to be linked to this TvInteractiveAppView via linking of Sessions. * @return The result of the operation. - * @hide */ public int setTvView(@Nullable TvView tvView) { if (tvView == null) { @@ -623,14 +620,13 @@ public class TvInteractiveAppView extends ViewGroup { } /** - * This is called when the session state is changed. + * This is called when the state of corresponding interactive app is changed. * * @param iAppServiceId The ID of the TV interactive app service bound to this view. * @param state the current state. * @param err the error code for error state. {@link TvInteractiveAppManager#ERROR_NONE} * is used when the state is not * {@link TvInteractiveAppManager#INTERACTIVE_APP_STATE_ERROR}. - * @hide */ public void onStateChanged( @NonNull String iAppServiceId,