হোম স্ক্রিনে চ্যানেল

অ্যান্ড্রয়েড টিভি হোম স্ক্রীন, বা কেবল হোম স্ক্রীন , একটি UI প্রদান করে যা প্রস্তাবিত বিষয়বস্তু চ্যানেল এবং প্রোগ্রামগুলির একটি সারণী হিসাবে প্রদর্শন করে৷ প্রতিটি সারি একটি চ্যানেল। একটি চ্যানেলে সেই চ্যানেলে উপলব্ধ প্রতিটি প্রোগ্রামের জন্য কার্ড থাকে:

টিভি হোম স্ক্রীন

এই দস্তাবেজটি দেখায় যে কীভাবে হোম স্ক্রিনে চ্যানেল এবং প্রোগ্রাম যুক্ত করতে হয়, সামগ্রী আপডেট করতে হয়, ব্যবহারকারীর ক্রিয়াকলাপ পরিচালনা করতে হয় এবং আপনার ব্যবহারকারীদের জন্য সেরা অভিজ্ঞতা প্রদান করে। (আপনি যদি API এর গভীরে খনন করতে চান, তাহলে হোম স্ক্রীন কোডল্যাব ব্যবহার করে দেখুন এবং I/O 2017 Android TV সেশন দেখুন।)

দ্রষ্টব্য: সুপারিশ চ্যানেলগুলি শুধুমাত্র Android 8.0 (API স্তর 26) এবং পরবর্তী সংস্করণগুলিতে উপলব্ধ৷ অ্যান্ড্রয়েড 8.0 (এপিআই লেভেল 26) এবং পরবর্তীতে চলমান অ্যাপগুলির জন্য সুপারিশ সরবরাহ করতে আপনাকে অবশ্যই সেগুলি ব্যবহার করতে হবে। অ্যান্ড্রয়েডের আগের সংস্করণে চলমান অ্যাপগুলির জন্য সুপারিশ সরবরাহ করতে, আপনার অ্যাপটিকে অবশ্যই সুপারিশের সারি ব্যবহার করতে হবে।

হোম স্ক্রীন UI

অ্যাপগুলি নতুন চ্যানেল তৈরি করতে পারে, একটি চ্যানেলে প্রোগ্রাম যোগ করতে, অপসারণ করতে এবং আপডেট করতে পারে এবং একটি চ্যানেলে প্রোগ্রামের ক্রম নিয়ন্ত্রণ করতে পারে। উদাহরণস্বরূপ একটি অ্যাপ "নতুন কী" নামে একটি চ্যানেল তৈরি করতে পারে এবং নতুন উপলব্ধ প্রোগ্রামগুলির জন্য কার্ড দেখাতে পারে৷

হোম স্ক্রিনে চ্যানেলগুলি যে ক্রমে প্রদর্শিত হবে তা অ্যাপগুলি নিয়ন্ত্রণ করতে পারে না। যখন আপনার অ্যাপ একটি নতুন চ্যানেল তৈরি করে, হোম স্ক্রীন এটিকে চ্যানেল তালিকার নীচে যোগ করে। ব্যবহারকারী চ্যানেলগুলি পুনরায় সাজাতে, লুকাতে এবং দেখাতে পারে৷

পরবর্তী চ্যানেল দেখুন

দেখুন নেক্সট চ্যানেল হল দ্বিতীয় সারি যা হোম স্ক্রিনে অ্যাপ সারির পরে প্রদর্শিত হয়। সিস্টেম এই চ্যানেল তৈরি করে এবং রক্ষণাবেক্ষণ করে। আপনার অ্যাপটি পরবর্তী দেখুন চ্যানেলে প্রোগ্রাম যোগ করতে পারে। আরও তথ্যের জন্য, দেখুন পরবর্তী চ্যানেলে প্রোগ্রাম যোগ করুন

অ্যাপ চ্যানেল

আপনার অ্যাপ যে চ্যানেলগুলি তৈরি করে সেগুলি এই জীবনচক্র অনুসরণ করে:

  1. ব্যবহারকারী আপনার অ্যাপে একটি চ্যানেল আবিষ্কার করে এবং এটি হোম স্ক্রিনে যোগ করার জন্য অনুরোধ করে।
  2. অ্যাপ চ্যানেলটি তৈরি করে এবং এটি TvProvider যোগ করে (এই মুহুর্তে চ্যানেলটি দৃশ্যমান নয়)।
  3. অ্যাপ সিস্টেমকে চ্যানেলটি প্রদর্শন করতে বলে।
  4. সিস্টেম ব্যবহারকারীকে নতুন চ্যানেল অনুমোদন করতে বলে।
  5. হোম স্ক্রিনের শেষ সারিতে নতুন চ্যানেল প্রদর্শিত হবে।

ডিফল্ট চ্যানেল

হোম স্ক্রিনে ব্যবহারকারীদের যোগ করার জন্য আপনার অ্যাপটি যেকোনো সংখ্যক চ্যানেল অফার করতে পারে। হোম স্ক্রিনে প্রদর্শিত হওয়ার আগে ব্যবহারকারীকে সাধারণত প্রতিটি চ্যানেল নির্বাচন এবং অনুমোদন করতে হয়। প্রতিটি অ্যাপে একটি ডিফল্ট চ্যানেল তৈরি করার বিকল্প রয়েছে। ডিফল্ট চ্যানেলটি বিশেষ কারণ এটি স্বয়ংক্রিয়ভাবে হোম স্ক্রিনে উপস্থিত হয়; ব্যবহারকারীকে স্পষ্টভাবে অনুরোধ করতে হবে না।

পূর্বশর্ত

আপনার অ্যাপ তৈরি করা চ্যানেল এবং প্রোগ্রামগুলি পরিচালনা করতে Android TV হোম স্ক্রীন Android এর TvProvider API ব্যবহার করে। প্রদানকারীর ডেটা অ্যাক্সেস করতে, আপনার অ্যাপের ম্যানিফেস্টে নিম্নলিখিত অনুমতি যোগ করুন:

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

TvProvider সমর্থন লাইব্রেরি প্রদানকারী ব্যবহার করা সহজ করে তোলে। আপনার build.gradle ফাইলের নির্ভরতাগুলিতে এটি যুক্ত করুন:

গ্রোভি

implementation 'androidx.tvprovider:tvprovider:1.0.0'

কোটলিন

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

চ্যানেল এবং প্রোগ্রামগুলির সাথে কাজ করতে, আপনার প্রোগ্রামে এই সমর্থন লাইব্রেরি আমদানিগুলি অন্তর্ভুক্ত করতে ভুলবেন না:

কোটলিন

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

জাভা

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 হতে হবে। প্রয়োজন অনুযায়ী আরো বৈশিষ্ট্য যোগ করুন.

    কোটলিন

    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)
    

    জাভা

    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. প্রদানকারীর মধ্যে চ্যানেল ঢোকান:

    কোটলিন

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

    জাভা

    Uri channelUri = context.getContentResolver().insert(
            TvContractCompat.Channels.CONTENT_URI, builder.build().toContentValues());
    
  3. পরবর্তীতে চ্যানেলে প্রোগ্রাম যোগ করার জন্য আপনাকে চ্যানেল আইডি সংরক্ষণ করতে হবে। ফিরে আসা URI থেকে চ্যানেল আইডি বের করুন:

    কোটলিন

    var channelId = ContentUris.parseId(channelUri)
    

    জাভা

    long channelId = ContentUris.parseId(channelUri);
    
  4. আপনার চ্যানেলের জন্য আপনাকে অবশ্যই একটি লোগো যোগ করতে হবে। একটি Uri বা Bitmap ব্যবহার করুন। লোগো আইকনটি 80dp x 80dp হওয়া উচিত এবং এটি অবশ্যই অস্বচ্ছ হতে হবে। এটি একটি বৃত্তাকার মুখোশের অধীনে প্রদর্শিত হয়:

    টিভি হোম স্ক্রীন আইকন মাস্ক

    কোটলিন

    // 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)
    

    জাভা

    // 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. ডিফল্ট চ্যানেল তৈরি করুন (ঐচ্ছিক): যখন আপনার অ্যাপটি তার প্রথম চ্যানেল তৈরি করে, আপনি এটিকে ডিফল্ট চ্যানেল তৈরি করতে পারেন যাতে এটি কোনো ব্যবহারকারীর ক্রিয়া ছাড়াই অবিলম্বে হোম স্ক্রিনে প্রদর্শিত হয়। ব্যবহারকারী স্পষ্টভাবে নির্বাচন না করা পর্যন্ত আপনার তৈরি করা অন্য কোনো চ্যানেল দৃশ্যমান হবে না।

    কোটলিন

    TvContractCompat.requestChannelBrowsable(context, channelId)
    

    জাভা

    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 ব্যবহার করুন। চ্যানেলটি যোগ করার সময় আপনি যে চ্যানেল আইডিটি সংরক্ষণ করেছিলেন সেটি ব্যবহার করুন:

কোটলিন

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

জাভা

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

একটি চ্যানেলের লোগো আপডেট করতে, storeChannelLogo() ব্যবহার করুন।

একটি চ্যানেল মুছে ফেলা হচ্ছে

কোটলিন

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

জাভা

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

প্রোগ্রাম

একটি অ্যাপ চ্যানেলে প্রোগ্রাম যোগ করা হচ্ছে

একটি PreviewProgram.Builder তৈরি করুন এবং এর বৈশিষ্ট্যগুলি সেট করুন:

কোটলিন

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

জাভা

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);

প্রোগ্রামের ধরণের উপর নির্ভর করে আরও বৈশিষ্ট্য যুক্ত করুন। (প্রতিটি ধরণের প্রোগ্রামের জন্য উপলব্ধ বৈশিষ্ট্যগুলি দেখতে, নীচের টেবিলগুলি পড়ুন৷)

প্রদানকারীর মধ্যে প্রোগ্রাম সন্নিবেশ করান:

কোটলিন

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

জাভা

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

পরবর্তী রেফারেন্সের জন্য প্রোগ্রাম আইডি পুনরুদ্ধার করুন:

কোটলিন

val programId = ContentUris.parseId(programUri)

জাভা

long programId = ContentUris.parseId(programUri);

ওয়াচ নেক্সট চ্যানেলে প্রোগ্রাম যোগ করা হচ্ছে

পরবর্তী দেখুন চ্যানেলে প্রোগ্রাম সন্নিবেশ করতে, দেখুন পরবর্তী চ্যানেলে প্রোগ্রাম যোগ করুন দেখুন।

একটি প্রোগ্রাম আপডেট করা হচ্ছে

আপনি একটি প্রোগ্রামের তথ্য পরিবর্তন করতে পারেন. উদাহরণস্বরূপ, আপনি একটি চলচ্চিত্রের জন্য ভাড়ার মূল্য আপডেট করতে চাইতে পারেন, বা ব্যবহারকারী কতটা প্রোগ্রাম দেখেছেন তা দেখানো একটি অগ্রগতি বার আপডেট করতে পারেন৷

আপনার পরিবর্তন করার জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি সেট করতে একটি PreviewProgram.Builder ব্যবহার করুন, তারপর প্রোগ্রাম আপডেট করতে getContentResolver().update এ কল করুন। প্রোগ্রামটি যোগ করার সময় আপনি যে প্রোগ্রাম আইডিটি সংরক্ষণ করেছিলেন তা নির্দিষ্ট করুন:

কোটলিন

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

জাভা

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

একটি প্রোগ্রাম মুছে ফেলা হচ্ছে

কোটলিন

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

জাভা

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

ব্যবহারকারীর ক্রিয়াকলাপ পরিচালনা করা

আপনার অ্যাপ ব্যবহারকারীদের চ্যানেলগুলি প্রদর্শন এবং যোগ করার জন্য একটি UI প্রদান করে বিষয়বস্তু আবিষ্কার করতে সহায়তা করতে পারে। আপনার চ্যানেলগুলি হোম স্ক্রিনে প্রদর্শিত হওয়ার পরে আপনার অ্যাপের সাথে ইন্টারঅ্যাকশন পরিচালনা করা উচিত।

আবিষ্কার এবং চ্যানেল যোগ করা

আপনার অ্যাপ এমন একটি UI উপাদান সরবরাহ করতে পারে যা ব্যবহারকারীকে তার চ্যানেলগুলি নির্বাচন এবং যোগ করতে দেয় (উদাহরণস্বরূপ, একটি বোতাম যা চ্যানেল যোগ করতে বলে)।

ব্যবহারকারী একটি নির্দিষ্ট চ্যানেলের অনুরোধ করার পরে, হোম স্ক্রীন UI এ যুক্ত করার জন্য ব্যবহারকারীর অনুমতি পেতে এই কোডটি কার্যকর করুন:

কোটলিন

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
}

জাভা

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 পাঠায়। অ্যাপটিকে শুধুমাত্র তার প্রধান UI বা নির্বাচিত চ্যানেলের সাথে সম্পর্কিত একটি দৃশ্য চালু করা উচিত।
  • ব্যবহারকারী যখন একটি প্রোগ্রাম নির্বাচন করে তখন হোম স্ক্রীন একটি প্রোগ্রামের INTENT_URI বৈশিষ্ট্যে সংরক্ষিত Uri অ্যাপটিতে পাঠায়। অ্যাপটি নির্বাচিত বিষয়বস্তু চালাতে হবে।
  • ব্যবহারকারী ইঙ্গিত দিতে পারে যে তারা আর একটি প্রোগ্রামে আগ্রহী নয় এবং এটি হোম স্ক্রিনের UI থেকে মুছে ফেলতে চায়৷ সিস্টেমটি UI থেকে প্রোগ্রামটি সরিয়ে দেয় এবং প্রোগ্রামটির আইডি সহ একটি উদ্দেশ্য (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 )।
  • আপনার অ্যাপ ভুল আচরণ করলে সিস্টেম আপনার অ্যাপের প্রদানকারীর অনুমতি প্রত্যাহার করতে পারে (উদাহরণস্বরূপ: ডেটা দিয়ে সরবরাহকারীকে ক্রমাগত স্প্যাম করা)। নিশ্চিত করুন যে আপনি নিরাপত্তা ব্যতিক্রমগুলি পরিচালনা করার জন্য ট্রাই-ক্যাচ ক্লজ সহ প্রদানকারীকে অ্যাক্সেস করে এমন কোডটি মোড়ানো।
  • প্রোগ্রাম এবং চ্যানেল আপডেট করার আগে, আপনার ডেটা আপডেট করতে এবং সমন্বয় করতে প্রয়োজনীয় ডেটার জন্য সরবরাহকারীকে জিজ্ঞাসা করুন৷ উদাহরণস্বরূপ, ব্যবহারকারী UI থেকে সরাতে চান এমন একটি প্রোগ্রাম আপডেট করার দরকার নেই। একটি ব্যাকগ্রাউন্ড কাজ ব্যবহার করুন যা বিদ্যমান ডেটার জন্য অনুসন্ধান করার পরে এবং তারপরে আপনার চ্যানেলগুলির জন্য অনুমোদনের অনুরোধ করার পরে প্রদানকারীতে আপনার ডেটা সন্নিবেশ/আপডেট করে। অ্যাপটি শুরু হলে এবং যখনই অ্যাপটির ডেটা আপডেট করার প্রয়োজন হয় তখন আপনি এই কাজটি চালাতে পারেন।

    কোটলিন

    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
                               }
                           }
              })
    

    জাভা

    try (Cursor cursor = context.getContentResolver()
          .query(
              TvContractCompat.buildChannelUri(channelId),
              null,
              null,
              null,
              null)) {
                  if (cursor != null && cursor.moveToNext()) {
                      Channel channel = Channel.fromCursor(cursor);
                      if (channel.isBrowsable()) {
                          //update channel's programs
                      }
                  }
              }
    
  • সমস্ত ছবির জন্য অনন্য ইউরিস ব্যবহার করুন (লোগো, আইকন, বিষয়বস্তুর ছবি)। আপনি একটি ছবি আপডেট করার সময় একটি ভিন্ন Uri ব্যবহার করতে ভুলবেন না। সমস্ত ছবি ক্যাশ করা হয়. আপনি ইমেজ পরিবর্তন করার সময় উরি পরিবর্তন না করলে, পুরানো ছবি দেখা যেতে থাকবে।

  • মনে রাখবেন WHERE ধারাগুলি অনুমোদিত নয় এবং WHERE ধারাগুলির সাথে সরবরাহকারীদের কল করা হলে নিরাপত্তা ব্যতিক্রম হবে৷

গুণাবলী

এই বিভাগে চ্যানেল এবং প্রোগ্রামের বৈশিষ্ট্যগুলি আলাদাভাবে বর্ণনা করা হয়েছে।

চ্যানেলের বৈশিষ্ট্য

প্রতিটি চ্যানেলের জন্য আপনাকে অবশ্যই এই বৈশিষ্ট্যগুলি নির্দিষ্ট করতে হবে:

বৈশিষ্ট্য মন্তব্য
টাইপ TYPE_PREVIEW এ সেট করা হয়েছে।
DISPLAY_NAME চ্যানেলের নামে সেট করুন।
APP_LINK_INTENT_URI ব্যবহারকারী চ্যানেলের লোগো নির্বাচন করলে সিস্টেমটি চ্যানেলের সাথে প্রাসঙ্গিক বিষয়বস্তু উপস্থাপন করে এমন একটি কার্যকলাপ শুরু করার জন্য একটি অভিপ্রায় পাঠায়। সেই কার্যকলাপের জন্য অভিপ্রায় ফিল্টারে ব্যবহৃত Uri-এ এই বৈশিষ্ট্যটি সেট করুন।

এছাড়াও, একটি চ্যানেলে অভ্যন্তরীণ অ্যাপ ব্যবহারের জন্য ছয়টি ক্ষেত্র সংরক্ষিত রয়েছে। এই ক্ষেত্রগুলি কী বা অন্যান্য মান সঞ্চয় করতে ব্যবহার করা যেতে পারে যা অ্যাপটিকে চ্যানেলটিকে তার অভ্যন্তরীণ ডেটা কাঠামোতে ম্যাপ করতে সহায়তা করতে পারে:

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

প্রোগ্রাম বৈশিষ্ট্য

প্রতিটি ধরণের প্রোগ্রামের বৈশিষ্ট্যগুলির জন্য পৃথক পৃষ্ঠাগুলি দেখুন:

কোডের উদাহরণ

হোম স্ক্রিনের সাথে ইন্টারঅ্যাক্ট করে এমন অ্যাপ্লিকেশান তৈরি করা এবং Android TV হোম স্ক্রিনে চ্যানেল এবং প্রোগ্রাম যুক্ত করার বিষয়ে আরও জানতে, আমাদের হোম স্ক্রীন কোডল্যাব দেখুন।