diff --git a/api/current.txt b/api/current.txt index 9df1764380f4a..a4c933fef7f63 100644 --- a/api/current.txt +++ b/api/current.txt @@ -24096,6 +24096,7 @@ package android.media.tv { field public static final java.lang.String COLUMN_AUTHOR = "author"; field public static final java.lang.String COLUMN_AVAILABILITY = "availability"; field public static final java.lang.String COLUMN_BROADCAST_GENRE = "broadcast_genre"; + field public static final java.lang.String COLUMN_BROWSABLE = "browsable"; field public static final java.lang.String COLUMN_DURATION_MILLIS = "duration_millis"; field public static final java.lang.String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis"; field public static final deprecated java.lang.String COLUMN_EPISODE_NUMBER = "episode_number"; @@ -24238,11 +24239,13 @@ package android.media.tv { field public static final java.lang.String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED"; field public static final java.lang.String ACTION_MAKE_CHANNEL_BROWSABLE = "android.media.tv.action.MAKE_CHANNEL_BROWSABLE"; field public static final java.lang.String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED"; + field public static final java.lang.String ACTION_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PROGRAM_BROWSABLE_DISABLED"; field public static final java.lang.String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS"; field public static final java.lang.String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS"; field public static final java.lang.String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES"; field public static final java.lang.String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID"; field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME"; + field public static final java.lang.String EXTRA_PROGRAM_ID = "android.media.tv.extra.PROGRAM_ID"; field public static final int INPUT_STATE_CONNECTED = 0; // 0x0 field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1 field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2 diff --git a/api/system-current.txt b/api/system-current.txt index eed1718f299de..a806153962c9e 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -25885,6 +25885,7 @@ package android.media.tv { field public static final java.lang.String COLUMN_AUTHOR = "author"; field public static final java.lang.String COLUMN_AVAILABILITY = "availability"; field public static final java.lang.String COLUMN_BROADCAST_GENRE = "broadcast_genre"; + field public static final java.lang.String COLUMN_BROWSABLE = "browsable"; field public static final java.lang.String COLUMN_DURATION_MILLIS = "duration_millis"; field public static final java.lang.String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis"; field public static final deprecated java.lang.String COLUMN_EPISODE_NUMBER = "episode_number"; @@ -26108,11 +26109,13 @@ package android.media.tv { field public static final java.lang.String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED"; field public static final java.lang.String ACTION_MAKE_CHANNEL_BROWSABLE = "android.media.tv.action.MAKE_CHANNEL_BROWSABLE"; field public static final java.lang.String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED"; + field public static final java.lang.String ACTION_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PROGRAM_BROWSABLE_DISABLED"; field public static final java.lang.String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS"; field public static final java.lang.String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS"; field public static final java.lang.String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES"; field public static final java.lang.String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID"; field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME"; + field public static final java.lang.String EXTRA_PROGRAM_ID = "android.media.tv.extra.PROGRAM_ID"; field public static final int INPUT_STATE_CONNECTED = 0; // 0x0 field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1 field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2 diff --git a/api/test-current.txt b/api/test-current.txt index 114060d6a116a..b47331b42c008 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -24189,6 +24189,7 @@ package android.media.tv { field public static final java.lang.String COLUMN_AUTHOR = "author"; field public static final java.lang.String COLUMN_AVAILABILITY = "availability"; field public static final java.lang.String COLUMN_BROADCAST_GENRE = "broadcast_genre"; + field public static final java.lang.String COLUMN_BROWSABLE = "browsable"; field public static final java.lang.String COLUMN_DURATION_MILLIS = "duration_millis"; field public static final java.lang.String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis"; field public static final deprecated java.lang.String COLUMN_EPISODE_NUMBER = "episode_number"; @@ -24331,11 +24332,13 @@ package android.media.tv { field public static final java.lang.String ACTION_BLOCKED_RATINGS_CHANGED = "android.media.tv.action.BLOCKED_RATINGS_CHANGED"; field public static final java.lang.String ACTION_MAKE_CHANNEL_BROWSABLE = "android.media.tv.action.MAKE_CHANNEL_BROWSABLE"; field public static final java.lang.String ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED = "android.media.tv.action.PARENTAL_CONTROLS_ENABLED_CHANGED"; + field public static final java.lang.String ACTION_PROGRAM_BROWSABLE_DISABLED = "android.media.tv.action.PROGRAM_BROWSABLE_DISABLED"; field public static final java.lang.String ACTION_QUERY_CONTENT_RATING_SYSTEMS = "android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS"; field public static final java.lang.String ACTION_SETUP_INPUTS = "android.media.tv.action.SETUP_INPUTS"; field public static final java.lang.String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES"; field public static final java.lang.String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID"; field public static final java.lang.String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME"; + field public static final java.lang.String EXTRA_PROGRAM_ID = "android.media.tv.extra.PROGRAM_ID"; field public static final int INPUT_STATE_CONNECTED = 0; // 0x0 field public static final int INPUT_STATE_CONNECTED_STANDBY = 1; // 0x1 field public static final int INPUT_STATE_DISCONNECTED = 2; // 0x2 diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java index ddbd542ec0378..45f88f3b2ac63 100644 --- a/media/java/android/media/tv/TvContract.java +++ b/media/java/android/media/tv/TvContract.java @@ -1976,6 +1976,24 @@ public final class TvContract { */ public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited"; + /** + * The flag indicating whether this TV program is browsable or not. + * + *

This column can only be set by system apps. For other applications, it is a read-only + * column. Trying to modify it may cause {@link SecurityException}. + * + *

A value of 1 indicates that the program is browsable and can be shown to users in + * the UI. A value of 0 indicates that the program should be hidden from users and the + * application who changes this value to 0 should send + * {@link TvInputManager#ACTION_PROGRAM_BROWSABLE_DISABLED} to the owner of the program + * to notify this change. + * + *

This value is set to 1 (browsable) by default. + * + *

Type: INTEGER (boolean) + */ + public static final String COLUMN_BROWSABLE = "browsable"; + /** * The internal ID used by individual TV input services. * diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java index b630270f26160..4c2b031d8f041 100644 --- a/media/java/android/media/tv/TvInputManager.java +++ b/media/java/android/media/tv/TvInputManager.java @@ -324,24 +324,40 @@ public final class TvInputManager { public static final String ACTION_VIEW_RECORDING_SCHEDULES = "android.media.tv.action.VIEW_RECORDING_SCHEDULES"; + /** + * Action sent by the system to tell the target TV input that one of its program's browsable + * state is disabled, i.e., it will no longer be shown to users, which, for example, might + * be a result of users' interaction with UI. + * + *

The intent must contain the following bundle parameter: + *

+ */ + public static final String ACTION_PROGRAM_BROWSABLE_DISABLED = + "android.media.tv.action.PROGRAM_BROWSABLE_DISABLED"; + /** * Action sent by an application telling the system to set the given channel as browsable. * *

The intent must contain the following bundle parameters: *

*/ public static final String ACTION_MAKE_CHANNEL_BROWSABLE = "android.media.tv.action.MAKE_CHANNEL_BROWSABLE"; - /** The key for a bundle parameter containing a channel ID as an integer */ + /** The key for a bundle parameter containing a channel ID as a long integer */ public static final String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID"; /** The key for a bundle parameter containing a package name as a string. */ public static final String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME"; + /** The key for a bundle parameter containing a program ID as a long integer */ + public static final String EXTRA_PROGRAM_ID = "android.media.tv.extra.PROGRAM_ID"; + private final ITvInputManager mService; private final Object mLock = new Object();