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 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.tvprovider.media.tv; 1883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 19ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport static androidx.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; 33757f518fcb66e82116697d5a226798ae22c14a95Aurimas Liutikasimport android.text.TextUtils; 34757f518fcb66e82116697d5a226798ae22c14a95Aurimas Liutikas 35ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.NonNull; 36ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.Nullable; 37ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.RequiresApi; 38ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.RestrictTo; 39ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.StringDef; 40ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.tvprovider.media.tv.TvContractCompat.Programs.Genres; 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 /** 559d38958270cc9439b2a7167984d8ab19110926961Conrad Chen * Returns {@code true}, if {@code uri} is a recorded program URI. 560d38958270cc9439b2a7167984d8ab19110926961Conrad Chen */ 561d38958270cc9439b2a7167984d8ab19110926961Conrad Chen public static boolean isRecordedProgramUri(Uri uri) { 562d38958270cc9439b2a7167984d8ab19110926961Conrad Chen return isTvUri(uri) && isTwoSegmentUriStartingWith(uri, PATH_RECORDED_PROGRAM); 563d38958270cc9439b2a7167984d8ab19110926961Conrad Chen } 564d38958270cc9439b2a7167984d8ab19110926961Conrad Chen 565d38958270cc9439b2a7167984d8ab19110926961Conrad Chen /** 566c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * Requests to make a channel browsable. 567c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 568c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <p>Once called, the system will review the request and make the channel browsable based on 569c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * its policy. The first request from a package is guaranteed to be approved. This is only 570c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * relevant to channels with {@link Channels#TYPE_PREVIEW} type. 571c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 572c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * <p>No-op on devices prior to {@link android.os.Build.VERSION_CODES#O}. 573c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * 574c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @param context The context for accessing content provider. 575c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @param channelId The channel ID to be browsable. 576c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang * @see Channels#COLUMN_BROWSABLE 577c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang */ 578b30fefbedf4564400015b61f991607eae61d16d0Dongwon Kang @RequiresApi(api = 26) 579c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang public static void requestChannelBrowsable(Context context, long channelId) { 580b30fefbedf4564400015b61f991607eae61d16d0Dongwon Kang if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 581c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang TvContract.requestChannelBrowsable(context, channelId); 582c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang } 583c6d1177a6a0f27af6f64d25747fa183b60f59bffDongwon Kang } 58483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 58583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private TvContractCompat() {} 58683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 58783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 58883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Common base for the tables of TV channels/programs. 58983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 59083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public interface BaseTvColumns extends BaseColumns { 59183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 59283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The name of the package that owns the current row. 59383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 59483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>The TV provider fills in this column with the name of the package that provides the 59583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * initial data of the row. If the package is later uninstalled, the rows it owns are 59683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * automatically removed from the tables. 59783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 59883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 59983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 60083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String COLUMN_PACKAGE_NAME = "package_name"; 60183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 60283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 6030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 6040cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * Common columns for the tables of TV programs. 6050cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * @hide 6060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 6070cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang @RestrictTo(LIBRARY_GROUP) 6080cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang interface ProgramColumns { 6099b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 6109b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating style for five star rating. 6119b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 6129b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 6139b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 6149b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen int REVIEW_RATING_STYLE_STARS = 0; 6159b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 6169b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 6179b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating style for thumbs-up and thumbs-down rating. 6189b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 6199b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 6209b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 6219b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen int REVIEW_RATING_STYLE_THUMBS_UP_DOWN = 1; 6229b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 6239b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 6249b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating style for 0 to 100 point system. 6259b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 6269b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 6279b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 6289b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen int REVIEW_RATING_STYLE_PERCENTAGE = 2; 6299b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 63083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The title of this TV program. 63283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>If this program is an episodic TV show, it is recommended that the title is the series 6340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * title and its related fields ({@link #COLUMN_SEASON_TITLE} and/or 6350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_SEASON_DISPLAY_NUMBER}, {@link #COLUMN_SEASON_DISPLAY_NUMBER}, 6360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_EPISODE_DISPLAY_NUMBER}, and {@link #COLUMN_EPISODE_TITLE}) are filled in. 63783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 63983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_TITLE = "title"; 64183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 64283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The season display number of this TV program for episodic TV shows. 64483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to indicate the season number. (e.g. 1, 2 or 3) Note that the value 6460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * does not necessarily be numeric. (e.g. 12B) 64783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 65183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SEASON_DISPLAY_NUMBER = "season_display_number"; 65383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 65483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The title of the season for this TV program for episodic TV shows. 65683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is an optional field supplied only when the season has a special title 6580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (e.g. The Final Season). If provided, the applications should display it instead of 6590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_SEASON_DISPLAY_NUMBER}, and should display it without alterations. 6600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (e.g. for "The Final Season", displayed string should be "The Final Season", not 6610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * "Season The Final Season"). When displaying multiple programs, the order should be based 6620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * on {@link #COLUMN_SEASON_DISPLAY_NUMBER}, even when {@link #COLUMN_SEASON_TITLE} exists. 6630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 66783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SEASON_TITLE = "season_title"; 66983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 67083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The episode display number of this TV program for episodic TV shows. 67283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to indicate the episode number. (e.g. 1, 2 or 3) Note that the value 6740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * does not necessarily be numeric. (e.g. 12B) 6750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 67983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number"; 68183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 68283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The episode title of this TV program for episodic TV shows. 68483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 6860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 68883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 6890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_EPISODE_TITLE = "episode_title"; 69083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 69183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 6920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated canonical genre string of this TV program. 69383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 6940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Canonical genres are defined in {@link Genres}. Use {@link Genres#encode} to create a 6950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * text that can be stored in this column. Use {@link Genres#decode} to get the canonical 6960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * genre strings from the text stored in the column. 6970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 6980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 6990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres 7000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#encode 7010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#decode 70283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_CANONICAL_GENRE = "canonical_genre"; 70483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 70583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The short description of this TV program that is displayed to the user by default. 70783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is recommended to limit the length of the descriptions to 256 characters. 7090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 71183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SHORT_DESCRIPTION = "short_description"; 71383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 71483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The detailed, lengthy description of this TV program that is displayed only when the user 7160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * wants to see more information. 71783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>TV input services should leave this field empty if they have no additional details 7190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * beyond {@link #COLUMN_SHORT_DESCRIPTION}. 7200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 72283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LONG_DESCRIPTION = "long_description"; 72483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 72583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The width of the video for this TV program, in the unit of pixels. 72783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Together with {@link #COLUMN_VIDEO_HEIGHT} this is used to determine the video 7290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * resolution of the current TV program. Can be empty if it is not known initially or the 7300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * program does not convey any video such as the programs from type 7310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Channels#SERVICE_TYPE_AUDIO} channels. 7320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 73483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_VIDEO_WIDTH = "video_width"; 73683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 73783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The height of the video for this TV program, in the unit of pixels. 73983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Together with {@link #COLUMN_VIDEO_WIDTH} this is used to determine the video 7410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * resolution of the current TV program. Can be empty if it is not known initially or the 7420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * program does not convey any video such as the programs from type 7430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Channels#SERVICE_TYPE_AUDIO} channels. 7440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 74683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_VIDEO_HEIGHT = "video_height"; 74883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 74983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated audio languages of this TV program. 75183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to describe available audio languages included in the program. Use either 7530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * ISO 639-1 or 639-2/T codes. 7540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 75683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_AUDIO_LANGUAGE = "audio_language"; 75883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 75983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated content ratings of this TV program. 76183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to describe the content rating(s) of this program. Each comma-separated 7630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * content rating sub-string should be generated by calling 7640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link TvContentRating#flattenToString}. Note that in most cases the program content is 7650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * rated by a single rating system, thus resulting in a corresponding single sub-string that 7660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * does not require comma separation and multiple sub-strings appear only when the program 7670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * content is rated by two or more content rating systems. If any of those ratings is 7680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified as "blocked rating" in the user's parental control settings, the TV input 7690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * service should block the current content and wait for the signal that it is okay to 7700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * unblock. 7710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 77383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_CONTENT_RATING = "content_rating"; 77583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 77683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the poster art of this TV program. 77883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 7790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 7800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 7820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 7830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 7840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 7850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 7860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 7870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 7890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 79183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 7920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_POSTER_ART_URI = "poster_art_uri"; 79383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 79483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 7950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the thumbnail of this TV program. 7960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 7970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The system can generate a thumbnail from the poster art if this column is not 7980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified. Thus it is not necessary for TV input services to include a thumbnail if it is 7990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * just a scaled image of the poster art. 8000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 8020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 8040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 8050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 8060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 8070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 8080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 8090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 8110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 8130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_THUMBNAIL_URI = "thumbnail_uri"; 8150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV program is searchable or not. 8180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The columns of searchable programs can be read by other applications that have proper 8200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * permission. Care must be taken not to open sensitive data. 8210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the program is searchable and its columns can be read by 8230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, a value of 0 indicates that the program is hidden and its columns can 8240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * be read only by the package that owns the program and the system. If not specified, this 8250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * value is set to 1 (searchable) by default. 8260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 8280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_SEARCHABLE = "searchable"; 8300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal data used by individual TV input services. 8330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: BLOB 8380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data"; 8400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1"; 8500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2"; 8600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3"; 8700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Internal integer flag used by individual TV input services. 8730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 8750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 8760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4"; 8800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 8810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 8820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The version number of this row entry used by TV input services. 8830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is best used by sync adapters to identify the rows to update. The number can be 8850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * defined by individual TV input services. One may assign the same value as 8860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code version_number} in ETSI EN 300 468 or ATSC A/65, if the data are coming from a TV 8870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast. 8880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 8890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 8900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 8910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_VERSION_NUMBER = "version_number"; 8929b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 8939b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 8949b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating score style used for {@link #COLUMN_REVIEW_RATING}. 8959b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 8969b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p> The value should match one of the followings: {@link #REVIEW_RATING_STYLE_STARS}, 8979b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * {@link #REVIEW_RATING_STYLE_THUMBS_UP_DOWN}, and {@link #REVIEW_RATING_STYLE_PERCENTAGE}. 8989b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 8999b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p>Type: INTEGER 9009b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING 9019b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 9029b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen String COLUMN_REVIEW_RATING_STYLE = "review_rating_style"; 9039b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen 9049b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen /** 9059b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * The review rating score for this program. 9069b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 9079b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p>The format of the value is dependent on {@link #COLUMN_REVIEW_RATING_STYLE}. If the 9089b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * style is {@link #REVIEW_RATING_STYLE_STARS}, the value should be a real number between 9099b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 0.0 and 5.0. (e.g. "4.5") If the style is {@link #REVIEW_RATING_STYLE_THUMBS_UP_DOWN}, 9109b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * the value should be two integers, one for thumbs-up count and the other for thumbs-down 9119b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * count, with a comma between them. (e.g. "200,40") If the style is 9129b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * {@link #REVIEW_RATING_STYLE_PERCENTAGE}, the value shoule be a real number between 0 and 9139b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 100. (e.g. "99.9") 9149b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * 9159b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * <p>Type: TEXT 9169b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen * @see #COLUMN_REVIEW_RATING_STYLE 9179b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen */ 9189b81091fb8bde807ed01a7383c16e20a2e2adef7Conrad Chen String COLUMN_REVIEW_RATING = "review_rating"; 9190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 9200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 9210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 9220cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * Common columns for the tables of preview programs. 9230cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang * @hide 9240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 9250cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang @RestrictTo(LIBRARY_GROUP) 9260cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public interface PreviewProgramColumns { 9270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 9280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for movie. 92983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 93083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 93183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 932407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_MOVIE = 0; 93383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 93483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for TV series. 93683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 93783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 93883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 939407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TV_SERIES = 1; 94083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 94183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for TV season. 94383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 94483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 94583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 946407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TV_SEASON = 2; 94783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 94883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for TV episode. 95083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 95183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 95283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 953407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TV_EPISODE = 3; 95483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 95583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for clip. 95783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 95883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 95983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 960407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_CLIP = 4; 96183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 96283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for event. 96483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 96583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 96683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 967407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_EVENT = 5; 96883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 96983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for channel. 97183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 97283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 97383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 974407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_CHANNEL = 6; 97583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 97683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for track. 97883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 97983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 98083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 981407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_TRACK = 7; 98283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 98383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for album. 98583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 98683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 98783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 988407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_ALBUM = 8; 98983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 99083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for artist. 99283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 99383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 99483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 995407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_ARTIST = 9; 99683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 99783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 9980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for playlist. 99983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 10000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 10010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1002407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_PLAYLIST = 10; 10030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 10040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The program type for station. 100683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 100783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_TYPE 100883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1009407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int TYPE_STATION = 11; 101083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10112081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson /** 10122081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * The program type for game. 10132081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * 10142081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * @see #COLUMN_TYPE 10152081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson */ 10162081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson int TYPE_GAME = 12; 10172081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson 10180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 16:9. 10200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1024407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int ASPECT_RATIO_16_9 = 0; 102583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 3:2. 10280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1032407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int ASPECT_RATIO_3_2 = 1; 103383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10358f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * The aspect ratio for 4:3. 10368f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * 10378f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10388f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10398f95356f24ddac5b6cafc455824507057529d315Dongwon Kang */ 10408f95356f24ddac5b6cafc455824507057529d315Dongwon Kang int ASPECT_RATIO_4_3 = 2; 10418f95356f24ddac5b6cafc455824507057529d315Dongwon Kang 10428f95356f24ddac5b6cafc455824507057529d315Dongwon Kang /** 10430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 1:1. 10440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 10488f95356f24ddac5b6cafc455824507057529d315Dongwon Kang int ASPECT_RATIO_1_1 = 3; 10490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 10500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio for 2:3. 10520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 10568f95356f24ddac5b6cafc455824507057529d315Dongwon Kang int ASPECT_RATIO_2_3 = 4; 105783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10582081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson /** 10592081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * The aspect ratio for movie poster which is 1:1.441. 10602081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * 10612081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * @see #COLUMN_POSTER_ART_ASPECT_RATIO 10622081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * @see #COLUMN_THUMBNAIL_ASPECT_RATIO 10632081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson */ 10642081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson int ASPECT_RATIO_MOVIE_POSTER = 5; 10652081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson 10660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability for "available to this user". 10680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_AVAILABILITY 10700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1071407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int AVAILABILITY_AVAILABLE = 0; 107283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability for "free with subscription". 10750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_AVAILABILITY 10770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1078407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int AVAILABILITY_FREE_WITH_SUBSCRIPTION = 1; 107983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 10812081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * The availability for "paid content", either to-own or rental 10820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (user has not purchased/rented). 10830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 10840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_AVAILABILITY 10850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 1086407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int AVAILABILITY_PAID_CONTENT = 2; 108783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 10882081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson /** 10892081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * The availability for content already purchased by the user. 10902081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * 10912081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * @see #COLUMN_AVAILABILITY 10922081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson */ 10932081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson int AVAILABILITY_PURCHASED = 3; 10942081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson 10952081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson /** 10962081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * The availability for free content. 10972081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * 10982081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * @see #COLUMN_AVAILABILITY 10992081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson */ 11002081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson int AVAILABILITY_FREE = 4; 11012081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson 110283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1103407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "views". 110483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 110683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1107407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_VIEWS = 0; 110883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 110983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1110407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "listens". 111183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 111383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1114407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_LISTENS = 1; 111583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 111683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1117407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "followers". 111883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 112083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1121407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_FOLLOWERS = 2; 112283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 112383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1124407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "fans". 112583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 112783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1128407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_FANS = 3; 112983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 113083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1131407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "likes". 113283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 113483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1135407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_LIKES = 4; 113683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 113783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 1138407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * The interaction type for "thumbs". 113983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 114183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1142407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_THUMBS = 5; 114383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 114483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 11450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The interaction type for "viewers". 114683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 114883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 1149407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang int INTERACTION_TYPE_VIEWERS = 6; 11500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 115183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 11520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The type of this program content. 115383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 11550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_MOVIE}, 11560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TV_SERIES}, 11570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TV_SEASON}, 11580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TV_EPISODE}, 11590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_CLIP}, 11600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_EVENT}, 11610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_CHANNEL}, 11620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_TRACK}, 11630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ALBUM}, 11640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ARTIST}, 11652081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #TYPE_PLAYLIST}, 11662081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #TYPE_STATION}, and 11672081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #TYPE_GAME}. 11680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 11690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field if the program is from a {@link Channels#TYPE_PREVIEW} 11700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel. 117183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1172407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 117383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 11740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_TYPE = "type"; 117583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 117683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 11770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio of the poster art for this TV program. 117883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 11800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_16_9}, 11810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_3_2}, 11828f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * {@link #ASPECT_RATIO_4_3}, 11832081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #ASPECT_RATIO_1_1}, 11842081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #ASPECT_RATIO_2_3}, and 11852081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #ASPECT_RATIO_MOVIE_POSTER}. 118683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1187407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 118883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 11890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_POSTER_ART_ASPECT_RATIO = "poster_art_aspect_ratio"; 119083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 119183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 11920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The aspect ratio of the thumbnail for this TV program. 119383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 11940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 11950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_16_9}, 11960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ASPECT_RATIO_3_2}, 11978f95356f24ddac5b6cafc455824507057529d315Dongwon Kang * {@link #ASPECT_RATIO_4_3}, 11982081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #ASPECT_RATIO_1_1}, 11992081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #ASPECT_RATIO_2_3}, and 12002081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #ASPECT_RATIO_MOVIE_POSTER}. 120183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1202407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 120383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio"; 120583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 120683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the logo of this TV program. 120883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a small badge shown on top of the poster art or thumbnail representing the 12100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * source of the content. 121183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 12130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 12150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 12160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 12170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 12180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 12190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 12200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 12220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 122483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LOGO_URI = "logo_uri"; 122683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 122783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The availability of this TV program. 122983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 12310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #AVAILABILITY_AVAILABLE}, 12322081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #AVAILABILITY_FREE_WITH_SUBSCRIPTION}, 12332081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #AVAILABILITY_PAID_CONTENT}, 12342081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #AVAILABILITY_PURCHASED} and 12352081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #AVAILABILITY_FREE}. 123683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1237407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 12380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 12390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_AVAILABILITY = "availability"; 12400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 12410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 12420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The starting price of this TV program. 124383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This indicates the lowest regular acquisition cost of the content. It is only used 12452081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * if the availability of the program is {@link #AVAILABILITY_PAID_CONTENT} or 12462081517c7522faef9804fb028634103b12cea5fdIsaac Katzenelson * {@link #AVAILABILITY_FREE}. 12470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 12490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_OFFER_PRICE 125083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_STARTING_PRICE = "starting_price"; 125283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 125383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The offer price of this TV program. 125583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is the promotional cost of the content. It is only used if the availability of 12570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the program is {@link #AVAILABILITY_PAID_CONTENT}. 125883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 12600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_STARTING_PRICE 126183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 12620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_OFFER_PRICE = "offer_price"; 126383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 126483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 12650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The release date of this TV program. 126683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 126750224da7ae3cad6a6f555838b54f372364e45453Dongwon Kang * <p>The value should be in one of the following formats: 126850224da7ae3cad6a6f555838b54f372364e45453Dongwon Kang * "yyyy", "yyyy-MM-dd", and "yyyy-MM-ddTHH:mm:ssZ" (UTC in ISO 8601). 126983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 12710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 12720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_RELEASE_DATE = "release_date"; 12730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 12740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 12750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The count of the items included in this TV program. 127683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 12770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is only relevant if the program represents a collection of items such as series, 12780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * episodes, or music tracks. 12790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 12810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 12820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_ITEM_COUNT = "item_count"; 12830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 12840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 12850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV program is live or not. 12860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the content is airing and should be consumed now, a value 12880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * of 0 indicates that the content is off the air and does not need to be consumed at the 12890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * present time. If not specified, the value is set to 0 (not live) by default. 12900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 12920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 12930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LIVE = "live"; 12940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 12950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 12960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The internal ID used by individual TV input services. 12970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 12980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 12990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 13000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 130283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 130383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 130483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id"; 130683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 130783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the preview video. 130983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13104109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 131183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 131283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <ul> 131383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 131483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 131583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * </li> 131683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 131783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * </ul> 131883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 132083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 132183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 132283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_PREVIEW_VIDEO_URI = "preview_video_uri"; 132483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 132583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13264109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * The last playback position (in milliseconds) of the original content of this preview 13274109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * program. 132883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 133083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 133283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_LAST_PLAYBACK_POSITION_MILLIS = 13340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "last_playback_position_millis"; 133583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 133683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13374109ea358285eb3a4b98a7987fb1c44ec3cbcadcDongwon Kang * The duration (in milliseconds) of the original content of this preview program. 133883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 13400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 13410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 134283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_DURATION_MILLIS = "duration_millis"; 134483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 134583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13462ed7093758f4b3e84f19a003d1ed78c899a14130Dongwon Kang * The intent URI which is launched when the preview program is selected. 134783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 134883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>The URI is created using {@link Intent#toUri} with {@link Intent#URI_INTENT_SCHEME} 134983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * and converted back to the original intent with {@link Intent#parseUri}. The intent is 13502ed7093758f4b3e84f19a003d1ed78c899a14130Dongwon Kang * launched when the user selects the preview program item. 135183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 135383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 135483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 135583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13562ed7093758f4b3e84f19a003d1ed78c899a14130Dongwon Kang String COLUMN_INTENT_URI = "intent_uri"; 135783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 135883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this program is transient or not. 136083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel will be automatically removed by the system on 13620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * reboot, and a value of 0 indicates that the channel is persistent across reboot. If not 13630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified, this value is set to 0 (not transient) by default. 136483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 13660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Channels#COLUMN_TRANSIENT 136783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_TRANSIENT = "transient"; 136983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 137083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The type of interaction for this TV program. 137283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p> The value should match one of the followings: 13740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_LISTENS}, 13750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_FOLLOWERS}, 13760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_FANS}, 13770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_LIKES}, 13780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_THUMBS}, 13790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_VIEWS}, and 13800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #INTERACTION_TYPE_VIEWERS}. 138183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 1382407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 13830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_COUNT 138483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERACTION_TYPE = "interaction_type"; 138683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 138783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The interaction count for this program. 138983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This indicates the number of times interaction has happened. 139183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 13920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 13930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_INTERACTION_TYPE 139483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 13950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_INTERACTION_COUNT = "interaction_count"; 139683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 139783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 13980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The author or artist of this content. 139983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 140183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_AUTHOR = "author"; 140383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 140483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 14050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV program is browsable or not. 140683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This column can only be set by applications having proper system permission. For 14080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, this is a read-only column. 14090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 14100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the program is browsable and can be shown to users in 14110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the UI. A value of 0 indicates that the program should be hidden from users and the 14120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * application who changes this value to 0 should send 14130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED} to the owner of the program 14140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * to notify this change. 14150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 14160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This value is set to 1 (browsable) by default. 141783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 141883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (boolean) 141983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_BROWSABLE = "browsable"; 142183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 142283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 14230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The content ID of this TV program. 142483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A public ID of the content which allows the application to apply the same operation to 14260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * all the program copies in different channels. 142783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 142983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 14300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 143183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 14320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang String COLUMN_CONTENT_ID = "content_id"; 143383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1434b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson /** 1435b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * The content description of the logo of this TV program. 1436b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1437b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>A description of the logo shown on the program used in accessibility mode. 1438b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1439b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Can be empty. 1440b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1441b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Type: TEXT 1442b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * @see #COLUMN_LOGO_URI 1443b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson */ 1444b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson String COLUMN_LOGO_CONTENT_DESCRIPTION = "logo_content_description"; 1445b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson 1446b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson /** 1447b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * A genre(s) that are related to this TV program. 1448b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1449b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>A short freeform description of the genre(s) of the program. Usually a comma seperated 1450b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * list of a few genres. For example: Drama, Sci-Fi. 1451b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1452b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Can be empty. 1453b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1454b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Type: TEXT 1455b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson */ 1456b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson String COLUMN_GENRE = "genre"; 1457b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson 1458b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson /** 1459b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * The start time of this TV program, in milliseconds since the epoch. 1460b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1461b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Should be empty if this program is not live. 1462b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1463b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Type: INTEGER (long) 1464b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * @see #COLUMN_LIVE 1465b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson */ 1466b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis"; 1467b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson 1468b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson /** 1469b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * The end time of this TV program, in milliseconds since the epoch. 1470b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1471b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Should be empty if this program is not live. 1472b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1473b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Type: INTEGER (long) 1474b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * @see #COLUMN_LIVE 1475b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson */ 1476b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis"; 1477b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson 1478b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson /** 1479b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * The URI for the preview audio. 1480b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1481b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>The data in the column must be a URL, or a URI in one of the following formats: 1482b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1483b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <ul> 1484b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 1485b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 1486b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * </li> 1487b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 1488b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * </ul> 1489b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1490b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Can be empty. 1491b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * 1492b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson * <p>Type: TEXT 1493b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson */ 1494b9004ae856906c21257befe148a7e033eb4b4ba8Isaac Katzenelson String COLUMN_PREVIEW_AUDIO_URI = "preview_audio_uri"; 149583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 149683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 14970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** Column definitions for the TV channels table. */ 14980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final class Channels implements BaseTvColumns { 149983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1500239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 1501239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 1502239795a5cada6a491e671660bb608f782465576fDongwon Kang * 1503239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 1504239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 1505239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 150683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 15070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_CHANNEL); 150883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 15090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of TV channels. */ 15100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/channel"; 151183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 15120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single TV channel. */ 15130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/channel"; 151483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 1515acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1516acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 1517acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @StringDef({ 15180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_OTHER, 15190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_NTSC, 15200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_PAL, 15210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_SECAM, 15220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_T, 15230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_T2, 15240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_S, 15250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_S2, 15260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_C, 15270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_C2, 15280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_H, 15290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DVB_SH, 15300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ATSC_T, 15310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ATSC_C, 15320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ATSC_M_H, 15330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_T, 15340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_TB, 15350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_S, 15360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_ISDB_C, 15370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_1SEG, 15380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_DTMB, 15390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_CMMB, 15400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_T_DMB, 15410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_S_DMB, 15420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang TYPE_PREVIEW, 1543acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1544acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 1545acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public @interface Type {} 1546acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 154783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 15480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * A generic channel type. 15497ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Use this if the current channel is streaming-based or its broadcast system type does not 15510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * fit under any other types. This is the default channel type. 15527ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15537ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15547ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_OTHER = "TYPE_OTHER"; 15567ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15577ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for NTSC. 15597ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15607ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15617ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_NTSC = "TYPE_NTSC"; 15637ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15647ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for PAL. 15667ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15677ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15687ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_PAL = "TYPE_PAL"; 15707ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15717ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for SECAM. 15737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15747ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15757ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_SECAM = "TYPE_SECAM"; 15777ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15787ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-T (terrestrial). 15807ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15817ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15827ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_T = "TYPE_DVB_T"; 15847ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15857ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-T2 (terrestrial). 15877ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15887ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15897ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_T2 = "TYPE_DVB_T2"; 15917ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15927ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 15930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-S (satellite). 15947ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 15957ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 15967ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 15970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_S = "TYPE_DVB_S"; 15987ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 15997ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-S2 (satellite). 16017ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16027ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 16037ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_S2 = "TYPE_DVB_S2"; 16057ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16067ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-C (cable). 16087ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16097ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 16107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_C = "TYPE_DVB_C"; 16127ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16137ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-C2 (cable). 16157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16167ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 16177ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_C2 = "TYPE_DVB_C2"; 16197ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16207ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-H (handheld). 16227ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16237ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * @see #COLUMN_TYPE 16247ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_H = "TYPE_DVB_H"; 1626acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16277ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DVB-SH (satellite). 16297ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16317ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DVB_SH = "TYPE_DVB_SH"; 16337ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16347ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ATSC (terrestrial). 16367ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16387ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ATSC_T = "TYPE_ATSC_T"; 16407ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16417ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ATSC (cable). 16437ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16457ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ATSC_C = "TYPE_ATSC_C"; 1647acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16487ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ATSC-M/H (mobile/handheld). 16507ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16527ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H"; 16547ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16557ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-T (terrestrial). 16577ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16597ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_T = "TYPE_ISDB_T"; 16617ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16627ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-Tb (Brazil). 16647ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16667ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_TB = "TYPE_ISDB_TB"; 16687ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16697ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-S (satellite). 16717ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_S = "TYPE_ISDB_S"; 1675acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16767ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for ISDB-C (cable). 16787ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16807ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_ISDB_C = "TYPE_ISDB_C"; 16827ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16837ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for 1seg (handheld). 16857ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16877ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_1SEG = "TYPE_1SEG"; 16897ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 16907ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for DTMB (terrestrial). 16927ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 16930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 16947ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 16950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_DTMB = "TYPE_DTMB"; 1696acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 16977ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 16980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for CMMB (handheld). 16997ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 17000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 17017ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 17020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_CMMB = "TYPE_CMMB"; 17037ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17047ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 17050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for T-DMB (terrestrial). 17067ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 17070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 17087ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 17090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_T_DMB = "TYPE_T_DMB"; 17107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17117ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 17120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for S-DMB (satellite). 17137ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 17140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 17157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 17160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_S_DMB = "TYPE_S_DMB"; 17177ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17187ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 17190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel type for preview videos. 17207ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 17210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <P>Unlike other broadcast TV channel types, the programs in the preview channel usually 17220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * are promotional videos. The UI may treat the preview channels differently from the other 17230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast channels. 17247ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 17250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_TYPE 17267ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 17270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String TYPE_PREVIEW = "TYPE_PREVIEW"; 17287ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** @hide */ 17300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 17310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @StringDef({ 17320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang SERVICE_TYPE_OTHER, 17330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang SERVICE_TYPE_AUDIO_VIDEO, 17340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang SERVICE_TYPE_AUDIO, 17350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang }) 17360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 17370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface ServiceType {} 17387ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** A generic service type. */ 17400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER"; 17410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The service type for regular TV channels that have both audio and video. */ 17430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO"; 17440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 17450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The service type for radio channels that have audio only. */ 17460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String SERVICE_TYPE_AUDIO = "SERVICE_TYPE_AUDIO"; 17477ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 1748acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 1749acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 1750acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @StringDef({ 17510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_240P, 17520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_360P, 17530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_480I, 17540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_576I, 17550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_576P, 17560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_720P, 17570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_1080I, 17580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_1080P, 17590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_2160P, 17600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_4320P, 1761acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 1762acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 17630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface VideoFormat {} 1764acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 17650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 240p. */ 17660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_240P = "VIDEO_FORMAT_240P"; 17677ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 360p. */ 17690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_360P = "VIDEO_FORMAT_360P"; 17707ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 480i. */ 17720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_480I = "VIDEO_FORMAT_480I"; 17737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 480p. */ 17750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_480P = "VIDEO_FORMAT_480P"; 177683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 576i. */ 17780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_576I = "VIDEO_FORMAT_576I"; 17797ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 576p. */ 17810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_576P = "VIDEO_FORMAT_576P"; 17827ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 17830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 720p. */ 17840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_720P = "VIDEO_FORMAT_720P"; 178583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 1080i. */ 17870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_1080I = "VIDEO_FORMAT_1080I"; 178883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 1080p. */ 17900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_1080P = "VIDEO_FORMAT_1080P"; 179183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 2160p. */ 17930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_2160P = "VIDEO_FORMAT_2160P"; 179483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video format for 4320p. */ 17960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_FORMAT_4320P = "VIDEO_FORMAT_4320P"; 179783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 17980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** @hide */ 17990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 18000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @StringDef({ 18010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_SD, 18020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_ED, 18030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_HD, 18040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_FHD, 18050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_RESOLUTION_UHD, 18060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang }) 18070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 18080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public @interface VideoResolution {} 180983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 18100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for standard-definition. */ 18110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_SD = "VIDEO_RESOLUTION_SD"; 18120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 18130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for enhanced-definition. */ 18140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_ED = "VIDEO_RESOLUTION_ED"; 18150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 18160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for high-definition. */ 18170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_HD = "VIDEO_RESOLUTION_HD"; 18180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 18190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for full high-definition. */ 18200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_FHD = "VIDEO_RESOLUTION_FHD"; 18210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 18220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The video resolution for ultra high-definition. */ 18230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String VIDEO_RESOLUTION_UHD = "VIDEO_RESOLUTION_UHD"; 18240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 18250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private static final Map<String, String> VIDEO_FORMAT_TO_RESOLUTION_MAP = new HashMap<>(); 18260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 18270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang static { 18280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_480I, VIDEO_RESOLUTION_SD); 18290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_480P, VIDEO_RESOLUTION_ED); 18300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_576I, VIDEO_RESOLUTION_SD); 18310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_576P, VIDEO_RESOLUTION_ED); 18320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_720P, VIDEO_RESOLUTION_HD); 18330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_1080I, VIDEO_RESOLUTION_HD); 18340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_1080P, VIDEO_RESOLUTION_FHD); 18350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_2160P, VIDEO_RESOLUTION_UHD); 18360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang VIDEO_FORMAT_TO_RESOLUTION_MAP.put(VIDEO_FORMAT_4320P, VIDEO_RESOLUTION_UHD); 18370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 183883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 183983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Returns the video resolution (definition) for a given video format. 184183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @param videoFormat The video format defined in {@link Channels}. 18430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @return the corresponding video resolution string. {@code null} if the resolution string 18440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * is not defined for the given video format. 18450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_VIDEO_FORMAT 184683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Nullable 18480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static String getVideoResolution(@VideoFormat String videoFormat) { 18490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang return VIDEO_FORMAT_TO_RESOLUTION_MAP.get(videoFormat); 18500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 185183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 185283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV input service that provides this TV channel. 185483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Use {@link #buildInputId} to build the ID. 185683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 185883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 186083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_INPUT_ID = "input_id"; 186283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 186383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 18640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The broadcast system type of this TV channel. 186583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 18660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to indicate the broadcast standard (e.g. ATSC, DVB or ISDB) the current 18670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel conforms to. Use {@link #TYPE_OTHER} for streaming-based channels, which is the 18680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * default channel type. The value should match one of the followings: 18690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_1SEG}, 18700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ATSC_C}, 18710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ATSC_M_H}, 18720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ATSC_T}, 18730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_CMMB}, 18740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DTMB}, 18750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_C}, 18760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_C2}, 18770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_H}, 18780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_S}, 18790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_S2}, 18800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_SH}, 18810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_T}, 18820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_DVB_T2}, 18830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_C}, 18840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_S}, 18850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_T}, 18860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_ISDB_TB}, 18870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_NTSC}, 18880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_OTHER}, 18890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_PAL}, 18900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_SECAM}, 18910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_S_DMB}, and 18920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #TYPE_T_DMB}. 18930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 18940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 189583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 189683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 189783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 18980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_TYPE = "type"; 189983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 190083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The predefined service type of this TV channel. 190283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is primarily used to indicate whether the current channel is a regular TV channel 19040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * or a radio-like channel. Use the same coding for {@code service_type} in the underlying 19050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast standard if it is defined there (e.g. ATSC A/53, ETSI EN 300 468 and ARIB 19060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * STD-B10). Otherwise use one of the followings: {@link #SERVICE_TYPE_OTHER}, 19070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #SERVICE_TYPE_AUDIO_VIDEO}, {@link #SERVICE_TYPE_AUDIO} 19080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 191083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 191183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 191283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SERVICE_TYPE = "service_type"; 191483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 191583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The original network ID of this TV channel. 191783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is used to identify the originating delivery system, if applicable. Use the same 19190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * coding for {@code original_network_id} for ETSI EN 300 468/TR 101 211 and ARIB STD-B10. 192083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field only if the underlying broadcast standard defines the same 19220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * name field. Otherwise, leave empty. 19230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 192583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id"; 192783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 192883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The transport stream ID of this channel. 193083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is used to identify the Transport Stream that contains the current channel from any 19320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other multiplex within a network, if applicable. Use the same coding for 19330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code transport_stream_id} defined in ISO/IEC 13818-1 if the channel is transmitted via 19340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the MPEG Transport Stream. 193583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field only if the current channel is transmitted via the MPEG 19370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Transport Stream. Leave empty otherwise. 19380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 194083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id"; 194283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 194383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The service ID of this channel. 194583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>It is used to identify the current service, or channel from any other services within 19470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * a given Transport Stream, if applicable. Use the same coding for {@code service_id} in 19480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * ETSI EN 300 468 and ARIB STD-B10 or {@code program_number} in ISO/IEC 13818-1. 19490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 19500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field only if the underlying broadcast standard defines the same 19510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * name field, or the current channel is transmitted via the MPEG Transport Stream. Leave 19520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * empty otherwise. 195383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 195483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 195583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SERVICE_ID = "service_id"; 195783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 195883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel number that is displayed to the user. 196083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The format can vary depending on broadcast standard and product specification. 196283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 196483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_DISPLAY_NUMBER = "display_number"; 196683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 196783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The channel name that is displayed to the user. 196983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A call sign is a good candidate to use for this purpose but any name that helps the 19710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * user recognize the current channel will be enough. Can also be empty depending on 19720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * broadcast standard. 197383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p> Type: TEXT 197583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_DISPLAY_NAME = "display_name"; 197783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 197883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The network affiliation for this TV channel. 198083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is used to identify a channel that is commonly called by its network affiliation 19820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * instead of the display name. Examples include ABC for the channel KGO-HD, FOX for the 19830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel KTVU-HD and NBC for the channel KNTV-HD. Can be empty if not applicable. 198483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 198583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 198683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation"; 198883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 198983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The description of this TV channel. 199183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 19920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty initially. 199383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 199483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 199583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 19960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_DESCRIPTION = "description"; 199783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 199883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 19990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The typical video format for programs from this TV channel. 20007ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is primarily used to filter out channels based on video format by applications. 20020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The value should match one of the followings: {@link #VIDEO_FORMAT_240P}, 20030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_360P}, {@link #VIDEO_FORMAT_480I}, {@link #VIDEO_FORMAT_480P}, 20040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_576I}, {@link #VIDEO_FORMAT_576P}, {@link #VIDEO_FORMAT_720P}, 20050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_1080I}, {@link #VIDEO_FORMAT_1080P}, {@link #VIDEO_FORMAT_2160P}, 20060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #VIDEO_FORMAT_4320P}. Note that the actual video resolution of each program from a 20070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * given channel can vary thus one should use {@link Programs#COLUMN_VIDEO_WIDTH} and 20080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Programs#COLUMN_VIDEO_HEIGHT} to get more accurate video resolution. 20097ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 20110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 20120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #getVideoResolution 20137ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_VIDEO_FORMAT = "video_format"; 20157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20167ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is browsable or not. 201883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 20190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This column can only be set by applications having proper system permission. For 20200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, this is a read-only column. 202183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 20220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates the channel is included in the channel list that applications 20230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * use to browse channels, a value of 0 indicates the channel is not included in the list. 20240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * If not specified, this value is set to 0 (not browsable) by default. 202583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 20260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 20270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 20280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_BROWSABLE = "browsable"; 20290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 20300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 20310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is searchable or not. 203283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 20330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The columns of searchable channels can be read by other applications that have proper 20340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * permission. Care must be taken not to open sensitive data. 203583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 20360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel is searchable and its columns can be read by 20370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * other applications, a value of 0 indicates that the channel is hidden and its columns can 20380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * be read only by the package that owns the channel and the system. If not specified, this 20390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * value is set to 1 (searchable) by default. 20400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 20410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 204283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 20430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SEARCHABLE = "searchable"; 204483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 204583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 20460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is locked or not. 20477ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is primarily used for alternative parental control to prevent unauthorized users 20490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * from watching the current channel regardless of the content rating. A value of 1 20500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * indicates the channel is locked and the user is required to enter passcode to unlock it 20510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * in order to watch the current program from the channel, a value of 0 indicates the 20520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel is not locked thus the user is not prompted to enter passcode If not specified, 20530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * this value is set to 0 (not locked) by default. 20547ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 2055d14f98d763f117942d726be5d9e69ce6faad399bConrad Chen * <p>This column can only be set by applications having proper system permission to 2056d14f98d763f117942d726be5d9e69ce6faad399bConrad Chen * modify parental control settings. 2057d14f98d763f117942d726be5d9e69ce6faad399bConrad Chen * 20580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 20597ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_LOCKED = "locked"; 20617ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20627ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the app badge icon of the app link template for this channel. 20647ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This small icon is overlaid at the bottom of the poster art specified by 20660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #COLUMN_APP_LINK_POSTER_ART_URI}. The data in the column must be a URI in one of 20670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the following formats: 20687ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20697ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <ul> 20707ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 20717ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 20727ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * </li> 20737ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 20747ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * </ul> 20757ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 20770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 20780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 20797ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20807ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 20810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 20820c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 20830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 20840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 20857ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 20860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_ICON_URI = "app_link_icon_uri"; 20877ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 20887ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 20890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The URI for the poster art used as the background of the app link template for this 20900c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel. 20917ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The data in the column must be a URL, or a URI in one of the following formats: 20937ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 20940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 20950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>content ({@link android.content.ContentResolver#SCHEME_CONTENT})</li> 20960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>android.resource ({@link android.content.ContentResolver#SCHEME_ANDROID_RESOURCE}) 20970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 20980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>file ({@link android.content.ContentResolver#SCHEME_FILE})</li> 20990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 21007ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 21020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 21030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 21047ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21057ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 21060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 21070c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 21080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 21090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 21107ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 21110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_POSTER_ART_URI = "app_link_poster_art_uri"; 21127ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 21137ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 21140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The link text of the app link template for this channel. 21157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This provides a short description of the action that happens when the corresponding 21170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * app link is clicked. 21187ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 21200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 21210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 21227ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21237ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 21240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 21250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 21260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 21270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 21287ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 21290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_TEXT = "app_link_text"; 21307ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 21317ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 21320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The accent color of the app link template for this channel. This is primarily used for 21330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the background color of the text box in the template. 21347ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 21360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 21370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 21387ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 21390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (color value) 21400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 21410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_INTENT_URI 21420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 21430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 21447ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 21450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_COLOR = "app_link_color"; 21467ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 21477ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 21480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The intent URI of the app link for this channel. 214983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The URI is created using {@link Intent#toUri} with {@link Intent#URI_INTENT_SCHEME} 21510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * and converted back to the original intent with {@link Intent#parseUri}. The intent is 21520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * launched when the user clicks the corresponding app link for the current channel. 215383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The app-linking allows channel input sources to provide activity links from their live 21550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel programming to another activity. This enables content providers to increase user 21560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * engagement by offering the viewer other content or actions. 215783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 21590c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_COLOR 21600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_ICON_URI 21610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_POSTER_ART_URI 21620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_APP_LINK_TEXT 216383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 21640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_APP_LINK_INTENT_URI = "app_link_intent_uri"; 216583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 216683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 21670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The internal ID used by individual TV input services. 216883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21690c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 21700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * apps. 217183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 21720c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 21730c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 21740c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: TEXT 217583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 21760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_ID = "internal_provider_id"; 217783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 217883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 217983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal data used by individual TV input services. 218083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 218183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 218283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 218383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 218483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: BLOB 218583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 218683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data"; 218783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 218883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 218983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 219083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 219183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 219283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 219383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 219483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 219583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 219683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1"; 219783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 219883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 219983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 220083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 220183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 220283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 220383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 220483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 220583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 220683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2"; 220783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 220883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 220983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 221083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 221183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 221283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 221383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 221483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 221583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 221683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3"; 221783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 221883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 221983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Internal integer flag used by individual TV input services. 222083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 222183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is internal to the provider that inserted it, and should not be decoded by other 222283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * apps. 222383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 222483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 222583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 222683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4"; 222783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 222883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 222983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The version number of this row entry used by TV input services. 223083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 223183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is best used by sync adapters to identify the rows to update. The number can be 223283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * defined by individual TV input services. One may assign the same value as 22330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@code version_number} that appears in ETSI EN 300 468 or ATSC A/65, if the data are 22340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * coming from a TV broadcast. 223583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 223683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 223783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 223883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_VERSION_NUMBER = "version_number"; 223983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 224083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is transient or not. 224283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel will be automatically removed by the system on 22440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * reboot, and a value of 0 indicates that the channel is persistent across reboot. If not 22450c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * specified, this value is set to 0 (not transient) by default. 224683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 22480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see PreviewPrograms#COLUMN_TRANSIENT 224921cac9da019ba4968a015b482d216ab558cda20eConrad Chen * @see WatchNextPrograms#COLUMN_TRANSIENT 225083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 22510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_TRANSIENT = "transient"; 225283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 225383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether this TV channel is approved to be shown by the system. 225583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that the channel is approved to be shown by the system, and a 22570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * value of 0 indicates that the channel is blocked by system. If not specified, this value 22580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * is set to 0 (not approved) by default. 225983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 22610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @hide 226283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 22630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @RestrictTo(LIBRARY_GROUP) 22640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SYSTEM_APPROVED = "system_approved"; 22650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2266c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia /** 2267c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * A value that can be used to define the order an app's channels should be displayed in 2268c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * the configure channels menu. 2269c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * 2270c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * <p>If not specified, this value is set to 0 (unordered) by default. 2271c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * A value of 0 indicates that there is no defined order for this TV channel and it will 2272c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * default to alphabetical ordering after any channels ordered by this value. 2273c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * For example, given channels A, B, and C, with orders 0, 1, and 2 respectively, 2274c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * the final order will be B, C, A. 2275c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * 2276c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia * <p>Type: INTEGER 2277c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia */ 2278c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia public static final String COLUMN_CONFIGURATION_DISPLAY_ORDER = 2279c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia "configuration_display_order"; 2280c5d70b551dcb12622f23da9a5c5e3838204b1220Rhiannon Malia 2281581e134d67d93904a6c9aef04650d6e33819308aloih /** 2282581e134d67d93904a6c9aef04650d6e33819308aloih * A channel identifier set in the TvProvider by the app to help OEM differentiate among 2283581e134d67d93904a6c9aef04650d6e33819308aloih * the app's channels. This identifier should be unique per channel for each app, and should 2284581e134d67d93904a6c9aef04650d6e33819308aloih * be agreed between the app and the OEM. It is up to the OEM on how they use this 2285581e134d67d93904a6c9aef04650d6e33819308aloih * identifier for customization purposes. 2286581e134d67d93904a6c9aef04650d6e33819308aloih * 2287581e134d67d93904a6c9aef04650d6e33819308aloih * <p>Can be empty. 2288581e134d67d93904a6c9aef04650d6e33819308aloih * 2289581e134d67d93904a6c9aef04650d6e33819308aloih * <p>Type: TEXT 2290581e134d67d93904a6c9aef04650d6e33819308aloih */ 2291581e134d67d93904a6c9aef04650d6e33819308aloih public static final String COLUMN_SYSTEM_CHANNEL_KEY = "system_channel_key"; 2292581e134d67d93904a6c9aef04650d6e33819308aloih 22930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private Channels() {} 229483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 229583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 22960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * A sub-directory of a single TV channel that represents its primary logo. 229783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 22980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>To access this directory, append {@link Channels.Logo#CONTENT_DIRECTORY} to the raw 22990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel URI. The resulting URI represents an image file, and should be interacted 23000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * using ContentResolver.openAssetFileDescriptor. 230183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Note that this sub-directory also supports opening the logo as an asset file in write 23030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * mode. Callers can create or replace the primary logo associated with this channel by 23040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * opening the asset file and writing the full-size photo contents into it. (Make sure there 23050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * is no padding around the logo image.) When the file is closed, the image will be parsed, 23060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * sized down if necessary, and stored. 230783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Usage example: 23090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <pre> 23100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * public void writeChannelLogo(long channelId, byte[] logo) { 23110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Uri channelLogoUri = TvContract.buildChannelLogoUri(channelId); 23120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * try { 23130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * AssetFileDescriptor fd = 23140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * getContentResolver().openAssetFileDescriptor(channelLogoUri, "rw"); 23150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * OutputStream os = fd.createOutputStream(); 23160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * os.write(logo); 23170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * os.close(); 23180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * fd.close(); 23190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * } catch (IOException e) { 23200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * // Handle error cases. 23210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * } 23220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * } 23230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </pre> 232483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final class Logo { 23260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 23270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 23280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The directory twig for this sub-table. 23290c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 23300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_DIRECTORY = "logo"; 23310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 23320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private Logo() {} 23330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 23340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 23350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 23360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 23370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Column definitions for the TV programs table. 23380c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 23390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>By default, the query results will be sorted by 23400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Programs#COLUMN_START_TIME_UTC_MILLIS} in ascending order. 23410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 23420cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class Programs implements BaseTvColumns, ProgramColumns { 23430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2344239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2345239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2346239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2347239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2348239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2349239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 23500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 23510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_PROGRAM); 23520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 23530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of TV programs. */ 23540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/program"; 23550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 23560c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single TV program. */ 23570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/program"; 235883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 235983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 23600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV channel that provides this TV program. 236183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23620c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}. 236383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 236583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 236783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_CHANNEL_ID = "channel_id"; 236983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 237083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 23710c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The season number of this TV program for episodic TV shows. 237283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 237383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Can be empty. 237483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER 23760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 23770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @deprecated Use {@link #COLUMN_SEASON_DISPLAY_NUMBER} instead. 237883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23790c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Deprecated 23800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_SEASON_NUMBER = "season_number"; 238183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 238283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 23830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The episode number of this TV program for episodic TV shows. 238483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 238583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Can be empty. 238683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 238783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 238883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 23890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @deprecated Use {@link #COLUMN_EPISODE_DISPLAY_NUMBER} instead. 239083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 23910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang @Deprecated 23920c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_EPISODE_NUMBER = "episode_number"; 239383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 23947ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 23950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The start time of this TV program, in milliseconds since the epoch. 23967ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 23970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should be equal to or larger than {@link #COLUMN_END_TIME_UTC_MILLIS} of the 23980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * previous program in the same channel. In practice, start time will usually be the end 23990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * time of the previous program. 24007ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty if this program belongs to a {@link Channels#TYPE_PREVIEW} channel. 24020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 24030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 24047ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 24050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis"; 24067ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 24077ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 24080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The end time of this TV program, in milliseconds since the epoch. 24097ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should be equal to or less than {@link #COLUMN_START_TIME_UTC_MILLIS} of the 24110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * next program in the same channel. In practice, end time will usually be the start time of 24120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * the next program. 24137ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty if this program belongs to a {@link Channels#TYPE_PREVIEW} channel. 24157ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 24177ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 24180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis"; 24197ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 24207ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang /** 24210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The comma-separated genre string of this TV program. 24227ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Use the same language appeared in the underlying broadcast standard, if applicable. 24240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * (For example, one can refer to the genre strings used in Genre Descriptor of ATSC A/65 or 24250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Content Descriptor of ETSI EN 300 468, if appropriate.) Otherwise, leave empty. Use 24260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Genres#encode} to create a text that can be stored in this column. Use 24270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Genres#decode} to get the broadcast genre strings from the text stored in the 24280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * column. 24297ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24307ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * <p>Type: TEXT 24310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#encode 24320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see Genres#decode 24337ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 24340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre"; 24350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 24360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 24370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The flag indicating whether recording of this program is prohibited. 24387ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang * 24390c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>A value of 1 indicates that recording of this program is prohibited and application 24400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * will not schedule any recording for this program. A value of 0 indicates that the 24410c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * recording is not prohibited. If not specified, this value is set to 0 (not prohibited) by 24420c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * default. 24430c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 24440c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (boolean) 24457ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang */ 24460c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited"; 24477ded2e6b97dd9838eab4424dfa8cfaa57eb323e4Dongwon Kang 244883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private Programs() {} 244983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 245083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** Canonical genres for TV programs. */ 245183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final class Genres { 2452acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang /** @hide */ 245304c9e28ea0be0cedcee58e4d29343ac08733d58aAurimas Liutikas @RestrictTo(RestrictTo.Scope.LIBRARY) 2454acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @StringDef({ 2455acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang FAMILY_KIDS, 2456acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang SPORTS, 2457acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang SHOPPING, 2458acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang MOVIES, 2459acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang COMEDY, 2460acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang TRAVEL, 2461acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang DRAMA, 2462acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang EDUCATION, 2463acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang ANIMAL_WILDLIFE, 2464acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang NEWS, 2465acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang GAMING, 2466acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang ARTS, 2467acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang ENTERTAINMENT, 2468acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang LIFE_STYLE, 2469acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang MUSIC, 2470acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang PREMIER, 2471acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang TECH_SCIENCE, 2472acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang }) 2473acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang @Retention(RetentionPolicy.SOURCE) 2474acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public @interface Genre {} 2475acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang 247683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Family/Kids. */ 247783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String FAMILY_KIDS = "FAMILY_KIDS"; 247883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 247983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Sports. */ 248083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String SPORTS = "SPORTS"; 248183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 248283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Shopping. */ 248383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String SHOPPING = "SHOPPING"; 248483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 248583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Movies. */ 248683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String MOVIES = "MOVIES"; 248783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 248883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Comedy. */ 248983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COMEDY = "COMEDY"; 249083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 249183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Travel. */ 249283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String TRAVEL = "TRAVEL"; 249383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 249483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Drama. */ 249583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String DRAMA = "DRAMA"; 249683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 249783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Education. */ 249883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String EDUCATION = "EDUCATION"; 249983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 250083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Animal/Wildlife. */ 250183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String ANIMAL_WILDLIFE = "ANIMAL_WILDLIFE"; 250283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 250383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for News. */ 250483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String NEWS = "NEWS"; 250583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 250683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Gaming. */ 250783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String GAMING = "GAMING"; 250883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 250983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Arts. */ 251083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String ARTS = "ARTS"; 251183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 251283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Entertainment. */ 251383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String ENTERTAINMENT = "ENTERTAINMENT"; 251483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 251583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Life Style. */ 251683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String LIFE_STYLE = "LIFE_STYLE"; 251783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 251883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Music. */ 251983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String MUSIC = "MUSIC"; 252083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 252183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Premier. */ 252283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String PREMIER = "PREMIER"; 252383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 252483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The genre for Tech/Science. */ 252583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String TECH_SCIENCE = "TECH_SCIENCE"; 252683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 252783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final HashSet<String> CANONICAL_GENRES = new HashSet<>(); 252883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang static { 252983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(FAMILY_KIDS); 253083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(SPORTS); 253183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(SHOPPING); 253283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(MOVIES); 253383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(COMEDY); 253483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(TRAVEL); 253583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(DRAMA); 253683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(EDUCATION); 253783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(ANIMAL_WILDLIFE); 253883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(NEWS); 253983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(GAMING); 254083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(ARTS); 254183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(ENTERTAINMENT); 254283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(LIFE_STYLE); 254383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(MUSIC); 254483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(PREMIER); 254583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang CANONICAL_GENRES.add(TECH_SCIENCE); 254683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 254783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 254883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final char DOUBLE_QUOTE = '"'; 254983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final char COMMA = ','; 255083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String DELIMITER = ","; 255183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 255283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static final String[] EMPTY_STRING_ARRAY = new String[0]; 255383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 255483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private Genres() {} 255583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 255683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 255783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Encodes genre strings to a text that can be put into the database. 255883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 255983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param genres Genre strings. 256083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return an encoded genre string that can be inserted into the 256183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link #COLUMN_BROADCAST_GENRE} or {@link #COLUMN_CANONICAL_GENRE} column. 256283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2563acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public static String encode(@NonNull @Genre String... genres) { 256483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (genres == null) { 256583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang // MNC and before will throw a NPE. 256683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return null; 256783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 256883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang StringBuilder sb = new StringBuilder(); 256983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String separator = ""; 257083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang for (String genre : genres) { 257183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(separator).append(encodeToCsv(genre)); 257283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang separator = DELIMITER; 257383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 257483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return sb.toString(); 257583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 257683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 257783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang private static String encodeToCsv(String genre) { 257883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang StringBuilder sb = new StringBuilder(); 257983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang int length = genre.length(); 258083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang for (int i = 0; i < length; ++i) { 258183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang char c = genre.charAt(i); 258283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang switch (c) { 258383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case DOUBLE_QUOTE: 258483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(DOUBLE_QUOTE); 258583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 258683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case COMMA: 258783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(DOUBLE_QUOTE); 258883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 258983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 259083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(c); 259183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 259283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return sb.toString(); 259383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 259483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 259583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 259683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Decodes the genre strings from the text stored in the database. 259783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 259883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param genres The encoded genre string retrieved from the 259983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link #COLUMN_BROADCAST_GENRE} or {@link #COLUMN_CANONICAL_GENRE} column. 260083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return genre strings. 260183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2602acef6e2a926e6198340aa7cf978510b32a86f1a5Dongwon Kang public static @Genre String[] decode(@NonNull String genres) { 260383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (TextUtils.isEmpty(genres)) { 260483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang // MNC and before will throw a NPE for {@code null} genres. 260583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return EMPTY_STRING_ARRAY; 260683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 260783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (genres.indexOf(COMMA) == -1 && genres.indexOf(DOUBLE_QUOTE) == -1) { 260883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return new String[] {genres.trim()}; 260983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 261083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang StringBuilder sb = new StringBuilder(); 261183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang List<String> results = new ArrayList<>(); 261283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang int length = genres.length(); 261383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang boolean escape = false; 261483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang for (int i = 0; i < length; ++i) { 261583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang char c = genres.charAt(i); 261683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang switch (c) { 261783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case DOUBLE_QUOTE: 261883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (!escape) { 261983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang escape = true; 262083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang continue; 262183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 262283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 262383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang case COMMA: 262483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (!escape) { 262583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String string = sb.toString().trim(); 262683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (string.length() > 0) { 262783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang results.add(string); 262883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 262983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb = new StringBuilder(); 263083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang continue; 263183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 263283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang break; 263383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 263483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang sb.append(c); 263583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang escape = false; 263683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 263783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang String string = sb.toString().trim(); 263883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang if (string.length() > 0) { 263983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang results.add(string); 264083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 264183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return results.toArray(new String[results.size()]); 264283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 264383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 264483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 264583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Returns whether a given text is a canonical genre defined in {@link Genres}. 264683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 264783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @param genre The name of genre to be checked. 264883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @return {@code true} if the genre is canonical, otherwise {@code false}. 264983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 265083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static boolean isCanonical(String genre) { 265183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang return CANONICAL_GENRES.contains(genre); 265283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 265383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 265483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 265583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 265683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 265783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Column definitions for the recorded TV programs table. 265883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 265983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>By default, the query results will be sorted by {@link #COLUMN_START_TIME_UTC_MILLIS} in 266083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * ascending order. 266183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 26620cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class RecordedPrograms implements BaseTvColumns, ProgramColumns { 266383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 2664239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2665239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2666239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2667239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2668239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2669239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 267083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 267183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang + PATH_RECORDED_PROGRAM); 267283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 267383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The MIME type of a directory of recorded TV programs. */ 267483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/recorded_program"; 267583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 267683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** The MIME type of a single recorded TV program. */ 267783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/recorded_program"; 267883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 267983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 26800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV channel that provides this recorded program. 268183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 268283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}. 268383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 268483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>This is a required field. 268583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 268683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 268783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 26880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_CHANNEL_ID = "channel_id"; 268983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 269083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 26910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV input service that is associated with this recorded program. 269283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 26930c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Use {@link #buildInputId} to build the ID. 269483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 26950c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 269683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 269783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 269883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 26990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_INPUT_ID = "input_id"; 270083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 270183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 270283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The start time of the original TV program, in milliseconds since the epoch. 270383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 270483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 270583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see Programs#COLUMN_START_TIME_UTC_MILLIS 270683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 270783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_START_TIME_UTC_MILLIS = 270883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang Programs.COLUMN_START_TIME_UTC_MILLIS; 270983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 271083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 271183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The end time of the original TV program, in milliseconds since the epoch. 271283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 271383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 271483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see Programs#COLUMN_END_TIME_UTC_MILLIS 271583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 271683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_END_TIME_UTC_MILLIS = Programs.COLUMN_END_TIME_UTC_MILLIS; 271783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 271883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 271983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The comma-separated genre string of this recorded TV program. 272083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 272183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Use the same language appeared in the underlying broadcast standard, if applicable. 272283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * (For example, one can refer to the genre strings used in Genre Descriptor of ATSC A/65 or 272383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * Content Descriptor of ETSI EN 300 468, if appropriate.) Otherwise, leave empty. Use 27240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link Genres#encode Genres.encode()} to create a text that can be stored in this column. 27250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Use {@link Genres#decode Genres.decode()} to get the broadcast genre strings from the 27260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * text stored in the column. 272783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 272883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 272983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see Programs#COLUMN_BROADCAST_GENRE 273083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 273183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_BROADCAST_GENRE = Programs.COLUMN_BROADCAST_GENRE; 273283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 273383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 273483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The URI of the recording data for this recorded program. 273583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 273683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Together with {@link #COLUMN_RECORDING_DATA_BYTES}, applications can use this 273783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * information to manage recording storage. The URI should indicate a file or directory with 273883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * the scheme {@link android.content.ContentResolver#SCHEME_FILE}. 273983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 274083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: TEXT 274183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_RECORDING_DATA_BYTES 274283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 274383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_DATA_URI = "recording_data_uri"; 274483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 274583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 274683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The data size (in bytes) for this recorded program. 274783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 274883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Together with {@link #COLUMN_RECORDING_DATA_URI}, applications can use this 274983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * information to manage recording storage. 275083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 275183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 275283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * @see #COLUMN_RECORDING_DATA_URI 275383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 275483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_DATA_BYTES = "recording_data_bytes"; 275583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 275683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 275783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The duration (in milliseconds) of this recorded program. 275883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 275983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>The actual duration of the recorded program can differ from the one calculated by 276083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * {@link #COLUMN_END_TIME_UTC_MILLIS} - {@link #COLUMN_START_TIME_UTC_MILLIS} as program 276183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * recording can be interrupted in the middle for some reason, resulting in a partially 276283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * recorded program, which is still playable. 276383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 276483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 276583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 276683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_DURATION_MILLIS = "recording_duration_millis"; 276783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 276883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 276983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * The expiration time for this recorded program, in milliseconds since the epoch. 277083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 277183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Recorded TV programs do not expire by default unless explicitly requested by the user 277283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * or the user allows applications to delete them in order to free up disk space for future 277383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * recording. However, some TV content can have expiration date set by the content provider 277483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * when recorded. This field is used to indicate such a restriction. 277583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 277683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Can be empty. 277783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 277883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER (long) 277983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 278083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang public static final String COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS = 278183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang "recording_expire_time_utc_millis"; 278283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 27830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private RecordedPrograms() {} 27840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 27850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 27860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 27870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Column definitions for the preview TV programs table. 27880c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 27890cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class PreviewPrograms implements BaseTvColumns, ProgramColumns, 27900cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang PreviewProgramColumns { 27910c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2792239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2793239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2794239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2795239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2796239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2797239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 27980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 27990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_PREVIEW_PROGRAM); 28000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28010c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of preview TV programs. */ 28020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/preview_program"; 28030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28040c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single preview TV program. */ 28050c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/preview_program"; 280683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 280783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28080c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The ID of the TV channel that provides this TV program. 280983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}. 281183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28120c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 28130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 28140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 281583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 28160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_CHANNEL_ID = "channel_id"; 281783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 281883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The weight of the preview program within the channel. 282083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The UI may choose to show this item in a different position in the channel row. 28220c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * A larger weight value means the program is more important than other programs having 28230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * smaller weight values. The value is relevant for the preview programs in the same 28240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * channel. This is only relevant to {@link Channels#TYPE_PREVIEW}. 28250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 28260c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Can be empty. 282783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 282883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * <p>Type: INTEGER 282983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 28300c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_WEIGHT = "weight"; 28310c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28320c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang private PreviewPrograms() {} 28330c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang } 28340c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28350c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 28360c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * Column definitions for the "watch next" TV programs table. 28370c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 28380cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang public static final class WatchNextPrograms implements BaseTvColumns, ProgramColumns, 28390cec6a661912ea29e0b8e0c9a79925f250cafebfDongwon Kang PreviewProgramColumns { 28400c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 2841239795a5cada6a491e671660bb608f782465576fDongwon Kang /** 2842239795a5cada6a491e671660bb608f782465576fDongwon Kang * The content:// style URI for this table. 2843239795a5cada6a491e671660bb608f782465576fDongwon Kang * 2844239795a5cada6a491e671660bb608f782465576fDongwon Kang * <p>SQL selection is not supported for {@link ContentResolver#query}, 2845239795a5cada6a491e671660bb608f782465576fDongwon Kang * {@link ContentResolver#update} and {@link ContentResolver#delete} operations. 2846239795a5cada6a491e671660bb608f782465576fDongwon Kang */ 28470c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" 28480c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang + PATH_WATCH_NEXT_PROGRAM); 28490c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28500c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a directory of "watch next" TV programs. */ 28510c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_TYPE = "vnd.android.cursor.dir/watch_next_program"; 28520c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28530c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** The MIME type of a single preview TV program. */ 28540c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/watch_next_program"; 28550c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 285683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28570c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for CONTINUE. Use this type when the user has already watched more 28580c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * than 1 minute of this content. 285983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28600c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 28610c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2862407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_CONTINUE = 0; 28630c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28640c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 28650c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for NEXT. Use this type when the user has watched one or more 28660c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * complete episodes from some episodic content, but there remains more than one episode 28670c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * remaining or there is one last episode remaining, but it is not “new” in that it was 28680c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * released before the user started watching the show. 286983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28700c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 287183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2872407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_NEXT = 1; 287383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 287483178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28750c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for NEW. Use this type when the user had watched all of the available 28760c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * episodes from some episodic content, but a new episode became available since the user 28770c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * started watching the first episode and now there is exactly one unwatched episode. This 28780c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * could also work for recorded events in a series e.g. soccer matches or football games. 287983178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28800c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 28810c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang */ 2882407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_NEW = 2; 28830c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang 28840c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang /** 28850c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The watch next type for WATCHLIST. Use this type when the user has elected to explicitly 28860c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * add a movie, event or series to a “watchlist” as a manual way of curating what they 28870c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * want to watch next. 288883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28890c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * @see #COLUMN_WATCH_NEXT_TYPE 289083178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 2891407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang public static final int WATCH_NEXT_TYPE_WATCHLIST = 3; 289283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 289383178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 28940c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The "watch next" type of this program content. 289583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 28960c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The value should match one of the followings: 28970c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_CONTINUE}, 28980c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_NEXT}, 28990c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_NEW}, and 29000c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * {@link #WATCH_NEXT_TYPE_WATCHLIST}. 290183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 29020c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 29030c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 2904407fc323df9cff9ad90eec812bb6299a2d8c8558Dongwon Kang * <p>Type: INTEGER 290583178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 29060c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_WATCH_NEXT_TYPE = "watch_next_type"; 290783178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang 290883178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang /** 29090c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * The last UTC time that the user engaged in this TV program, in milliseconds since the 29100c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * epoch. This is a hint for the application that is used for ordering of "watch next" 29110c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * programs. 291283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 29130c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>The meaning of the value varies depending on the {@link #COLUMN_WATCH_NEXT_TYPE}: 29140c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <ul> 29150c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_CONTINUE}: the date that the user was last watching the 29160c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * content.</li> 29170c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_NEXT}: the date of the last episode watched.</li> 29180c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_NEW}: the release date of the new episode.</li> 29190c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <li>{@link #WATCH_NEXT_TYPE_WATCHLIST}: the date the item was added to the Watchlist. 29200c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </li> 29210c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * </ul> 292283178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang * 29230c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>This is a required field. 29240c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * 29250c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang * <p>Type: INTEGER (long) 292683178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang */ 29270c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang public static final String COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS = 29280c89a1312d7df71bec4a66a68001df26d16649d5Dongwon Kang "last_engagement_time_utc_millis"; 2929c16bab6a385ff737b1c5a55450d7e987ca70d755Dongwon Kang 2930c16bab6a385ff737b1c5a55450d7e987ca70d755Dongwon Kang private WatchNextPrograms() {} 293183178b74cce5265bbcdc22b6fbaa24d801c76c81Dongwon Kang } 29328f95356f24ddac5b6cafc455824507057529d315Dongwon Kang} 2933