টিভি ইনপুট ফ্রেমওয়ার্ক

অ্যান্ড্রয়েড টিভি HAL আইকন

অ্যান্ড্রয়েড টিভি ইনপুট ফ্রেমওয়ার্ক (টিআইএফ) অ্যান্ড্রয়েড টিভিতে লাইভ কন্টেন্ট ডেলিভারি সহজ করে। অ্যান্ড্রয়েড টিআইএফ অ্যান্ড্রয়েড টিভি নিয়ন্ত্রণের জন্য ইনপুট মডিউল তৈরি করার জন্য নির্মাতাদের একটি আদর্শ API প্রদান করে এবং টিভি ইনপুট দ্বারা প্রকাশিত মেটাডেটার মাধ্যমে লাইভ টিভি অনুসন্ধান এবং সুপারিশগুলি সক্ষম করে।

ফ্রেমওয়ার্কটি টিভি মান বা আঞ্চলিক প্রয়োজনীয়তা বাস্তবায়নের চেষ্টা করে না, তবে ডিভাইস নির্মাতাদের পুনরায় বাস্তবায়ন ছাড়াই আঞ্চলিক ডিজিটাল টিভি সম্প্রচারের মান পূরণ করা সহজ করে তোলে। এই বিভাগে ডকুমেন্টেশন তৃতীয় পক্ষের অ্যাপ ডেভেলপারদের জন্যও উপযোগী হতে পারে যারা কাস্টম টিভি ইনপুট তৈরি করতে চান।

উপাদান

অ্যান্ড্রয়েড টিভি ইনপুট ফ্রেমওয়ার্ক বাস্তবায়নে একটি টিভি ইনপুট ম্যানেজার অন্তর্ভুক্ত রয়েছে। বিল্ট-ইন এবং আইপি টিউনার চ্যানেল অ্যাক্সেস করতে TIF টিভি অ্যাপের সাথে কাজ করে, একটি সিস্টেম অ্যাপ যা তৃতীয় পক্ষের অ্যাপ দ্বারা প্রতিস্থাপন করা যায় না। টিভি অ্যাপটি টিভি ইনপুট ম্যানেজারের মাধ্যমে ডিভাইস নির্মাতা বা অন্যান্য পক্ষের দ্বারা সরবরাহ করা টিভি ইনপুট মডিউলগুলির সাথে যোগাযোগ করে।

টিভি ইনপুট ফ্রেমওয়ার্কের মধ্যে রয়েছে:

  • টিভি প্রদানকারী ( com.android.providers.tv.TvProvider ): চ্যানেল, প্রোগ্রাম এবং সংশ্লিষ্ট অনুমতিগুলির একটি ডাটাবেস
  • টিভি অ্যাপ ( com.android.tv.TvActivity ): অ্যাপ যা ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনা করে
  • টিভি ইনপুট ম্যানেজার ( android.media.tv.TvInputManager ): টিভি ইনপুটগুলিকে টিভি অ্যাপের সাথে যোগাযোগ করতে দেয়
  • টিভি ইনপুট: একটি অ্যাপ যা ফিজিক্যাল বা ভার্চুয়াল টিউনার এবং ইনপুট পোর্ট উপস্থাপন করে
  • টিভি ইনপুট HAL ( tv_input মডিউল): একটি হার্ডওয়্যার সংজ্ঞা যা বাস্তবায়িত হলে সিস্টেম টিভি ইনপুটগুলিকে টিভি-নির্দিষ্ট হার্ডওয়্যার অ্যাক্সেস করতে দেয়
  • অভিভাবকীয় নিয়ন্ত্রণ: চ্যানেল এবং প্রোগ্রামগুলিকে ব্লক করার অনুমতি দেওয়ার প্রযুক্তি
  • HDMI-CEC: HDMI এর মাধ্যমে বিভিন্ন ডিভাইসের রিমোট কন্ট্রোলের অনুমতি দেওয়ার প্রযুক্তি
  • টিউনার ফ্রেমওয়ার্ক: বিল্ট-ইন-টিউনার টিভি ইনপুটের জন্য একটি কাঠামো
  • MediaCas: শর্তাধীন অ্যাক্সেসের জন্য একটি কাঠামো
  • টিউনার রিসোর্স ম্যানেজার: টিভি ইনপুট, মিডিয়াক্যাস এবং বিল্ট-ইন-টিউনার ইনপুটের জন্য হার্ডওয়্যার সংস্থান পরিচালনা করার জন্য একটি পরিষেবা

এই উপাদানগুলি নীচে বিস্তারিতভাবে আচ্ছাদিত করা হয়েছে। অ্যান্ড্রয়েড টিভি ইনপুট ফ্রেমওয়ার্ক আর্কিটেকচারের বিশদ দৃশ্যের জন্য নিম্নলিখিত চিত্রটি দেখুন।

অ্যান্ড্রয়েড টিআইএফ আর্কিটেকচারের ওভারভিউ
চিত্র 1. অ্যান্ড্রয়েড টিভি ইনপুট ফ্রেমওয়ার্ক (টিআইএফ) আর্কিটেকচার

প্রবাহ

এখানে স্থাপত্য কিভাবে ব্যবহার করা হয়:

  1. ব্যবহারকারী টিভি অ্যাপ দেখেন এবং তার সাথে ইন্টারঅ্যাক্ট করেন, একটি সিস্টেম অ্যাপ যা তৃতীয় পক্ষের অ্যাপ দ্বারা প্রতিস্থাপন করা যায় না।
  2. টিভি অ্যাপ টিভি ইনপুট থেকে AV বিষয়বস্তু প্রদর্শন করে।
  3. টিভি অ্যাপ টিভি ইনপুটগুলির সাথে সরাসরি কথা বলতে পারে না। টিভি ইনপুট ম্যানেজার টিভি অ্যাপের জন্য টিভি ইনপুটগুলির অবস্থা চিহ্নিত করে৷ এই সীমাবদ্ধতা সম্পর্কে আরো বিস্তারিত জানার জন্য নীচের টিভি ইনপুট ম্যানেজার দেখুন।

অনুমতি

  • শুধুমাত্র signatureOrSystem টিভি ইনপুট এবং টিভি অ্যাপের টিভি প্রোভাইডার ডাটাবেসে সম্পূর্ণ অ্যাক্সেস রয়েছে এবং তারা কী ইভেন্টগুলি গ্রহণ করতে সক্ষম।
  • শুধুমাত্র সিস্টেম টিভি ইনপুট টিভি ইনপুট ম্যানেজার পরিষেবার মাধ্যমে টিভি ইনপুট HAL অ্যাক্সেস করতে পারে। টিভি ইনপুট টিভি ইনপুট ম্যানেজার সেশনের মাধ্যমে এক থেকে এক অ্যাক্সেস করা হয়।
  • থার্ড-পার্টি টিভি ইনপুটগুলির টিভি প্রোভাইডার ডাটাবেসে প্যাকেজ-লক করা অ্যাক্সেস রয়েছে এবং শুধুমাত্র প্যাকেজ সারিগুলির সাথে মিলে যাওয়া পড়তে/লিখতে পারে।
  • থার্ড-পার্টি টিভি ইনপুটগুলি হয় তাদের নিজস্ব সামগ্রী বা কোনও ডিভাইস প্রস্তুতকারকের পাসথ্রু টিভি ইনপুট, যেমন HDMI1 থেকে সামগ্রী প্রদর্শন করতে পারে। তারা বিল্ট-ইন বা IPTV টিউনারের মতো নন-পাসথ্রু টিভি ইনপুট থেকে সামগ্রী প্রদর্শন করতে পারে না।
  • একটি হার্ডওয়্যার টিভি ইনপুট অ্যাপের জন্য TV_INPUT_HARDWARE অনুমতি, টিভি ইনপুট ম্যানেজার পরিষেবাকে টিভি ইনপুট ম্যানেজার পরিষেবাকে কল করতে এবং এর টিভি ইনপুটগুলি যোগ করার জন্য বুট করার সময় টিভি ইনপুট পরিষেবাকে অবহিত করার জন্য সংকেত দেয়৷ এই অনুমতিটি একটি হার্ডওয়্যার টিভি ইনপুট অ্যাপকে টিভি ইনপুট পরিষেবা প্রতি একাধিক টিভি ইনপুট সমর্থন করার অনুমতি দেয়, সেইসাথে এটির সমর্থিত টিভি ইনপুটগুলিকে গতিশীলভাবে যুক্ত করতে এবং সরাতে সক্ষম হয়৷

টিভি প্রদানকারী

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

টিভি প্রদানকারী অভ্যন্তরীণভাবে "সম্প্রচার জেনার" থেকে "ক্যাননিকাল জেনার" এর মানচিত্র করে। টিভি ইনপুট অন্তর্নিহিত সম্প্রচার মানের মান সহ "সম্প্রচার জেনার" পপুলেট করার জন্য দায়ী, এবং "ক্যাননিকাল জেনার" ফিল্ডটি স্বয়ংক্রিয়ভাবে android.provider.TvContract.Genres থেকে সঠিক যুক্ত জেনার দিয়ে পপুলেট করা হবে। উদাহরণস্বরূপ, ব্রডকাস্ট স্ট্যান্ডার্ড ATSC A/65 এবং 0x25 জেনার সহ প্রোগ্রাম (অর্থাৎ "খেলাধুলা"), টিভি ইনপুট স্ট্রিং "স্পোর্টস" সহ "সম্প্রচার জেনার" পপুলেট করবে এবং টিভি প্রোভাইডার "ক্যাননিকাল জেনার" ফিল্ডকে পপুলেট করবে ম্যাপ করা মান android.provider.TvContract.Genres.SPORTS

টিভি প্রদানকারীর বিশদ দৃশ্যের জন্য নীচের চিত্রটি দেখুন।

অ্যান্ড্রয়েড টিভি প্রদানকারী
চিত্র 2. অ্যান্ড্রয়েড টিভি প্রদানকারী

শুধুমাত্র সুবিধাপ্রাপ্ত সিস্টেম পার্টিশনে থাকা অ্যাপগুলি সম্পূর্ণ টিভি প্রদানকারী ডাটাবেস পড়তে পারে।

পাসথ্রু টিভি ইনপুট চ্যানেল এবং প্রোগ্রাম সংরক্ষণ করে না।

চ্যানেল এবং প্রোগ্রামগুলির জন্য স্ট্যান্ডার্ড ক্ষেত্রগুলি ছাড়াও, টিভি প্রদানকারী ডাটাবেস একটি BLOB টাইপ ক্ষেত্র, COLUMN_INTERNAL_PROVIDER_DATA , প্রতিটি টেবিলে অফার করে যা টিভি ইনপুটগুলি নির্বিচারে ডেটা সঞ্চয় করতে ব্যবহার করতে পারে৷ সেই BLOB ডেটাতে কাস্টম তথ্য অন্তর্ভুক্ত থাকতে পারে, যেমন সংশ্লিষ্ট টিউনার ফ্রিকোয়েন্সি, এবং একটি প্রোটোকল বাফার বা অন্য ফর্মে প্রদান করা হতে পারে। অনুসন্ধানে কিছু চ্যানেল অনুপলব্ধ করার জন্য একটি অনুসন্ধানযোগ্য ক্ষেত্র উপলব্ধ (যেমন বিষয়বস্তু সুরক্ষার জন্য দেশ-নির্দিষ্ট প্রয়োজনীয়তা পূরণ করা)।

ডাটাবেস ক্ষেত্রের উদাহরণ

টিভি প্রদানকারী চ্যানেল ( android.provider.TvContract.Channels ) এবং প্রোগ্রাম ( android.provider.TvContract.Programs ) টেবিলে স্ট্রাকচার্ড ডেটা সমর্থন করে। এই টেবিলগুলি টিভি ইনপুট এবং টিভি অ্যাপের মতো সিস্টেম অ্যাপ দ্বারা জনবহুল এবং অ্যাক্সেস করা হয়। এই টেবিলে চার ধরনের ক্ষেত্র রয়েছে:

  • ডিসপ্লে: ডিসপ্লে ফিল্ডগুলিতে এমন তথ্য থাকে যা অ্যাপগুলি ব্যবহারকারীর কাছে দৃশ্যমান করতে চায়, যেমন চ্যানেলের নাম ( COLUMN_DISPLAY_NAME ) বা নম্বর ( COLUMN_DISPLAY_NUMBER ), বা দেখা হচ্ছে প্রোগ্রামের শিরোনাম৷
  • মেটাডেটা: চ্যানেলের পরিবহন স্ট্রিম আইডি ( COLUMN_TRANSPORT_STREAM_ID ), আসল নেটওয়ার্ক আইডি ( COLUMN_ORIGINAL_NETWORK_ID ) এবং পরিষেবা আইডি ( COLUMN_SERVICE_ID ) এর মতো প্রাসঙ্গিক মান অনুযায়ী সামগ্রী সনাক্ত করার জন্য তিনটি ক্ষেত্র রয়েছে৷
  • অভ্যন্তরীণ ডেটা : যে ক্ষেত্রগুলি টিভি ইনপুটগুলির কাস্টম ব্যবহারের জন্য৷
    কিছু ক্ষেত্র, যেমন COLUMN_INTERNAL_PROVIDER_DATA , কাস্টমাইজযোগ্য BLOB ক্ষেত্র যেখানে একটি টিভি ইনপুট তাদের চ্যানেল বা প্রোগ্রাম সম্পর্কে নির্বিচারে মেটাডেটা সংরক্ষণ করতে পারে।
  • পতাকা: পতাকা ক্ষেত্রগুলি একটি চ্যানেল অনুসন্ধান, ব্রাউজ বা দেখার থেকে সীমাবদ্ধ করা উচিত কিনা তা প্রতিনিধিত্ব করে। এটি শুধুমাত্র চ্যানেল স্তরে সেট করা যেতে পারে। সমস্ত প্রোগ্রাম চ্যানেলের সেটিং থেকে বিরত থাকে।
    • COLUMN_SEARCHABLE : কিছু চ্যানেল থেকে অনুসন্ধান সীমাবদ্ধ করা নির্দিষ্ট অঞ্চলে প্রয়োজন হতে পারে। COLUMN_SEARCHABLE = 0 মানে চ্যানেলটি অনুসন্ধান ফলাফলে প্রকাশ করা উচিত নয়৷
    • COLUMN_BROWSABLE : শুধুমাত্র সিস্টেম অ্যাপ্লিকেশনের জন্য দৃশ্যমান। অ্যাপ্লিকেশন দ্বারা ব্রাউজ করা থেকে চ্যানেল সীমাবদ্ধ করা. COLUMN_BROWSABLE = 0 মানে চ্যানেলটি চ্যানেল তালিকায় অন্তর্ভুক্ত করা উচিত নয়৷
    • COLUMN_LOCKED : শুধুমাত্র সিস্টেম অ্যাপ্লিকেশনের জন্য দৃশ্যমান। পিন কোড না দিয়ে চ্যানেলটি অবৈধ অ্যাকাউন্ট দ্বারা দেখা থেকে সীমাবদ্ধ করা। COLUMN_LOCKED = 1 মানে চ্যানেলটি অভিভাবকীয় নিয়ন্ত্রণ দ্বারা সুরক্ষিত হওয়া উচিত।

ক্ষেত্রগুলির আরও বিস্তৃত তালিকার জন্য, android/frameworks/base/media/java/android/media/tv/TvContract.java দেখুন

অনুমতি এবং অ্যাক্সেস নিয়ন্ত্রণ

সমস্ত ক্ষেত্র সংশ্লিষ্ট সারিতে অ্যাক্সেস সহ সকলের কাছে দৃশ্যমান। কোন ক্ষেত্র ব্যবহারকারীদের সরাসরি অ্যাক্সেসযোগ্য নয়; তারা শুধুমাত্র টিভি অ্যাপ, সিস্টেম অ্যাপস বা টিভি ইনপুট সারফেস যা দেখে।

  • প্রতিটি সারিতে রয়েছে PACKAGE_NAME , প্যাকেজ (অ্যাপ) যা সেই সারির মালিক, TvProvider.java এর মাধ্যমে Query, Insert, Update-এ চেক করা হয়েছে৷ একটি টিভি ইনপুট শুধুমাত্র এটির লেখা তথ্য অ্যাক্সেস করতে পারে এবং অন্যান্য টিভি ইনপুট দ্বারা প্রদত্ত তথ্য থেকে বন্ধ করা হয়।
  • উপলব্ধ চ্যানেলগুলি নির্ধারণ করতে AndroidManifest.xml এর মাধ্যমে READ, WRITE অনুমতি (ব্যবহারকারীর সম্মতি প্রয়োজন)।
  • শুধুমাত্র signatureOrSystem অ্যাপগুলি সম্পূর্ণ ডাটাবেস অ্যাক্সেস করার জন্য ACCESS_ALL_EPG_DATA অনুমতি পেতে পারে।

টিভি ইনপুট ম্যানেজার

টিভি ইনপুট ম্যানেজার সামগ্রিক Android TV ইনপুট ফ্রেমওয়ার্কের জন্য একটি কেন্দ্রীয় সিস্টেম API প্রদান করে। এটি অ্যাপ এবং টিভি ইনপুটগুলির মধ্যে মিথস্ক্রিয়া সালিশ করে এবং পিতামাতার নিয়ন্ত্রণ কার্যকারিতা প্রদান করে। টিভি ইনপুট ম্যানেজার সেশনগুলি অবশ্যই টিভি ইনপুটগুলির সাথে এক-একটি তৈরি করতে হবে৷ টিভি ইনপুট ম্যানেজার ইনস্টল করা টিভি ইনপুটগুলিতে অ্যাক্সেসের অনুমতি দেয় যাতে অ্যাপ্লিকেশনগুলি করতে পারে:

  • টিভি ইনপুট তালিকাভুক্ত করুন এবং তাদের স্থিতি পরীক্ষা করুন
  • সেশন তৈরি করুন এবং শ্রোতাদের পরিচালনা করুন

সেশনের জন্য, একটি টিভি ইনপুট টিভি অ্যাপ দ্বারা শুধুমাত্র URI-তে টিউন করা যেতে পারে যা এটি টিভি প্রোভাইডার ডাটাবেসে যোগ করেছে, পাসথ্রু টিভি ইনপুটগুলি ছাড়া যা TvContract.buildChannelUriForPassthroughInput() ব্যবহার করে টিউন করা যেতে পারে। একটি টিভি ইনপুট এর ভলিউম সেটও থাকতে পারে। ডিভাইস প্রস্তুতকারক (স্বাক্ষর অ্যাপস) বা সিস্টেম পার্টিশনে ইনস্টল করা অন্যান্য অ্যাপ দ্বারা প্রদত্ত এবং স্বাক্ষরিত টিভি ইনপুটগুলি সম্পূর্ণ টিভি প্রদানকারী ডাটাবেসে অ্যাক্সেস পাবে। এই অ্যাক্সেসটি সমস্ত উপলব্ধ টিভি চ্যানেল এবং প্রোগ্রামগুলিতে ব্রাউজ এবং অনুসন্ধান করার জন্য অ্যাপ তৈরি করতে ব্যবহার করা যেতে পারে।

একটি অ্যাপ android.media.tv.TvInputManager এর সাথে একটি TvInputCallback তৈরি এবং নিবন্ধন করতে পারে যাতে একটি টিভি ইনপুটের অবস্থার পরিবর্তন বা একটি টিভি ইনপুট সংযোজন বা অপসারণে আবার কল করা যায়। উদাহরণস্বরূপ, একটি টিভি ইনপুট সংযোগ বিচ্ছিন্ন হলে একটি টিভি অ্যাপ এটিকে সংযোগ বিচ্ছিন্ন হিসাবে প্রদর্শন করে এবং এটির নির্বাচন প্রতিরোধ করে প্রতিক্রিয়া জানাতে পারে।

টিভি ইনপুট ম্যানেজার টিভি অ্যাপ এবং টিভি ইনপুটগুলির মধ্যে যোগাযোগ বিমূর্ত করে। টিভি ইনপুট ম্যানেজার এবং টিভি ইনপুটের স্ট্যান্ডার্ড ইন্টারফেস একাধিক ডিভাইস নির্মাতাকে তাদের নিজস্ব টিভি অ্যাপ তৈরি করতে দেয় এবং সমস্ত তৃতীয় পক্ষের টিভি ইনপুটগুলিকে সমস্ত টিভি অ্যাপে কাজ করতে সহায়তা করে।

টিভি ইনপুট

টিভি ইনপুট হল Android অ্যাপ এই অর্থে যে তাদের একটি AndroidManifest.xml আছে এবং ইনস্টল করা হয়েছে (Play এর মাধ্যমে, আগে থেকে ইনস্টল করা বা সাইডলোড করা হয়েছে)। অ্যান্ড্রয়েড টিভি আগে থেকে ইনস্টল করা সিস্টেম অ্যাপ, ডিভাইস প্রস্তুতকারকের স্বাক্ষরিত অ্যাপ এবং তৃতীয় পক্ষের টিভি ইনপুট সমর্থন করে।

কিছু ইনপুট, যেমন HDMI ইনপুট বা অন্তর্নির্মিত টিউনার ইনপুট, শুধুমাত্র প্রস্তুতকারকের দ্বারা প্রদান করা যেতে পারে কারণ তারা অন্তর্নিহিত হার্ডওয়্যারের সাথে সরাসরি কথা বলে। অন্যান্য, যেমন IPTV, স্থান পরিবর্তন, এবং বহিরাগত STB, Google Play Store-এ APK হিসাবে তৃতীয় পক্ষের দ্বারা সরবরাহ করা যেতে পারে। একবার ডাউনলোড এবং ইনস্টল হয়ে গেলে, টিভি অ্যাপের মধ্যে নতুন ইনপুট নির্বাচন করা যেতে পারে।

পাসথ্রু ইনপুট উদাহরণ

অ্যান্ড্রয়েড টিভি সিস্টেম ইনপুট
চিত্র 3. অ্যান্ড্রয়েড টিভি সিস্টেম ইনপুট

এই উদাহরণে, ডিভাইস প্রস্তুতকারকের দেওয়া টিভি ইনপুট বিশ্বস্ত এবং টিভি প্রদানকারীর সম্পূর্ণ অ্যাক্সেস রয়েছে। একটি পাসথ্রু টিভি ইনপুট হিসাবে, এটি টিভি প্রদানকারীর সাথে কোনো চ্যানেল বা প্রোগ্রাম নিবন্ধন করে না। পাসথ্রু ইনপুট রেফারেন্স করতে ব্যবহৃত URI পেতে, android.media.tv.TvContract ইউটিলিটি পদ্ধতি buildChannelUriForPassthroughInput(String inputId) ব্যবহার করুন। টিভি অ্যাপটি HDMI টিভি ইনপুটে পৌঁছানোর জন্য টিভি ইনপুট ম্যানেজারের সাথে যোগাযোগ করে।

অন্তর্নির্মিত টিউনার উদাহরণ

Android TV বিল্ট-ইন টিউনার ইনপুট
চিত্র 4. অ্যান্ড্রয়েড টিভি বিল্ট-ইন টিউনার ইনপুট

এই উদাহরণে, ডিভাইস প্রস্তুতকারকের দ্বারা প্রদত্ত অন্তর্নির্মিত টিউনার টিভি ইনপুট বিশ্বস্ত এবং টিভি প্রদানকারীর সম্পূর্ণ অ্যাক্সেস রয়েছে৷

তৃতীয় পক্ষের ইনপুট উদাহরণ

Android TV তৃতীয় পক্ষের ইনপুট
চিত্র 5. Android TV তৃতীয় পক্ষের ইনপুট

এই উদাহরণে, বাহ্যিক STB টিভি ইনপুট একটি তৃতীয় পক্ষ দ্বারা প্রদান করা হয়৷ যেহেতু সেই টিভি ইনপুট সরাসরি আসা HDMI ভিডিও ফিড অ্যাক্সেস করতে পারে না, এটি অবশ্যই টিভি ইনপুট ম্যানেজারের মাধ্যমে যেতে হবে এবং ডিভাইস প্রস্তুতকারক দ্বারা প্রদত্ত HDMI টিভি ইনপুট ব্যবহার করতে হবে৷

টিভি ইনপুট ম্যানেজারের মাধ্যমে, বাহ্যিক STB টিভি ইনপুট HDMI টিভি ইনপুটের সাথে কথা বলতে পারে এবং HDMI1-এ ভিডিও দেখাতে বলতে পারে। তাই STB টিভি ইনপুট টিভি নিয়ন্ত্রণ করতে পারে যখন নির্মাতার দেওয়া HDMI টিভি ইনপুট ভিডিওটি রেন্ডার করে।

পিকচার ইন পিকচার (পিআইপি) উদাহরণ

অ্যান্ড্রয়েড টিভি কী ইভেন্ট
চিত্র 6. অ্যান্ড্রয়েড টিভি কী ইভেন্ট

উপরের চিত্রটি দেখায় যে কীভাবে একটি রিমোট কন্ট্রোলের বোতামগুলি একটি নির্দিষ্ট টিভি ইনপুটে ছবির জন্য (পিআইপি) ডিসপ্লেতে প্রেরণ করা হয়। এই বোতাম টিপগুলি ডিভাইস প্রস্তুতকারকের দ্বারা সরবরাহ করা হার্ডওয়্যার ড্রাইভার দ্বারা ব্যাখ্যা করা হয়, হার্ডওয়্যার স্ক্যানকোডগুলিকে অ্যান্ড্রয়েড কীকোডে রূপান্তর করে এবং সেগুলিকে কী ইভেন্ট হিসাবে স্ট্যান্ডার্ড অ্যান্ড্রয়েড ইনপুট পাইপলাইন InputReader এবং InputDispatcher ফাংশনে প্রেরণ করে৷ টিভি অ্যাপটি ফোকাসে থাকলে এগুলি ঘুরে ইভেন্টগুলিকে ট্রিগার করে৷

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

টিভি অ্যাপটি জানার জন্য দায়ী যে কোন সিস্টেমটি টিভি ইনপুট সক্রিয় আছে, যার অর্থ ব্যবহারকারী দ্বারা নির্বাচিত, এবং ইনকামিং KeyEvents দ্ব্যর্থিত করতে এবং তাদের সঠিক টিভি ইনপুট ম্যানেজার সেশনে রুট করার জন্য, dispatchInputEvent() ইভেন্টটি সংশ্লিষ্ট টিভি ইনপুটে পাঠানোর জন্য কল করে। .

MHEG-5 ইনপুট উদাহরণ

নিম্নলিখিত চিত্রটি Android TIF-এর মাধ্যমে KeyEvents কীভাবে রুট করা হয় তার আরও বিশদ দৃশ্য দেখায়।

Android TV লাল বোতামের উদাহরণ
চিত্র 7. Android TV লাল বোতামের উদাহরণ

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

সম্প্রচার অ্যাপ্লিকেশনগুলি কীভাবে টিভি অ্যাপের সাথে ইন্টারঅ্যাক্ট করে তা জানতে সম্প্রচার অ্যাপ্লিকেশন বিভাগটি দেখুন৷

এই উদাহরণে:

  1. টিভি অ্যাপটি ফোকাসে রয়েছে এবং সমস্ত কী গ্রহণ করে।
  2. KeyEvents (যেমন লাল বোতাম) সক্রিয় টিভি ইনপুটে InputEvents.
  3. সিস্টেম টিভি ইনপুট MHEG-5 স্ট্যাকের সাথে একীভূত হয় এবং RECEIVE_INPUT_EVENT সিস্টেমের অনুমতি রয়েছে৷
  4. অ্যাক্টিভেশন কীকোড (যেমন লাল বোতাম) পাওয়ার পরে, টিভি ইনপুট সম্প্রচার অ্যাপ সক্রিয় করে।
  5. টিভি ইনপুট KeyEvents InputEvents ইভেন্ট হিসাবে গ্রহণ করে এবং সম্প্রচার অ্যাপটি ফোকাস এবং খারিজ না হওয়া পর্যন্ত InputEvents পরিচালনা করে৷

দ্রষ্টব্য : তৃতীয় পক্ষের টিভি ইনপুট কখনই কী পায় না।

টিভি ইনপুট HAL

টিভি ইনপুট HAL টিভি-নির্দিষ্ট হার্ডওয়্যার অ্যাক্সেস করতে টিভি ইনপুটগুলির বিকাশে সহায়তা করে। অন্যান্য অ্যান্ড্রয়েড এইচএএল-এর মতোই, টিভি ইনপুট HAL ( tv_input ) AOSP সোর্স ট্রি-তে উপলব্ধ এবং বিক্রেতা এটির বাস্তবায়ন বিকাশ করে।

দ্রষ্টব্য : Android 14 দিয়ে শুরু করে, টিভি ইনপুট HAL ইন্টারফেস AIDL ব্যবহার করে সংজ্ঞায়িত করা হয়েছে।

টিভি অ্যাপ

সিস্টেম টিভি অ্যাপ ব্যবহারকারীর কাছে লাইভ টিভি সামগ্রী উপস্থাপন করে। অ্যান্ড্রয়েড প্ল্যাটফর্মের পাশাপাশি একটি রেফারেন্স টিভি অ্যাপ (লাইভ টিভি) সরবরাহ করা হয়েছে, যা ডিভাইস প্রস্তুতকারকদের দ্বারা কাস্টমাইজ করা, প্রসারিত বা প্রতিস্থাপন করা যেতে পারে। সোর্স কোডটি অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্টে উপলব্ধ, এবং আপনি রেফারেন্স টিভি অ্যাপ নিবন্ধে এটি দিয়ে শুরু করতে পারেন।

ডিভাইস নির্মাতারা তাদের টিভি অ্যাপগুলিকে ডিভাইস প্রস্তুতকারক বা দেশ-নির্দিষ্ট বৈশিষ্ট্যগুলি প্রয়োগ করতে প্রসারিত করতে পারে, তবে এটি টিআইএফ বা রেফারেন্স টিভি অ্যাপের সুযোগে নয়।

ন্যূনতম, সিস্টেম টিভি অ্যাপকে নিম্নলিখিত কাজগুলি পরিচালনা করতে হবে:

সেটআপ এবং কনফিগারেশন

  • টিভি ইনপুটগুলি স্বয়ংক্রিয়ভাবে সনাক্ত করুন৷
  • টিভি ইনপুটগুলিকে চ্যানেল সেটআপ শুরু করতে দিন৷
  • অভিভাবকীয় সেটিংস নিয়ন্ত্রণ করুন
  • চ্যানেলগুলি সম্পাদনা করুন

দেখা হচ্ছে

  • সমস্ত টিভি চ্যানেল অ্যাক্সেস এবং নেভিগেট করুন
  • অ্যাক্সেস টিভি প্রোগ্রাম তথ্য বার
  • ইলেকট্রনিক প্রোগ্রামিং গাইড (EPG) ডেটা প্রদর্শন করুন
  • একাধিক অডিও এবং সাবটাইটেল ট্র্যাক সমর্থন করে
  • অভিভাবকীয় নিয়ন্ত্রণ পিন চ্যালেঞ্জ সরবরাহ করুন
  • টিভি স্ট্যান্ডার্ডের জন্য টিভি ইনপুট UI ওভারলেকে অনুমতি দিন (HbbTV, ইত্যাদি)
  • টিভি চ্যানেল এবং প্রোগ্রামগুলির জন্য অনুসন্ধানের ফলাফলগুলি পূরণ করুন৷
  • অ্যাপ লিঙ্কিং কার্ড প্রদর্শন করুন
  • টাইমশিফটিং এপিআই সমর্থন করে
  • ডিভিআর কার্যকারিতা পরিচালনা করুন এবং টিভি রেকর্ডিং এপিআই সমর্থন করুন

এই বৈশিষ্ট্য সেটটি নতুন অ্যান্ড্রয়েড সংস্করণগুলির সাথে সঙ্গতিপূর্ণ হবে যেখানে প্ল্যাটফর্ম টিআইএফ এপিআইগুলি প্রসারিত হয়৷ CTS যাচাইকারী সামঞ্জস্য পরীক্ষার কভারেজ প্রদান করে।

তৃতীয় পক্ষের টিভি ইনপুটগুলির জন্য সমর্থন

অ্যান্ড্রয়েড টিভি তৃতীয় পক্ষের টিভি ইনপুটগুলির জন্য বিকাশকারী API সরবরাহ করে, সফ্টওয়্যার চ্যানেলগুলিকে লাইভ টিভি অভিজ্ঞতায় সরবরাহ করতে ইনস্টল করা অ্যাপগুলিকে সক্ষম করে৷ একটি সামঞ্জস্যপূর্ণ অ্যান্ড্রয়েড ডিভাইস বাস্তবায়ন নিশ্চিত করতে, সিস্টেম টিভি অ্যাপ ব্যবহারকারীর কাছে তৃতীয় পক্ষের টিভি ইনপুট এবং চ্যানেল সারফেস করার বিষয়ে কিছু দায়িত্ব রয়েছে। রেফারেন্স লাইভ টিভি অ্যাপ একটি সামঞ্জস্যপূর্ণ বাস্তবায়ন প্রদান করে; সিস্টেম টিভি অ্যাপ প্রতিস্থাপন করলে, ডিভাইস নির্মাতাদের অবশ্যই নিশ্চিত করতে হবে যে তাদের নিজস্ব অ্যাপগুলি একই রকম সামঞ্জস্যপূর্ণতা প্রদান করে, যাতে সমস্ত Android TV ডিভাইসে ডেভেলপারের প্রত্যাশা পূরণ হয়।

সিস্টেম টিভি অ্যাপটিকে অবশ্যই ডিভাইসের ডিফল্ট লাইভ টিভি পরিষেবার পাশাপাশি তৃতীয় পক্ষের ইনপুটগুলি দেখাতে হবে। বিকাশকারী API-এর প্রতিশ্রুতি হল যে ব্যবহারকারীরা তাদের মানক টিভি অভিজ্ঞতার মধ্যে চ্যানেলগুলি (একবার ইনস্টল করা) খুঁজে পেতে সক্ষম হবে।

Android CDD-এর TV অ্যাপ বিভাগে সংজ্ঞায়িত হিসাবে বিল্ট-ইন চ্যানেল এবং তৃতীয় পক্ষের চ্যানেলগুলির মধ্যে ভিজ্যুয়াল পার্থক্য অনুমোদিত।

নিম্নলিখিত বিভাগগুলি দেখায় কিভাবে লাইভ টিভি অ্যাপ্লিকেশন CDD প্রয়োজনীয়তা পূরণ করে।

নতুন চ্যানেল সেটআপ

নতুন থার্ড-পার্টি ইনপুট/চ্যানেলের সংযোজন শুরু হয় ব্যবহারকারী একটি অ্যাপ্লিকেশন স্টোর থেকে একটি টিভি ইনপুট খোঁজার এবং ইনস্টল করার মাধ্যমে, যেমন Google Play।

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

রেফারেন্স লাইভ টিভি অ্যাপ ইনপুট অ্যাক্সেস করার জন্য চ্যানেল সোর্স মেনু প্রদান করে।

সেটিংস এ যান
চিত্র 8. সেটিংসে যান।

সেটিংসে চ্যানেলের উৎসে যান
চিত্র 9. সেটিংসে চ্যানেল উত্সগুলিতে যান৷

তালিকা থেকে আপনার উৎস নির্বাচন করুন.
চিত্র 10. তালিকা থেকে আপনার উৎস নির্বাচন করুন।

আপনার উৎস থেকে চ্যানেল যোগ করুন
চিত্র 11. আপনার উৎস থেকে চ্যানেল যোগ করুন।

এছাড়াও ব্যবহারকারীকে সরাসরি সেটআপে নিয়ে যাওয়ার জন্য একটি নতুন TvInput ইনস্টল করার পরে টিভি অ্যাপ মেনুর শীর্ষে একটি বিজ্ঞপ্তি কার্ড দেখানো হয়:

নতুন চ্যানেলের উৎসগুলি দেখায় এমন বিজ্ঞপ্তি উপলব্ধ।
চিত্র 12. নতুন চ্যানেলের উৎসগুলি দেখায় এমন বিজ্ঞপ্তি উপলব্ধ।

ব্যবহারকারী যদি বিজ্ঞপ্তির মাধ্যমে পদক্ষেপ নেয়, তাহলে তারা চিত্র 10-এ দেখানো হিসাবে তাদের উত্স সেট আপ করতে নির্বাচন করতে পারে।

এই এলাকায় বিকাশকারীর প্রত্যাশার জন্য আপনার টিভি ইনপুট পরিষেবা সংজ্ঞায়িত করুন দেখুন।

চ্যানেল তালিকা কাস্টমাইজ করুন

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

সেটিংসে চ্যানেল তালিকা খুলুন।
চিত্র 13. সেটিংসে চ্যানেল তালিকা খুলুন।

আপনার চ্যানেল তালিকা কাস্টমাইজ করুন.
চিত্র 14. আপনার চ্যানেল তালিকা কাস্টমাইজ করুন।

ইপিজি

থার্ড-পার্টি ইনপুট ডেভেলপারদের আস্থা থাকা দরকার যে ব্যবহারকারীরা সাধারণ ব্যবহারের সময়, সমস্ত সামঞ্জস্যপূর্ণ Android TV ডিভাইস জুড়ে সহজেই তাদের চ্যানেলগুলিতে নেভিগেট করতে পারে।

থার্ড-পার্টি ইনপুট থেকে চ্যানেলগুলি অবশ্যই ডিভাইসের স্ট্যান্ডার্ড লাইভ টিভি এক্সপেরিয়েন্স EPG এর অংশ হিসেবে উপস্থাপন করতে হবে। ভিজ্যুয়াল সেপারেশন বা থার্ড-পার্টি চ্যানেলের জন্য আলাদা ক্যাটাগরি ব্যবহার করা যেতে পারে (Android CDD-এর TV অ্যাপ বিভাগটি দেখুন) — কী হল ব্যবহারকারীরা তাদের ইনস্টল করা চ্যানেলগুলি খুঁজে পেতে সক্ষম।

সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করার জন্য বিশ্বব্যাপী অনুসন্ধানের অনুরোধের জন্য অনুসন্ধান ফলাফল অন্তর্ভুক্ত করতে নির্মাতাদের অবশ্যই টিভি অ্যাপ প্রয়োগ করতে হবে। লাইভ টিভি একটি বাস্তবায়ন প্রদান করে (দেখুন যা তৃতীয় পক্ষের ইনপুট (প্ল্যাটফর্ম সামঞ্জস্যের জন্য প্রয়োজনীয়) এবং সেইসাথে অন্তর্নির্মিত ইনপুট থেকে ফলাফল প্রদান করে।

সময় পরিবর্তন

Android 6.0 এবং তার উপরের ডিভাইসগুলির জন্য, TV অ্যাপটিকে অবশ্যই Android ফ্রেমওয়ার্ক টাইম শিফটিং API সমর্থন করতে হবে। অতিরিক্তভাবে, নির্মাতাদের অবশ্যই টিভি অ্যাপে প্লেব্যাক নিয়ন্ত্রণগুলি প্রয়োগ করতে হবে, যা ব্যবহারকারীদের প্লেব্যাককে বিরতি, পুনরায় শুরু, রিওয়াইন্ড এবং দ্রুত ফরোয়ার্ড করার অনুমতি দেয়।

টিভি ইনপুটগুলির জন্য যা সময় পরিবর্তনকে সমর্থন করে, টিভি অ্যাপটিকে প্লেব্যাক নিয়ন্ত্রণগুলি প্রদর্শন করতে হবে৷

প্লেব্যাক নিয়ন্ত্রণ
চিত্র 15। প্লেব্যাক নিয়ন্ত্রণ

ডিভিআর

Android 7.0 এবং তার উপরের ডিভাইসগুলির জন্য, টিভি অ্যাপটিকে অবশ্যই Android ফ্রেমওয়ার্ক টিভি রেকর্ডিং API সমর্থন করতে, রেকর্ড করা প্রোগ্রামগুলিকে সমর্থন করতে, তালিকাভুক্ত করতে এবং চালাতে হবে৷

এটি ডিভাইস নির্মাতাদের তাদের DVR সাবসিস্টেমগুলিকে TIF-তে প্লাগ করার অনুমতি দেয় এবং একটি টিভি ডিভাইসে DVR কার্যকারিতা সক্ষম বা সংহত করতে যে ইন্টিগ্রেশন প্রচেষ্টা লাগে তা নাটকীয়ভাবে হ্রাস করে৷ এটি তৃতীয় পক্ষকে আফটারমার্কেট ডিভিআর সিস্টেম সরবরাহ করতে সক্ষম করে যা একটি অ্যান্ড্রয়েড টিভি ডিভাইসে প্লাগ করা যেতে পারে।

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

টিভি অ্যাপগুলি আরও পরিশীলিত যুক্তি প্রয়োগ করতে পারে যেমন কোনও ব্যবহারকারীকে জিজ্ঞাসা করা যে তারা একটি পর্ব রেকর্ড করার অনুরোধ করার সময় একটি সিরিজে ভবিষ্যতের সমস্ত পর্ব রেকর্ড করতে চান কিনা।

অ্যান্ড্রয়েড টিভিতে একটি সম্ভাব্য DVR বাস্তবায়ন দেখার জন্য নিম্নলিখিত চিত্রটি দেখুন।

অ্যান্ড্রয়েড টিভিতে ডিজিটাল ভিডিও রেকর্ডিং
চিত্র 16. অ্যান্ড্রয়েড টিভিতে ডিজিটাল ভিডিও রেকর্ডিং

  1. টিভি ইনপুট পরিষেবা টিভি অ্যাপকে বলে যে কতগুলি টিউনার উপলব্ধ রয়েছে যাতে টিভি অ্যাপ সম্ভাব্য সম্পদ দ্বন্দ্ব পরিচালনা করতে পারে৷
  2. টিভি অ্যাপটি একটি টিভি প্রোগ্রাম রেকর্ড করার জন্য একটি ব্যবহারকারীর সূচিত অনুরোধ পায়৷
  3. টিভি অ্যাপ তার অভ্যন্তরীণ ডাটাবেসে রেকর্ডিং সময়সূচী সঞ্চয় করে।
  4. রেকর্ড করার সময় হলে, টিভি অ্যাপ রেকর্ডিংয়ের সাথে যুক্ত চ্যানেলে টিউন করার জন্য একটি অনুরোধ পাস করে।
  5. টিভি ইনপুট পরিষেবা এই অনুরোধটি গ্রহণ করে, উপযুক্ত সংস্থান আছে কি না তা নিয়ে প্রতিক্রিয়া জানায় এবং চ্যানেলে টিউন করে।
  6. তারপর টিভি অ্যাপ টিভি ইনপুট ম্যানেজারের কাছে রেকর্ডিং শুরু করার জন্য একটি অনুরোধ পাঠায়।
  7. টিভি ইনপুট পরিষেবা এই অনুরোধটি গ্রহণ করে এবং রেকর্ডিং শুরু করে৷
  8. টিভি ইনপুট সার্ভিস তার স্টোরেজে প্রকৃত ভিডিও ডেটা সঞ্চয় করে, যা এক্সটার্নাল স্টোরেজ বা ক্লাউড স্টোরেজ হতে পারে।
  9. রেকর্ডিং শেষ করার সময় হলে, টিভি অ্যাপটি টিভি ইনপুট ম্যানেজারের কাছে রেকর্ডিং বন্ধ করার অনুরোধটি পাস করে।
  10. একবার টিভি ইনপুট পরিষেবা অনুরোধটি গ্রহণ করলে, এটি রেকর্ডিং বন্ধ করে দেয় এবং টিভি প্রদানকারীর সাথে সম্পর্কিত মেটাডেটা যোগ করে যাতে অনুরোধ করা হলে টিভি অ্যাপ ব্যবহারকারীদের রেকর্ডিং দেখাতে পারে।

আপনার টিভি ইনপুট পরিষেবাতে রেকর্ডিং বৈশিষ্ট্যগুলি বাস্তবায়ন সম্পর্কে আরও তথ্যের জন্য, এই টিভি রেকর্ডিং নিবন্ধটি দেখুন৷

দরকারী সম্পদ

  • অ্যান্ড্রয়েড সিডিডি এবং ডকুমেন্টেড ডেভেলপার এপিআই হল নির্দিষ্ট রেফারেন্স।
  • CTS ভেরিফায়ার কম্প্যাটিবিলিটি টেস্টিং প্রোগ্রামের অংশ হিসেবে এপিআই ব্যবহার করে। লাইভ টিভির বিরুদ্ধে এটি চালানো ইপিজি, অনুসন্ধান, পিতামাতার নিয়ন্ত্রণ এবং তৃতীয় পক্ষের ইনপুটগুলির প্রসঙ্গে অন্যান্য প্রয়োজনীয়তাগুলি দেখার একটি কার্যকর উপায় হতে পারে৷
  • এই এলাকায় বিকাশকারীর প্রত্যাশার জন্য আপনার টিভি ইনপুট পরিষেবা সংজ্ঞায়িত করুন দেখুন।

পিতামাতার নিয়ন্ত্রণ

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

অভিভাবকীয় নিয়ন্ত্রণ কার্যকারিতার দায়িত্ব টিভি অ্যাপ, টিভি ইনপুট ম্যানেজার পরিষেবা, টিভি প্রদানকারী এবং টিভি ইনপুটের মধ্যে ভাগ করা হয়।

অভিভাবকীয় নিয়ন্ত্রণ বাধ্যতামূলক, এবং এটি CTS যাচাইকারী দ্বারা আচ্ছাদিত৷

বেশ কয়েকটি দেশ রেটিং সিস্টেমকে সংজ্ঞায়িত করেছে যা টিভি ইনপুটগুলি TVContentRating API এর মাধ্যমে ব্যবহার করতে পারে৷ অতিরিক্তভাবে, টিভি ইনপুটগুলি তাদের নিজস্ব কাস্টম রেটিং সিস্টেম নিবন্ধন করতে পারে যেমন CTS যাচাইকারী পরীক্ষা দ্বারা প্রদর্শিত হয়, যা একটি 'ভুয়া' রেটিং প্রবর্তন করে। যেসব দেশে একটি স্ট্যান্ডার্ড রেটিং সিস্টেম বিদ্যমান সেখানে ডিভাইস নির্মাতারা তাদের অন্তর্ভুক্ত হতে পারে এমন অন্য কোনো প্রক্রিয়ার সাথে টিভি ইনপুট ফ্রেমওয়ার্ক প্যারেন্টাল কন্ট্রোলকে একত্রিত করতে উত্সাহিত করা হয়।

টিভি প্রদানকারী

প্রতিটি চ্যানেলের সারিতে একটি COLUMN_LOCKED ক্ষেত্র রয়েছে যা নির্দিষ্ট চ্যানেলগুলিকে একটি PIN কোড না দিয়ে দেখা থেকে লক করতে ব্যবহৃত হয়৷ প্রোগ্রাম ক্ষেত্র COLUMN_CONTENT_RATING প্রদর্শনের উদ্দেশ্যে এবং অভিভাবকীয় নিয়ন্ত্রণ প্রয়োগ করতে ব্যবহৃত হয় না৷

টিভি ইনপুট ম্যানেজার

টিভি ইনপুট ম্যানেজার প্রতিটি ব্লক করা TvContentRating সঞ্চয় করে এবং প্রদত্ত রেটিং সহ সামগ্রী ব্লক করা উচিত কিনা তা পরামর্শ দেওয়ার জন্য isRatingBlocked() এর প্রতিক্রিয়া জানায়।

টিভি ইনপুট

টিভি ইনপুট টিভি ইনপুট ম্যানেজারে isRatingBlocked() কল করে বর্তমান সামগ্রীটি ব্লক করা উচিত কিনা তা পরীক্ষা করে যখন প্রদর্শিত সামগ্রীর রেটিং পরিবর্তিত হয় (প্রোগ্রাম বা চ্যানেল পরিবর্তনে), বা অভিভাবকীয় নিয়ন্ত্রণ সেটিংস পরিবর্তিত হয় ( ACTION_BLOCKED_RATINGS_CHANGED এবং ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED এ) . বিষয়বস্তু ব্লক করা উচিত হলে, টিভি ইনপুট অডিও এবং ভিডিও নিষ্ক্রিয় করে এবং টিভি অ্যাপকে অবহিত করে যে notifyContentBlocked(TvContentRating) কল করে বর্তমান সামগ্রীটি ব্লক করা হয়েছে। যদি বিষয়বস্তু ব্লক করা উচিত নয়, তাহলে টিভি ইনপুট অডিও এবং ভিডিও সক্ষম করে এবং টিভি অ্যাপকে অবহিত করে যে notifyContentAllowed() কল করে বর্তমান সামগ্রী অনুমোদিত।

টিভি অ্যাপ

প্যারেন্টাল কন্ট্রোল API-কে সম্মান জানাতে, এবং সেইজন্য একটি সামঞ্জস্যপূর্ণ প্ল্যাটফর্ম তৈরি করতে, সিস্টেম TV অ্যাপকে নির্দিষ্ট অ্যাপের দ্বারা নিবন্ধিত যেকোনো কাস্টম রেটিং সহ অভিভাবকীয় নিয়ন্ত্রণ পরিচালনা করার জন্য ব্যবহারকারীদের একটি উপায় প্রদান করতে হবে।

টিভি অ্যাপটি একটি পিন কোড UI দেখায় যখন এটি একটি টিভি ইনপুট দ্বারা সূচিত হয় যে বর্তমান সামগ্রীটি অবরুদ্ধ করা হয়েছে বা যখন ব্যবহারকারী একটি ব্লক করা চ্যানেল দেখার চেষ্টা করে।

টিভি অ্যাপ সরাসরি পিতামাতার নিয়ন্ত্রণ সেটিংস সংরক্ষণ করে না। ব্যবহারকারী যখন অভিভাবকীয় নিয়ন্ত্রণ সেটিংস পরিবর্তন করেন, তখন প্রতিটি অবরুদ্ধ TvContentRating টিভি ইনপুট ম্যানেজার দ্বারা সংরক্ষণ করা হয় এবং ব্লক করা চ্যানেলগুলি টিভি প্রদানকারী দ্বারা সংরক্ষণ করা হয়৷

অভিভাবকীয় নিয়ন্ত্রণ সেটিংস পরিবর্তন করার জন্য TV অ্যাপটিকে android.permission.MODIFY_PARENTAL_CONTROLS অনুমতি ঘোষণা করতে হবে।

ডিভাইস নির্মাতাদের উত্সাহিত করা হয়:

  • সামঞ্জস্যের প্রয়োজনীয়তা প্রদর্শনের জন্য রেফারেন্স লাইভ টিভি অ্যাপ্লিকেশনের বিপরীতে CTS যাচাইকারী পিতামাতার নিয়ন্ত্রণ পরীক্ষাটি অনুশীলন করুন।
  • তাদের নিজস্ব টিভি অ্যাপের জন্য রেফারেন্স হিসাবে লাইভ টিভি অ্যাপটি ব্যবহার করুন: বিশেষ করে দেখুন ContentRatingsManager এবং RatingSystemsFragment উৎস, এবং তারা কীভাবে কাস্টম রেটিং পরিচালনা করে।

এইচডিএমআই-সিইসি

HDMI-CEC একটি ডিভাইসকে অন্যটিকে নিয়ন্ত্রণ করতে দেয়, যার ফলে একটি হোম থিয়েটারে একাধিক যন্ত্রপাতি নিয়ন্ত্রণ করতে একটি একক রিমোট সক্ষম করে। এটি অ্যান্ড্রয়েড টিভি দ্বারা সেটআপের গতি বাড়াতে এবং কেন্দ্রীয় টিভি অ্যাপের মাধ্যমে বিভিন্ন টিভি ইনপুটগুলির উপর দূরবর্তী নিয়ন্ত্রণের অনুমতি দিতে ব্যবহৃত হয়। উদাহরণস্বরূপ, এটি ইনপুট, পাওয়ার আপ বা ডাউন ডিভাইস এবং আরও অনেক কিছু স্যুইচ করতে পারে।

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

এর মানে বিদ্যমান HDMI-CEC বাস্তবায়নগুলিকে Android TIF-এর সাথে ইন্টারঅপারেটিং করার জন্য পুনরায় ডিজাইন করতে হবে। আমরা সুপারিশ করি যে হার্ডওয়্যার প্ল্যাটফর্মে সিইসি পাওয়ার চালু এবং অন্যান্য কমান্ড পাওয়ার জন্য একটি মাইক্রোপ্রসেসর থাকে।

অ্যান্ড্রয়েড টিভিতে সিইসি ইন্টিগ্রেশন
চিত্র 17. অ্যান্ড্রয়েড টিভিতে সিইসি ইন্টিগ্রেশন

  1. সিইসি বাসটি একটি ভিন্ন উত্সে স্যুইচ করার জন্য বর্তমানে সক্রিয় উত্স থেকে একটি আদেশ পায়৷
  2. ড্রাইভার HDMI-CEC HAL-কে কমান্ড দেয়।
  3. HAL সমস্ত ActiveSourceChangeListeners অবহিত করে।
  4. HDMI কন্ট্রোল সার্ভিসকে ActiveSourceChangeListener এর মাধ্যমে সোর্স পরিবর্তন সম্পর্কে অবহিত করা হয়।
  5. টিভি ইনপুট ম্যানেজার পরিষেবা টিভি অ্যাপের জন্য উৎস পরিবর্তন করার জন্য একটি অভিপ্রায় তৈরি করে।
  6. টিভি অ্যাপটি তারপর টিভি ইনপুটের জন্য একটি টিভি ইনপুট ম্যানেজার সেশন তৈরি করে এবং সেই সেশনে setMain কল করে।
  7. টিভি ইনপুট ম্যানেজার সেশন এই তথ্যটি HDMI টিভি ইনপুটে পাঠায়।
  8. HDMI টিভি ইনপুট সাইডব্যান্ড পৃষ্ঠ সেট করার অনুরোধ করে।
  9. টিভি ইনপুট ম্যানেজার সার্ভিসটি সারফেস সেট করা হলে HDMI কন্ট্রোল সার্ভিসে একটি সংশ্লিষ্ট রাউটিং কন্ট্রোল কমান্ড জেনারেট করে।

টিভি ইন্টিগ্রেশন নির্দেশিকা

ব্রডকাস্ট অ্যাপ

যেহেতু প্রতিটি দেশের সম্প্রচার-নির্দিষ্ট প্রয়োজনীয়তা রয়েছে (MHEG, Teletext, HbbTV, এবং আরও অনেক), নির্মাতারা সম্প্রচার অ্যাপের জন্য তাদের নিজস্ব সমাধান সরবরাহ করবে বলে আশা করা হচ্ছে, উদাহরণস্বরূপ:

  • MHEG: নেটিভ স্ট্যাক
  • টেলিটেক্সট: নেটিভ স্ট্যাক
  • HbbTV: Vewd সফ্টওয়্যার থেকে HbbTV সমাধান

অ্যান্ড্রয়েড এল রিলিজে, অ্যান্ড্রয়েড টিভি আশা করে যে ডিভাইস নির্মাতারা আঞ্চলিক টিভি স্ট্যাকের জন্য সিস্টেম ইন্টিগ্রেটর বা অ্যান্ড্রয়েড সলিউশন ব্যবহার করবে, টিভি সফ্টওয়্যার স্ট্যাকগুলিতে সারফেস পাস করবে বা লিগ্যাসি স্ট্যাকের সাথে ইন্টারঅ্যাক্ট করার জন্য প্রয়োজনীয় কী কোড পাস করবে।

সম্প্রচার অ্যাপ এবং টিভি অ্যাপ কীভাবে ইন্টারঅ্যাক্ট করে তা এখানে রয়েছে:

  1. টিভি অ্যাপটি ফোকাসে রয়েছে, সমস্ত কী পাচ্ছে।
  2. টিভি অ্যাপ টিভি ইনপুট ডিভাইসে কী (যেমন লাল বোতাম) পাস করে।
  3. টিভি ইনপুট ডিভাইসটি অভ্যন্তরীণভাবে লিগ্যাসি টিভি স্ট্যাকের সাথে একত্রিত হয়।
  4. একটি অ্যাক্টিভেশন কীকোড (যেমন লাল বোতাম) পাওয়ার পরে, টিভি ইনপুট ডিভাইসটি সম্প্রচার অ্যাপগুলিকে সক্রিয় করে।
  5. একটি সম্প্রচার অ্যাপ টিভি অ্যাপে ফোকাস নেয় এবং ব্যবহারকারীর ক্রিয়া পরিচালনা করে।

ভয়েস অনুসন্ধান/সুপারিশের জন্য, সম্প্রচার অ্যাপ ভয়েস অনুসন্ধানের জন্য অ্যাপ-মধ্যস্থ অনুসন্ধান সমর্থন করতে পারে।