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

Android TV HAL का आइकॉन

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

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

Components

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

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

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

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

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

फ़्लो

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

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

अनुमतियां

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

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

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

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

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

Android TV की सेवा देने वाली कंपनी
दूसरी इमेज. Android TV की सेवा देने वाली कंपनी

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

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

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

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

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

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

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

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

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

टीवी इनपुट

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

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

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

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

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

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

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

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

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

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

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

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

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

Android TV पर कीवर्ड
छठी इमेज. Android TV के लिए बटन दबाने की जानकारी

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

देखा जा रहा है

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

Android के नए वर्शन के साथ, इस सुविधाओं के सेट में भी बढ़ोतरी होगी. CTS Verifier, डिवाइस के साथ काम करने से जुड़े टेस्ट की जानकारी देता है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ईपीजी

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

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

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

टाइम शिफ़्ट करना

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

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

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

डीवीआर

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

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

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

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

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

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

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

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

काम के संसाधन

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

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

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

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

माता-पिता के कंट्रोल की सुविधा देना ज़रूरी है. इसकी पुष्टि, सीटीएस की पुष्टि करने वाली कंपनी करती है.

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

टीवी कंपनी

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

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

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

टीवी इनपुट

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Broadcast ऐप्लिकेशन

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

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

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

ब्रॉडकास्ट ऐप्लिकेशन और टीवी ऐप्लिकेशन के इंटरैक्ट करने का तरीका यहां बताया गया है:

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

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