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

Android TV HAL का आइकॉन

Android TV इनपुट फ़्रेमवर्क (TIF), Android TV पर लाइव कॉन्टेंट को आसानी से डिलीवर करता है. Android TIF, मैन्युफ़ैक्चरर को एक स्टैंडर्ड एपीआई उपलब्ध कराता है, ताकि Android TV को कंट्रोल करने के लिए इनपुट मॉड्यूल बनाए जा सकें. साथ ही, 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 पा सकते हैं.
  • सिर्फ़ सिस्टम के टीवी इनपुट, टीवी इनपुट मैनेजर सेवा के ज़रिए टीवी इनपुट एचएएल को ऐक्सेस कर सकते हैं. टीवी इनपुट को टीवी इनपुट मैनेजर के सेशन के ज़रिए एक-एक करके ऐक्सेस किया जाता है.
  • तीसरे पक्ष के टीवी इनपुट के पास, टीवी प्रोवाइडर के डेटाबेस का पैकेज लॉक किया हुआ ऐक्सेस होता है. साथ ही, वे पैकेज की लाइनों से मेल खाने वाले पैकेज के लिए ही डेटा को पढ़/लिख सकते हैं.
  • तीसरे पक्ष के टीवी इनपुट, अपना कॉन्टेंट या डिवाइस बनाने वाली कंपनी के पास-थ्रू टीवी इनपुट (जैसे, एचडीएमआई1) से कॉन्टेंट दिखा सकते हैं. ये डिवाइस, बिना पासथ्रू वाले टीवी इनपुट से कॉन्टेंट नहीं दिखा सकते. जैसे, बिल्ट-इन या आईपीटीवी ट्यूनर.
  • 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 जैसे कुछ फ़ील्ड, पसंद के मुताबिक बनाए जा सकने वाले 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 के ज़रिए क्वेरी, डालने, और अपडेट करने पर की जाती है. कोई टीवी इनपुट, सिर्फ़ उस जानकारी को ऐक्सेस कर सकता है जिसे उसने डाला है. साथ ही, वह अन्य टीवी इनपुट से मिली जानकारी को ऐक्सेस नहीं कर सकता.
  • उपलब्ध चैनलों का पता लगाने के लिए, 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 अनुमति होगी. यह तय करना टीवी इनपुट की ज़िम्मेदारी है कि कौनसे इनपुट इवेंट का इस्तेमाल किया जाए. साथ ही, टीवी ऐप्लिकेशन को ऐसी कुंजियों को मैनेज करने की अनुमति देनी चाहिए जिनका इस्तेमाल करने की ज़रूरत नहीं है.

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

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

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

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 Open Source Project में उपलब्ध है. इसे इस्तेमाल करने के लिए, रेफ़रंस टीवी ऐप्लिकेशन लेख पढ़ें.

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

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

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

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

देखना

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ईपीजी

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

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

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

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

Android 6.0 और उसके बाद के वर्शन वाले डिवाइसों के लिए, टीवी ऐप्लिकेशन को 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() को कॉल करके, टीवी ऐप्लिकेशन को यह सूचना देता है कि मौजूदा कॉन्टेंट को दिखाने की अनुमति है.

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

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

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

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

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

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

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

HDMI-CEC

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

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

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

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

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

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

Broadcast ऐप्लिकेशन

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

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

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

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

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

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