टीवी इनपुट फ़्रेमवर्क

Android TV HAL आइकॉन

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

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

Components

Android TV Input Framework को लागू करने में, TV Input Manager शामिल होता है. टीआईएफ़, TV ऐप्लिकेशन के साथ काम करता है. यह एक सिस्टम ऐप्लिकेशन है. इसे किसी तीसरे पक्ष के ऐप्लिकेशन से नहीं बदला जा सकता. इसकी मदद से, बिल्ट-इन और आईपी ट्यूनर चैनलों को ऐक्सेस किया जा सकता है. टीवी ऐप्लिकेशन, डिवाइस बनाने वाली कंपनी या अन्य पार्टियों की ओर से उपलब्ध कराए गए टीवी इनपुट मॉड्यूल से कम्यूनिकेट करता है. यह कम्यूनिकेशन, टीवी इनपुट मैनेजर के ज़रिए होता है.

टीवी इनपुट फ़्रेमवर्क में ये शामिल हैं:

  • टीवी सेवा देने वाली कंपनी (com.android.providers.tv.TvProvider): चैनलों, प्रोग्राम, और उनसे जुड़ी अनुमतियों का डेटाबेस
  • टीवी ऐप्लिकेशन (com.android.tv.TvActivity): यह ऐप्लिकेशन, उपयोगकर्ता के इंटरैक्शन को मैनेज करता है
  • टीवी इनपुट मैनेजर (android.media.tv.TvInputManager): इसकी मदद से, टीवी इनपुट, टीवी ऐप्लिकेशन से कम्यूनिकेट कर पाते हैं
  • टीवी इनपुट: यह एक ऐसा ऐप्लिकेशन है जो फ़िज़िकल या वर्चुअल ट्यूनर और इनपुट पोर्ट को दिखाता है
  • टीवी इनपुट एचएएल (tv_input मॉड्यूल): यह हार्डवेयर की ऐसी परिभाषा है जो लागू होने पर, सिस्टम टीवी इनपुट को टीवी से जुड़े हार्डवेयर को ऐक्सेस करने की अनुमति देती है
  • माता-पिता के कंट्रोल वाली सुविधा: यह एक ऐसी टेक्नोलॉजी है जिसकी मदद से, चैनलों और प्रोग्राम को ब्लॉक किया जा सकता है
  • एचडीएमआई-सीईसी: यह एक ऐसी टेक्नोलॉजी है जिसकी मदद से, एचडीएमआई के ज़रिए अलग-अलग डिवाइसों को रिमोट से कंट्रोल किया जा सकता है
  • ट्यूनर फ़्रेमवर्क: यह बिल्ट-इन-ट्यूनर टीवी इनपुट के लिए एक फ़्रेमवर्क है
  • MediaCas: कंडिशनल ऐक्सेस के लिए फ़्रेमवर्क
  • ट्यूनर रिसॉर्स मैनेजर: यह टीवी इनपुट, MediaCas, और बिल्ट-इन-ट्यूनर इनपुट के लिए हार्डवेयर रिसॉर्स को मैनेज करने वाली सेवा है

इन कॉम्पोनेंट के बारे में यहां ज़्यादा जानकारी दी गई है. Android TV इनपुट फ़्रेमवर्क के आर्किटेक्चर के बारे में ज़्यादा जानकारी के लिए, यह डायग्राम देखें.

Android TIF आर्किटेक्चर के बारे में खास जानकारी
पहली इमेज. Android TV इनपुट फ़्रेमवर्क (TIF) आर्किटेक्चर

Flow

आर्किटेक्चर का इस्तेमाल इस तरह किया जाता है:

  1. उपयोगकर्ता को TV ऐप्लिकेशन दिखता है और वह उससे इंटरैक्ट करता है. यह एक सिस्टम ऐप्लिकेशन है, जिसे तीसरे पक्ष के ऐप्लिकेशन से नहीं बदला जा सकता.
  2. TV ऐप्लिकेशन, टीवी इनपुट से एवी कॉन्टेंट दिखाता है.
  3. टीवी ऐप्लिकेशन, टीवी इनपुट से सीधे तौर पर कम्यूनिकेट नहीं कर सकता. टीवी इनपुट मैनेजर, टीवी ऐप्लिकेशन के लिए टीवी इनपुट की स्थिति की पहचान करता है. इन सीमाओं के बारे में ज़्यादा जानने के लिए, यहां दिया गया टीवी इनपुट मैनेजर देखें.

अनुमतियां

  • सिर्फ़ signatureOrSystem टीवी इनपुट और टीवी ऐप्लिकेशन के पास, टीवी सेवा देने वाली कंपनी के डेटाबेस का पूरा ऐक्सेस होता है. साथ ही, वे KeyEvents पाने में सक्षम होते हैं.
  • सिर्फ़ सिस्टम टीवी इनपुट, TV Input Manager सेवा के ज़रिए TV Input HAL को ऐक्सेस कर सकते हैं. टीवी इनपुट को TV Input Manager सेशन के ज़रिए, एक-से-एक ऐक्सेस किया जाता है.
  • तीसरे पक्ष के टीवी इनपुट के पास, टीवी सेवा देने वाली कंपनी के डेटाबेस का ऐक्सेस होता है. हालांकि, वे सिर्फ़ मैचिंग पैकेज की लाइनों को पढ़/लिख सकते हैं.
  • तीसरे पक्ष के टीवी इनपुट, अपना कॉन्टेंट या डिवाइस बनाने वाली कंपनी के पासथ्रू टीवी इनपुट का कॉन्टेंट दिखा सकते हैं. जैसे, HDMI1. ये डिवाइस, टीवी के ऐसे इनपुट से कॉन्टेंट नहीं दिखा सकते जिनमें पासथ्रू की सुविधा नहीं होती. जैसे, बिल्ट-इन या आईपीटीवी ट्यूनर.
  • TV_INPUT_HARDWARE हार्डवेयर टीवी इनपुट ऐप्लिकेशन के लिए अनुमति, टीवी इनपुट मैनेजर सेवा को बूट होने पर टीवी इनपुट सेवा को सूचना देने के लिए सिग्नल देता है, ताकि वह टीवी इनपुट मैनेजर सेवा को कॉल कर सके और अपने टीवी इनपुट जोड़ सके. इस अनुमति से, हार्डवेयर टीवी इनपुट ऐप्लिकेशन को टीवी इनपुट सेवा के हिसाब से कई टीवी इनपुट इस्तेमाल करने की सुविधा मिलती है. साथ ही, यह अनुमति, ऐप्लिकेशन को टीवी इनपुट की सुविधा को डाइनैमिक तरीके से जोड़ने और हटाने की सुविधा भी देती है.

टीवी सेवा देने वाली कंपनी

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

टीवी सेवा देने वाली कंपनी, "ब्रॉडकास्ट शैली" को "कैननिकल शैली" से इंटरनल तौर पर मैप करती है. टीवी इनपुट, "ब्रॉडकास्ट का जॉनर" फ़ील्ड में वैल्यू भरने के लिए ज़िम्मेदार होते हैं. यह वैल्यू, ब्रॉडकास्ट के स्टैंडर्ड के हिसाब से होती है. साथ ही, "कैननिकल जॉनर" फ़ील्ड में, android.provider.TvContract.Genres से सही जॉनर अपने-आप भर जाएगा. उदाहरण के लिए, ब्रॉडकास्ट स्टैंडर्ड एटीएससी ए/65 और 0x25 (इसका मतलब “खेल-कूद” है) वाले प्रोग्राम के लिए, टीवी इनपुट “ब्रॉडकास्ट शैली” को “खेल-कूद” स्ट्रिंग से भर देगा. साथ ही, टीवी सेवा देने वाली कंपनी “कैननिकल शैली” फ़ील्ड को मैप की गई वैल्यू android.provider.TvContract.Genres.SPORTS से भर देगी.

टीवी सेवा देने वाली कंपनी के बारे में ज़्यादा जानकारी के लिए, यहां दिया गया डायग्राम देखें.

Android TV Provider
दूसरी इमेज. Android TV Provider

सिर्फ़ सिस्टम के खास पार्टीशन में मौजूद ऐप्लिकेशन, TVProvider के पूरे डेटाबेस को पढ़ सकते हैं.

टीवी इनपुट पासथ्रू करने की सुविधा, चैनलों और प्रोग्राम को सेव नहीं करती है.

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

डेटाबेस फ़ील्ड के उदाहरण

टीवी सेवा देने वाली कंपनी, चैनल (android.provider.TvContract.Channels) और प्रोग्राम (android.provider.TvContract.Programs) टेबल में स्ट्रक्चर्ड डेटा का इस्तेमाल करती है. इन टेबल में टीवी इनपुट और सिस्टम ऐप्लिकेशन, जैसे कि TV ऐप्लिकेशन से डेटा भरा जाता है और इन्हें ऐक्सेस किया जाता है. इन टेबल में चार तरह के फ़ील्ड होते हैं:

  • डिस्प्ले: डिस्प्ले फ़ील्ड में ऐसी जानकारी होती है जिसे ऐप्लिकेशन, उपयोगकर्ता को दिखाना चाहते हैं. जैसे, चैनल का नाम (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 होता है. यह उस लाइन का मालिक होता है. साथ ही, Query, Insert, Update के लिए TvProvider.java पर सही का निशान लगा होता है. टीवी इनपुट सिर्फ़ उस जानकारी को ऐक्सेस कर सकता है जिसे उसने लिखा है. साथ ही, उसे अन्य टीवी इनपुट से मिली जानकारी से अलग रखा जाता है.
  • उपलब्ध चैनलों का पता लगाने के लिए, AndroidManifest.xml के ज़रिए READ और WRITE अनुमतियां (इसके लिए उपयोगकर्ता की सहमति ज़रूरी है).
  • सिर्फ़ signatureOrSystem ऐप्लिकेशन, पूरे डेटाबेस को ऐक्सेस करने की ACCESS_ALL_EPG_DATA अनुमति पा सकते हैं.

टीवी इनपुट मैनेजर

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

  • टीवी इनपुट की सूची बनाना और उनका स्टेटस देखना
  • सेशन बनाना और श्रोताओं को मैनेज करना

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

कोई ऐप्लिकेशन, android.media.tv.TvInputManager के साथ TvInputCallback बना सकता है और उसे रजिस्टर कर सकता है. ऐसा इसलिए, ताकि टीवी इनपुट की स्थिति में बदलाव होने या टीवी इनपुट के जोड़े या हटाए जाने पर, उसे वापस कॉल किया जा सके. उदाहरण के लिए, टीवी इनपुट के डिसकनेक्ट होने पर, टीवी ऐप्लिकेशन इस पर प्रतिक्रिया दे सकता है. इसके लिए, वह इनपुट को डिसकनेक्ट के तौर पर दिखा सकता है और उसे चुनने से रोक सकता है.

टीवी इनपुट मैनेजर, टीवी ऐप्लिकेशन और टीवी इनपुट के बीच कम्यूनिकेशन को अलग करता है. टीवी इनपुट मैनेजर और टीवी इनपुट के स्टैंडर्ड इंटरफ़ेस की मदद से, डिवाइस बनाने वाली कई कंपनियां अपने टीवी ऐप्लिकेशन बना सकती हैं. साथ ही, इससे तीसरे पक्ष के सभी टीवी इनपुट, सभी टीवी ऐप्लिकेशन पर काम कर पाते हैं.

टीवी इनपुट

टीवी इनपुट, Android ऐप्लिकेशन होते हैं. इसका मतलब है कि इनमें AndroidManifest.xml फ़ाइल होती है. साथ ही, इन्हें इंस्टॉल किया जाता है. इन्हें Play से इंस्टॉल किया जा सकता है, ये पहले से इंस्टॉल होते हैं या इन्हें साइडलोड किया जाता है. Android TV में, पहले से इंस्टॉल किए गए सिस्टम ऐप्लिकेशन, डिवाइस बनाने वाली कंपनी के साइन किए गए ऐप्लिकेशन, और तीसरे पक्ष के टीवी इनपुट काम करते हैं.

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

पासथ्रू इनपुट का उदाहरण

Android TV सिस्टम इनपुट
तीसरी इमेज. Android TV System Input

इस उदाहरण में, डिवाइस बनाने वाली कंपनी की ओर से उपलब्ध कराए गए टीवी इनपुट पर भरोसा किया जाता है. साथ ही, इसके पास टीवी सेवा देने वाली कंपनी का पूरा ऐक्सेस होता है. पासथ्रू टीवी इनपुट के तौर पर, यह टीवी सेवा देने वाली कंपनी के साथ किसी भी चैनल या प्रोग्राम को रजिस्टर नहीं करता है. पासथ्रू इनपुट को रेफ़रंस करने के लिए इस्तेमाल किए गए यूआरआई को पाने के लिए, android.media.tv.TvContract यूटिलिटी वाले buildChannelUriForPassthroughInput(String inputId) तरीके का इस्तेमाल करें. टीवी ऐप्लिकेशन, एचडीएमआई टीवी इनपुट तक पहुंचने के लिए, टीवी इनपुट मैनेजर से कम्यूनिकेट करता है.

पहले से मौजूद ट्यूनर का उदाहरण

Android TV में पहले से मौजूद ट्यूनर इनपुट
चौथी इमेज. Android TV में पहले से मौजूद ट्यूनर का इनपुट

इस उदाहरण में, डिवाइस बनाने वाली कंपनी ने बिल्ट-इन ट्यूनर टीवी इनपुट उपलब्ध कराया है. इस पर भरोसा किया जाता है और इसके पास टीवी सेवा देने वाली कंपनी का पूरा ऐक्सेस होता है.

तीसरे पक्ष के इनपुट का उदाहरण

Android TV पर तीसरे पक्ष का इनपुट
पांचवी इमेज. Android TV पर तीसरे पक्ष से मिले इनपुट

इस उदाहरण में, बाहरी एसटीबी टीवी इनपुट की सुविधा तीसरे पक्ष ने दी है. टीवी इनपुट, सीधे तौर पर एचडीएमआई वीडियो फ़ीड को ऐक्सेस नहीं कर सकता. इसलिए, इसे टीवी इनपुट मैनेजर से होकर जाना होगा. साथ ही, डिवाइस बनाने वाली कंपनी की ओर से उपलब्ध कराए गए एचडीएमआई टीवी इनपुट का इस्तेमाल करना होगा.

टीवी इनपुट मैनेजर की मदद से, बाहरी एसटीबी टीवी इनपुट, एचडीएमआई टीवी इनपुट से बात कर सकता है. साथ ही, उसे एचडीएमआई1 पर वीडियो दिखाने के लिए कह सकता है. इसलिए, STB TV Input, टीवी को कंट्रोल कर सकता है. वहीं, मैन्युफ़ैक्चरर की ओर से उपलब्ध कराया गया HDMI TV Input, वीडियो रेंडर करता है.

पिक्चर में पिक्चर (पीआईपी) का उदाहरण

Android TV KeyEvents
छठी इमेज. Android TV KeyEvents

ऊपर दिए गए डायग्राम में दिखाया गया है कि रिमोट कंट्रोल के बटन, पिक्चर में पिक्चर (पीआईपी) डिसप्ले के लिए किसी खास टीवी इनपुट पर कैसे पास किए जाते हैं. बटन दबाने की इन कार्रवाइयों को डिवाइस बनाने वाली कंपनी के हार्डवेयर ड्राइवर से समझा जाता है. यह हार्डवेयर स्कैनकोड को Android कीकोड में बदलता है और उन्हें स्टैंडर्ड Android इनपुट पाइपलाइन को पास करता है. InputReader और InputDispatcher फ़ंक्शन, KeyEvents के तौर पर काम करते हैं. अगर टीवी ऐप्लिकेशन फ़ोकस में है, तो ये इवेंट को ट्रिगर करते हैं.

सिर्फ़ सिस्टम टीवी इनपुट को InputEvents मिल सकता है. हालांकि, ऐसा सिर्फ़ तब होगा, जब उनके पास InputEvents सिस्टम की अनुमति हो.RECEIVE_INPUT_EVENT टीवी इनपुट की यह ज़िम्मेदारी होती है कि वह यह तय करे कि किन InputEvents का इस्तेमाल करना है. साथ ही, उसे टीवी ऐप्लिकेशन को उन कुंजियों को मैनेज करने की अनुमति देनी चाहिए जिनका इस्तेमाल करने की उसे ज़रूरत नहीं है.

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

MHEG-5 इनपुट का उदाहरण

इस डायग्राम में, Android TIF के ज़रिए KeyEvents को रूट करने के तरीके के बारे में ज़्यादा जानकारी दी गई है.

Android TV पर लाल बटन का उदाहरण
सातवीं इमेज. Android TV पर लाल बटन का उदाहरण

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

ब्रॉडकास्ट ऐप्लिकेशन, टीवी ऐप्लिकेशन के साथ कैसे इंटरैक्ट करते हैं, यह जानने के लिए ब्रॉडकास्ट ऐप्लिकेशन सेक्शन देखें.

इस उदाहरण में:

  1. टीवी ऐप्लिकेशन फ़ोकस में है और उसे सभी कुंजियां मिलती हैं.
  2. KeyEvents (जैसे, लाल बटन) को ऐक्टिव टीवी पर InputEvents. के तौर पर भेजा जाता है
  3. सिस्टम टीवी इनपुट, MHEG-5 स्टैक के साथ इंटिग्रेट होता है. साथ ही, इसके पास RECEIVE_INPUT_EVENT सिस्टम की अनुमति होती है.
  4. ऐक्टिवेशन कीकोड (जैसे, लाल बटन) मिलने पर, टीवी इनपुट ब्रॉडकास्ट ऐप्लिकेशन को चालू करता है.
  5. टीवी इनपुट, KeyEvents के तौर पर InputEvents का इस्तेमाल करता है और ब्रॉडकास्ट ऐप्लिकेशन, InputEvents को मैनेज करता है जब तक कि इसे खारिज न कर दिया जाए.

ध्यान दें: तीसरे पक्ष के टीवी इनपुट को कभी कुंजियां नहीं मिलतीं.

टीवी इनपुट एचएएल

टीवी इनपुट एचएएल, टीवी इनपुट को डेवलप करने में मदद करता है, ताकि टीवी से जुड़े हार्डवेयर को ऐक्सेस किया जा सके. अन्य Android एचएएल की तरह, टीवी इनपुट एचएएल (tv_input) भी AOSP सोर्स ट्री में उपलब्ध है. इसे लागू करने का काम वेंडर करता है.

ध्यान दें: Android 14 से, टीवी इनपुट एचएएल इंटरफ़ेस को एआईडीएल का इस्तेमाल करके तय किया जाता है.

टीवी ऐप्लिकेशन

सिस्टम टीवी ऐप्लिकेशन, उपयोगकर्ता को लाइव टीवी कॉन्टेंट दिखाता है. Android प्लैटफ़ॉर्म के साथ, रेफ़रंस टीवी ऐप्लिकेशन (लाइव टीवी) उपलब्ध कराया जाता है. डिवाइस बनाने वाली कंपनियां, इसका इस्तेमाल बिना किसी बदलाव के कर सकती हैं. इसके अलावा, इसे अपनी ज़रूरत के हिसाब से बनाया जा सकता है, इसमें अतिरिक्त सुविधाएं जोड़ी जा सकती हैं या इसे बदला जा सकता है. सोर्स कोड Android Open Source Project में उपलब्ध है. इसे इस्तेमाल करने के बारे में जानने के लिए, रेफ़रंस टीवी ऐप्लिकेशन लेख पढ़ें.

डिवाइस बनाने वाली कंपनियां, डिवाइस बनाने वाली कंपनी या देश के हिसाब से सुविधाएं लागू करने के लिए, अपने टीवी ऐप्लिकेशन को बढ़ा सकती हैं. हालांकि, यह टीआईएफ़ या रेफ़रंस टीवी ऐप्लिकेशन के दायरे में नहीं आता.

सिस्टम टीवी ऐप्लिकेशन को कम से कम ये काम करने होंगे:

सेटअप और कॉन्फ़िगरेशन

  • टीवी इनपुट का अपने-आप पता लगाने की सुविधा
  • टीवी इनपुट को चैनल सेट अप करने की अनुमति देना
  • माता-पिता के कंट्रोल की सेटिंग मैनेज करना
  • चैनलों में बदलाव करें

देखा जा रहा है

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

यह सुविधा सेट, Android के नए वर्शन के साथ बढ़ता जाएगा. इन वर्शन में, प्लैटफ़ॉर्म टीआईएफ़ एपीआई को बढ़ाया जाता है. CTS Verifier, डिवाइस के साथ काम करने से जुड़े टेस्ट को कवर करता है.

तीसरे पक्ष के टीवी इनपुट के लिए सहायता

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

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

Android CDD के टीवी ऐप्लिकेशन सेक्शन में बताए गए तरीके के मुताबिक, बिल्ट-इन चैनलों और तीसरे पक्ष के चैनलों के बीच अंतर दिखाने की अनुमति है.

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

नया चैनल सेटअप करना

तीसरे पक्ष के नए इनपुट/चैनल जोड़ने की प्रोसेस तब शुरू होती है, जब उपयोगकर्ता किसी ऐप्लिकेशन स्टोर (जैसे, Google Play) से टीवी इनपुट ढूंढकर उसे इंस्टॉल करता है.

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

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

सेटिंग पर जाएं
आठवीं इमेज. सेटिंग पर जाएं.

सेटिंग में जाकर, चैनल के सोर्स पर जाएं
नौवीं इमेज. सेटिंग में जाकर, चैनल के सोर्स पर जाएं.

सूची में से अपना सोर्स चुनें.
दसवीं इमेज. सूची में से अपना सोर्स चुनें.

अपने सोर्स से चैनल जोड़ना
ग्यारहवीं इमेज. अपने सोर्स से चैनल जोड़ें.

इसके अलावा, नया TvInput इंस्टॉल होने के बाद, टीवी ऐप्लिकेशन के मेन्यू में सबसे ऊपर एक सूचना कार्ड दिखता है. इससे उपयोगकर्ता को सीधे सेटअप पर ले जाया जाता है:

सूचना, जिसमें यह बताया गया हो कि नए चैनल सोर्स उपलब्ध हैं.
बारहवीं इमेज. सूचना, जिसमें यह दिखाया गया है कि नए चैनल सोर्स उपलब्ध हैं.

अगर उपयोगकर्ता सूचना के ज़रिए कार्रवाई करता है, तो वह अपने सोर्स सेट अप करने का विकल्प चुन सकता है. जैसा कि इमेज 10 में दिखाया गया है.

इस बारे में डेवलपर की उम्मीदों के बारे में जानने के लिए, अपनी टीवी इनपुट सेवा तय करना लेख पढ़ें.

चैनल की सूची को पसंद के मुताबिक बनाना

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

सेटिंग में जाकर, चैनलों की सूची खोलें.
तेरहवीं इमेज. सेटिंग में जाकर, चैनल की सूची खोलें.

चैनल की सूची को पसंद के मुताबिक बनाएं.
चौथी इमेज. चैनल की सूची को पसंद के मुताबिक बनाएं.

ईपीजी

तीसरे पक्ष के इनपुट डेवलपर को यह भरोसा होना चाहिए कि उपयोगकर्ता, Android TV के साथ काम करने वाले सभी डिवाइसों पर, सामान्य इस्तेमाल के दौरान उनके चैनलों पर आसानी से जा सकते हैं.

तीसरे पक्ष के इनपुट से मिले चैनलों को, डिवाइस के स्टैंडर्ड लाइव टीवी के ईपीजी में शामिल किया जाना चाहिए. तीसरे पक्ष के चैनलों को अलग-अलग कैटगरी में रखा जा सकता है या उन्हें अलग-अलग तरीके से दिखाया जा सकता है. इसके लिए, Android CDD का TV ऐप्लिकेशन सेक्शन देखें. अहम बात यह है कि उपयोगकर्ताओं को इंस्टॉल किए गए चैनल आसानी से मिल जाने चाहिए.

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

टाइम शिफ्टिंग

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

जिन टीवी इनपुट पर टाइम शिफ्टिंग की सुविधा काम करती है उनके लिए, टीवी ऐप्लिकेशन को प्लेबैक कंट्रोल दिखाने होंगे.

प्लेबैक कंट्रोल
15वीं इमेज. प्लेबैक कंट्रोल

डीवीआर

Android 7.0 और इसके बाद के वर्शन वाले डिवाइसों पर, रिकॉर्ड किए गए प्रोग्राम चलाने, उनकी सूची बनाने, और उन्हें चलाने के लिए, TV ऐप्लिकेशन में Android फ़्रेमवर्क TV रिकॉर्डिंग एपीआई काम करने चाहिए.

इससे डिवाइस बनाने वाली कंपनियां, अपने डीवीआर सबसिस्टम को TIF में प्लग कर सकती हैं. साथ ही, इससे टीवी डिवाइस पर डीवीआर की सुविधा चालू करने या उसे इंटिग्रेट करने में लगने वाली मेहनत को काफ़ी हद तक कम किया जा सकता है. इससे तीसरे पक्ष की कंपनियों को, ऐसे डीवीआर सिस्टम उपलब्ध कराने में भी मदद मिलती है जिन्हें Android TV डिवाइस में प्लग किया जा सकता है.

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

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

Android TV में डीवीआर की सुविधा को लागू करने के बारे में जानने के लिए, यहां दिया गया डायग्राम देखें.

Android TV में डिजिटल वीडियो रिकॉर्डिंग की सुविधा
16वीं इमेज. Android TV में डिजिटल वीडियो रिकॉर्डिंग की सुविधा

  1. टीवी इनपुट सेवा, टीवी ऐप्लिकेशन को बताती है कि कितने ट्यूनर उपलब्ध हैं, ताकि टीवी ऐप्लिकेशन संसाधनों के टकराव को मैनेज कर सके.
  2. टीवी ऐप्लिकेशन को, उपयोगकर्ता से टीवी प्रोग्राम रिकॉर्ड करने का अनुरोध मिलता है.
  3. टीवी ऐप्लिकेशन, रिकॉर्डिंग के शेड्यूल को अपने इंटरनल डेटाबेस में सेव करता है.
  4. रिकॉर्डिंग का समय होने पर, टीवी ऐप्लिकेशन उस चैनल को ट्यून करने का अनुरोध करता है जिससे रिकॉर्डिंग जुड़ी होती है.
  5. टीवी इनपुट सेवा को यह अनुरोध मिलता है. इसके बाद, वह यह जवाब देती है कि ज़रूरी संसाधन उपलब्ध हैं या नहीं. इसके बाद, वह चैनल को ट्यून करती है.
  6. इसके बाद, टीवी ऐप्लिकेशन, रिकॉर्डिंग शुरू करने का अनुरोध, टीवी इनपुट मैनेजर को भेजता है.
  7. टीवी इनपुट सेवा को यह अनुरोध मिलता है और वह रिकॉर्डिंग शुरू कर देती है.
  8. टीवी इनपुट सेवा, वीडियो के असल डेटा को अपने स्टोरेज में सेव करती है. यह स्टोरेज, बाहरी स्टोरेज या क्लाउड स्टोरेज हो सकता है.
  9. रिकॉर्डिंग खत्म होने पर, TV ऐप्लिकेशन, TV Input Manager को रिकॉर्डिंग रोकने का अनुरोध भेजता है.
  10. अनुरोध मिलने के बाद, टीवी इनपुट सेवा रिकॉर्डिंग बंद कर देती है. साथ ही, इससे जुड़ा मेटाडेटा, टीवी सेवा देने वाली कंपनी को भेज देती है, ताकि टीवी ऐप्लिकेशन, अनुरोध किए जाने पर लोगों को रिकॉर्डिंग दिखा सके.

टीवी इनपुट सेवा में रिकॉर्डिंग की सुविधाएं लागू करने के बारे में ज़्यादा जानने के लिए, टीवी रिकॉर्डिंग लेख पढ़ें.

काम के संसाधन

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

माता-पिता का कंट्रोल

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

माता-पिता के कंट्रोल की सुविधा को लागू करने की ज़िम्मेदारी, टीवी ऐप्लिकेशन, टीवी इनपुट मैनेजर सेवा, टीवी सेवा देने वाली कंपनी, और टीवी इनपुट के बीच बंटी होती है.

माता-पिता के कंट्रोल की सुविधा ज़रूरी है. इसकी जांच CTS Verifier से की जाती है.

कई देशों में रेटिंग सिस्टम तय किए गए हैं. टीवी इनपुट, TVContentRating API के ज़रिए इनका इस्तेमाल कर सकते हैं. इसके अलावा, टीवी इनपुट अपने हिसाब से रेटिंग सिस्टम रजिस्टर कर सकते हैं. जैसा कि सीटीएस वेरिफ़ायर टेस्ट में दिखाया गया है, यह 'फ़र्ज़ी' रेटिंग देता है. जिन देशों में रेटिंग सिस्टम मौजूद है वहां डिवाइस बनाने वाली कंपनियों को, टीवी इनपुट फ़्रेमवर्क के माता-पिता के कंट्रोल की सुविधा को किसी अन्य सुविधा के साथ जोड़ने का सुझाव दिया जाता है.

टीवी कंपनी

हर चैनल रो में एक COLUMN_LOCKED फ़ील्ड होता है. इसका इस्तेमाल, पिन कोड डाले बिना कुछ चैनलों को देखने से रोकने के लिए किया जाता है. प्रोग्राम फ़ील्ड COLUMN_CONTENT_RATING को सिर्फ़ दिखाने के लिए इस्तेमाल किया जाता है. इसका इस्तेमाल, माता-पिता के कंट्रोल को लागू करने के लिए नहीं किया जाता.

टीवी इनपुट मैनेजर

टीवी इनपुट मैनेजर, ब्लॉक किए गए हर TvContentRating को सेव करता है. साथ ही, TvContentRating के जवाब में यह सलाह देता है कि दी गई रेटिंग वाले कॉन्टेंट को ब्लॉक किया जाना चाहिए या नहीं.isRatingBlocked()

टीवी इनपुट

टीवी इनपुट, यह जांच करता है कि मौजूदा कॉन्टेंट को ब्लॉक किया जाना चाहिए या नहीं. इसके लिए, वह isRatingBlocked() को कॉल करता है. ऐसा तब किया जाता है, जब दिखाए जा रहे कॉन्टेंट की रेटिंग बदल गई हो (प्रोग्राम या चैनल बदलने पर) या माता-पिता के कंट्रोल की सेटिंग बदल गई हो (ACTION_BLOCKED_RATINGS_CHANGED और ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED पर). अगर कॉन्टेंट को ब्लॉक किया जाना चाहिए, तो टीवी इनपुट, ऑडियो और वीडियो को बंद कर देता है. साथ ही, टीवी ऐप्लिकेशन को सूचना देता है कि मौजूदा कॉन्टेंट को ब्लॉक कर दिया गया है. इसके लिए, वह notifyContentBlocked(TvContentRating) को कॉल करता है. अगर कॉन्टेंट को ब्लॉक नहीं करना है, तो टीवी इनपुट, ऑडियो और वीडियो चालू करता है. साथ ही, टीवी ऐप्लिकेशन को सूचना देता है कि मौजूदा कॉन्टेंट को अनुमति मिली हुई है. इसके लिए, वह notifyContentAllowed() को कॉल करता है.

टीवी ऐप्लिकेशन

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

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

टीवी ऐप्लिकेशन, माता-पिता के कंट्रोल वाली सेटिंग को सीधे तौर पर सेव नहीं करता है. जब उपयोगकर्ता, माता-पिता के कंट्रोल की सेटिंग बदलता है, तो ब्लॉक किए गए हर TvContentRating को टीवी इनपुट मैनेजर सेव करता है. साथ ही, ब्लॉक किए गए चैनलों को टीवी सेवा देने वाली कंपनी सेव करती है.

माता-पिता के कंट्रोल से जुड़ी सेटिंग बदलने के लिए, TV ऐप्लिकेशन को android.permission.MODIFY_PARENTAL_CONTROLS अनुमति के बारे में बताना होगा.

डिवाइस बनाने वाली कंपनियों को यह सुझाव दिया जाता है कि वे:

  • संगतता से जुड़ी ज़रूरी शर्तों को दिखाने के लिए, लाइव टीवी ऐप्लिकेशन के रेफ़रंस के ख़िलाफ़, CTS Verifier के माता-पिता के कंट्रोल से जुड़ा टेस्ट करें.
  • अपने टीवी ऐप्लिकेशन के लिए, Live TV ऐप्लिकेशन को रेफ़रंस के तौर पर इस्तेमाल करें: खास तौर पर, ContentRatingsManager और RatingSystemsFragment सोर्स देखें. साथ ही, यह देखें कि वे कस्टम रेटिंग को कैसे मैनेज करते हैं.

एचडीएमआई-सीईसी

HDMI-CEC की मदद से, एक डिवाइस से दूसरे डिवाइस को कंट्रोल किया जा सकता है. इससे, होम थिएटर में मौजूद कई डिवाइसों को एक ही रिमोट से कंट्रोल किया जा सकता है. Android TV इसका इस्तेमाल, सेटअप को तेज़ी से पूरा करने के लिए करता है. साथ ही, यह टीवी के मुख्य ऐप्लिकेशन के ज़रिए, टीवी के अलग-अलग इनपुट को दूर से कंट्रोल करने की अनुमति देता है. उदाहरण के लिए, यह इनपुट स्विच कर सकता है, डिवाइसों को चालू या बंद कर सकता है, और भी बहुत कुछ कर सकता है.

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

इसका मतलब है कि HDMI-CEC की मौजूदा सुविधाओं को फिर से डिज़ाइन करना होगा, ताकि वे Android TIF के साथ काम कर सकें. हमारा सुझाव है कि हार्डवेयर प्लैटफ़ॉर्म में माइक्रोप्रोसेसर होना चाहिए, ताकि सीईसी पावर चालू करने और अन्य कमांड मिल सकें.

Android TV पर सीईसी इंटिग्रेशन
17वीं इमेज. Android TV पर सीईसी इंटिग्रेशन

  1. CEC बस को, फ़िलहाल चालू सोर्स से किसी दूसरे सोर्स पर स्विच करने का निर्देश मिलता है.
  2. ड्राइवर, एचडीएमआई-सीईसी एचएएल को कमांड भेजता है.
  3. एचएएल, सभी ActiveSourceChangeListeners को सूचना देता है.
  4. एचडीएमआई कंट्रोल सेवा को ActiveSourceChangeListener के ज़रिए सोर्स बदलने की सूचना मिलती है.
  5. टीवी इनपुट मैनेजर सेवा, टीवी ऐप्लिकेशन के लिए एक इंटेंट जनरेट करती है, ताकि वह सोर्स को स्विच कर सके.
  6. इसके बाद, टीवी ऐप्लिकेशन उस टीवी इनपुट के लिए, टीवी इनपुट मैनेजर सेशन बनाता है जिस पर स्विच किया जा रहा है. साथ ही, उस सेशन पर setMain को कॉल करता है.
  7. टीवी इनपुट मैनेजर सेशन, इस जानकारी को एचडीएमआई टीवी इनपुट पर भेजता है.
  8. एचडीएमआई टीवी इनपुट, साइडबैंड सर्फ़ेस सेट करने का अनुरोध करता है.
  9. जब टीवी इनपुट मैनेजर सेवा सेट हो जाती है, तब वह एचडीएमआई कंट्रोल सेवा को राउटिंग कंट्रोल कमांड भेजती है.

टीवी इंटिग्रेशन से जुड़े दिशा-निर्देश

ब्रॉडकास्ट ऐप्लिकेशन

हर देश में ब्रॉडकास्ट से जुड़ी अलग-अलग ज़रूरी शर्तें होती हैं (MHEG, Teletext, HbbTV वगैरह). इसलिए, मैन्युफ़ैक्चरर से उम्मीद की जाती है कि वे ब्रॉडकास्ट ऐप्लिकेशन के लिए, अपने हिसाब से समाधान उपलब्ध कराएं. उदाहरण के लिए:

  • MHEG: नेटिव स्टैक
  • टेलिटेक्स्ट: नेटिव स्टैक
  • HbbTV: Vewd Software का HbbTV समाधान

Android L रिलीज़ में, Android TV को उम्मीद है कि डिवाइस बनाने वाली कंपनियां, सिस्टम इंटिग्रेटर या क्षेत्रीय टीवी स्टैक के लिए Android सलूशन का इस्तेमाल करेंगी. साथ ही, टीवी सॉफ़्टवेयर स्टैक को सर्फ़ेस पास करेंगी या लेगसी स्टैक के साथ इंटरैक्ट करने के लिए ज़रूरी कुंजी कोड पास करेंगी.

ब्रॉडकास्ट ऐप्लिकेशन और टीवी ऐप्लिकेशन एक-दूसरे के साथ कैसे काम करते हैं, यहां बताया गया है:

  1. टीवी ऐप्लिकेशन पर फ़ोकस किया जाता है और उसे सभी कुंजियां मिलती हैं.
  2. टीवी ऐप्लिकेशन, टीवी इनपुट डिवाइस को कुंजियां (जैसे, लाल बटन) पास करता है.
  3. टीवी इनपुट डिवाइस, लेगसी टीवी स्टैक के साथ इंटिग्रेट होता है.
  4. ऐक्टिवेशन की (जैसे, लाल बटन) मिलने पर, टीवी इनपुट डिवाइस ब्रॉडकास्ट ऐप्लिकेशन चालू करता है.
  5. ब्रॉडकास्ट ऐप्लिकेशन, टीवी ऐप्लिकेशन में फ़ोकस करता है और उपयोगकर्ता की कार्रवाइयों को हैंडल करता है.

बोलकर खोजने/सुझाव पाने के लिए, ब्रॉडकास्ट ऐप्लिकेशन में बोलकर खोजने की सुविधा के लिए, ऐप्लिकेशन में खोज करने की सुविधा उपलब्ध हो सकती है.