होम स्क्रीन पर मौजूद चैनल

Android TV की होम स्क्रीन पर एक यूज़र इंटरफ़ेस (यूआई) होता है. इसमें सुझाया गया कॉन्टेंट, चैनलों और प्रोग्राम की टेबल के तौर पर दिखता है. हर लाइन एक चैनल है. किसी चैनल में, उस चैनल पर उपलब्ध हर प्रोग्राम के लिए कार्ड होते हैं:

Android TV की होम स्क्रीन
Android TV की होम स्क्रीन

इस दस्तावेज़ में, होम स्क्रीन पर चैनल और प्रोग्राम जोड़ने, कॉन्टेंट अपडेट करने, उपयोगकर्ता की कार्रवाइयों को मैनेज करने, और उपयोगकर्ताओं को बेहतरीन अनुभव देने का तरीका बताया गया है. (अगर आपको एपीआई के बारे में ज़्यादा जानकारी चाहिए, तो होम स्क्रीन कोडलैब आज़माएं और I/O 2017 Android TV सेशन देखें)

होम स्क्रीन का यूज़र इंटरफ़ेस (यूआई)

ऐप्लिकेशन नए चैनल बना सकते हैं. साथ ही, किसी चैनल में प्रोग्राम जोड़ सकते हैं, हटा सकते हैं, और अपडेट कर सकते हैं. इसके अलावा, किसी चैनल में प्रोग्राम के क्रम को कंट्रोल कर सकते हैं. उदाहरण के लिए, कोई ऐप्लिकेशन "नया क्या है" नाम का चैनल बना सकता है और नए उपलब्ध प्रोग्राम के कार्ड दिखा सकता है.

ऐप्लिकेशन, होम स्क्रीन पर चैनलों के दिखने के क्रम को कंट्रोल नहीं कर सकते. जब आपका ऐप्लिकेशन कोई नया चैनल बनाता है, तो होम स्क्रीन उसे चैनल की सूची में सबसे नीचे जोड़ देती है. उपयोगकर्ता, चैनलों का क्रम बदल सकता है. साथ ही, उन्हें छिपा और दिखा सकता है.

'अगला वीडियो' चैनल

'अगला वीडियो' चैनल, होम स्क्रीन पर दिखने वाली दूसरी लाइन है. यह ऐप्लिकेशन की लाइन के बाद दिखती है. सिस्टम इस चैनल को बनाता और मैनेज करता है. आपका ऐप्लिकेशन, 'अगला वीडियो' चैनल में प्रोग्राम जोड़ सकता है. ज़्यादा जानकारी के लिए, 'अगला वीडियो' चैनल में प्रोग्राम जोड़ना लेख पढ़ें.

ऐप्लिकेशन चैनल

आपका ऐप्लिकेशन जो चैनल बनाता है वे सभी इस लाइफ़साइकल को फ़ॉलो करते हैं:

  1. उपयोगकर्ता को आपके ऐप्लिकेशन में कोई चैनल मिलता है और वह उसे होम स्क्रीन पर जोड़ने का अनुरोध करता है.
  2. ऐप्लिकेशन, चैनल बनाता है और उसे TvProvider में जोड़ता है. इस समय चैनल नहीं दिखता.
  3. ऐप्लिकेशन, सिस्टम से चैनल दिखाने के लिए कहता है.
  4. सिस्टम, उपयोगकर्ता से नए चैनल को मंज़ूरी देने के लिए कहता है.
  5. नया चैनल, होम स्क्रीन की आखिरी लाइन में दिखता है.

डिफ़ॉल्ट चैनल

आपका ऐप्लिकेशन, उपयोगकर्ता को होम स्क्रीन पर जोड़ने के लिए कितने भी चैनल उपलब्ध करा सकता है. आम तौर पर, उपयोगकर्ता को हर चैनल को चुनना और उसे मंज़ूरी देनी होती है. इसके बाद ही, वह चैनल होम स्क्रीन पर दिखता है. हर ऐप्लिकेशन में एक डिफ़ॉल्ट चैनल बनाने का विकल्प होता है. डिफ़ॉल्ट चैनल खास होता है, क्योंकि यह होम स्क्रीन पर अपने-आप दिखता है. उपयोगकर्ता को इसके लिए अलग से अनुरोध करने की ज़रूरत नहीं होती.

ज़रूरी शर्तें

Android TV की होम स्क्रीन, Android के TvProvider एपीआई का इस्तेमाल करती है. इससे, आपके ऐप्लिकेशन से बनाए गए चैनलों और प्रोग्राम को मैनेज किया जाता है. सेवा देने वाली कंपनी का डेटा ऐक्सेस करने के लिए, अपने ऐप्लिकेशन के मेनिफ़ेस्ट में यह अनुमति जोड़ें:

<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />

TvProvider की सहायता लाइब्रेरी, सेवा देने वाली कंपनी का इस्तेमाल करना आसान बनाती है. इसे अपनी build.gradle फ़ाइल में डिपेंडेंसी के तौर पर जोड़ें:

Groovy

implementation 'androidx.tvprovider:tvprovider:1.0.0'

Kotlin

implementation("androidx.tvprovider:tvprovider:1.0.0")

चैनलों और प्रोग्राम के साथ काम करने के लिए, अपने प्रोग्राम में इन सपोर्ट लाइब्रेरी को इंपोर्ट करना न भूलें:

Kotlin

import android.support.media.tv.Channel
import android.support.media.tv.TvContractCompat
import android.support.media.tv.ChannelLogoUtils
import android.support.media.tv.PreviewProgram
import android.support.media.tv.WatchNextProgram

Java

import android.support.media.tv.Channel;
import android.support.media.tv.TvContractCompat;
import android.support.media.tv.ChannelLogoUtils;
import android.support.media.tv.PreviewProgram;
import android.support.media.tv.WatchNextProgram;

चैनल

आपका ऐप्लिकेशन जो पहला चैनल बनाता है वह उसका डिफ़ॉल्ट चैनल बन जाता है. डिफ़ॉल्ट चैनल, होम स्क्रीन पर अपने-आप दिखता है. आपके बनाए गए अन्य सभी चैनलों को उपयोगकर्ता को चुनना और स्वीकार करना होगा. इसके बाद ही, वे होम स्क्रीन पर दिखेंगे.

चैनल बनाना

आपके ऐप्लिकेशन को सिस्टम से नए जोड़े गए चैनलों को दिखाने के लिए सिर्फ़ तब कहना चाहिए, जब वह फ़ोरग्राउंड में चल रहा हो. इससे आपका ऐप्लिकेशन, उपयोगकर्ता को कोई दूसरा ऐप्लिकेशन इस्तेमाल करते समय, चैनल जोड़ने की अनुमति मांगने वाला डायलॉग बॉक्स नहीं दिखाता. अगर बैकग्राउंड में चलने के दौरान कोई चैनल जोड़ने की कोशिश की जाती है, तो गतिविधि का onActivityResult() तरीका, स्टेटस कोड RESULT_CANCELED दिखाता है.

चैनल बनाने के लिए, यह तरीका अपनाएं:

  1. चैनल बिल्डर बनाएं और उसके एट्रिब्यूट सेट करें. ध्यान दें कि चैनल टाइप TYPE_PREVIEW होना चाहिए. ज़रूरत के हिसाब से ज़्यादा एट्रिब्यूट जोड़ें.

    Kotlin

    val builder = Channel.Builder()
    // Every channel you create must have the type `TYPE_PREVIEW`
    builder.setType(TvContractCompat.Channels.TYPE_PREVIEW)
            .setDisplayName("Channel Name")
            .setAppLinkIntentUri(uri)
    

    Java

    Channel.Builder builder = new Channel.Builder();
    // Every channel you create must have the type `TYPE_PREVIEW`
    builder.setType(TvContractCompat.Channels.TYPE_PREVIEW)
            .setDisplayName("Channel Name")
            .setAppLinkIntentUri(uri);
    
  2. चैनल को सेवा देने वाली कंपनी के साथ जोड़ना:

    Kotlin

    var channelUri = context.contentResolver.insert(
            TvContractCompat.Channels.CONTENT_URI, builder.build().toContentValues())
    

    Java

    Uri channelUri = context.getContentResolver().insert(
            TvContractCompat.Channels.CONTENT_URI, builder.build().toContentValues());
    
  3. चैनल में बाद में प्रोग्राम जोड़ने के लिए, आपको चैनल आईडी सेव करना होगा. वापस मिले यूआरआई से चैनल आईडी निकालें:

    Kotlin

    var channelId = ContentUris.parseId(channelUri)
    

    Java

    long channelId = ContentUris.parseId(channelUri);
    
  4. आपको अपने चैनल के लिए एक लोगो जोड़ना होगा. Uri या Bitmap का इस्तेमाल करें. लोगो का आइकॉन 80dp x 80dp का होना चाहिए. साथ ही, यह अपारदर्शी होना चाहिए. यह एक गोल मास्क के नीचे दिखता है:

    टीवी की होम स्क्रीन पर दिखने वाले आइकॉन का मास्क

    Kotlin

    // Choose one or the other
    storeChannelLogo(context: Context, channelId: Long, logoUri: Uri) // also works if logoUri is a URL
    storeChannelLogo(context: Context, channelId: Long, logo: Bitmap)
    

    Java

    // Choose one or the other
    storeChannelLogo(Context context, long channelId, Uri logoUri); // also works if logoUri is a URL
    storeChannelLogo(Context context, long channelId, Bitmap logo);
    
  5. डिफ़ॉल्ट चैनल बनाएं (ज़रूरी नहीं): जब आपका ऐप्लिकेशन अपना पहला चैनल बनाता है, तो उसे डिफ़ॉल्ट चैनल बनाया जा सकता है. इससे वह उपयोगकर्ता की किसी कार्रवाई के बिना, होम स्क्रीन पर तुरंत दिखने लगता है. आपके बनाए गए अन्य चैनल तब तक नहीं दिखते, जब तक उपयोगकर्ता उन्हें साफ़ तौर पर चुन नहीं लेता.

    Kotlin

    TvContractCompat.requestChannelBrowsable(context, channelId)
    

    Java

    TvContractCompat.requestChannelBrowsable(context, channelId);
    
  6. ऐप्लिकेशन खुलने से पहले, अपना डिफ़ॉल्ट चैनल दिखाएं. ऐसा करने के लिए, आपको एक BroadcastReceiver जोड़ना होगा, जो android.media.tv.action.INITIALIZE_PROGRAMS ऐक्शन को सुनता है. ऐप्लिकेशन इंस्टॉल होने के बाद, होम स्क्रीन इस ऐक्शन को भेजती है:

    <receiver
      android:name=".RunOnInstallReceiver"
      android:exported="true">
        <intent-filter>
          <action android:name="android.media.tv.action.INITIALIZE_PROGRAMS" />
          <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
    

    डेवलपमेंट के दौरान अपने ऐप्लिकेशन को अनजान सोर्स से इंस्टॉल करते समय, इस चरण को टेस्ट किया जा सकता है. इसके लिए, adb के ज़रिए इंटेंट को ट्रिगर करें. यहां your.package.name/.YourReceiverName आपके ऐप्लिकेशन का BroadcastReceiver है:

    adb shell am broadcast -a android.media.tv.action.INITIALIZE_PROGRAMS -n \
        your.package.name/.YourReceiverName
    

    कुछ मामलों में, ऐसा हो सकता है कि उपयोगकर्ता के ऐप्लिकेशन शुरू करते ही, आपके ऐप्लिकेशन को ब्रॉडकास्ट मिल जाए. पक्का करें कि आपका कोड, डिफ़ॉल्ट चैनल को एक से ज़्यादा बार जोड़ने की कोशिश न करे.

चैनल अपडेट करना

चैनल अपडेट करने का तरीका, उन्हें बनाने के तरीके से काफ़ी मिलता-जुलता है.

जिन एट्रिब्यूट में बदलाव करना है उन्हें सेट करने के लिए, किसी दूसरे Channel.Builder का इस्तेमाल करें.

चैनल को अपडेट करने के लिए, ContentResolver का इस्तेमाल करें. उस चैनल आईडी का इस्तेमाल करें जिसे आपने चैनल को पहली बार जोड़ते समय सेव किया था:

Kotlin

context.contentResolver.update(
        TvContractCompat.buildChannelUri(channelId),
        builder.build().toContentValues(),
        null,
        null
)

Java

context.getContentResolver().update(TvContractCompat.buildChannelUri(channelId),
    builder.build().toContentValues(), null, null);

किसी चैनल का लोगो अपडेट करने के लिए, storeChannelLogo() का इस्तेमाल करें.

चैनल मिटाना

Kotlin

context.contentResolver.delete(TvContractCompat.buildChannelUri(channelId), null, null)

Java

context.getContentResolver().delete(TvContractCompat.buildChannelUri(channelId), null, null);

कार्यक्रम

प्रोग्राम, चैनल में दिखाए जाने वाले अलग-अलग कॉन्टेंट कार्ड होते हैं. आपके पास अपने ऐप्लिकेशन के कस्टम चैनलों और सिस्टम से मैनेज किए जाने वाले 'अगला वीडियो' चैनल, दोनों पर प्रोग्राम पब्लिश करने का विकल्प होता है.

ऐप्लिकेशन चैनल में प्रोग्राम जोड़ना

PreviewProgram.Builder बनाएं और उसके एट्रिब्यूट सेट करें:

Kotlin

val builder = PreviewProgram.Builder()
builder.setChannelId(channelId)
        .setType(TvContractCompat.PreviewPrograms.TYPE_CLIP)
        .setTitle("Title")
        .setDescription("Program description")
        .setPosterArtUri(uri)
        .setIntentUri(uri)
        .setInternalProviderId(appProgramId)

Java

PreviewProgram.Builder builder = new PreviewProgram.Builder();
builder.setChannelId(channelId)
        .setType(TvContractCompat.PreviewPrograms.TYPE_CLIP)
        .setTitle("Title")
        .setDescription("Program description")
        .setPosterArtUri(uri)
        .setIntentUri(uri)
        .setInternalProviderId(appProgramId);

प्रोग्राम के टाइप के हिसाब से, ज़्यादा एट्रिब्यूट जोड़ें. (हर तरह के प्रोग्राम के लिए उपलब्ध एट्रिब्यूट देखने के लिए, यहां दी गई टेबल देखें.)

सेवा देने वाली कंपनी के लिए प्रोग्राम डालें:

Kotlin

var programUri = context.contentResolver.insert(TvContractCompat.PreviewPrograms.CONTENT_URI,
        builder.build().toContentValues())

Java

Uri programUri = context.getContentResolver().insert(TvContractCompat.PreviewPrograms.CONTENT_URI,
      builder.build().toContentValues());

प्रोग्राम आईडी को बाद में इस्तेमाल करने के लिए, उसे सेव करें:

Kotlin

val programId = ContentUris.parseId(programUri)

Java

long programId = ContentUris.parseId(programUri);

'अगला वीडियो' चैनल में प्रोग्राम जोड़ना

'अगला वीडियो' चैनल में प्रोग्राम जोड़ने के लिए, 'अगला वीडियो' चैनल में प्रोग्राम जोड़ना लेख पढ़ें.

प्रोग्राम अपडेट करना

किसी प्रोग्राम की जानकारी में बदलाव किया जा सकता है. उदाहरण के लिए, हो सकता है कि आपको किसी फ़िल्म के किराये की कीमत अपडेट करनी हो या प्रोग्रेस बार को अपडेट करना हो, ताकि यह दिखाया जा सके कि उपयोगकर्ता ने प्रोग्राम का कितना हिस्सा देखा है.

जिन एट्रिब्यूट में बदलाव करना है उन्हें सेट करने के लिए, PreviewProgram.Builder का इस्तेमाल करें. इसके बाद, प्रोग्राम को अपडेट करने के लिए getContentResolver().update को कॉल करें. उस प्रोग्राम आईडी की जानकारी दें जिसे आपने प्रोग्राम को मूल रूप से जोड़े जाने के समय सेव किया था:

Kotlin

context.contentResolver.update(
        TvContractCompat.buildPreviewProgramUri(programId),
                builder.build().toContentValues(), null, null
)

Java

context.getContentResolver().update(TvContractCompat.buildPreviewProgramUri(programId),
    builder.build().toContentValues(), null, null);

प्रोग्राम मिटाना

Kotlin

context.contentResolver
        .delete(TvContractCompat.buildPreviewProgramUri(programId), null, null)

Java

context.getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(programId), null, null);

उपयोगकर्ता की कार्रवाइयों को मैनेज करना

आपका ऐप्लिकेशन, उपयोगकर्ताओं को कॉन्टेंट खोजने में मदद कर सकता है. इसके लिए, उसे चैनल दिखाने और जोड़ने के लिए यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराना होगा. आपके ऐप्लिकेशन को होम स्क्रीन पर दिखने के बाद, आपके चैनलों के साथ होने वाले इंटरैक्शन को भी मैनेज करना चाहिए.

चैनल खोजना और जोड़ना

आपका ऐप्लिकेशन, यूज़र इंटरफ़ेस (यूआई) का ऐसा एलिमेंट उपलब्ध करा सकता है जिससे उपयोगकर्ता, ऐप्लिकेशन के चैनलों को चुन सके और उन्हें जोड़ सके. उदाहरण के लिए, चैनल जोड़ने के लिए कहा जाने वाला बटन.

जब उपयोगकर्ता किसी खास चैनल का अनुरोध करे, तो उपयोगकर्ता की अनुमति पाने के लिए यह कोड चलाएं. इससे चैनल को होम स्क्रीन के यूज़र इंटरफ़ेस (यूआई) में जोड़ा जा सकेगा:

Kotlin

val intent = Intent(TvContractCompat.ACTION_REQUEST_CHANNEL_BROWSABLE)
intent.putExtra(TvContractCompat.EXTRA_CHANNEL_ID, channelId)
try {
  activity.startActivityForResult(intent, 0)
} catch (e: ActivityNotFoundException) {
  // handle error
}

Java

Intent intent = new Intent(TvContractCompat.ACTION_REQUEST_CHANNEL_BROWSABLE);
intent.putExtra(TvContractCompat.EXTRA_CHANNEL_ID, channelId);
try {
   activity.startActivityForResult(intent, 0);
} catch (ActivityNotFoundException e) {
  // handle error
}

सिस्टम एक डायलॉग दिखाता है. इसमें उपयोगकर्ता से चैनल को अनुमति देने के लिए कहा जाता है. अपनी गतिविधि के onActivityResult तरीके (Activity.RESULT_CANCELED या Activity.RESULT_OK) में, अनुरोध के नतीजे को मैनेज करें.

Android TV की होम स्क्रीन पर होने वाले इवेंट

जब उपयोगकर्ता, ऐप्लिकेशन से पब्लिश किए गए प्रोग्राम और चैनलों के साथ इंटरैक्ट करता है, तो होम स्क्रीन, ऐप्लिकेशन को इंटेंट भेजती है:

  • जब उपयोगकर्ता किसी चैनल का लोगो चुनता है, तो होम स्क्रीन उस चैनल के APP_LINK_INTENT_URI एट्रिब्यूट में सेव किए गए Uri को ऐप्लिकेशन पर भेजती है. ऐप्लिकेशन को सिर्फ़ अपना मुख्य यूज़र इंटरफ़ेस (यूआई) या चुने गए चैनल से जुड़ा व्यू लॉन्च करना चाहिए.
  • जब उपयोगकर्ता कोई प्रोग्राम चुनता है, तो होम स्क्रीन, प्रोग्राम के INTENT_URI एट्रिब्यूट में सेव किए गए Uri को ऐप्लिकेशन पर भेजती है. ऐप्लिकेशन को चुना गया कॉन्टेंट चलाना चाहिए.
  • उपयोगकर्ता यह बता सकता है कि उसे अब किसी प्रोग्राम में दिलचस्पी नहीं है और उसे होम स्क्रीन के यूज़र इंटरफ़ेस (यूआई) से हटाना है. सिस्टम, यूज़र इंटरफ़ेस (यूआई) से प्रोग्राम को हटा देता है. साथ ही, प्रोग्राम के मालिकाना हक वाले ऐप्लिकेशन को प्रोग्राम के आईडी के साथ इंटेंट (android.media.tv.ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED या android.media.tv.ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED) भेजता है. ऐप्लिकेशन को प्रोवाइडर से प्रोग्राम हटा देना चाहिए और उसे फिर से शामिल नहीं करना चाहिए.

पक्का करें कि आपने उन सभी Uris के लिए इंटेंट फ़िल्टर बनाए हों जिन्हें होम स्क्रीन, उपयोगकर्ता के इंटरैक्शन के लिए भेजती है. उदाहरण के लिए:

<receiver
   android:name=".WatchNextProgramRemoved"
   android:enabled="true"
   android:exported="true">
   <intent-filter>
       <action android:name="android.media.tv.ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED" />
   </intent-filter>
</receiver>

ज़्यादा जानकारी

  • कई टीवी ऐप्लिकेशन में, उपयोगकर्ताओं को लॉग इन करना ज़रूरी होता है. इस मामले में, BroadcastReceiver जो android.media.tv.action.INITIALIZE_PROGRAMS को सुनता है उसे बिना पुष्टि वाले उपयोगकर्ताओं को चैनल के कॉन्टेंट का सुझाव देना चाहिए. उदाहरण के लिए, आपका ऐप्लिकेशन शुरुआत में सबसे अच्छा कॉन्टेंट या फ़िलहाल लोकप्रिय कॉन्टेंट दिखा सकता है. उपयोगकर्ता के लॉग इन करने के बाद, यह ऐप्लिकेशन उपयोगकर्ता की दिलचस्पी के हिसाब से कॉन्टेंट दिखा सकता है. ऐप्लिकेशन के लिए, यह उपयोगकर्ताओं को लॉगिन करने से पहले ज़्यादा खरीदने के लिए रिझाने का एक शानदार मौका है.
  • जब आपका ऐप्लिकेशन फ़ोरग्राउंड में न हो और आपको किसी चैनल या प्रोग्राम को अपडेट करना हो, तो काम को शेड्यूल करने के लिए JobScheduler का इस्तेमाल करें. इसके बारे में ज़्यादा जानने के लिए, JobScheduler और JobService देखें.
  • अगर आपका ऐप्लिकेशन गलत तरीके से काम करता है, तो सिस्टम आपके ऐप्लिकेशन को मिली सेवा देने वाली कंपनी की अनुमतियां वापस ले सकता है. उदाहरण के लिए: सेवा देने वाली कंपनी को लगातार डेटा स्पैम करना. पक्का करें कि आपने सेवा देने वाली कंपनी को ऐक्सेस करने वाले कोड को try-catch क्लॉज़ के साथ रैप किया हो, ताकि सुरक्षा से जुड़ी समस्याओं को मैनेज किया जा सके.
  • प्रोग्राम और चैनलों को अपडेट करने से पहले, सेवा देने वाली कंपनी से उस डेटा के बारे में पूछें जिसे आपको अपडेट करना है और डेटा का मिलान करना है. उदाहरण के लिए, ऐसे प्रोग्राम को अपडेट करने की ज़रूरत नहीं है जिसे उपयोगकर्ता यूज़र इंटरफ़ेस (यूआई) से हटाना चाहता है. बैकग्राउंड में चलने वाले ऐसे जॉब का इस्तेमाल करें जो मौजूदा डेटा के लिए क्वेरी करने के बाद, डेटा को प्रोवाइडर में शामिल करता है या अपडेट करता है. इसके बाद, आपके चैनलों के लिए अनुमति का अनुरोध करता है. इस जॉब को ऐप्लिकेशन के शुरू होने पर और जब भी ऐप्लिकेशन को अपना डेटा अपडेट करना हो, तब चलाया जा सकता है.

Kotlin

context.contentResolver
      .query(
          TvContractCompat.buildChannelUri(channelId),
              null, null, null, null).use({
                  cursor-> if (cursor != null and cursor.moveToNext()) {
                                val channel = Channel.fromCursor(cursor)
                                if (channel.isBrowsable()) {
                                    //update channel's programs
                                }
                            }
              })

Java

try (Cursor cursor = context.getContentResolver()
          .query(
              TvContractCompat.buildChannelUri(channelId),
              null,
              null,
              null,
              null)) {
                  if (cursor != null &amp;&amp; cursor.moveToNext()) {
                      Channel channel = Channel.fromCursor(cursor);
                      if (channel.isBrowsable()) {
                          //update channel's programs
                      }
                  }
              }
  • सभी इमेज (लोगो, आइकॉन, कॉन्टेंट की इमेज) के लिए यूनीक यूआरआई इस्तेमाल करें. इमेज अपडेट करते समय, किसी दूसरे यूआरआई का इस्तेमाल करें. सभी इमेज, कैश मेमोरी में सेव की जाती हैं. अगर इमेज बदलने के बाद यूआरआई नहीं बदला जाता है, तो पुरानी इमेज ही दिखती रहेगी.

  • याद रखें कि WHERE क्लॉज़ की अनुमति नहीं है. साथ ही, WHERE क्लॉज़ के साथ प्रोवाइडर को किए गए कॉल, सुरक्षा से जुड़ी गड़बड़ी दिखाएंगे.

विशेषताएं

इस सेक्शन में, चैनल और प्रोग्राम के एट्रिब्यूट के बारे में अलग-अलग बताया गया है.

चैनल के एट्रिब्यूट

आपको हर चैनल के लिए, ये एट्रिब्यूट तय करने होंगे:

एट्रिब्यूट नोट
वाई-फ़ाई के टाइप के बारे में जानकारी TYPE_PREVIEW पर सेट करें.
DISPLAY_NAME चैनल के नाम पर सेट किया गया है.
APP_LINK_INTENT_URI जब उपयोगकर्ता चैनल का लोगो चुनता है, तो सिस्टम एक इंटेंट भेजता है. इससे ऐसी गतिविधि शुरू होती है जो चैनल से जुड़ा कॉन्टेंट दिखाती है. इस एट्रिब्यूट को उस यूआरआई पर सेट करें जिसका इस्तेमाल, उस गतिविधि के लिए इंटेंट फ़िल्टर में किया गया है.

इसके अलावा, चैनल में छह फ़ील्ड होते हैं, जिन्हें ऐप्लिकेशन के अंदरूनी इस्तेमाल के लिए रिज़र्व किया जाता है. इन फ़ील्ड का इस्तेमाल, कुंजियों या अन्य वैल्यू को सेव करने के लिए किया जा सकता है. इनसे ऐप्लिकेशन को, चैनल को अपने इंटरनल डेटा स्ट्रक्चर से मैप करने में मदद मिल सकती है:

  • INTERNAL_PROVIDER_ID
  • INTERNAL_PROVIDER_DATA
  • INTERNAL_PROVIDER_FLAG1
  • INTERNAL_PROVIDER_FLAG2
  • INTERNAL_PROVIDER_FLAG3
  • INTERNAL_PROVIDER_FLAG4

प्रोग्राम के एट्रिब्यूट

हर तरह के प्रोग्राम के एट्रिब्यूट के लिए, अलग-अलग पेज देखें:

नमूना कोड

होम स्क्रीन के साथ इंटरैक्ट करने वाले ऐप्लिकेशन बनाने और Android TV की होम स्क्रीन पर चैनल और प्रोग्राम जोड़ने के बारे में ज़्यादा जानने के लिए, होम स्क्रीन का कोडलैब देखें.