Merge changes from topics "tiaf_pb_cmd", "tiaf_vod_ad"

* changes:
  TIAF: unhide playback command and remaining public APIs
  TIAF: cleanup playback command and remaining public APIs
  TIAF: unhide use cases VOD to DTV & AD insertion
This commit is contained in:
Shubang Lu
2022-01-26 09:10:36 +00:00
committed by Android (Google) Code Review
10 changed files with 350 additions and 203 deletions

View File

@@ -24893,6 +24893,37 @@ package android.media.session {
package android.media.tv {
public final class AdRequest implements android.os.Parcelable {
ctor public AdRequest(int, int, @Nullable android.os.ParcelFileDescriptor, long, long, long, @Nullable String, @NonNull android.os.Bundle);
method public int describeContents();
method public long getEchoIntervalMillis();
method @Nullable public android.os.ParcelFileDescriptor getFileDescriptor();
method public int getId();
method @Nullable public String getMediaFileType();
method @NonNull public android.os.Bundle getMetadata();
method public int getRequestType();
method public long getStartTimeMillis();
method public long getStopTimeMillis();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.AdRequest> CREATOR;
field public static final int REQUEST_TYPE_START = 1; // 0x1
field public static final int REQUEST_TYPE_STOP = 2; // 0x2
}
public final class AdResponse implements android.os.Parcelable {
ctor public AdResponse(int, int, long);
method public int describeContents();
method public long getElapsedTimeMillis();
method public int getId();
method public int getResponseType();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.AdResponse> CREATOR;
field public static final int RESPONSE_TYPE_ERROR = 4; // 0x4
field public static final int RESPONSE_TYPE_FINISHED = 2; // 0x2
field public static final int RESPONSE_TYPE_PLAYING = 1; // 0x1
field public static final int RESPONSE_TYPE_STOPPED = 3; // 0x3
}
public final class AitInfo implements android.os.Parcelable {
ctor public AitInfo(int, int);
method public int describeContents();
@@ -25395,6 +25426,9 @@ package android.media.tv {
field public static final int RECORDING_ERROR_INSUFFICIENT_SPACE = 1; // 0x1
field public static final int RECORDING_ERROR_RESOURCE_BUSY = 2; // 0x2
field public static final int RECORDING_ERROR_UNKNOWN = 0; // 0x0
field public static final int SIGNAL_STRENGTH_LOST = 1; // 0x1
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_STATUS_AVAILABLE = 3; // 0x3
field public static final int TIME_SHIFT_STATUS_UNAVAILABLE = 2; // 0x2
@@ -25472,10 +25506,12 @@ 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 notifyAdResponse(@NonNull android.media.tv.AdResponse);
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);
method public void notifySignalStrength(int);
method public void notifyTimeShiftStatusChanged(int);
method public void notifyTrackSelected(int, String);
method public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
@@ -25491,6 +25527,7 @@ package android.media.tv {
method public boolean onKeyUp(int, android.view.KeyEvent);
method public void onOverlayViewSizeChanged(int, int);
method public abstract void onRelease();
method public void onRequestAd(@NonNull android.media.tv.AdRequest);
method public boolean onSelectTrack(int, @Nullable String);
method public abstract void onSetCaptionEnabled(boolean);
method public void onSetInteractiveAppNotificationEnabled(boolean);
@@ -25628,9 +25665,11 @@ package android.media.tv {
method public void onContentAllowed(String);
method public void onContentBlocked(String, android.media.tv.TvContentRating);
method public void onDisconnected(String);
method public void onSignalStrength(@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>);
method public void onTuned(@NonNull String, @NonNull android.net.Uri);
method public void onVideoAvailable(String);
method public void onVideoSizeChanged(String, int, int);
method public void onVideoUnavailable(String, int);
@@ -25655,8 +25694,11 @@ package android.media.tv.interactive {
public final class TvInteractiveAppManager {
method @NonNull public java.util.List<android.media.tv.interactive.TvInteractiveAppInfo> getTvInteractiveAppServiceList();
method public void prepare(@NonNull String, int);
method public void registerCallback(@NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback, @NonNull java.util.concurrent.Executor);
method public void sendAppLinkCommand(@NonNull String, @NonNull android.os.Bundle);
method public void unregisterCallback(@NonNull android.media.tv.interactive.TvInteractiveAppManager.TvInteractiveAppCallback);
field public static final String ACTION_APP_LINK_COMMAND = "android.media.tv.interactive.action.APP_LINK_COMMAND";
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
@@ -25665,26 +25707,55 @@ package android.media.tv.interactive {
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 String INTENT_KEY_BI_INTERACTIVE_APP_TYPE = "bi_interactive_app_type";
field public static final String INTENT_KEY_BI_INTERACTIVE_APP_URI = "bi_interactive_app_uri";
field public static final String INTENT_KEY_CHANNEL_URI = "channel_uri";
field public static final String INTENT_KEY_INTERACTIVE_APP_SERVICE_ID = "interactive_app_id";
field public static final String INTENT_KEY_TV_INPUT_ID = "tv_input_id";
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 String KEY_BACK_URI = "back_uri";
field public static final String KEY_CLASS_NAME = "class_name";
field public static final String KEY_COMMAND_TYPE = "command_type";
field public static final String KEY_PACKAGE_NAME = "package_name";
field public static final String KEY_SERVICE_ID = "service_id";
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
field public static final int TELETEXT_APP_STATE_ERROR = 3; // 0x3
field public static final int TELETEXT_APP_STATE_HIDE = 2; // 0x2
field public static final int TELETEXT_APP_STATE_SHOW = 1; // 0x1
}
public abstract static class TvInteractiveAppManager.TvInteractiveAppCallback {
ctor public TvInteractiveAppManager.TvInteractiveAppCallback();
method public void onInteractiveAppServiceAdded(@NonNull String);
method public void onInteractiveAppServiceRemoved(@NonNull String);
method public void onInteractiveAppServiceUpdated(@NonNull String);
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 public void onAppLinkCommand(@NonNull android.os.Bundle);
method @Nullable public final android.os.IBinder onBind(@NonNull 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 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_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";
field public static final String PLAYBACK_COMMAND_TYPE_SELECT_TRACK = "select_track";
field public static final String PLAYBACK_COMMAND_TYPE_SET_STREAM_VOLUME = "set_stream_volume";
field public static final String PLAYBACK_COMMAND_TYPE_STOP = "stop";
field public static final String PLAYBACK_COMMAND_TYPE_TUNE = "tune";
field public static final String PLAYBACK_COMMAND_TYPE_TUNE_NEXT = "tune_next";
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";
}
@@ -25694,17 +25765,48 @@ package android.media.tv.interactive {
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 public void onAdResponse(@NonNull android.media.tv.AdResponse);
method public void onContentAllowed();
method public void onContentBlocked(@NonNull android.media.tv.TvContentRating);
method public void onCreateBiInteractiveApp(@NonNull android.net.Uri, @Nullable android.os.Bundle);
method @Nullable public android.view.View onCreateMediaView();
method public void onCurrentChannelLcn(int);
method public void onCurrentChannelUri(@Nullable android.net.Uri);
method public void onCurrentTvInputId(@Nullable String);
method public void onDestroyBiInteractiveApp(@NonNull String);
method public boolean onGenericMotionEvent(@NonNull android.view.MotionEvent);
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 void onMediaViewSizeChanged(int, int);
method public abstract void onRelease();
method public void onResetInteractiveApp();
method public abstract boolean onSetSurface(@Nullable android.view.Surface);
method public void onSetTeletextAppEnabled(boolean);
method public void onSignalStrength(int);
method public void onStartInteractiveApp();
method public void onStopInteractiveApp();
method public void onStreamVolume(float);
method public void onSurfaceChanged(int, int, 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);
method public boolean onTrackballEvent(@NonNull android.view.MotionEvent);
method public void onTracksChanged(@NonNull java.util.List<android.media.tv.TvTrackInfo>);
method public void onTuned(@NonNull android.net.Uri);
method public void onVideoAvailable();
method public void onVideoUnavailable(int);
method public void requestAd(@NonNull android.media.tv.AdRequest);
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);
}
public class TvInteractiveAppView extends android.view.ViewGroup {
@@ -25712,19 +25814,48 @@ package android.media.tv.interactive {
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 clearOnUnhandledInputEventListener();
method public void createBiInteractiveApp(@NonNull android.net.Uri, @Nullable android.os.Bundle);
method public void destroyBiInteractiveApp(@NonNull String);
method public boolean dispatchUnhandledInputEvent(@NonNull android.view.InputEvent);
method public void onAttachedToWindow();
method public void onDetachedFromWindow();
method public void onLayout(boolean, int, int, int, int);
method public void onMeasure(int, int);
method public boolean onUnhandledInputEvent(@NonNull android.view.InputEvent);
method public void onVisibilityChanged(@NonNull android.view.View, int);
method public void prepareInteractiveApp(@NonNull String, int);
method public void reset();
method public void resetInteractiveApp();
method public void sendCurrentChannelLcn(int);
method public void sendCurrentChannelUri(@Nullable android.net.Uri);
method public void sendCurrentTvInputId(@Nullable String);
method public void sendStreamVolume(float);
method public void sendTrackInfoList(@Nullable java.util.List<android.media.tv.TvTrackInfo>);
method public void setCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.interactive.TvInteractiveAppView.TvInteractiveAppCallback);
method public void setOnUnhandledInputEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.interactive.TvInteractiveAppView.OnUnhandledInputEventListener);
method public void setTeletextAppEnabled(boolean);
method public int setTvView(@Nullable android.media.tv.TvView);
method public void startInteractiveApp();
method public void stopInteractiveApp();
}
public static interface TvInteractiveAppView.OnUnhandledInputEventListener {
method public boolean onUnhandledInputEvent(@NonNull android.view.InputEvent);
}
public abstract static class TvInteractiveAppView.TvInteractiveAppCallback {
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 onRequestCurrentChannelLcn(@NonNull String);
method public void onRequestCurrentChannelUri(@NonNull String);
method public void onRequestCurrentTvInputId(@NonNull String);
method public void onRequestStreamVolume(@NonNull String);
method public void onRequestTrackInfoList(@NonNull String);
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);
}
}

View File

@@ -29,7 +29,6 @@ import java.lang.annotation.RetentionPolicy;
/**
* An advertisement request which can be sent to TV input to request AD operations.
* @hide
*/
public final class AdRequest implements Parcelable {
/** @hide */

View File

@@ -26,7 +26,6 @@ import java.lang.annotation.RetentionPolicy;
/**
* An advertisement request which can be sent to TV interactive App service to inform AD status.
* @hide
*/
public final class AdResponse implements Parcelable {
/** @hide */

View File

@@ -394,17 +394,14 @@ public final class TvInputManager {
/**
* Signal lost.
* @hide
*/
public static final int SIGNAL_STRENGTH_LOST = 1;
/**
* Weak signal.
* @hide
*/
public static final int SIGNAL_STRENGTH_WEAK = 2;
/**
* Strong signal.
* @hide
*/
public static final int SIGNAL_STRENGTH_STRONG = 3;

View File

@@ -896,7 +896,6 @@ public abstract class TvInputService extends Service {
*
* @param response advertisement response.
* @see android.media.tv.interactive.TvInteractiveAppService.Session#requestAd(AdRequest)
* @hide
*/
public void notifyAdResponse(@NonNull final AdResponse response) {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -977,7 +976,6 @@ public abstract class TvInputService extends Service {
/**
* Notifies signal strength.
* @hide
*/
public void notifySignalStrength(@TvInputManager.SignalStrength final int strength) {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -1128,7 +1126,6 @@ public abstract class TvInputService extends Service {
* Called when advertisement request is received.
*
* @param request advertisement request received
* @hide
*/
public void onRequestAd(@NonNull AdRequest request) {
}

View File

@@ -1079,21 +1079,20 @@ public class TvView extends ViewGroup {
/**
* This is called when signal strength is updated.
*
* @param inputId The ID of the TV input bound to this view.
* @param strength The current signal strength.
*
* @hide
*/
public void onSignalStrength(String inputId, @TvInputManager.SignalStrength int strength) {
public void onSignalStrength(
@NonNull String inputId, @TvInputManager.SignalStrength int strength) {
}
/**
* This is called when the session has been tuned to the given channel.
*
* @param channelUri The URI of a channel.
* @hide
*/
public void onTuned(String inputId, Uri channelUri) {
public void onTuned(@NonNull String inputId, @NonNull Uri channelUri) {
}
}

View File

@@ -174,18 +174,15 @@ public final class TvInteractiveAppManager {
public @interface TeletextAppState {}
/**
* Show state of Teletext app.
* @hide
* State of Teletext app: show
*/
public static final int TELETEXT_APP_STATE_SHOW = 1;
/**
* Hide state of Teletext app.
* @hide
* State of Teletext app: hide
*/
public static final int TELETEXT_APP_STATE_HIDE = 2;
/**
* Error state of Teletext app.
* @hide
* State of Teletext app: error
*/
public static final int TELETEXT_APP_STATE_ERROR = 3;
@@ -193,9 +190,7 @@ public final class TvInteractiveAppManager {
* Key for package name in app link.
* <p>Type: String
*
* @see #registerAppLinkInfo(String, Bundle)
* @see #sendAppLinkCommand(String, Bundle)
* @hide
*/
public static final String KEY_PACKAGE_NAME = "package_name";
@@ -203,45 +198,15 @@ public final class TvInteractiveAppManager {
* Key for class name in app link.
* <p>Type: String
*
* @see #registerAppLinkInfo(String, Bundle)
* @see #sendAppLinkCommand(String, Bundle)
* @hide
*/
public static final String KEY_CLASS_NAME = "class_name";
/**
* Key for URI scheme in app link.
* <p>Type: String
*
* @see #registerAppLinkInfo(String, Bundle)
* @hide
*/
public static final String KEY_URI_SCHEME = "uri_scheme";
/**
* Key for URI host in app link.
* <p>Type: String
*
* @see #registerAppLinkInfo(String, Bundle)
* @hide
*/
public static final String KEY_URI_HOST = "uri_host";
/**
* Key for URI prefix in app link.
* <p>Type: String
*
* @see #registerAppLinkInfo(String, Bundle)
* @hide
*/
public static final String KEY_URI_PREFIX = "uri_prefix";
/**
* Key for command type in app link command.
* <p>Type: String
*
* @see #sendAppLinkCommand(String, Bundle)
* @hide
*/
public static final String KEY_COMMAND_TYPE = "command_type";
@@ -250,7 +215,6 @@ public final class TvInteractiveAppManager {
* <p>Type: String
*
* @see #sendAppLinkCommand(String, Bundle)
* @hide
*/
public static final String KEY_SERVICE_ID = "service_id";
@@ -259,10 +223,68 @@ public final class TvInteractiveAppManager {
* <p>Type: String
*
* @see #sendAppLinkCommand(String, Bundle)
* @hide
*/
public static final String KEY_BACK_URI = "back_uri";
/**
* Broadcast intent action to send app command to TV app.
*
* @see #sendAppLinkCommand(String, Bundle)
*/
public static final String ACTION_APP_LINK_COMMAND =
"android.media.tv.interactive.action.APP_LINK_COMMAND";
/**
* Intent key for TV input ID. It's used to send app command to TV app.
* <p>Type: String
*
* @see #sendAppLinkCommand(String, Bundle)
* @see #ACTION_APP_LINK_COMMAND
*/
public static final String INTENT_KEY_TV_INPUT_ID = "tv_input_id";
/**
* Intent key for TV interactive app ID. It's used to send app command to TV app.
* <p>Type: String
*
* @see #sendAppLinkCommand(String, Bundle)
* @see #ACTION_APP_LINK_COMMAND
* @see android.media.tv.interactive.TvInteractiveAppInfo#getId()
*/
public static final String INTENT_KEY_INTERACTIVE_APP_SERVICE_ID = "interactive_app_id";
/**
* Intent key for TV channel URI. It's used to send app command to TV app.
* <p>Type: android.net.Uri
*
* @see #sendAppLinkCommand(String, Bundle)
* @see #ACTION_APP_LINK_COMMAND
*/
public static final String INTENT_KEY_CHANNEL_URI = "channel_uri";
/**
* Intent key for broadcast-independent(BI) interactive app type. It's used to send app command
* to TV app.
* <p>Type: int
*
* @see #sendAppLinkCommand(String, Bundle)
* @see #ACTION_APP_LINK_COMMAND
* @see android.media.tv.interactive.TvInteractiveAppInfo#getSupportedTypes()
* @see android.media.tv.interactive.TvInteractiveAppView#createBiInteractiveApp(Uri, Bundle)
*/
public static final String INTENT_KEY_BI_INTERACTIVE_APP_TYPE = "bi_interactive_app_type";
/**
* Intent key for broadcast-independent(BI) interactive app URI. It's used to send app command
* to TV app.
* <p>Type: android.net.Uri
*
* @see #sendAppLinkCommand(String, Bundle)
* @see #ACTION_APP_LINK_COMMAND
* @see android.media.tv.interactive.TvInteractiveAppView#createBiInteractiveApp(Uri, Bundle)
*/
public static final String INTENT_KEY_BI_INTERACTIVE_APP_URI = "bi_interactive_app_uri";
private final ITvInteractiveAppManager mService;
private final int mUserId;
@@ -358,7 +380,7 @@ public final class TvInteractiveAppManager {
@Override
public void onCommandRequest(
@TvInteractiveAppService.InteractiveAppServiceCommandType String cmdType,
@TvInteractiveAppService.PlaybackCommandType String cmdType,
Bundle parameters,
int seq) {
synchronized (mSessionCallbackRecordMap) {
@@ -559,7 +581,6 @@ public final class TvInteractiveAppManager {
* that implements {@link TvInteractiveAppService} interface.
*
* @param iAppServiceId The ID of the TV Interactive App service.
* @hide
*/
public void onInteractiveAppServiceAdded(@NonNull String iAppServiceId) {
}
@@ -571,7 +592,6 @@ public final class TvInteractiveAppManager {
* App service package.
*
* @param iAppServiceId The ID of the TV Interactive App service.
* @hide
*/
public void onInteractiveAppServiceRemoved(@NonNull String iAppServiceId) {
}
@@ -583,7 +603,6 @@ public final class TvInteractiveAppManager {
* re-installed or a newer version of the package exists becomes available/unavailable.
*
* @param iAppServiceId The ID of the TV Interactive App service.
* @hide
*/
public void onInteractiveAppServiceUpdated(@NonNull String iAppServiceId) {
}
@@ -730,8 +749,7 @@ public final class TvInteractiveAppManager {
}
/**
* Prepares TV Interactive App service for the given type.
* @hide
* Prepares TV Interactive App service environment for the given type.
*/
public void prepare(@NonNull String tvIAppServiceId, int type) {
try {
@@ -773,7 +791,6 @@ public final class TvInteractiveAppManager {
* @param tvIAppServiceId The ID of TV interactive service which the command to be sent to. The
* ID can be found in {@link TvInputInfo#getId()}.
* @param command The command to be sent.
* @hide
*/
public void sendAppLinkCommand(@NonNull String tvIAppServiceId, @NonNull Bundle command) {
try {
@@ -1565,7 +1582,7 @@ public final class TvInteractiveAppManager {
}
void postCommandRequest(
final @TvInteractiveAppService.InteractiveAppServiceCommandType String cmdType,
final @TvInteractiveAppService.PlaybackCommandType String cmdType,
final Bundle parameters) {
mHandler.post(new Runnable() {
@Override
@@ -1713,7 +1730,7 @@ public final class TvInteractiveAppManager {
*/
public void onCommandRequest(
Session session,
@TvInteractiveAppService.InteractiveAppServiceCommandType String cmdType,
@TvInteractiveAppService.PlaybackCommandType String cmdType,
Bundle parameters) {
}

View File

@@ -32,6 +32,7 @@ import android.media.tv.AdResponse;
import android.media.tv.BroadcastInfoRequest;
import android.media.tv.BroadcastInfoResponse;
import android.media.tv.TvContentRating;
import android.media.tv.TvInputInfo;
import android.media.tv.TvInputManager;
import android.media.tv.TvTrackInfo;
import android.media.tv.TvView;
@@ -97,46 +98,82 @@ public abstract class TvInteractiveAppService extends Service {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@StringDef(prefix = "INTERACTIVE_APP_SERVICE_COMMAND_TYPE_", value = {
INTERACTIVE_APP_SERVICE_COMMAND_TYPE_TUNE,
INTERACTIVE_APP_SERVICE_COMMAND_TYPE_TUNE_NEXT,
INTERACTIVE_APP_SERVICE_COMMAND_TYPE_TUNE_PREV,
INTERACTIVE_APP_SERVICE_COMMAND_TYPE_STOP,
INTERACTIVE_APP_SERVICE_COMMAND_TYPE_SET_STREAM_VOLUME,
INTERACTIVE_APP_SERVICE_COMMAND_TYPE_SELECT_TRACK
@StringDef(prefix = "PLAYBACK_COMMAND_TYPE_", value = {
PLAYBACK_COMMAND_TYPE_TUNE,
PLAYBACK_COMMAND_TYPE_TUNE_NEXT,
PLAYBACK_COMMAND_TYPE_TUNE_PREV,
PLAYBACK_COMMAND_TYPE_STOP,
PLAYBACK_COMMAND_TYPE_SET_STREAM_VOLUME,
PLAYBACK_COMMAND_TYPE_SELECT_TRACK
})
public @interface InteractiveAppServiceCommandType {}
public @interface PlaybackCommandType {}
/** @hide */
public static final String INTERACTIVE_APP_SERVICE_COMMAND_TYPE_TUNE = "tune";
/** @hide */
public static final String INTERACTIVE_APP_SERVICE_COMMAND_TYPE_TUNE_NEXT = "tune_next";
/** @hide */
public static final String INTERACTIVE_APP_SERVICE_COMMAND_TYPE_TUNE_PREV = "tune_previous";
/** @hide */
public static final String INTERACTIVE_APP_SERVICE_COMMAND_TYPE_STOP = "stop";
/** @hide */
public static final String INTERACTIVE_APP_SERVICE_COMMAND_TYPE_SET_STREAM_VOLUME =
/**
* Playback command type: tune to the given channel.
* @see #COMMAND_PARAMETER_KEY_CHANNEL_URI
*/
public static final String PLAYBACK_COMMAND_TYPE_TUNE = "tune";
/**
* Playback command type: tune to the next channel.
*/
public static final String PLAYBACK_COMMAND_TYPE_TUNE_NEXT = "tune_next";
/**
* Playback command type: tune to the previous channel.
*/
public static final String PLAYBACK_COMMAND_TYPE_TUNE_PREV = "tune_previous";
/**
* Playback command type: stop the playback.
*/
public static final String PLAYBACK_COMMAND_TYPE_STOP = "stop";
/**
* Playback command type: set the volume.
*/
public static final String PLAYBACK_COMMAND_TYPE_SET_STREAM_VOLUME =
"set_stream_volume";
/** @hide */
public static final String INTERACTIVE_APP_SERVICE_COMMAND_TYPE_SELECT_TRACK = "select_track";
/** @hide */
/**
* Playback command type: select the given track.
*/
public static final String PLAYBACK_COMMAND_TYPE_SELECT_TRACK = "select_track";
/**
* Playback command parameter: channel URI.
* <p>Type: android.net.Uri
*
* @see #PLAYBACK_COMMAND_TYPE_TUNE
*/
public static final String COMMAND_PARAMETER_KEY_CHANNEL_URI = "command_channel_uri";
/** @hide */
/**
* Playback command parameter: TV input ID.
* <p>Type: String
*
* @see TvInputInfo#getId()
*/
public static final String COMMAND_PARAMETER_KEY_INPUT_ID = "command_input_id";
/** @hide */
/**
* Playback command parameter: stream volume.
* <p>Type: float
*
* @see #PLAYBACK_COMMAND_TYPE_SET_STREAM_VOLUME
*/
public static final String COMMAND_PARAMETER_KEY_VOLUME = "command_volume";
/** @hide */
/**
* Playback command parameter: track type.
* <p>Type: int
*
* @see #PLAYBACK_COMMAND_TYPE_SELECT_TRACK
* @see TvTrackInfo#getType()
*/
public static final String COMMAND_PARAMETER_KEY_TRACK_TYPE = "command_track_type";
/** @hide */
/**
* Playback command parameter: track ID.
* <p>Type: String
*
* @see #PLAYBACK_COMMAND_TYPE_SELECT_TRACK
* @see TvTrackInfo#getId()
*/
public static final String COMMAND_PARAMETER_KEY_TRACK_ID = "command_track_id";
/** @hide */
public static final String COMMAND_PARAMETER_KEY_TRACK_SELECT_MODE =
"command_track_select_mode";
/**
* Command to quiet channel change. No channel banner or channel info is shown.
* <p>Refer to HbbTV Spec 2.0.4 chapter A.2.4.3.
* @hide
*/
public static final String COMMAND_PARAMETER_KEY_CHANGE_CHANNEL_QUIETLY =
"command_change_channel_quietly";
@@ -145,9 +182,9 @@ public abstract class TvInteractiveAppService extends Service {
private final RemoteCallbackList<ITvInteractiveAppServiceCallback> mCallbacks =
new RemoteCallbackList<>();
/** @hide */
@Override
public final IBinder onBind(Intent intent) {
@Nullable
public final IBinder onBind(@NonNull Intent intent) {
ITvInteractiveAppService.Stub tvIAppServiceBinder = new ITvInteractiveAppService.Stub() {
@Override
public void registerCallback(ITvInteractiveAppServiceCallback cb) {
@@ -210,23 +247,20 @@ public abstract class TvInteractiveAppService extends Service {
* Registers App link info.
* @hide
*/
public void onRegisterAppLinkInfo(AppLinkInfo appLinkInfo) {
// TODO: make it abstract when unhide
public void onRegisterAppLinkInfo(@NonNull AppLinkInfo appLinkInfo) {
}
/**
* Unregisters App link info.
* @hide
*/
public void onUnregisterAppLinkInfo(AppLinkInfo appLinkInfo) {
// TODO: make it abstract when unhide
public void onUnregisterAppLinkInfo(@NonNull AppLinkInfo appLinkInfo) {
}
/**
* Called when app link command is received.
*
* @see android.media.tv.interactive.TvInteractiveAppManager#sendAppLinkCommand(String, Bundle)
* @hide
*/
public void onAppLinkCommand(@NonNull Bundle command) {
}
@@ -318,7 +352,6 @@ public abstract class TvInteractiveAppService extends Service {
*
* @param enable {@code true} if you want to enable the media view. {@code false}
* otherwise.
* @hide
*/
public void setMediaViewEnabled(final boolean enable) {
mHandler.post(new Runnable() {
@@ -353,7 +386,6 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Resets TvIAppService session.
* @hide
*/
public void onResetInteractiveApp() {
}
@@ -384,43 +416,37 @@ public abstract class TvInteractiveAppService extends Service {
/**
* To toggle Digital Teletext Application if there is one in AIT app list.
* @param enable
* @hide
* @param enable {@code true} to enable teletext app; {@code false} otherwise.
*/
public void onSetTeletextAppEnabled(boolean enable) {
}
/**
* Receives current channel URI.
* @hide
*/
public void onCurrentChannelUri(@Nullable Uri channelUri) {
}
/**
* Receives logical channel number (LCN) of current channel.
* @hide
*/
public void onCurrentChannelLcn(int lcn) {
}
/**
* Receives stream volume.
* @hide
* Receives current stream volume.
*/
public void onStreamVolume(float volume) {
}
/**
* Receives track list.
* @hide
*/
public void onTrackInfoList(@NonNull List<TvTrackInfo> tracks) {
}
/**
* Receives current TV input ID.
* @hide
*/
public void onCurrentTvInputId(@Nullable String inputId) {
}
@@ -460,7 +486,6 @@ public abstract class TvInteractiveAppService extends Service {
*
* @param width The width of the media view.
* @param height The height of the media view.
* @hide
*/
public void onMediaViewSizeChanged(int width, int height) {
}
@@ -470,7 +495,6 @@ public abstract class TvInteractiveAppService extends Service {
* implementation can override this method and return its own view.
*
* @return a view attached to the media window
* @hide
*/
@Nullable
public View onCreateMediaView() {
@@ -479,10 +503,8 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Releases TvInteractiveAppService session.
* @hide
*/
public void onRelease() {
}
public abstract void onRelease();
/**
* Called when the corresponding TV input tuned to a channel.
@@ -494,49 +516,42 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Called when the corresponding TV input selected to a track.
* @hide
*/
public void onTrackSelected(int type, String trackId) {
public void onTrackSelected(@TvTrackInfo.Type int type, @NonNull String trackId) {
}
/**
* Called when the tracks are changed.
* @hide
*/
public void onTracksChanged(List<TvTrackInfo> tracks) {
public void onTracksChanged(@NonNull List<TvTrackInfo> tracks) {
}
/**
* Called when video is available.
* @hide
*/
public void onVideoAvailable() {
}
/**
* Called when video is unavailable.
* @hide
*/
public void onVideoUnavailable(int reason) {
public void onVideoUnavailable(@TvInputManager.VideoUnavailableReason int reason) {
}
/**
* Called when content is allowed.
* @hide
*/
public void onContentAllowed() {
}
/**
* Called when content is blocked.
* @hide
*/
public void onContentBlocked(TvContentRating rating) {
public void onContentBlocked(@NonNull TvContentRating rating) {
}
/**
* Called when signal strength is changed.
* @hide
*/
public void onSignalStrength(@TvInputManager.SignalStrength int strength) {
}
@@ -550,60 +565,61 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Called when an advertisement response is received.
* @hide
*/
public void onAdResponse(@NonNull AdResponse response) {
}
/**
* TODO: JavaDoc of APIs related to input events.
* @hide
*/
@Override
public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) {
return false;
}
/**
* @hide
*/
@Override
public boolean onKeyLongPress(int keyCode, @NonNull KeyEvent event) {
return false;
}
/**
* @hide
*/
@Override
public boolean onKeyMultiple(int keyCode, int count, @NonNull KeyEvent event) {
return false;
}
/**
* @hide
*/
@Override
public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) {
return false;
}
/**
* @hide
* Implement this method to handle touch screen motion events on the current session.
*
* @param event The motion event being received.
* @return If you handled the event, return {@code true}. If you want to allow the event to
* be handled by the next receiver, return {@code false}.
* @see View#onTouchEvent
*/
public boolean onTouchEvent(@NonNull MotionEvent event) {
return false;
}
/**
* @hide
* Implement this method to handle trackball events on the current session.
*
* @param event The motion event being received.
* @return If you handled the event, return {@code true}. If you want to allow the event to
* be handled by the next receiver, return {@code false}.
* @see View#onTrackballEvent
*/
public boolean onTrackballEvent(@NonNull MotionEvent event) {
return false;
}
/**
* @hide
* Implement this method to handle generic motion events on the current session.
*
* @param event The motion event being received.
* @return If you handled the event, return {@code true}. If you want to allow the event to
* be handled by the next receiver, return {@code false}.
* @see View#onGenericMotionEvent
*/
public boolean onGenericMotionEvent(@NonNull MotionEvent event) {
return false;
@@ -693,13 +709,13 @@ public abstract class TvInteractiveAppService extends Service {
}
/**
* requests a specific command to be processed by the related TV input.
* Sends a specific playback command to be processed by the related TV input.
*
* @param cmdType type of the specific command
* @param parameters parameters of the specific command
* @hide
*/
public void requestCommand(
@InteractiveAppServiceCommandType String cmdType, Bundle parameters) {
public void sendPlaybackCommandRequest(
@PlaybackCommandType @NonNull String cmdType, @Nullable Bundle parameters) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@Override
@@ -721,9 +737,8 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Sets broadcast video bounds.
* @hide
*/
public void setVideoBounds(Rect rect) {
public void setVideoBounds(@NonNull Rect rect) {
executeOrPostRunnableOnMainThread(new Runnable() {
@MainThread
@Override
@@ -744,7 +759,6 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Requests the URI of the current channel.
* @hide
*/
public void requestCurrentChannelUri() {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -767,7 +781,6 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Requests the logic channel number (LCN) of the current channel.
* @hide
*/
public void requestCurrentChannelLcn() {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -790,7 +803,6 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Requests stream volume.
* @hide
*/
public void requestStreamVolume() {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -813,7 +825,6 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Requests the list of {@link TvTrackInfo}.
* @hide
*/
public void requestTrackInfoList() {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -838,7 +849,6 @@ public abstract class TvInteractiveAppService extends Service {
* Requests current TV input ID.
*
* @see android.media.tv.TvInputInfo
* @hide
*/
public void requestCurrentTvInputId() {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -863,7 +873,6 @@ public abstract class TvInteractiveAppService extends Service {
* Sends an advertisement request to be processed by the related TV input.
*
* @param request The advertisement request
* @hide
*/
public void requestAd(@NonNull final AdRequest request) {
executeOrPostRunnableOnMainThread(new Runnable() {
@@ -1082,7 +1091,6 @@ public abstract class TvInteractiveAppService extends Service {
/**
* Notifies when the digital teletext app state is changed.
* @param state the current state.
* @hide
*/
public final void notifyTeletextAppStateChanged(
@TvInteractiveAppManager.TeletextAppState int state) {

View File

@@ -170,23 +170,20 @@ public class TvInteractiveAppView extends ViewGroup {
}
}
/** @hide */
@Override
protected void onAttachedToWindow() {
public void onAttachedToWindow() {
super.onAttachedToWindow();
createSessionMediaView();
}
/** @hide */
@Override
protected void onDetachedFromWindow() {
public void onDetachedFromWindow() {
removeSessionMediaView();
super.onDetachedFromWindow();
}
/** @hide */
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
public void onLayout(boolean changed, int left, int top, int right, int bottom) {
if (DEBUG) {
Log.d(TAG, "onLayout (left=" + left + ", top=" + top + ", right=" + right
+ ", bottom=" + bottom + ",)");
@@ -199,9 +196,8 @@ public class TvInteractiveAppView extends ViewGroup {
}
}
/** @hide */
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
mSurfaceView.measure(widthMeasureSpec, heightMeasureSpec);
int width = mSurfaceView.getMeasuredWidth();
int height = mSurfaceView.getMeasuredHeight();
@@ -211,9 +207,8 @@ public class TvInteractiveAppView extends ViewGroup {
childState << MEASURED_HEIGHT_STATE_SHIFT));
}
/** @hide */
@Override
protected void onVisibilityChanged(View changedView, int visibility) {
public void onVisibilityChanged(@NonNull View changedView, int visibility) {
super.onVisibilityChanged(changedView, visibility);
mSurfaceView.setVisibility(visibility);
if (visibility == View.VISIBLE) {
@@ -244,7 +239,6 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Resets this TvInteractiveAppView.
* @hide
*/
public void reset() {
if (DEBUG) Log.d(TAG, "reset()");
@@ -330,7 +324,11 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Dispatches an unhandled input event to the next receiver.
* @hide
*
* It gives the host application a chance to dispatch the unhandled input events.
*
* @param event The input event.
* @return {@code true} if the event was handled by the view, {@code false} otherwise.
*/
public boolean dispatchUnhandledInputEvent(@NonNull InputEvent event) {
if (mOnUnhandledInputEventListener != null) {
@@ -349,21 +347,28 @@ public class TvInteractiveAppView extends ViewGroup {
* @param event The input event.
* @return If you handled the event, return {@code true}. If you want to allow the event to be
* handled by the next receiver, return {@code false}.
* @hide
*/
public boolean onUnhandledInputEvent(@NonNull InputEvent event) {
return false;
}
/**
* Registers a callback to be invoked when an input event is not handled
* Sets a listener to be invoked when an input event is not handled
* by the TV Interactive App.
*
* @param listener The callback to be invoked when the unhandled input event is received.
* @hide
*/
public void setOnUnhandledInputEventListener(@NonNull OnUnhandledInputEventListener listener) {
public void setOnUnhandledInputEventListener(
@NonNull @CallbackExecutor Executor executor,
@NonNull OnUnhandledInputEventListener listener) {
mOnUnhandledInputEventListener = listener;
// TODO: handle CallbackExecutor
}
/**
* Clears the {@link OnUnhandledInputEventListener}.
*/
public void clearOnUnhandledInputEventListener() {
mOnUnhandledInputEventListener = null;
}
@Override
@@ -427,7 +432,6 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Resets the interactive application.
* @hide
*/
public void resetInteractiveApp() {
if (DEBUG) {
@@ -440,9 +444,11 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Sends current channel URI to related TV interactive app.
* @hide
*
* @param channelUri The current channel URI; {@code null} if there is no currently tuned
* channel.
*/
public void sendCurrentChannelUri(Uri channelUri) {
public void sendCurrentChannelUri(@Nullable Uri channelUri) {
if (DEBUG) {
Log.d(TAG, "sendCurrentChannelUri");
}
@@ -453,7 +459,6 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Sends current channel logical channel number (LCN) to related TV interactive app.
* @hide
*/
public void sendCurrentChannelLcn(int lcn) {
if (DEBUG) {
@@ -466,7 +471,6 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Sends stream volume to related TV interactive app.
* @hide
*/
public void sendStreamVolume(float volume) {
if (DEBUG) {
@@ -479,9 +483,8 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Sends track info list to related TV interactive app.
* @hide
*/
public void sendTrackInfoList(List<TvTrackInfo> tracks) {
public void sendTrackInfoList(@Nullable List<TvTrackInfo> tracks) {
if (DEBUG) {
Log.d(TAG, "sendTrackInfoList");
}
@@ -496,7 +499,6 @@ public class TvInteractiveAppView extends ViewGroup {
* @param inputId The current TV input ID whose channel is tuned. {@code null} if no channel is
* tuned.
* @see android.media.tv.TvInputInfo
* @hide
*/
public void sendCurrentTvInputId(@Nullable String inputId) {
if (DEBUG) {
@@ -588,8 +590,11 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* To toggle Digital Teletext Application if there is one in AIT app list.
* @param enable
* @hide
*
* <p>A Teletext Application is a broadcast-related application to display text and basic
* graphics.
*
* @param enable {@code true} to enable Teletext app; {@code false} to disable it.
*/
public void setTeletextAppEnabled(boolean enable) {
if (DEBUG) {
@@ -607,17 +612,17 @@ public class TvInteractiveAppView extends ViewGroup {
// TODO: unhide the following public APIs
/**
* This is called when a command is requested to be processed by the related TV input.
* This is called when a playback command is requested to be processed by the related TV
* input.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @param cmdType type of the command
* @param parameters parameters of the command
* @hide
*/
public void onCommandRequest(
public void onPlaybackCommandRequest(
@NonNull String iAppServiceId,
@NonNull @TvInteractiveAppService.InteractiveAppServiceCommandType String cmdType,
@Nullable Bundle parameters) {
@NonNull @TvInteractiveAppService.PlaybackCommandType String cmdType,
@NonNull Bundle parameters) {
}
/**
@@ -656,7 +661,6 @@ public class TvInteractiveAppView extends ViewGroup {
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @param state digital teletext app current state.
* @hide
*/
public void onTeletextAppStateChanged(
@NonNull String iAppServiceId,
@@ -664,59 +668,55 @@ public class TvInteractiveAppView extends ViewGroup {
}
/**
* This is called when {@link TvInteractiveAppService.Session#SetVideoBounds} is called.
* This is called when {@link TvInteractiveAppService.Session#setVideoBounds(Rect)} is
* called.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @hide
*/
public void onSetVideoBounds(@NonNull String iAppServiceId, @NonNull Rect rect) {
}
/**
* This is called when {@link TvInteractiveAppService.Session#RequestCurrentChannelUri} is
* This is called when {@link TvInteractiveAppService.Session#requestCurrentChannelUri()} is
* called.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @hide
*/
public void onRequestCurrentChannelUri(@NonNull String iAppServiceId) {
}
/**
* This is called when {@link TvInteractiveAppService.Session#RequestCurrentChannelLcn} is
* This is called when {@link TvInteractiveAppService.Session#requestCurrentChannelLcn()} is
* called.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @hide
*/
public void onRequestCurrentChannelLcn(@NonNull String iAppServiceId) {
}
/**
* This is called when {@link TvInteractiveAppService.Session#RequestStreamVolume} is
* This is called when {@link TvInteractiveAppService.Session#requestStreamVolume()} is
* called.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @hide
*/
public void onRequestStreamVolume(@NonNull String iAppServiceId) {
}
/**
* This is called when {@link TvInteractiveAppService.Session#RequestTrackInfoList} is
* This is called when {@link TvInteractiveAppService.Session#requestTrackInfoList()} is
* called.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @hide
*/
public void onRequestTrackInfoList(@NonNull String iAppServiceId) {
}
/**
* This is called when {@link TvIAppService.Session#RequestCurrentTvInputId} is called.
* This is called when {@link TvInteractiveAppService.Session#requestCurrentTvInputId()} is
* called.
*
* @param iAppServiceId The ID of the TV interactive app service bound to this view.
* @hide
*/
public void onRequestCurrentTvInputId(@NonNull String iAppServiceId) {
}
@@ -725,7 +725,6 @@ public class TvInteractiveAppView extends ViewGroup {
/**
* Interface definition for a callback to be invoked when the unhandled input event is received.
* @hide
*/
public interface OnUnhandledInputEventListener {
/**
@@ -818,7 +817,7 @@ public class TvInteractiveAppView extends ViewGroup {
@Override
public void onCommandRequest(
Session session,
@TvInteractiveAppService.InteractiveAppServiceCommandType String cmdType,
@TvInteractiveAppService.PlaybackCommandType String cmdType,
Bundle parameters) {
if (DEBUG) {
Log.d(TAG, "onCommandRequest (cmdType=" + cmdType + ", parameters="
@@ -833,7 +832,8 @@ public class TvInteractiveAppView extends ViewGroup {
mCallbackExecutor.execute(() -> {
synchronized (mCallbackLock) {
if (mCallback != null) {
mCallback.onCommandRequest(mIAppServiceId, cmdType, parameters);
mCallback.onPlaybackCommandRequest(
mIAppServiceId, cmdType, parameters);
}
}
});

View File

@@ -2100,7 +2100,7 @@ public class TvInteractiveAppManagerService extends SystemService {
@Override
public void onCommandRequest(
@TvInteractiveAppService.InteractiveAppServiceCommandType String cmdType,
@TvInteractiveAppService.PlaybackCommandType String cmdType,
Bundle parameters) {
synchronized (mLock) {
if (DEBUG) {