TIF: use @StringDef annotations in TvContract

Test: build
Bug: 34949964
Change-Id: I59ec8ff245f36a1981a012349892114fe26d5265
This commit is contained in:
Dongwon Kang
2017-02-03 13:19:14 -08:00
parent 6ba95dab42
commit 2c3c4036d5

View File

@@ -18,6 +18,7 @@ package android.media.tv;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringDef;
import android.annotation.SystemApi;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -29,6 +30,8 @@ import android.provider.BaseColumns;
import android.text.TextUtils;
import android.util.ArraySet;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -372,6 +375,37 @@ public final class TvContract {
/** The MIME type of a single TV channel. */
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel";
/** @hide */
@StringDef({
TYPE_OTHER,
TYPE_NTSC,
TYPE_PAL,
TYPE_SECAM,
TYPE_DVB_T,
TYPE_DVB_T2,
TYPE_DVB_S,
TYPE_DVB_S2,
TYPE_DVB_C,
TYPE_DVB_C2,
TYPE_DVB_H,
TYPE_DVB_SH,
TYPE_ATSC_T,
TYPE_ATSC_C,
TYPE_ATSC_M_H,
TYPE_ISDB_T,
TYPE_ISDB_TB,
TYPE_ISDB_S,
TYPE_ISDB_C,
TYPE_1SEG,
TYPE_DTMB,
TYPE_CMMB,
TYPE_T_DMB,
TYPE_S_DMB,
TYPE_PREVIEW,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Type {}
/**
* A generic channel type.
*
@@ -554,6 +588,15 @@ public final class TvContract {
*/
public static final String TYPE_PREVIEW = "TYPE_PREVIEW";
/** @hide */
@StringDef({
SERVICE_TYPE_OTHER,
SERVICE_TYPE_AUDIO_VIDEO,
SERVICE_TYPE_AUDIO,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ServiceType {}
/** A generic service type. */
public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
@@ -563,6 +606,22 @@ public final class TvContract {
/** The service type for radio channels that have audio only. */
public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO";
/** @hide */
@StringDef({
VIDEO_FORMAT_240P,
VIDEO_FORMAT_360P,
VIDEO_FORMAT_480I,
VIDEO_FORMAT_576I,
VIDEO_FORMAT_576P,
VIDEO_FORMAT_720P,
VIDEO_FORMAT_1080I,
VIDEO_FORMAT_1080P,
VIDEO_FORMAT_2160P,
VIDEO_FORMAT_4320P,
})
@Retention(RetentionPolicy.SOURCE)
public @interface VideoFormat {}
/** The video format for 240p. */
public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P";
@@ -596,6 +655,17 @@ public final class TvContract {
/** The video format for 4320p. */
public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P";
/** @hide */
@StringDef({
VIDEO_RESOLUTION_SD,
VIDEO_RESOLUTION_ED,
VIDEO_RESOLUTION_HD,
VIDEO_RESOLUTION_FHD,
VIDEO_RESOLUTION_UHD,
})
@Retention(RetentionPolicy.SOURCE)
public @interface VideoResolution {}
/** The video resolution for standard-definition. */
public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD";
@@ -634,7 +704,7 @@ public final class TvContract {
* @see #COLUMN_VIDEO_FORMAT
*/
@Nullable
public static final String getVideoResolution(String videoFormat) {
public static final String getVideoResolution(@VideoFormat String videoFormat) {
return VIDEO_FORMAT_TO_RESOLUTION_MAP.get(videoFormat);
}
@@ -1100,6 +1170,24 @@ public final class TvContract {
/** The MIME type of a single TV program. */
public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program";
/** @hide */
@StringDef({
TYPE_MOVIE,
TYPE_TV_SERIES,
TYPE_TV_SEASON,
TYPE_TV_EPISODE,
TYPE_CLIP,
TYPE_EVENT,
TYPE_CHANNEL,
TYPE_TRACK,
TYPE_ALBUM,
TYPE_ARTIST,
TYPE_PLAYLIST,
TYPE_STATION,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Type {}
/**
* The program type for movie.
*
@@ -1184,6 +1272,15 @@ public final class TvContract {
*/
public static final String TYPE_STATION = "TYPE_STATION";
/** @hide */
@StringDef({
WATCH_NEXT_TYPE_CONTINUE,
WATCH_NEXT_TYPE_NEXT,
WATCH_NEXT_TYPE_NEW,
})
@Retention(RetentionPolicy.SOURCE)
public @interface WatchNextType {}
/**
* The watch next type for CONTINUE.
*
@@ -1205,6 +1302,16 @@ public final class TvContract {
*/
public static final String WATCH_NEXT_TYPE_NEW = "WATCH_NEXT_TYPE_NEW";
/** @hide */
@StringDef({
ASPECT_RATIO_16_9,
ASPECT_RATIO_3_2,
ASPECT_RATIO_1_1,
ASPECT_RATIO_2_3,
})
@Retention(RetentionPolicy.SOURCE)
public @interface AspectRatio {}
/**
* The aspect ratio for 16:9.
*
@@ -1237,6 +1344,15 @@ public final class TvContract {
*/
public static final String ASPECT_RATIO_2_3 = "ASPECT_RATIO_2_3";
/** @hide */
@StringDef({
AVAILABILITY_AVAILABLE,
AVAILABILITY_FREE_WITH_SUBSCRIPTION,
AVAILABILITY_PAID_CONTENT,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Availability {}
/**
* The availability for "available to this user".
*
@@ -1260,6 +1376,19 @@ public final class TvContract {
*/
public static final String AVAILABILITY_PAID_CONTENT = "AVAILABILITY_PAID_CONTENT";
/** @hide */
@StringDef({
INTERACTION_TYPE_LISTENS,
INTERACTION_TYPE_FOLLOWERS,
INTERACTION_TYPE_FANS,
INTERACTION_TYPE_LIKES,
INTERACTION_TYPE_THUMBS,
INTERACTION_TYPE_VIEWS,
INTERACTION_TYPE_VIEWERS,
})
@Retention(RetentionPolicy.SOURCE)
public @interface InteractionType {}
/**
* The interaction type for "listens".
*
@@ -1309,6 +1438,15 @@ public final class TvContract {
*/
public static final String INTERACTION_TYPE_VIEWERS = "INTERACTION_TYPE_VIEWERS";
/** @hide */
@StringDef({
REVIEW_RATING_STYLE_STARS,
REVIEW_RATING_STYLE_THUMBS_UP_DOWN,
REVIEW_RATING_STYLE_PERCENTAGE,
})
@Retention(RetentionPolicy.SOURCE)
public @interface ReviewRatingStyle {}
/**
* The review rating style for five star rating.
*
@@ -1994,6 +2132,29 @@ public final class TvContract {
/** Canonical genres for TV programs. */
public static final class Genres {
/** @hide */
@StringDef({
FAMILY_KIDS,
SPORTS,
SHOPPING,
MOVIES,
COMEDY,
TRAVEL,
DRAMA,
EDUCATION,
ANIMAL_WILDLIFE,
NEWS,
GAMING,
ARTS,
ENTERTAINMENT,
LIFE_STYLE,
MUSIC,
PREMIER,
TECH_SCIENCE,
})
@Retention(RetentionPolicy.SOURCE)
public @interface Genre {}
/** The genre for Family/Kids. */
public static final String FAMILY_KIDS = "FAMILY_KIDS";
@@ -2081,7 +2242,7 @@ public final class TvContract {
* @return an encoded genre string that can be inserted into the
* {@link #COLUMN_BROADCAST_GENRE} or {@link #COLUMN_CANONICAL_GENRE} column.
*/
public static String encode(@NonNull String... genres) {
public static String encode(@NonNull @Genre String... genres) {
if (genres == null) {
// MNC and before will throw a NPE.
return null;
@@ -2120,7 +2281,7 @@ public final class TvContract {
* {@link #COLUMN_BROADCAST_GENRE} or {@link #COLUMN_CANONICAL_GENRE} column.
* @return genre strings.
*/
public static String[] decode(@NonNull String genres) {
public static @Genre String[] decode(@NonNull String genres) {
if (TextUtils.isEmpty(genres)) {
// MNC and before will throw a NPE for {@code null} genres.
return EMPTY_STRING_ARRAY;