183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang/* 283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Copyright (C) 2017 The Android Open Source Project 383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Licensed under the Apache License, Version 2.0 (the "License"); 583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * you may not use this file except in compliance with the License. 683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * You may obtain a copy of the License at 783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * http://www.apache.org/licenses/LICENSE-2.0 983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Unless required by applicable law or agreed to in writing, software 1183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * distributed under the License is distributed on an "AS IS" BASIS, 1283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * See the License for the specific language governing permissions and 1483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * limitations under the License. 1583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangpackage android.support.media.tv; 1883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; 2083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 21c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kangimport android.app.Activity; 2283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.content.ComponentName; 2383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.content.ContentResolver; 2483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.content.ContentUris; 25c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kangimport android.content.Context; 2683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.content.Intent; 2783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.media.tv.TvContentRating; 2883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.media.tv.TvContract; 2983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.net.Uri; 30b30fefbedf4564400015b61f991607eae61d16d0Dongwon Kangimport android.os.Build; 310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kangimport android.os.Bundle; 3283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.provider.BaseColumns; 33407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kangimport android.support.annotation.IntDef; 3483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.support.annotation.NonNull; 3583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.support.annotation.Nullable; 36b30fefbedf4564400015b61f991607eae61d16d0Dongwon Kangimport android.support.annotation.RequiresApi; 3783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.support.annotation.RestrictTo; 38acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kangimport android.support.annotation.StringDef; 390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kangimport android.support.media.tv.TvContractCompat.Programs.Genres; 4083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport android.text.TextUtils; 4183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 42acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kangimport java.lang.annotation.Retention; 43acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kangimport java.lang.annotation.RetentionPolicy; 4483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport java.util.ArrayList; 4583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport java.util.HashMap; 4683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport java.util.HashSet; 4783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport java.util.List; 4883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangimport java.util.Map; 4983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 5083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang/** 5183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The contract between the TV provider and applications. Contains definitions for the supported 5283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * URIs and columns. 5383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <h3>Overview</h3> 5483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 5583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>TvContract defines a basic database of TV content metadata such as channel and program 5683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * information. The information is stored in {@link Channels} and {@link Programs} tables. 5783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 5883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <ul> 5983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>A row in the {@link Channels} table represents information about a TV channel. The data 6083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * format can vary greatly from standard to standard or according to service provider, thus 6183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * the columns here are mostly comprised of basic entities that are usually seen to users 6283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * regardless of standard such as channel number and name.</li> 6383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>A row in the {@link Programs} table represents a set of data describing a TV program such 6483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * as program title and start time.</li> 6583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * </ul> 6683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kangpublic final class TvContractCompat { 6883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The authority for the TV provider. */ 6983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String AUTHORITY = "android.media.tv"; 7083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 7183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Permission to read TV listings. This is required to read all the TV channel and program 7383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * information available on the system. 7483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 7583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 7783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PERMISSION_READ_TV_LISTINGS = "android.permission.READ_TV_LISTINGS"; 7883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 7983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String PATH_CHANNEL = "channel"; 8083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String PATH_PROGRAM = "program"; 8183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String PATH_RECORDED_PROGRAM = "recorded_program"; 820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private static final String PATH_PREVIEW_PROGRAM = "preview_program"; 830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private static final String PATH_WATCH_NEXT_PROGRAM = "watch_next_program"; 8483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String PATH_PASSTHROUGH = "passthrough"; 8583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 8683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 87c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * Broadcast Action: sent when an application requests the system to make the given channel 88c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * browsable. The operation is performed in the background without user interaction. This 89c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * is only relevant to channels with {@link Channels#TYPE_PREVIEW} type. 900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The intent must contain the following bundle parameters: 920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_CHANNEL_ID}: ID for the {@link Channels#TYPE_PREVIEW} channel as a long 940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * integer.</li> 950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_PACKAGE_NAME}: the package name of the requesting application.</li> 960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 97c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @hide 98c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang */ 99c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang @RestrictTo(LIBRARY_GROUP) 100c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang public static final String ACTION_CHANNEL_BROWSABLE_REQUESTED = 101c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang "android.media.tv.action.CHANNEL_BROWSABLE_REQUESTED"; 102c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang 103c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang /** 104c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * Activity Action: sent by an application telling the system to make the given channel 105c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * browsable with user interaction. The system may show UI to ask user to approve the channel. 106c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * This is only relevant to channels with {@link Channels#TYPE_PREVIEW} type. Use 107c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * {@link Activity#startActivityForResult} to get the result of the request. 108c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 109c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <p>The intent must contain the following bundle parameters: 110c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <ul> 111c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <li>{@link #EXTRA_CHANNEL_ID}: ID for the {@link Channels#TYPE_PREVIEW} channel as a long 112c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * integer.</li> 113c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * </ul> 1140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 115c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang public static final String ACTION_REQUEST_CHANNEL_BROWSABLE = 116c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang "android.media.tv.action.REQUEST_CHANNEL_BROWSABLE"; 1170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 1190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Broadcast Action: sent by the system to tell the target TV input that one of its preview 1200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * program's browsable state is disabled, i.e., it will no longer be shown to users, which, for 1210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * example, might be a result of users' interaction with UI. The input is expected to delete the 1220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * preview program from the content provider. 1230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 1240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The intent must contain the following bundle parameter: 1250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 1260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_PREVIEW_PROGRAM_ID}: the disabled preview program ID.</li> 1270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 1280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED = 1300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "android.media.tv.action.PREVIEW_PROGRAM_BROWSABLE_DISABLED"; 1310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 1330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Broadcast Action: sent by the system to tell the target TV input that one of its "watch next" 1340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * program's browsable state is disabled, i.e., it will no longer be shown to users, which, for 1350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * example, might be a result of users' interaction with UI. The input is expected to delete the 1360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * "watch next" program from the content provider. 1370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 1380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The intent must contain the following bundle parameter: 1390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 1400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_WATCH_NEXT_PROGRAM_ID}: the disabled "watch next" program ID.</li> 1410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 1420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED = 1440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "android.media.tv.action.WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED"; 1450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 1470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Broadcast Action: sent by the system to tell the target TV input that one of its existing 1480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * preview programs is added to the watch next programs table by user. 1490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 1500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The intent must contain the following bundle parameters: 1510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 1520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_PREVIEW_PROGRAM_ID}: the ID of the existing preview program.</li> 1530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_WATCH_NEXT_PROGRAM_ID}: the ID of the new watch next program.</li> 1540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 1550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT = 1570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "android.media.tv.action.PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT"; 1580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 159df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen /** 160df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * Broadcast Action: sent to the target TV input after it is first installed to notify the input 161df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * to initialize its channels and programs to the system content provider. 162df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * 163df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * <p>Note that this intent is sent only on devices with 164df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * {@link android.content.pm.PackageManager#FEATURE_LEANBACK} enabled. Besides that, in order 165df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * to receive this intent, the target TV input must: 166df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * <ul> 167df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * <li>Declare a broadcast receiver for this intent in its 168df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * <code>AndroidManifest.xml</code>.</li> 169df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * <li>Declare appropriate permissions to write channel and program data in its 170df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * <code>AndroidManifest.xml</code>.</li> 171df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen * </ul> 172df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen */ 173df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen public static final String ACTION_INITIALIZE_PROGRAMS = 174df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen "android.media.tv.action.INITIALIZE_PROGRAMS"; 175df6aff0a9d4805140ffe6304d8ff46e8460ab889Conrad Chen 176c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang /** 177c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * The key for a bundle parameter containing a channel ID as a long integer 178c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang */ 1790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_CHANNEL_ID = "android.media.tv.extra.CHANNEL_ID"; 1800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 181c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang /** 182c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * The key for a bundle parameter containing a package name as a string. 183c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @hide 184c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang */ 185c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang @RestrictTo(LIBRARY_GROUP) 1860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_PACKAGE_NAME = "android.media.tv.extra.PACKAGE_NAME"; 1870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The key for a bundle parameter containing a program ID as a long integer. */ 1890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_PREVIEW_PROGRAM_ID = 1900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "android.media.tv.extra.PREVIEW_PROGRAM_ID"; 1910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The key for a bundle parameter containing a watch next program ID as a long integer. */ 1930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_WATCH_NEXT_PROGRAM_ID = 1940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "android.media.tv.extra.WATCH_NEXT_PROGRAM_ID"; 1950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 1960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 1970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The method name to get existing columns in the given table of the specified content provider. 1980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 1990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The method caller must provide the following parameter: 2000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 2010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@code arg}: The content URI of the target table as a {@link String}.</li> 2020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 2030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>On success, the returned {@link android.os.Bundle} will include existing column names 2050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * with the key {@link #EXTRA_EXISTING_COLUMN_NAMES}. Otherwise, the return value will be 2060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code null}. 2070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see ContentResolver#call(Uri, String, String, Bundle) 2090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #EXTRA_EXISTING_COLUMN_NAMES 2100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 2110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 2130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String METHOD_GET_COLUMNS = "get_columns"; 2140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 2160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The method name to add a new column in the given table of the specified content provider. 2170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The method caller must provide the following parameter: 2190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 2200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@code arg}: The content URI of the target table as a {@link String}.</li> 2210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@code extra}: Name, data type, and default value of the new column in a Bundle: 2220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 2230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_COLUMN_NAME} the column name as a {@link String}.</li> 2240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_DATA_TYPE} the data type as a {@link String}.</li> 2250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #EXTRA_DEFAULT_VALUE} the default value as a {@link String}. 2260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (optional)</li> 2270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 2280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 2290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 2300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>On success, the returned {@link android.os.Bundle} will include current colum names after 2320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the addition operation with the key {@link #EXTRA_EXISTING_COLUMN_NAMES}. Otherwise, the 2330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * return value will be {@code null}. 2340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see ContentResolver#call(Uri, String, String, Bundle) 2360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #EXTRA_COLUMN_NAME 2370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #EXTRA_DATA_TYPE 2380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #EXTRA_DEFAULT_VALUE 2390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #EXTRA_EXISTING_COLUMN_NAMES 2400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 2410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 2430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String METHOD_ADD_COLUMN = "add_column"; 2440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 2460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The key for a returned {@link Bundle} value containing existing column names in the given 2470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * table as an {@link ArrayList} of {@link String}. 2480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #METHOD_GET_COLUMNS 2500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #METHOD_ADD_COLUMN 2510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 2520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 2540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_EXISTING_COLUMN_NAMES = 2550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "android.media.tv.extra.EXISTING_COLUMN_NAMES"; 2560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 2580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The key for a {@link Bundle} parameter containing the new column name to be added in the 2590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * given table as a non-empty {@link CharSequence}. 2600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #METHOD_ADD_COLUMN 2620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 2630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 2650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_COLUMN_NAME = "android.media.tv.extra.COLUMN_NAME"; 2660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 2680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The key for a {@link Bundle} parameter containing the data type of the new column to be added 2690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * in the given table as a non-empty {@link CharSequence}, which should be one of the following 2700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * values: {@code "TEXT"}, {@code "INTEGER"}, {@code "REAL"}, or {@code "BLOB"}. 2710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #METHOD_ADD_COLUMN 2730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 2740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 2760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_DATA_TYPE = "android.media.tv.extra.DATA_TYPE"; 2770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 2790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The key for a {@link Bundle} parameter containing the default value of the new column to be 2800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * added in the given table as a {@link CharSequence}, which represents a valid default value 2810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * according to the data type provided with {@link #EXTRA_DATA_TYPE}. 2820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #METHOD_ADD_COLUMN 2840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 2850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 2870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String EXTRA_DEFAULT_VALUE = "android.media.tv.extra.DEFAULT_VALUE"; 2880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 29083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * An optional query, update or delete URI parameter that allows the caller to specify TV input 29183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * ID to filter channels. 29283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 29383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 29483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 29583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PARAM_INPUT = "input"; 29683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 29783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 29883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * An optional query, update or delete URI parameter that allows the caller to specify channel 29983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * ID to filter programs. 30083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 30183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 30283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 30383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PARAM_CHANNEL = "channel"; 30483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 30583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 30683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * An optional query, update or delete URI parameter that allows the caller to specify start 30783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * time (in milliseconds since the epoch) to filter programs. 30883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 30983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 31083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 31183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PARAM_START_TIME = "start_time"; 31283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 31383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 31483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * An optional query, update or delete URI parameter that allows the caller to specify end time 31583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * (in milliseconds since the epoch) to filter programs. 31683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 31783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 31883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 31983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PARAM_END_TIME = "end_time"; 32083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 32183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 32283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * A query, update or delete URI parameter that allows the caller to operate on all or 32383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * browsable-only channels. If set to "true", the rows that contain non-browsable channels are 32483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * not affected. 32583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 32683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 32783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 32883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PARAM_BROWSABLE_ONLY = "browsable_only"; 32983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 33083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 33183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * A optional query, update or delete URI parameter that allows the caller to specify canonical 33283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * genre to filter programs. 33383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @hide 33483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 33583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang @RestrictTo(LIBRARY_GROUP) 33683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PARAM_CANONICAL_GENRE = "canonical_genre"; 33783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 33883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 33983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds an ID that uniquely identifies a TV input service. 34083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 34183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param name The {@link ComponentName} of the TV input service to build ID for. 34283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return the ID for the given TV input service. 34383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 34483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static String buildInputId(ComponentName name) { 34583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildInputId(name); 34683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 34783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 34883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 34983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to a specific channel. 35083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 35183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelId The ID of the channel to point to. 35283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 35383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildChannelUri(long channelId) { 35483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildChannelUri(channelId); 35583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 35683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 35783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 35883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Build a special channel URI intended to be used with pass-through inputs. (e.g. HDMI) 35983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 36083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param inputId The ID of the pass-through input to build a channels URI for. 36183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 36283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildChannelUriForPassthroughInput(String inputId) { 36383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildChannelUriForPassthroughInput(inputId); 36483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 36583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 36683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 36783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to a channel logo. See {@link Channels.Logo}. 36883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 36983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelId The ID of the channel whose logo is pointed to. 37083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 37183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildChannelLogoUri(long channelId) { 37283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildChannelLogoUri(channelId); 37383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 37483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 37583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 37683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to a channel logo. See {@link Channels.Logo}. 37783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 37883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelUri The URI of the channel whose logo is pointed to. 37983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 38083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildChannelLogoUri(Uri channelUri) { 38183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildChannelLogoUri(channelUri); 38283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 38383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 38483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 38583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to all channels from a given TV input. 38683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 38783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param inputId The ID of the TV input to build a channels URI for. If {@code null}, builds a 38883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * URI for all the TV inputs. 38983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 39083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildChannelsUriForInput(@Nullable String inputId) { 39183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildChannelsUriForInput(inputId); 39283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 39383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 39483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 39583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to a specific program. 39683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 39783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param programId The ID of the program to point to. 39883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 39983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildProgramUri(long programId) { 40083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildProgramUri(programId); 40183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 40283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 40383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 40483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to all programs on a given channel. 40583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 40683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelId The ID of the channel to return programs for. 40783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 40883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildProgramsUriForChannel(long channelId) { 40983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildProgramsUriForChannel(channelId); 41083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 41183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 41283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 41383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to all programs on a given channel. 41483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 41583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelUri The URI of the channel to return programs for. 41683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 41783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildProgramsUriForChannel(Uri channelUri) { 41883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildProgramsUriForChannel(channelUri); 41983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 42083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 42183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 42283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to programs on a specific channel whose schedules overlap with the 42383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * given time frame. 42483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 42583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelId The ID of the channel to return programs for. 42683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param startTime The start time used to filter programs. The returned programs should have 42783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link Programs#COLUMN_END_TIME_UTC_MILLIS} that is greater than this time. 42883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param endTime The end time used to filter programs. The returned programs should have 42983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link Programs#COLUMN_START_TIME_UTC_MILLIS} that is less than this time. 43083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 43183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildProgramsUriForChannel(long channelId, long startTime, 43283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang long endTime) { 43383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildProgramsUriForChannel(channelId, startTime, endTime); 43483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 43583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 43683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 43783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to programs on a specific channel whose schedules overlap with the 43883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * given time frame. 43983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 44083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param channelUri The URI of the channel to return programs for. 44183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param startTime The start time used to filter programs. The returned programs should have 44283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link Programs#COLUMN_END_TIME_UTC_MILLIS} that is greater than this time. 44383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param endTime The end time used to filter programs. The returned programs should have 44483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link Programs#COLUMN_START_TIME_UTC_MILLIS} that is less than this time. 44583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 44683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildProgramsUriForChannel(Uri channelUri, long startTime, 44783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang long endTime) { 44883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildProgramsUriForChannel(channelUri, startTime, endTime); 44983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 45083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 45183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 45283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Builds a URI that points to a specific recorded program. 45383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 45483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param recordedProgramId The ID of the recorded program to point to. 45583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 45683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static Uri buildRecordedProgramUri(long recordedProgramId) { 45783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (android.os.Build.VERSION.SDK_INT >= 24) { 45883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.buildRecordedProgramUri(recordedProgramId); 45983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } else { 46083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return ContentUris.withAppendedId(RecordedPrograms.CONTENT_URI, recordedProgramId); 46183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 46283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 46383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 4640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 4650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Builds a URI that points to a specific preview program. 4660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 4670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @param previewProgramId The ID of the preview program to point to. 4680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 4690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static Uri buildPreviewProgramUri(long previewProgramId) { 4700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang return ContentUris.withAppendedId(PreviewPrograms.CONTENT_URI, previewProgramId); 4710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 4720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 4730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 4740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Builds a URI that points to all preview programs on a given channel. 4750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 4760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @param channelId The ID of the channel to return preview programs for. 4770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 4780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static Uri buildPreviewProgramsUriForChannel(long channelId) { 4790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang return PreviewPrograms.CONTENT_URI.buildUpon() 4800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang .appendQueryParameter(PARAM_CHANNEL, String.valueOf(channelId)).build(); 4810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 4820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 4830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 4840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Builds a URI that points to all preview programs on a given channel. 4850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 4860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @param channelUri The URI of the channel to return preview programs for. 4870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 4880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static Uri buildPreviewProgramsUriForChannel(Uri channelUri) { 4890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang if (!isChannelUriForTunerInput(channelUri)) { 4900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang throw new IllegalArgumentException("Not a channel: " + channelUri); 4910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 4920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang return buildPreviewProgramsUriForChannel(ContentUris.parseId(channelUri)); 4930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 4940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 4950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 4960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Builds a URI that points to a specific watch next program. 4970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 4980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @param watchNextProgramId The ID of the watch next program to point to. 4990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 5000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static Uri buildWatchNextProgramUri(long watchNextProgramId) { 5010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang return ContentUris.withAppendedId(WatchNextPrograms.CONTENT_URI, watchNextProgramId); 5020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 5030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 50483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static boolean isTvUri(Uri uri) { 50583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return uri != null && ContentResolver.SCHEME_CONTENT.equals(uri.getScheme()) 50683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang && AUTHORITY.equals(uri.getAuthority()); 50783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 50883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 50983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static boolean isTwoSegmentUriStartingWith(Uri uri, String pathSegment) { 51083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang List<String> pathSegments = uri.getPathSegments(); 51183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return pathSegments.size() == 2 && pathSegment.equals(pathSegments.get(0)); 51283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 51383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 51483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 51583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Returns {@code true}, if {@code uri} is a channel URI. 51683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 51783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static boolean isChannelUri(Uri uri) { 51883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (android.os.Build.VERSION.SDK_INT >= 24) { 51983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.isChannelUri(uri); 52083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } else { 52183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return isChannelUriForTunerInput(uri) || isChannelUriForPassthroughInput(uri); 52283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 52383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 52483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 52583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 52683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Returns {@code true}, if {@code uri} is a channel URI for a tuner input. 52783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 52883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static boolean isChannelUriForTunerInput(Uri uri) { 52983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (android.os.Build.VERSION.SDK_INT >= 24) { 53083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.isChannelUriForTunerInput(uri); 53183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } else { 53283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return isTvUri(uri) && isTwoSegmentUriStartingWith(uri, PATH_CHANNEL); 53383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 53483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 53583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 53683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 53783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Returns {@code true}, if {@code uri} is a channel URI for a pass-through input. 53883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 53983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static boolean isChannelUriForPassthroughInput(Uri uri) { 54083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (android.os.Build.VERSION.SDK_INT >= 24) { 54183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.isChannelUriForPassthroughInput(uri); 54283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } else { 54383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return isTvUri(uri) && isTwoSegmentUriStartingWith(uri, PATH_PASSTHROUGH); 54483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 54583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 54683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 54783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 54883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Returns {@code true}, if {@code uri} is a program URI. 54983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 55083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static boolean isProgramUri(Uri uri) { 55183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (android.os.Build.VERSION.SDK_INT >= 24) { 55283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return TvContract.isProgramUri(uri); 55383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } else { 55483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return isTvUri(uri) && isTwoSegmentUriStartingWith(uri, PATH_PROGRAM); 55583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 55683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 55783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 558c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang /** 559c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * Requests to make a channel browsable. 560c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 561c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <p>Once called, the system will review the request and make the channel browsable based on 562c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * its policy. The first request from a package is guaranteed to be approved. This is only 563c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * relevant to channels with {@link Channels#TYPE_PREVIEW} type. 564c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 565c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <p>No-op on devices prior to {@link android.os.Build.VERSION_CODES#O}. 566c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 567c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @param context The context for accessing content provider. 568c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @param channelId The channel ID to be browsable. 569c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @see Channels#COLUMN_BROWSABLE 570c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang */ 571b30fefbedf4564400015b61f991607eae61d16d0Dongwon Kang @RequiresApi(api = 26) 572c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang public static void requestChannelBrowsable(Context context, long channelId) { 573b30fefbedf4564400015b61f991607eae61d16d0Dongwon Kang if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 574c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang TvContract.requestChannelBrowsable(context, channelId); 575c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang } 576c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang } 57783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 57883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private TvContractCompat() {} 57983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 58083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 58183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Common base for the tables of TV channels/programs. 58283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 58383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public interface BaseTvColumns extends BaseColumns { 58483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 58583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The name of the package that owns the current row. 58683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 58783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>The TV provider fills in this column with the name of the package that provides the 58883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * initial data of the row. If the package is later uninstalled, the rows it owns are 58983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * automatically removed from the tables. 59083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 59183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 59283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 59383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String COLUMN_PACKAGE_NAME = "package_name"; 59483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 59583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 5960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 5970cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * Common columns for the tables of TV programs. 5980cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * @hide 5990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 6000cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang @RestrictTo(LIBRARY_GROUP) 6010cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang interface ProgramColumns { 6029b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** @hide */ 6039b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen @IntDef({ 6049b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen REVIEW_RATING_STYLE_STARS, 6059b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen REVIEW_RATING_STYLE_THUMBS_UP_DOWN, 6069b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen REVIEW_RATING_STYLE_PERCENTAGE, 6079b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen }) 6089b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen @Retention(RetentionPolicy.SOURCE) 6099b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen @RestrictTo(LIBRARY_GROUP) 6109b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen @interface ReviewRatingStyle {} 6119b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 6129b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 6139b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating style for five star rating. 6149b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 6159b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 6169b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 6179b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen int REVIEW_RATING_STYLE_STARS = 0; 6189b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 6199b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 6209b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating style for thumbs-up and thumbs-down rating. 6219b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 6229b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 6239b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 6249b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; 6259b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 6269b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 6279b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating style for 0 to 100 point system. 6289b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 6299b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 6309b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 6319b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen int REVIEW_RATING_STYLE_PERCENTAGE = 2; 6329b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 63383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The title of this TV program. 63583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>If this program is an episodic TV show, it is recommended that the title is the series 6370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * title and its related fields ({@link #COLUMN_SEASON_TITLE} and/or 6380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_SEASON_DISPLAY_NUMBER}, {@link #COLUMN_SEASON_DISPLAY_NUMBER}, 6390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_EPISODE_DISPLAY_NUMBER}, and {@link #COLUMN_EPISODE_TITLE}) are filled in. 64083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 64283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_TITLE = "title"; 64483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 64583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The season display number of this TV program for episodic TV shows. 64783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to indicate the season number. (e.g. 1, 2 or 3) Note that the value 6490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * does not necessarily be numeric. (e.g. 12B) 65083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 65483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number"; 65683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 65783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The title of the season for this TV program for episodic TV shows. 65983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is an optional field supplied only when the season has a special title 6610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (e.g. The Final Season). If provided, the applications should display it instead of 6620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_SEASON_DISPLAY_NUMBER}, and should display it without alterations. 6630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (e.g. for "The Final Season", displayed string should be "The Final Season", not 6640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * "Season The Final Season"). When displaying multiple programs, the order should be based 6650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * on {@link #COLUMN_SEASON_DISPLAY_NUMBER}, even when {@link #COLUMN_SEASON_TITLE} exists. 6660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 67083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SEASON_TITLE = "season_title"; 67283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 67383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The episode display number of this TV program for episodic TV shows. 67583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to indicate the episode number. (e.g. 1, 2 or 3) Note that the value 6770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * does not necessarily be numeric. (e.g. 12B) 6780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 68283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number"; 68483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 68583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The episode title of this TV program for episodic TV shows. 68783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 69183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_EPISODE_TITLE = "episode_title"; 69383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 69483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated canonical genre string of this TV program. 69683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Canonical genres are defined in {@link Genres}. Use {@link Genres#encode} to create a 6980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * text that can be stored in this column. Use {@link Genres#decode} to get the canonical 6990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * genre strings from the text stored in the column. 7000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 7020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres 7030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#encode 7040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#decode 70583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_CANONICAL_GENRE = "canonical_genre"; 70783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 70883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The short description of this TV program that is displayed to the user by default. 71083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is recommended to limit the length of the descriptions to 256 characters. 7120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 71483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SHORT_DESCRIPTION = "short_description"; 71683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 71783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The detailed, lengthy description of this TV program that is displayed only when the user 7190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * wants to see more information. 72083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>TV input services should leave this field empty if they have no additional details 7220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * beyond {@link #COLUMN_SHORT_DESCRIPTION}. 7230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 72583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LONG_DESCRIPTION = "long_description"; 72783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 72883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The width of the video for this TV program, in the unit of pixels. 73083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Together with {@link #COLUMN_VIDEO_HEIGHT} this is used to determine the video 7320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * resolution of the current TV program. Can be empty if it is not known initially or the 7330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * program does not convey any video such as the programs from type 7340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Channels#SERVICE_TYPE_AUDIO} channels. 7350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 73783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_VIDEO_WIDTH = "video_width"; 73983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 74083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The height of the video for this TV program, in the unit of pixels. 74283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Together with {@link #COLUMN_VIDEO_WIDTH} this is used to determine the video 7440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * resolution of the current TV program. Can be empty if it is not known initially or the 7450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * program does not convey any video such as the programs from type 7460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Channels#SERVICE_TYPE_AUDIO} channels. 7470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 74983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_VIDEO_HEIGHT = "video_height"; 75183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 75283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated audio languages of this TV program. 75483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to describe available audio languages included in the program. Use either 7560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * ISO 639-1 or 639-2/T codes. 7570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 75983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_AUDIO_LANGUAGE = "audio_language"; 76183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 76283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated content ratings of this TV program. 76483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to describe the content rating(s) of this program. Each comma-separated 7660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * content rating sub-string should be generated by calling 7670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link TvContentRating#flattenToString}. Note that in most cases the program content is 7680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * rated by a single rating system, thus resulting in a corresponding single sub-string that 7690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * does not require comma separation and multiple sub-strings appear only when the program 7700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * content is rated by two or more content rating systems. If any of those ratings is 7710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified as "blocked rating" in the user's parental control settings, the TV input 7720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * service should block the current content and wait for the signal that it is okay to 7730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * unblock. 7740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 77683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_CONTENT_RATING = "content_rating"; 77883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 77983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the poster art of this TV program. 78183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 7830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 7850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 7860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 7870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 7880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 7890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 7900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 7920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 79483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_POSTER_ART_URI = "poster_art_uri"; 79683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 79783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the thumbnail of this TV program. 7990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The system can generate a thumbnail from the poster art if this column is not 8010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified. Thus it is not necessary for TV input services to include a thumbnail if it is 8020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * just a scaled image of the poster art. 8030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 8050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 8070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 8080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 8090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 8100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 8110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 8120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 8140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 8160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_THUMBNAIL_URI = "thumbnail_uri"; 8180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV program is searchable or not. 8210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The columns of searchable programs can be read by other applications that have proper 8230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * permission. Care must be taken not to open sensitive data. 8240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the program is searchable and its columns can be read by 8260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, a value of 0 indicates that the program is hidden and its columns can 8270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * be read only by the package that owns the program and the system. If not specified, this 8280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * value is set to 1 (searchable) by default. 8290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 8310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SEARCHABLE = "searchable"; 8330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal data used by individual TV input services. 8360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: BLOB 8410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data"; 8430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1"; 8530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2"; 8630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3"; 8730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4"; 8830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The version number of this row entry used by TV input services. 8860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is best used by sync adapters to identify the rows to update. The number can be 8880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * defined by individual TV input services. One may assign the same value as 8890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code version_number} in ETSI EN 300 468 or ATSC A/65, if the data are coming from a TV 8900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast. 8910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_VERSION_NUMBER = "version_number"; 8959b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 8969b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 8979b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating score style used for {@link #COLUMN_REVIEW_RATING}. 8989b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 8999b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p> The value should match one of the followings: {@link #REVIEW_RATING_STYLE_STARS}, 9009b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * {@link #REVIEW_RATING_STYLE_THUMBS_UP_DOWN}, and {@link #REVIEW_RATING_STYLE_PERCENTAGE}. 9019b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 9029b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p>Type: INTEGER 9039b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING 9049b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 9059b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen String COLUMN_REVIEW_RATING_STYLE = "review_rating_style"; 9069b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 9079b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 9089b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating score for this program. 9099b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 9109b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p>The format of the value is dependent on {@link #COLUMN_REVIEW_RATING_STYLE}. If the 9119b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * style is {@link #REVIEW_RATING_STYLE_STARS}, the value should be a real number between 9129b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 0.0 and 5.0. (e.g. "4.5") If the style is {@link #REVIEW_RATING_STYLE_THUMBS_UP_DOWN}, 9139b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * the value should be two integers, one for thumbs-up count and the other for thumbs-down 9149b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * count, with a comma between them. (e.g. "200,40") If the style is 9159b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * {@link #REVIEW_RATING_STYLE_PERCENTAGE}, the value shoule be a real number between 0 and 9169b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 100. (e.g. "99.9") 9179b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 9189b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p>Type: TEXT 9199b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 9209b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 9219b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen String COLUMN_REVIEW_RATING = "review_rating"; 9220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 9230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 9240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 9250cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * Common columns for the tables of preview programs. 9260cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * @hide 9270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 9280cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang @RestrictTo(LIBRARY_GROUP) 9290cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public interface PreviewProgramColumns { 9300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 9310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** @hide */ 932407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @IntDef({ 9330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_MOVIE, 9340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_TV_SERIES, 9350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_TV_SEASON, 9360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_TV_EPISODE, 9370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_CLIP, 9380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_EVENT, 9390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_CHANNEL, 9400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_TRACK, 9410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ALBUM, 9420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ARTIST, 9430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_PLAYLIST, 9440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_STATION, 9450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang }) 9460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 9470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 9480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface Type {} 9490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 9500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 9510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for movie. 95283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 95383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 95483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 955407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_MOVIE = 0; 95683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 95783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for TV series. 95983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 96083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 96183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 962407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TV_SERIES = 1; 96383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 96483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for TV season. 96683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 96783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 96883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 969407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TV_SEASON = 2; 97083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 97183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for TV episode. 97383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 97483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 97583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 976407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TV_EPISODE = 3; 97783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 97883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for clip. 98083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 98183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 98283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 983407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_CLIP = 4; 98483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 98583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for event. 98783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 98883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 98983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 990407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_EVENT = 5; 99183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 99283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for channel. 99483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 99583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 99683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 997407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_CHANNEL = 6; 99883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 99983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 10000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for track. 100183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 100283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 100383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1004407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TRACK = 7; 100583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 100683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 10070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for album. 100883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 100983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 101083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1011407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_ALBUM = 8; 101283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 101383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 10140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for artist. 101583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 101683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 101783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1018407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_ARTIST = 9; 101983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 102083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 10210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for playlist. 102283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 10230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 10240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1025407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_PLAYLIST = 10; 10260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 10270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for station. 102983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 103083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 103183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1032407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_STATION = 11; 103383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1034acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1035407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @IntDef({ 10360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang ASPECT_RATIO_16_9, 10370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang ASPECT_RATIO_3_2, 10388f95356f24ddac5b6cafc455824507057529d315Dongwon Kang ASPECT_RATIO_4_3, 10390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang ASPECT_RATIO_1_1, 10400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang ASPECT_RATIO_2_3, 1041acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1042acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 1043407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @RestrictTo(LIBRARY_GROUP) 10440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface AspectRatio {} 1045acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 10460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 16:9. 10480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1052407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int ASPECT_RATIO_16_9 = 0; 105383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 3:2. 10560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1060407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int ASPECT_RATIO_3_2 = 1; 106183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10638f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * The aspect ratio for 4:3. 10648f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * 10658f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10668f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10678f95356f24ddac5b6cafc455824507057529d315Dongwon Kang */ 10688f95356f24ddac5b6cafc455824507057529d315Dongwon Kang int ASPECT_RATIO_4_3 = 2; 10698f95356f24ddac5b6cafc455824507057529d315Dongwon Kang 10708f95356f24ddac5b6cafc455824507057529d315Dongwon Kang /** 10710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 1:1. 10720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 10768f95356f24ddac5b6cafc455824507057529d315Dongwon Kang int ASPECT_RATIO_1_1 = 3; 10770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 10780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 2:3. 10800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 10848f95356f24ddac5b6cafc455824507057529d315Dongwon Kang int ASPECT_RATIO_2_3 = 4; 108583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1086acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1087407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @IntDef({ 10880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang AVAILABILITY_AVAILABLE, 10890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang AVAILABILITY_FREE_WITH_SUBSCRIPTION, 10900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang AVAILABILITY_PAID_CONTENT, 1091acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1092acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 1093407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @RestrictTo(LIBRARY_GROUP) 10940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface Availability {} 109583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability for "available to this user". 10980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_AVAILABILITY 11000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1101407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int AVAILABILITY_AVAILABLE = 0; 110283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 11030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 11040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability for "free with subscription". 11050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 11060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_AVAILABILITY 11070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1108407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; 110983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 11100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 11110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability for "paid content, either to-own or rental 11120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (user has not purchased/rented). 11130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 11140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_AVAILABILITY 11150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1116407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int AVAILABILITY_PAID_CONTENT = 2; 111783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1118acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1119407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @IntDef({ 1120407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang INTERACTION_TYPE_VIEWS, 11210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang INTERACTION_TYPE_LISTENS, 11220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang INTERACTION_TYPE_FOLLOWERS, 11230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang INTERACTION_TYPE_FANS, 11240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang INTERACTION_TYPE_LIKES, 11250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang INTERACTION_TYPE_THUMBS, 11260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang INTERACTION_TYPE_VIEWERS, 1127acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1128acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 11290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 11300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface InteractionType {} 113183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 113283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1133407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "views". 113483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 113683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1137407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_VIEWS = 0; 113883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 113983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1140407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "listens". 114183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 114383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1144407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_LISTENS = 1; 114583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 114683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1147407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "followers". 114883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 115083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1151407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_FOLLOWERS = 2; 115283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 115383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1154407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "fans". 115583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 115783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1158407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_FANS = 3; 115983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 116083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1161407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "likes". 116283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 116483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1165407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_LIKES = 4; 116683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 116783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1168407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "thumbs". 116983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 117183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1172407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_THUMBS = 5; 117383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 117483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 11750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The interaction type for "viewers". 117683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 117883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1179407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_VIEWERS = 6; 11800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 118183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 11820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The type of this program content. 118383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 11850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_MOVIE}, 11860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TV_SERIES}, 11870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TV_SEASON}, 11880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TV_EPISODE}, 11890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_CLIP}, 11900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_EVENT}, 11910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_CHANNEL}, 11920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TRACK}, 11930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ALBUM}, 11940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ARTIST}, 11950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_PLAYLIST}, and 11960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_STATION}. 11970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 11980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field if the program is from a {@link Channels#TYPE_PREVIEW} 11990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel. 120083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1201407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 120283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_TYPE = "type"; 120483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 120583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio of the poster art for this TV program. 120783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 12090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_16_9}, 12100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_3_2}, 12118f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * {@link #ASPECT_RATIO_4_3}, 12120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_1_1}, and 12130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_2_3}. 121483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1215407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 121683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio"; 121883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 121983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio of the thumbnail for this TV program. 122183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 12230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_16_9}, 12240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_3_2}, 12258f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * {@link #ASPECT_RATIO_4_3}, 12260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_1_1}, and 12270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_2_3}. 122883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1229407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 123083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio"; 123283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 123383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the logo of this TV program. 123583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a small badge shown on top of the poster art or thumbnail representing the 12370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * source of the content. 123883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 12400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 12420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 12430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 12440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 12450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 12460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 12470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 12490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 125183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LOGO_URI = "logo_uri"; 125383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 125483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability of this TV program. 125683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 12580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #AVAILABILITY_AVAILABLE}, 12590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #AVAILABILITY_FREE_WITH_SUBSCRIPTION}, and 12600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #AVAILABILITY_PAID_CONTENT}. 126183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1262407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 12630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 12640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_AVAILABILITY = "availability"; 12650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 12660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 12670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The starting price of this TV program. 126883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This indicates the lowest regular acquisition cost of the content. It is only used 12700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * if the availability of the program is {@link #AVAILABILITY_PAID_CONTENT}. 12710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 12730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_OFFER_PRICE 127483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_STARTING_PRICE = "starting_price"; 127683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 127783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The offer price of this TV program. 127983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is the promotional cost of the content. It is only used if the availability of 12810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the program is {@link #AVAILABILITY_PAID_CONTENT}. 128283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 12840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_STARTING_PRICE 128583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_OFFER_PRICE = "offer_price"; 128783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 128883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The release date of this TV program. 129083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 129150224da7ae3cad6a6f555838b54f372364e45453Dongwon Kang * <p>The value should be in one of the following formats: 129250224da7ae3cad6a6f555838b54f372364e45453Dongwon Kang * "yyyy", "yyyy-MM-dd", and "yyyy-MM-ddTHH:mm:ssZ" (UTC in ISO 8601). 129383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 12950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 12960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_RELEASE_DATE = "release_date"; 12970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 12980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 12990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The count of the items included in this TV program. 130083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is only relevant if the program represents a collection of items such as series, 13020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * episodes, or music tracks. 13030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 13050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 13060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_ITEM_COUNT = "item_count"; 13070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 13080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 13090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV program is live or not. 13100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the content is airing and should be consumed now, a value 13120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * of 0 indicates that the content is off the air and does not need to be consumed at the 13130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * present time. If not specified, the value is set to 0 (not live) by default. 13140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 13160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 13170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LIVE = "live"; 13180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 13190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 13200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The internal ID used by individual TV input services. 13210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 13230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 13240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 132683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 132783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 132883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id"; 133083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 133183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the preview video. 133383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13344109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 133583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 133683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <ul> 133783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 133883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 133983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * </li> 134083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 134183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * </ul> 134283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 134483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 134583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 134683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri"; 134883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 134983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13504109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * The last playback position (in milliseconds) of the original content of this preview 13514109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * program. 135283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 135483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 135683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = 13580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "last_playback_position_millis"; 135983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 136083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13614109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * The duration (in milliseconds) of the original content of this preview program. 136283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 13640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 136683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_DURATION_MILLIS = "duration_millis"; 136883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 136983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13702ed7093758f4b3e84f19a003d1ed78c899a14130Dongwon Kang * The intent URI which is launched when the preview program is selected. 137183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 137283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>The URI is created using {@link Intent#toUri} with {@link Intent#URI_INTENT_SCHEME} 137383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * and converted back to the original intent with {@link Intent#parseUri}. The intent is 13742ed7093758f4b3e84f19a003d1ed78c899a14130Dongwon Kang * launched when the user selects the preview program item. 137583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 137783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 137883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 137983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13802ed7093758f4b3e84f19a003d1ed78c899a14130Dongwon Kang String COLUMN_INTENT_URI = "intent_uri"; 138183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 138283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this program is transient or not. 138483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel will be automatically removed by the system on 13860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * reboot, and a value of 0 indicates that the channel is persistent across reboot. If not 13870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified, this value is set to 0 (not transient) by default. 138883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 13900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Channels#COLUMN_TRANSIENT 139183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_TRANSIENT = "transient"; 139383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 139483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The type of interaction for this TV program. 139683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p> The value should match one of the followings: 13980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_LISTENS}, 13990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_FOLLOWERS}, 14000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_FANS}, 14010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_LIKES}, 14020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_THUMBS}, 14030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_VIEWS}, and 14040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_VIEWERS}. 140583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1406407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 14070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_COUNT 140883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERACTION_TYPE = "interaction_type"; 141083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 141183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 14120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The interaction count for this program. 141383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This indicates the number of times interaction has happened. 141583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 14170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 141883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERACTION_COUNT = "interaction_count"; 142083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 142183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 14220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The author or artist of this content. 142383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 142583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_AUTHOR = "author"; 142783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 142883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 14290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV program is browsable or not. 143083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This column can only be set by applications having proper system permission. For 14320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, this is a read-only column. 14330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 14340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the program is browsable and can be shown to users in 14350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the UI. A value of 0 indicates that the program should be hidden from users and the 14360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * application who changes this value to 0 should send 14370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED} to the owner of the program 14380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * to notify this change. 14390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 14400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This value is set to 1 (browsable) by default. 144183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 144283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (boolean) 144383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_BROWSABLE = "browsable"; 144583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 144683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 14470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The content ID of this TV program. 144883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A public ID of the content which allows the application to apply the same operation to 14500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * all the program copies in different channels. 145183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 145383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 145583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_CONTENT_ID = "content_id"; 145783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 145883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 145983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 14600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** Column definitions for the TV channels table. */ 14610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final class Channels implements BaseTvColumns { 146283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1463239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 1464239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 1465239795a5cada6a491e671660bb608f782465576fDongwon Kang * 1466239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 1467239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 1468239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 146983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 14700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_CHANNEL); 147183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 14720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of TV channels. */ 14730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/channel"; 147483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 14750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single TV channel. */ 14760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel"; 147783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1478acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1479acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 1480acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @StringDef({ 14810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_OTHER, 14820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_NTSC, 14830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_PAL, 14840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_SECAM, 14850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_T, 14860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_T2, 14870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_S, 14880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_S2, 14890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_C, 14900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_C2, 14910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_H, 14920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_SH, 14930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ATSC_T, 14940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ATSC_C, 14950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ATSC_M_H, 14960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_T, 14970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_TB, 14980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_S, 14990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_C, 15000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_1SEG, 15010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DTMB, 15020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_CMMB, 15030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_T_DMB, 15040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_S_DMB, 15050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_PREVIEW, 1506acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1507acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 1508acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public @interface Type {} 1509acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 151083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 15110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * A generic channel type. 15127ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Use this if the current channel is streaming-based or its broadcast system type does not 15140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * fit under any other types. This is the default channel type. 15157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15167ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15177ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_OTHER = "TYPE_OTHER"; 15197ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15207ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for NTSC. 15227ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15237ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15247ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_NTSC = "TYPE_NTSC"; 15267ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15277ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for PAL. 15297ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15307ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15317ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_PAL = "TYPE_PAL"; 15337ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15347ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for SECAM. 15367ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15377ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15387ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_SECAM = "TYPE_SECAM"; 15407ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15417ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-T (terrestrial). 15437ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15447ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15457ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_T = "TYPE_DVB_T"; 15477ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15487ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-T2 (terrestrial). 15507ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15517ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15527ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_T2 = "TYPE_DVB_T2"; 15547ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15557ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-S (satellite). 15577ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15587ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15597ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_S = "TYPE_DVB_S"; 15617ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15627ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-S2 (satellite). 15647ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15657ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15667ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_S2 = "TYPE_DVB_S2"; 15687ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15697ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-C (cable). 15717ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15727ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_C = "TYPE_DVB_C"; 15757ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15767ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-C2 (cable). 15787ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15797ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15807ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_C2 = "TYPE_DVB_C2"; 15827ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15837ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-H (handheld). 15857ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15867ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15877ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_H = "TYPE_DVB_H"; 1589acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 15907ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-SH (satellite). 15927ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 15947ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_SH = "TYPE_DVB_SH"; 15967ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15977ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ATSC (terrestrial). 15997ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16017ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ATSC_T = "TYPE_ATSC_T"; 16037ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16047ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ATSC (cable). 16067ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16087ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ATSC_C = "TYPE_ATSC_C"; 1610acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16117ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ATSC-M/H (mobile/handheld). 16137ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H"; 16177ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16187ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-T (terrestrial). 16207ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16227ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_T = "TYPE_ISDB_T"; 16247ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16257ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-Tb (Brazil). 16277ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16297ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB"; 16317ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16327ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-S (satellite). 16347ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16367ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_S = "TYPE_ISDB_S"; 1638acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16397ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-C (cable). 16417ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16437ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_C = "TYPE_ISDB_C"; 16457ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16467ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for 1seg (handheld). 16487ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16507ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_1SEG = "TYPE_1SEG"; 16527ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16537ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DTMB (terrestrial). 16557ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16577ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DTMB = "TYPE_DTMB"; 1659acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16607ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for CMMB (handheld). 16627ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16647ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_CMMB = "TYPE_CMMB"; 16667ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16677ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for T-DMB (terrestrial). 16697ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16717ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_T_DMB = "TYPE_T_DMB"; 16737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16747ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for S-DMB (satellite). 16767ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16787ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_S_DMB = "TYPE_S_DMB"; 16807ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16817ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for preview videos. 16837ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <P>Unlike other broadcast TV channel types, the programs in the preview channel usually 16850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * are promotional videos. The UI may treat the preview channels differently from the other 16860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast channels. 16877ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16897ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_PREVIEW = "TYPE_PREVIEW"; 16917ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** @hide */ 16930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 16940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @StringDef({ 16950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang SERVICE_TYPE_OTHER, 16960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang SERVICE_TYPE_AUDIO_VIDEO, 16970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang SERVICE_TYPE_AUDIO, 16980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang }) 16990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 17000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface ServiceType {} 17017ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** A generic service type. */ 17030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER"; 17040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The service type for regular TV channels that have both audio and video. */ 17060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO"; 17070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The service type for radio channels that have audio only. */ 17090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO"; 17107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 1711acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1712acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 1713acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @StringDef({ 17140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_240P, 17150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_360P, 17160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_480I, 17170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_576I, 17180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_576P, 17190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_720P, 17200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_1080I, 17210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_1080P, 17220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_2160P, 17230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_4320P, 1724acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1725acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 17260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface VideoFormat {} 1727acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 17280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 240p. */ 17290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P"; 17307ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 360p. */ 17320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P"; 17337ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 480i. */ 17350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I"; 17367ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 480p. */ 17380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P"; 173983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 576i. */ 17410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I"; 17427ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 576p. */ 17440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P"; 17457ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 720p. */ 17470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P"; 174883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 1080i. */ 17500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I"; 175183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 1080p. */ 17530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P"; 175483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 2160p. */ 17560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P"; 175783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 4320p. */ 17590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P"; 176083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** @hide */ 17620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 17630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @StringDef({ 17640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_SD, 17650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_ED, 17660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_HD, 17670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_FHD, 17680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_UHD, 17690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang }) 17700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 17710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface VideoResolution {} 177283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for standard-definition. */ 17740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD"; 17750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for enhanced-definition. */ 17770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED"; 17780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for high-definition. */ 17800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD"; 17810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for full high-definition. */ 17830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD"; 17840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for ultra high-definition. */ 17860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD"; 17870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private static final Map<String, String> VIDEO_FORMAT_TO_RESOLUTION_MAP = new HashMap<>(); 17890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang static { 17910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_480I, VIDEO_RESOLUTION_SD); 17920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_480P, VIDEO_RESOLUTION_ED); 17930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_576I, VIDEO_RESOLUTION_SD); 17940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_576P, VIDEO_RESOLUTION_ED); 17950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_720P, VIDEO_RESOLUTION_HD); 17960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_1080I, VIDEO_RESOLUTION_HD); 17970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_1080P, VIDEO_RESOLUTION_FHD); 17980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_2160P, VIDEO_RESOLUTION_UHD); 17990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_4320P, VIDEO_RESOLUTION_UHD); 18000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 180183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 180283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Returns the video resolution (definition) for a given video format. 180483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @param videoFormat The video format defined in {@link Channels}. 18060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @return the corresponding video resolution string. {@code null} if the resolution string 18070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * is not defined for the given video format. 18080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_VIDEO_FORMAT 180983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Nullable 18110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static String getVideoResolution(@VideoFormat String videoFormat) { 18120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang return VIDEO_FORMAT_TO_RESOLUTION_MAP.get(videoFormat); 18130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 181483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 181583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV input service that provides this TV channel. 181783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Use {@link #buildInputId} to build the ID. 181983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 182183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 182383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_INPUT_ID = "input_id"; 182583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 182683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The broadcast system type of this TV channel. 182883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to indicate the broadcast standard (e.g. ATSC, DVB or ISDB) the current 18300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel conforms to. Use {@link #TYPE_OTHER} for streaming-based channels, which is the 18310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * default channel type. The value should match one of the followings: 18320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_1SEG}, 18330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ATSC_C}, 18340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ATSC_M_H}, 18350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ATSC_T}, 18360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_CMMB}, 18370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DTMB}, 18380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_C}, 18390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_C2}, 18400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_H}, 18410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_S}, 18420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_S2}, 18430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_SH}, 18440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_T}, 18450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_T2}, 18460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_C}, 18470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_S}, 18480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_T}, 18490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_TB}, 18500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_NTSC}, 18510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_OTHER}, 18520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_PAL}, 18530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_SECAM}, 18540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_S_DMB}, and 18550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_T_DMB}. 18560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 18570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 185883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 185983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 186083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_TYPE = "type"; 186283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 186383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The predefined service type of this TV channel. 186583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is primarily used to indicate whether the current channel is a regular TV channel 18670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * or a radio-like channel. Use the same coding for {@code service_type} in the underlying 18680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast standard if it is defined there (e.g. ATSC A/53, ETSI EN 300 468 and ARIB 18690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * STD-B10). Otherwise use one of the followings: {@link #SERVICE_TYPE_OTHER}, 18700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #SERVICE_TYPE_AUDIO_VIDEO}, {@link #SERVICE_TYPE_AUDIO} 18710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 18720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 187383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 187483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 187583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SERVICE_TYPE = "service_type"; 187783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 187883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The original network ID of this TV channel. 188083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is used to identify the originating delivery system, if applicable. Use the same 18820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * coding for {@code original_network_id} for ETSI EN 300 468/TR 101 211 and ARIB STD-B10. 188383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field only if the underlying broadcast standard defines the same 18850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * name field. Otherwise, leave empty. 18860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 18870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 188883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id"; 189083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 189183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The transport stream ID of this channel. 189383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is used to identify the Transport Stream that contains the current channel from any 18950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other multiplex within a network, if applicable. Use the same coding for 18960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code transport_stream_id} defined in ISO/IEC 13818-1 if the channel is transmitted via 18970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the MPEG Transport Stream. 189883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field only if the current channel is transmitted via the MPEG 19000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Transport Stream. Leave empty otherwise. 19010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 190383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id"; 190583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 190683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The service ID of this channel. 190883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is used to identify the current service, or channel from any other services within 19100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * a given Transport Stream, if applicable. Use the same coding for {@code service_id} in 19110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * ETSI EN 300 468 and ARIB STD-B10 or {@code program_number} in ISO/IEC 13818-1. 19120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field only if the underlying broadcast standard defines the same 19140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * name field, or the current channel is transmitted via the MPEG Transport Stream. Leave 19150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * empty otherwise. 191683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 191783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 191883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SERVICE_ID = "service_id"; 192083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 192183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel number that is displayed to the user. 192383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The format can vary depending on broadcast standard and product specification. 192583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 192783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_DISPLAY_NUMBER = "display_number"; 192983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 193083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel name that is displayed to the user. 193283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A call sign is a good candidate to use for this purpose but any name that helps the 19340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * user recognize the current channel will be enough. Can also be empty depending on 19350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast standard. 193683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p> Type: TEXT 193883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_DISPLAY_NAME = "display_name"; 194083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 194183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The network affiliation for this TV channel. 194383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to identify a channel that is commonly called by its network affiliation 19450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * instead of the display name. Examples include ABC for the channel KGO-HD, FOX for the 19460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel KTVU-HD and NBC for the channel KNTV-HD. Can be empty if not applicable. 194783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 194883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 194983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation"; 195183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 195283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The description of this TV channel. 195483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty initially. 195683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 195783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 195883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_DESCRIPTION = "description"; 196083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 196183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The typical video format for programs from this TV channel. 19637ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 19640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is primarily used to filter out channels based on video format by applications. 19650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The value should match one of the followings: {@link #VIDEO_FORMAT_240P}, 19660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_360P}, {@link #VIDEO_FORMAT_480I}, {@link #VIDEO_FORMAT_480P}, 19670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_576I}, {@link #VIDEO_FORMAT_576P}, {@link #VIDEO_FORMAT_720P}, 19680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_1080I}, {@link #VIDEO_FORMAT_1080P}, {@link #VIDEO_FORMAT_2160P}, 19690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_4320P}. Note that the actual video resolution of each program from a 19700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * given channel can vary thus one should use {@link Programs#COLUMN_VIDEO_WIDTH} and 19710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Programs#COLUMN_VIDEO_HEIGHT} to get more accurate video resolution. 19727ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 19737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 19740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #getVideoResolution 19767ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 19770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_VIDEO_FORMAT = "video_format"; 19787ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 19797ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 19800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is browsable or not. 198183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This column can only be set by applications having proper system permission. For 19830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, this is a read-only column. 198483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates the channel is included in the channel list that applications 19860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * use to browse channels, a value of 0 indicates the channel is not included in the list. 19870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * If not specified, this value is set to 0 (not browsable) by default. 198883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 19900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 19910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_BROWSABLE = "browsable"; 19920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 19930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 19940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is searchable or not. 199583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The columns of searchable channels can be read by other applications that have proper 19970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * permission. Care must be taken not to open sensitive data. 199883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel is searchable and its columns can be read by 20000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, a value of 0 indicates that the channel is hidden and its columns can 20010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * be read only by the package that owns the channel and the system. If not specified, this 20020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * value is set to 1 (searchable) by default. 20030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 20040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 200583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 20060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SEARCHABLE = "searchable"; 200783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 200883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 20090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is locked or not. 20107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is primarily used for alternative parental control to prevent unauthorized users 20120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * from watching the current channel regardless of the content rating. A value of 1 20130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * indicates the channel is locked and the user is required to enter passcode to unlock it 20140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * in order to watch the current program from the channel, a value of 0 indicates the 20150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel is not locked thus the user is not prompted to enter passcode If not specified, 20160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * this value is set to 0 (not locked) by default. 20177ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 2018d14f98d763f117942d726be5d9e69ce6faad399bConrad Chen * <p>This column can only be set by applications having proper system permission to 2019d14f98d763f117942d726be5d9e69ce6faad399bConrad Chen * modify parental control settings. 2020d14f98d763f117942d726be5d9e69ce6faad399bConrad Chen * 20210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 20227ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_LOCKED = "locked"; 20247ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20257ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the app badge icon of the app link template for this channel. 20277ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This small icon is overlaid at the bottom of the poster art specified by 20290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_APP_LINK_POSTER_ART_URI}. The data in the column must be a URI in one of 20300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the following formats: 20317ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20327ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <ul> 20337ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 20347ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 20357ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * </li> 20367ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 20377ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * </ul> 20387ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 20400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 20410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 20427ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20437ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 20440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 20450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 20460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 20470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 20487ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri"; 20507ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20517ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the poster art used as the background of the app link template for this 20530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel. 20547ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 20567ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 20580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 20590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 20600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 20610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 20620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 20637ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 20650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 20660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 20677ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20687ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 20690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 20700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 20710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 20720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 20737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri"; 20757ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20767ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The link text of the app link template for this channel. 20787ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This provides a short description of the action that happens when the corresponding 20800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * app link is clicked. 20817ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 20830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 20840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 20857ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20867ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 20870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 20880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 20890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 20900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 20917ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_TEXT = "app_link_text"; 20937ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20947ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The accent color of the app link template for this channel. This is primarily used for 20960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the background color of the text box in the template. 20977ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 20990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 21000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 21017ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (color value) 21030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 21040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 21050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 21060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 21077ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 21080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_COLOR = "app_link_color"; 21097ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 21107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 21110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The intent URI of the app link for this channel. 211283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The URI is created using {@link Intent#toUri} with {@link Intent#URI_INTENT_SCHEME} 21140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * and converted back to the original intent with {@link Intent#parseUri}. The intent is 21150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * launched when the user clicks the corresponding app link for the current channel. 211683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 21180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 21190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 212083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 21220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 21230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 21240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 21250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 212683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 21270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri"; 212883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 212983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 21300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The internal ID used by individual TV input services. 213183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 21330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 213483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 21360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 21370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 213883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 21390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id"; 214083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 214183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 214283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal data used by individual TV input services. 214383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 214483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 214583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 214683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 214783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: BLOB 214883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 214983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data"; 215083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 215183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 215283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 215383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 215483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 215583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 215683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 215783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 215883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 215983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1"; 216083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 216183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 216283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 216383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 216483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 216583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 216683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 216783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 216883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 216983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2"; 217083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 217183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 217283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 217383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 217483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 217583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 217683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 217783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 217883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 217983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3"; 218083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 218183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 218283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 218383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 218483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 218583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 218683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 218783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 218883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 218983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4"; 219083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 219183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 219283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The version number of this row entry used by TV input services. 219383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 219483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is best used by sync adapters to identify the rows to update. The number can be 219583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * defined by individual TV input services. One may assign the same value as 21960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code version_number} that appears in ETSI EN 300 468 or ATSC A/65, if the data are 21970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * coming from a TV broadcast. 219883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 219983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 220083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 220183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_VERSION_NUMBER = "version_number"; 220283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 220383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is transient or not. 220583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel will be automatically removed by the system on 22070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * reboot, and a value of 0 indicates that the channel is persistent across reboot. If not 22080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified, this value is set to 0 (not transient) by default. 220983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 22110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see PreviewPrograms#COLUMN_TRANSIENT 221221cac9da019ba4968a015b482d216ab558cda20eConrad Chen * @see WatchNextPrograms#COLUMN_TRANSIENT 221383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 22140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_TRANSIENT = "transient"; 221583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 221683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is approved to be shown by the system. 221883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel is approved to be shown by the system, and a 22200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * value of 0 indicates that the channel is blocked by system. If not specified, this value 22210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * is set to 0 (not approved) by default. 222283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 22240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 222583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 22260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 22270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SYSTEM_APPROVED = "system_approved"; 22280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 22290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private Channels() {} 223083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 223183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * A sub-directory of a single TV channel that represents its primary logo. 223383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>To access this directory, append {@link Channels.Logo#CONTENT_DIRECTORY} to the raw 22350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel URI. The resulting URI represents an image file, and should be interacted 22360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * using ContentResolver.openAssetFileDescriptor. 223783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Note that this sub-directory also supports opening the logo as an asset file in write 22390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * mode. Callers can create or replace the primary logo associated with this channel by 22400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * opening the asset file and writing the full-size photo contents into it. (Make sure there 22410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * is no padding around the logo image.) When the file is closed, the image will be parsed, 22420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * sized down if necessary, and stored. 224383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Usage example: 22450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <pre> 22460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * public void writeChannelLogo(long channelId, byte[] logo) { 22470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Uri channelLogoUri = TvContract.buildChannelLogoUri(channelId); 22480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * try { 22490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * AssetFileDescriptor fd = 22500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * getContentResolver().openAssetFileDescriptor(channelLogoUri, "rw"); 22510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * OutputStream os = fd.createOutputStream(); 22520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * os.write(logo); 22530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * os.close(); 22540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * fd.close(); 22550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * } catch (IOException e) { 22560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * // Handle error cases. 22570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * } 22580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * } 22590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </pre> 226083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 22610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final class Logo { 22620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 22630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 22640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The directory twig for this sub-table. 22650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 22660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_DIRECTORY = "logo"; 22670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 22680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private Logo() {} 22690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 22700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 22710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 22720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 22730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Column definitions for the TV programs table. 22740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 22750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>By default, the query results will be sorted by 22760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Programs#COLUMN_START_TIME_UTC_MILLIS} in ascending order. 22770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 22780cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class Programs implements BaseTvColumns, ProgramColumns { 22790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2280239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2281239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2282239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2283239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2284239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2285239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 22860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 22870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_PROGRAM); 22880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 22890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of TV programs. */ 22900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/program"; 22910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 22920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single TV program. */ 22930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program"; 229483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 229583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV channel that provides this TV program. 229783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}. 229983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 230183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 230383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_CHANNEL_ID = "channel_id"; 230583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 230683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 23070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The season number of this TV program for episodic TV shows. 230883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 230983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Can be empty. 231083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 23120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 23130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @deprecated Use {@link #COLUMN_SEASON_DISPLAY_NUMBER} instead. 231483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Deprecated 23160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SEASON_NUMBER = "season_number"; 231783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 231883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 23190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The episode number of this TV program for episodic TV shows. 232083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 232183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Can be empty. 232283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 232383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 232483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @deprecated Use {@link #COLUMN_EPISODE_DISPLAY_NUMBER} instead. 232683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Deprecated 23280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_EPISODE_NUMBER = "episode_number"; 232983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 23307ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 23310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The start time of this TV program, in milliseconds since the epoch. 23327ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should be equal to or larger than {@link #COLUMN_END_TIME_UTC_MILLIS} of the 23340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * previous program in the same channel. In practice, start time will usually be the end 23350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * time of the previous program. 23367ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty if this program belongs to a {@link Channels#TYPE_PREVIEW} channel. 23380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 23390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 23407ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 23410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis"; 23427ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 23437ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 23440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The end time of this TV program, in milliseconds since the epoch. 23457ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should be equal to or less than {@link #COLUMN_START_TIME_UTC_MILLIS} of the 23470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * next program in the same channel. In practice, end time will usually be the start time of 23480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the next program. 23497ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty if this program belongs to a {@link Channels#TYPE_PREVIEW} channel. 23517ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 23537ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 23540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis"; 23557ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 23567ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 23570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated genre string of this TV program. 23587ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Use the same language appeared in the underlying broadcast standard, if applicable. 23600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (For example, one can refer to the genre strings used in Genre Descriptor of ATSC A/65 or 23610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Content Descriptor of ETSI EN 300 468, if appropriate.) Otherwise, leave empty. Use 23620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Genres#encode} to create a text that can be stored in this column. Use 23630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Genres#decode} to get the broadcast genre strings from the text stored in the 23640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * column. 23657ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23667ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 23670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#encode 23680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#decode 23697ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 23700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre"; 23710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 23720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 23730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether recording of this program is prohibited. 23747ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that recording of this program is prohibited and application 23760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * will not schedule any recording for this program. A value of 0 indicates that the 23770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * recording is not prohibited. If not specified, this value is set to 0 (not prohibited) by 23780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * default. 23790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 23800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 23817ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 23820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited"; 23837ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 238483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private Programs() {} 238583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 238683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** Canonical genres for TV programs. */ 238783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final class Genres { 2388acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 2389acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @StringDef({ 2390acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang FAMILY_KIDS, 2391acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang SPORTS, 2392acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang SHOPPING, 2393acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang MOVIES, 2394acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang COMEDY, 2395acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang TRAVEL, 2396acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang DRAMA, 2397acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang EDUCATION, 2398acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang ANIMAL_WILDLIFE, 2399acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang NEWS, 2400acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang GAMING, 2401acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang ARTS, 2402acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang ENTERTAINMENT, 2403acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang LIFE_STYLE, 2404acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang MUSIC, 2405acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang PREMIER, 2406acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang TECH_SCIENCE, 2407acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 2408acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 2409acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public @interface Genre {} 2410acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 241183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Family/Kids. */ 241283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String FAMILY_KIDS = "FAMILY_KIDS"; 241383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 241483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Sports. */ 241583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String SPORTS = "SPORTS"; 241683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 241783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Shopping. */ 241883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String SHOPPING = "SHOPPING"; 241983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 242083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Movies. */ 242183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String MOVIES = "MOVIES"; 242283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 242383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Comedy. */ 242483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COMEDY = "COMEDY"; 242583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 242683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Travel. */ 242783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String TRAVEL = "TRAVEL"; 242883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 242983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Drama. */ 243083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String DRAMA = "DRAMA"; 243183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 243283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Education. */ 243383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String EDUCATION = "EDUCATION"; 243483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 243583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Animal/Wildlife. */ 243683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE"; 243783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 243883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for News. */ 243983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String NEWS = "NEWS"; 244083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 244183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Gaming. */ 244283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String GAMING = "GAMING"; 244383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 244483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Arts. */ 244583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String ARTS = "ARTS"; 244683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 244783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Entertainment. */ 244883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String ENTERTAINMENT = "ENTERTAINMENT"; 244983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 245083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Life Style. */ 245183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String LIFE_STYLE = "LIFE_STYLE"; 245283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 245383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Music. */ 245483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String MUSIC = "MUSIC"; 245583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 245683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Premier. */ 245783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PREMIER = "PREMIER"; 245883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 245983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Tech/Science. */ 246083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String TECH_SCIENCE = "TECH_SCIENCE"; 246183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 246283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final HashSet<String> CANONICAL_GENRES = new HashSet<>(); 246383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang static { 246483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(FAMILY_KIDS); 246583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(SPORTS); 246683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(SHOPPING); 246783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(MOVIES); 246883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(COMEDY); 246983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(TRAVEL); 247083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(DRAMA); 247183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(EDUCATION); 247283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(ANIMAL_WILDLIFE); 247383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(NEWS); 247483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(GAMING); 247583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(ARTS); 247683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(ENTERTAINMENT); 247783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(LIFE_STYLE); 247883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(MUSIC); 247983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(PREMIER); 248083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(TECH_SCIENCE); 248183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 248283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 248383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final char DOUBLE_QUOTE = '"'; 248483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final char COMMA = ','; 248583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String DELIMITER = ","; 248683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 248783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String[] EMPTY_STRING_ARRAY = new String[0]; 248883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 248983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private Genres() {} 249083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 249183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 249283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Encodes genre strings to a text that can be put into the database. 249383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 249483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param genres Genre strings. 249583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return an encoded genre string that can be inserted into the 249683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link #COLUMN_BROADCAST_GENRE} or {@link #COLUMN_CANONICAL_GENRE} column. 249783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2498acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public static String encode(@NonNull @Genre String... genres) { 249983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (genres == null) { 250083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang // MNC and before will throw a NPE. 250183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return null; 250283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 250383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang StringBuilder sb = new StringBuilder(); 250483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String separator = ""; 250583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang for (String genre : genres) { 250683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(separator).append(encodeToCsv(genre)); 250783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang separator = DELIMITER; 250883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 250983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return sb.toString(); 251083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 251183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 251283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static String encodeToCsv(String genre) { 251383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang StringBuilder sb = new StringBuilder(); 251483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang int length = genre.length(); 251583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang for (int i = 0; i < length; ++i) { 251683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang char c = genre.charAt(i); 251783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang switch (c) { 251883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case DOUBLE_QUOTE: 251983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(DOUBLE_QUOTE); 252083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 252183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case COMMA: 252283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(DOUBLE_QUOTE); 252383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 252483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 252583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(c); 252683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 252783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return sb.toString(); 252883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 252983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 253083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 253183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Decodes the genre strings from the text stored in the database. 253283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 253383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param genres The encoded genre string retrieved from the 253483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link #COLUMN_BROADCAST_GENRE} or {@link #COLUMN_CANONICAL_GENRE} column. 253583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return genre strings. 253683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2537acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public static @Genre String[] decode(@NonNull String genres) { 253883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (TextUtils.isEmpty(genres)) { 253983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang // MNC and before will throw a NPE for {@code null} genres. 254083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return EMPTY_STRING_ARRAY; 254183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 254283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (genres.indexOf(COMMA) == -1 && genres.indexOf(DOUBLE_QUOTE) == -1) { 254383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return new String[] {genres.trim()}; 254483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 254583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang StringBuilder sb = new StringBuilder(); 254683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang List<String> results = new ArrayList<>(); 254783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang int length = genres.length(); 254883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang boolean escape = false; 254983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang for (int i = 0; i < length; ++i) { 255083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang char c = genres.charAt(i); 255183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang switch (c) { 255283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case DOUBLE_QUOTE: 255383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (!escape) { 255483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang escape = true; 255583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang continue; 255683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 255783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 255883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case COMMA: 255983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (!escape) { 256083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String string = sb.toString().trim(); 256183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (string.length() > 0) { 256283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang results.add(string); 256383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 256483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb = new StringBuilder(); 256583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang continue; 256683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 256783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 256883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 256983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(c); 257083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang escape = false; 257183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 257283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String string = sb.toString().trim(); 257383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (string.length() > 0) { 257483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang results.add(string); 257583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 257683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return results.toArray(new String[results.size()]); 257783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 257883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 257983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 258083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Returns whether a given text is a canonical genre defined in {@link Genres}. 258183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 258283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param genre The name of genre to be checked. 258383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return {@code true} if the genre is canonical, otherwise {@code false}. 258483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 258583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static boolean isCanonical(String genre) { 258683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return CANONICAL_GENRES.contains(genre); 258783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 258883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 258983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 259083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 259183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 259283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Column definitions for the recorded TV programs table. 259383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 259483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>By default, the query results will be sorted by {@link #COLUMN_START_TIME_UTC_MILLIS} in 259583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * ascending order. 259683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 25970cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class RecordedPrograms implements BaseTvColumns, ProgramColumns { 259883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 2599239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2600239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2601239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2602239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2603239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2604239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 260583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 260683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang + PATH_RECORDED_PROGRAM); 260783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 260883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The MIME type of a directory of recorded TV programs. */ 260983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program"; 261083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 261183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The MIME type of a single recorded TV program. */ 261283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program"; 261383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 261483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 26150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV channel that provides this recorded program. 261683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 261783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}. 261883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 261983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is a required field. 262083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 262183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 262283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 26230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_CHANNEL_ID = "channel_id"; 262483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 262583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 26260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV input service that is associated with this recorded program. 262783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 26280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Use {@link #buildInputId} to build the ID. 262983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 26300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 263183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 263283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 263383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 26340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_INPUT_ID = "input_id"; 263583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 263683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 263783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The start time of the original TV program, in milliseconds since the epoch. 263883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 263983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 264083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see Programs#COLUMN_START_TIME_UTC_MILLIS 264183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 264283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_START_TIME_UTC_MILLIS = 264383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang Programs.COLUMN_START_TIME_UTC_MILLIS; 264483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 264583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 264683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The end time of the original TV program, in milliseconds since the epoch. 264783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 264883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 264983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see Programs#COLUMN_END_TIME_UTC_MILLIS 265083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 265183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_END_TIME_UTC_MILLIS = Programs.COLUMN_END_TIME_UTC_MILLIS; 265283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 265383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 265483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The comma-separated genre string of this recorded TV program. 265583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 265683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Use the same language appeared in the underlying broadcast standard, if applicable. 265783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * (For example, one can refer to the genre strings used in Genre Descriptor of ATSC A/65 or 265883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Content Descriptor of ETSI EN 300 468, if appropriate.) Otherwise, leave empty. Use 26590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Genres#encode Genres.encode()} to create a text that can be stored in this column. 26600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Use {@link Genres#decode Genres.decode()} to get the broadcast genre strings from the 26610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * text stored in the column. 266283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 266383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 266483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see Programs#COLUMN_BROADCAST_GENRE 266583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 266683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_BROADCAST_GENRE = Programs.COLUMN_BROADCAST_GENRE; 266783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 266883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 266983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The URI of the recording data for this recorded program. 267083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 267183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Together with {@link #COLUMN_RECORDING_DATA_BYTES}, applications can use this 267283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * information to manage recording storage. The URI should indicate a file or directory with 267383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * the scheme {@link android.content.ContentResolver#SCHEME_FILE}. 267483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 267583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 267683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_RECORDING_DATA_BYTES 267783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 267883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_DATA_URI = "recording_data_uri"; 267983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 268083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 268183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The data size (in bytes) for this recorded program. 268283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 268383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Together with {@link #COLUMN_RECORDING_DATA_URI}, applications can use this 268483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * information to manage recording storage. 268583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 268683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 268783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_RECORDING_DATA_URI 268883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 268983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes"; 269083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 269183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 269283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The duration (in milliseconds) of this recorded program. 269383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 269483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>The actual duration of the recorded program can differ from the one calculated by 269583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link #COLUMN_END_TIME_UTC_MILLIS} - {@link #COLUMN_START_TIME_UTC_MILLIS} as program 269683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * recording can be interrupted in the middle for some reason, resulting in a partially 269783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * recorded program, which is still playable. 269883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 269983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 270083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 270183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis"; 270283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 270383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 270483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The expiration time for this recorded program, in milliseconds since the epoch. 270583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 270683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Recorded TV programs do not expire by default unless explicitly requested by the user 270783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * or the user allows applications to delete them in order to free up disk space for future 270883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * recording. However, some TV content can have expiration date set by the content provider 270983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * when recorded. This field is used to indicate such a restriction. 271083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 271183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Can be empty. 271283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 271383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 271483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 271583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = 271683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang "recording_expire_time_utc_millis"; 271783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 27180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private RecordedPrograms() {} 27190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 27200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 27220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Column definitions for the preview TV programs table. 27230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 27240cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class PreviewPrograms implements BaseTvColumns, ProgramColumns, 27250cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang PreviewProgramColumns { 27260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2727239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2728239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2729239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2730239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2731239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2732239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 27330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 27340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_PREVIEW_PROGRAM); 27350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of preview TV programs. */ 27370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program"; 27380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single preview TV program. */ 27400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program"; 274183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 274283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 27430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV channel that provides this TV program. 274483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 27450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}. 274683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 27470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 27480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 27490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 275083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 27510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_CHANNEL_ID = "channel_id"; 275283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 275383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 27540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The weight of the preview program within the channel. 275583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 27560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The UI may choose to show this item in a different position in the channel row. 27570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * A larger weight value means the program is more important than other programs having 27580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * smaller weight values. The value is relevant for the preview programs in the same 27590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel. This is only relevant to {@link Channels#TYPE_PREVIEW}. 27600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 27610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 276283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 276383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 276483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 27650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_WEIGHT = "weight"; 27660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private PreviewPrograms() {} 27680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 27690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 27710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Column definitions for the "watch next" TV programs table. 27720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 27730cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class WatchNextPrograms implements BaseTvColumns, ProgramColumns, 27740cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang PreviewProgramColumns { 27750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2776239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2777239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2778239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2779239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2780239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2781239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 27820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 27830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_WATCH_NEXT_PROGRAM); 27840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of "watch next" TV programs. */ 27860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program"; 27870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single preview TV program. */ 27890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program"; 27900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** @hide */ 2792407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang @IntDef({ 27930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang WATCH_NEXT_TYPE_CONTINUE, 27940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang WATCH_NEXT_TYPE_NEXT, 27950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang WATCH_NEXT_TYPE_NEW, 27960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang WATCH_NEXT_TYPE_WATCHLIST, 27970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang }) 27980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 27990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 28000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface WatchNextType {} 280183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 280283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for CONTINUE. Use this type when the user has already watched more 28040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * than 1 minute of this content. 280583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 28070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2808407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_CONTINUE = 0; 28090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 28110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for NEXT. Use this type when the user has watched one or more 28120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * complete episodes from some episodic content, but there remains more than one episode 28130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * remaining or there is one last episode remaining, but it is not “new” in that it was 28140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * released before the user started watching the show. 281583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 281783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2818407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_NEXT = 1; 281983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 282083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for NEW. Use this type when the user had watched all of the available 28220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * episodes from some episodic content, but a new episode became available since the user 28230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * started watching the first episode and now there is exactly one unwatched episode. This 28240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * could also work for recorded events in a series e.g. soccer matches or football games. 282583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 28270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2828407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_NEW = 2; 28290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 28310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for WATCHLIST. Use this type when the user has elected to explicitly 28320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * add a movie, event or series to a “watchlist” as a manual way of curating what they 28330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * want to watch next. 283483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 283683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2837407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_WATCHLIST = 3; 283883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 283983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The "watch next" type of this program content. 284183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 28430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_CONTINUE}, 28440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_NEXT}, 28450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_NEW}, and 28460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_WATCHLIST}. 284783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 28490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2850407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 285183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 28520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_WATCH_NEXT_TYPE = "watch_next_type"; 285383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 285483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The last UTC time that the user engaged in this TV program, in milliseconds since the 28560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * epoch. This is a hint for the application that is used for ordering of "watch next" 28570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * programs. 285883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The meaning of the value varies depending on the {@link #COLUMN_WATCH_NEXT_TYPE}: 28600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 28610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_CONTINUE}: the date that the user was last watching the 28620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * content.</li> 28630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_NEXT}: the date of the last episode watched.</li> 28640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_NEW}: the release date of the new episode.</li> 28650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_WATCHLIST}: the date the item was added to the Watchlist. 28660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 28670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 286883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 28700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 28710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 287283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 28730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = 28740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "last_engagement_time_utc_millis"; 2875c16bab6a385ff737b1c5a55450d7e987ca70d755Dongwon Kang 2876c16bab6a385ff737b1c5a55450d7e987ca70d755Dongwon Kang private WatchNextPrograms() {} 287783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 28788f95356f24ddac5b6cafc455824507057529d315Dongwon Kang} 2879