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

प्रवाह
यहां बताया गया है कि वास्तुकला का प्रयोग कैसे किया जाता है:
- उपयोगकर्ता टीवी ऐप को देखता है और उसके साथ इंटरैक्ट करता है, एक सिस्टम ऐप जिसे किसी तीसरे पक्ष के ऐप द्वारा प्रतिस्थापित नहीं किया जा सकता है।
- टीवी ऐप टीवी इनपुट से एवी सामग्री प्रदर्शित करता है।
- टीवी ऐप सीधे टीवी इनपुट के साथ बात नहीं कर सकता। टीवी इनपुट मैनेजर टीवी ऐप के लिए टीवी इनपुट की स्थिति की पहचान करता है। इन सीमाओं के बारे में अधिक जानकारी के लिए नीचे टीवी इनपुट प्रबंधक देखें।
अनुमतियां
- केवल
signatureOrSystem
टीवी इनपुट और टीवी ऐप के पास टीवी प्रदाता डेटाबेस तक पूर्ण पहुंच है और वे KeyEvents प्राप्त करने में सक्षम हैं। - केवल सिस्टम टीवी इनपुट टीवी इनपुट एचएएल को टीवी इनपुट मैनेजर सेवा के माध्यम से एक्सेस कर सकते हैं। टीवी इनपुट को टीवी इनपुट मैनेजर सत्रों के माध्यम से एक-से-एक एक्सेस किया जाता है।
- तृतीय-पक्ष टीवी इनपुट में टीवी प्रदाता डेटाबेस तक पैकेज-लॉक पहुंच है और केवल पैकेज पंक्तियों से मेल खाने के लिए पढ़/लिख सकते हैं।
- तृतीय-पक्ष टीवी इनपुट या तो अपनी सामग्री प्रदर्शित कर सकते हैं या डिवाइस निर्माता के पासथ्रू टीवी इनपुट, जैसे HDMI1 से सामग्री प्रदर्शित कर सकते हैं। वे गैर-पासथ्रू टीवी इनपुट से सामग्री प्रदर्शित नहीं कर सकते, जैसे बिल्ट-इन या आईपीटीवी ट्यूनर।
- हार्डवेयर टीवी इनपुट ऐप के लिए
TV_INPUT_HARDWARE
अनुमति, टीवी इनपुट प्रबंधक सेवा को टीवी इनपुट प्रबंधक सेवा को कॉल करने और इसके टीवी इनपुट जोड़ने के लिए बूट पर टीवी इनपुट सेवा को सूचित करने के लिए टीवी इनपुट प्रबंधक सेवा को संकेत देता है। यह अनुमति एक हार्डवेयर टीवी इनपुट ऐप को प्रति टीवी इनपुट सेवा के लिए कई टीवी इनपुट का समर्थन करने की अनुमति देती है, साथ ही इसके समर्थित टीवी इनपुट को गतिशील रूप से जोड़ने और हटाने में सक्षम है।
टीवी प्रदाता
टीवी प्रदाता डेटाबेस टीवी इनपुट से चैनलों और कार्यक्रमों को संग्रहीत करता है। टीवी प्रदाता संबद्ध अनुमतियों को प्रकाशित और प्रबंधित भी करता है ताकि टीवी इनपुट केवल अपने स्वयं के रिकॉर्ड देख सकें। उदाहरण के लिए, एक विशिष्ट टीवी इनपुट केवल उन चैनलों और कार्यक्रमों को देख सकता है जो उसने प्रदान किए हैं और किसी भी अन्य टीवी इनपुट के चैनलों और कार्यक्रमों तक पहुंचने से प्रतिबंधित है।
टीवी प्रदाता आंतरिक रूप से "प्रसारण शैली" को "विहित शैली" में मैप करता है। टीवी इनपुट अंतर्निहित प्रसारण मानक में मूल्य के साथ "प्रसारण शैली" को पॉप्युलेट करने के लिए ज़िम्मेदार हैं, और "कैनोनिकल शैली" फ़ील्ड स्वचालित रूप से android.provider.TvContract.Genres
से सही संबद्ध शैली के साथ पॉप्युलेट हो जाएगी। उदाहरण के लिए, प्रसारण मानक एटीएससी ए/65 और शैली 0x25 (अर्थात् "स्पोर्ट्स") के साथ कार्यक्रम के साथ, टीवी इनपुट स्ट्रिंग "स्पोर्ट्स" के साथ "प्रसारण शैली" को पॉप्युलेट करेगा और टीवी प्रदाता "कैनोनिकल शैली" फ़ील्ड को पॉप्युलेट करेगा मैप किए गए मान android.provider.TvContract.Genres.SPORTS
।
टीवी प्रदाता के विस्तृत दृश्य के लिए नीचे दिया गया चित्र देखें।

केवल विशेषाधिकार प्राप्त सिस्टम विभाजन के ऐप्स ही संपूर्ण टीवी प्रदाता डेटाबेस को पढ़ सकते हैं।
पासथ्रू टीवी इनपुट चैनलों और कार्यक्रमों को संग्रहीत नहीं करते हैं।
चैनलों और कार्यक्रमों के लिए मानक फ़ील्ड के अलावा, टीवी प्रदाता डेटाबेस प्रत्येक तालिका में एक 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 (उपयोगकर्ता की सहमति की आवश्यकता है) के माध्यम से पढ़ें, लिखने की अनुमति।
- संपूर्ण डेटाबेस तक पहुंचने के लिए केवल
signatureOrSystem
ऐप्सACCESS_ALL_EPG_DATA
अनुमति प्राप्त कर सकते हैं।
टीवी इनपुट मैनेजर
टीवी इनपुट मैनेजर समग्र एंड्रॉइड टीवी इनपुट फ्रेमवर्क के लिए एक केंद्रीय सिस्टम एपीआई प्रदान करता है। यह ऐप्स और टीवी इनपुट्स के बीच इंटरेक्शन में मध्यस्थता करता है और पैरेंटल कंट्रोल फंक्शनलिटी प्रदान करता है। टीवी इनपुट प्रबंधक सत्रों को टीवी इनपुट के साथ आमने-सामने बनाया जाना चाहिए। टीवी इनपुट मैनेजर इंस्टॉल किए गए टीवी इनपुट तक पहुंच की अनुमति देता है ताकि ऐप्स यह कर सकें:
- टीवी इनपुट की सूची बनाएं और उनकी स्थिति जांचें
- सत्र बनाएं और श्रोताओं को प्रबंधित करें
सत्रों के लिए, टीवी इनपुट को टीवी ऐप द्वारा केवल यूआरआई के लिए ट्यून किया जा सकता है, जिसे टीवी प्रदाता डेटाबेस में जोड़ा गया है, केवल पासथ्रू टीवी इनपुट को छोड़कर जिसे TvContract.buildChannelUriForPassthroughInput()
का उपयोग करने के लिए ट्यून किया जा सकता है। एक टीवी इनपुट का वॉल्यूम सेट भी हो सकता है। डिवाइस निर्माता (हस्ताक्षर ऐप्स) या सिस्टम विभाजन में स्थापित अन्य ऐप्स द्वारा प्रदान किए गए और हस्ताक्षरित टीवी इनपुट पूरे टीवी प्रदाता डेटाबेस तक पहुंच प्राप्त करेंगे। इस एक्सेस का उपयोग सभी उपलब्ध टीवी चैनलों और कार्यक्रमों में ब्राउज़ करने और खोजने के लिए ऐप्स बनाने के लिए किया जा सकता है।
कोई ऐप android.media.tv.TvInputManager
के साथ TvInputCallback
बना और पंजीकृत कर सकता है ताकि टीवी इनपुट की स्थिति में बदलाव या टीवी इनपुट को जोड़ने या हटाने पर वापस कॉल किया जा सके। उदाहरण के लिए, एक टीवी ऐप तब प्रतिक्रिया दे सकता है जब एक टीवी इनपुट डिस्कनेक्ट हो जाता है और इसे डिस्कनेक्ट के रूप में प्रदर्शित करता है और इसके चयन को रोकता है।
टीवी इनपुट मैनेजर टीवी ऐप और टीवी इनपुट के बीच संचार को सारगर्भित करता है। टीवी इनपुट मैनेजर और टीवी इनपुट का मानक इंटरफ़ेस कई डिवाइस निर्माताओं को सभी टीवी ऐप पर सभी तृतीय-पक्ष टीवी इनपुट को काम करने में मदद करते हुए अपने स्वयं के टीवी ऐप बनाने की अनुमति देता है।
टीवी इनपुट्स
टीवी इनपुट इस अर्थ में Android ऐप्स हैं कि उनके पास AndroidManifest.xml है और वे इंस्टॉल किए गए हैं (Play, प्री-इंस्टॉल या साइडलोडेड के माध्यम से)। एंड्रॉइड टीवी प्री-इंस्टॉल सिस्टम ऐप, डिवाइस निर्माता द्वारा हस्ताक्षरित ऐप और थर्ड-पार्टी टीवी इनपुट का समर्थन करता है।
कुछ इनपुट, जैसे एचडीएमआई इनपुट या बिल्ट-इन ट्यूनर इनपुट, केवल निर्माता द्वारा प्रदान किए जा सकते हैं क्योंकि वे सीधे अंतर्निहित हार्डवेयर के साथ बोलते हैं। अन्य, जैसे आईपीटीवी, प्लेस-शिफ्टिंग, और बाहरी एसटीबी, Google Play Store पर एपीके के रूप में तृतीय पक्षों द्वारा आपूर्ति की जा सकती है। एक बार डाउनलोड और इंस्टॉल हो जाने पर, टीवी ऐप के भीतर नए इनपुट का चयन किया जा सकता है।
पासथ्रू इनपुट उदाहरण

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

इस उदाहरण में, डिवाइस निर्माता द्वारा प्रदान किया गया बिल्ट-इन ट्यूनर टीवी इनपुट विश्वसनीय है और इसकी टीवी प्रदाता तक पूर्ण पहुंच है।
तृतीय-पक्ष इनपुट उदाहरण

इस उदाहरण में, बाहरी एसटीबी टीवी इनपुट किसी तीसरे पक्ष द्वारा प्रदान किया जाता है। चूंकि वह टीवी इनपुट सीधे आने वाले एचडीएमआई वीडियो फीड तक नहीं पहुंच सकता है, इसलिए उसे टीवी इनपुट मैनेजर के माध्यम से जाना चाहिए और डिवाइस निर्माण द्वारा प्रदान किए गए एचडीएमआई टीवी इनपुट का उपयोग करना चाहिए।
टीवी इनपुट मैनेजर के माध्यम से, बाहरी एसटीबी टीवी इनपुट एचडीएमआई टीवी इनपुट के साथ बोल सकता है और इसे एचडीएमआई 1 पर वीडियो दिखाने के लिए कह सकता है। तो एसटीबी टीवी इनपुट टीवी को नियंत्रित कर सकता है जबकि निर्माता द्वारा प्रदान किया गया एचडीएमआई टीवी इनपुट वीडियो प्रस्तुत करता है।
पिक्चर इन पिक्चर (पीआईपी) उदाहरण

ऊपर दिया गया चित्र दिखाता है कि रिमोट कंट्रोल के बटन कैसे पिक्चर इन पिक्चर (पीआईपी) डिस्प्ले के लिए एक विशिष्ट टीवी इनपुट को पास किए जाते हैं। उन बटन प्रेस की व्याख्या डिवाइस निर्माता द्वारा आपूर्ति किए गए हार्डवेयर ड्राइवर द्वारा की जाती है, हार्डवेयर स्कैन्कोड को एंड्रॉइड कीकोड में परिवर्तित करना और उन्हें मानक एंड्रॉइड इनपुट पाइपलाइन InputReader
और InputDispatcher
फ़ंक्शन को KeyEvents के रूप में पास करना। ये बदले में टीवी ऐप पर घटनाओं को ट्रिगर करते हैं यदि यह फोकस में है।
केवल सिस्टम टीवी इनपुट InputEvents
प्राप्त करने के योग्य हैं, और केवल तभी जब उनके पास RECEIVE_INPUT_EVENT
सिस्टम अनुमति हो। टीवी इनपुट यह निर्धारित करने के लिए ज़िम्मेदार है कि कौन से इनपुट इवेंट का उपभोग करना है और टीवी ऐप को उन चाबियों को संभालने की अनुमति देनी चाहिए जिन्हें उपभोग करने की आवश्यकता नहीं है।
टीवी ऐप यह जानने के लिए ज़िम्मेदार है कि कौन सा सिस्टम टीवी इनपुट सक्रिय है, जिसका अर्थ उपयोगकर्ता द्वारा चुना गया है, और आने वाले KeyEvents
को असंबद्ध करने के लिए और उन्हें सही टीवी इनपुट मैनेजर सत्र में रूट करने के लिए, संबंधित टीवी इनपुट पर ईवेंट को पास करने के लिए dispatchInputEvent()
को कॉल करना है। .
MHEG-5 इनपुट उदाहरण
निम्नलिखित आरेख अधिक विस्तृत दृश्य दिखाता है कि कैसे KeyEvents
को Android TIF के माध्यम से रूट किया जाता है।

यह एक रेड बटन ऐप के प्रवाह को दर्शाता है, जो यूरोप में उपयोगकर्ताओं को अपने टीवी पर इंटरैक्टिव ऐप एक्सेस करने की अनुमति देता है। इस ट्रांसपोर्ट स्ट्रीम पर एक ऐप डिलीवर किया जा सकता है। जब बटन पर क्लिक किया जाता है, तो यह उपयोगकर्ताओं को इन प्रसारण ऐप्स के साथ इंटरैक्ट करने देता है। उदाहरण के लिए, आप इन प्रसारण ऐप्स का उपयोग संबंधित वेब पेज या खेल स्कोर तक पहुंचने के लिए कर सकते हैं।
यह जानने के लिए कि ब्रॉडकास्ट ऐप टीवी ऐप के साथ कैसे इंटरैक्ट करते हैं, ब्रॉडकास्ट ऐप सेक्शन देखें।
इस उदाहरण में:
- टीवी ऐप फोकस में है और सभी चाबियां प्राप्त करता है।
-
KeyEvents
(जैसे लाल बटन) सक्रिय टीवी इनपुट कोInputEvents.
- सिस्टम टीवी इनपुट MHEG-5 स्टैक के साथ एकीकृत होता है और इसमें
RECEIVE_INPUT_EVENT
सिस्टम अनुमति होती है। - सक्रियण कीकोड (जैसे लाल बटन) प्राप्त करने पर, टीवी इनपुट प्रसारण ऐप को सक्रिय करता है।
- टीवी इनपुट
KeyEvents
कोInputEvents
के रूप में खपत करता है और ब्रॉडकास्ट ऐप फोकस है औरInputEvents
को खारिज होने तक संभालता है।
नोट : तृतीय-पक्ष टीवी इनपुट को कभी भी कुंजी प्राप्त नहीं होती है।
टीवी इनपुट HAL
टीवी इनपुट एचएएल टीवी-विशिष्ट हार्डवेयर तक पहुंचने के लिए टीवी इनपुट के विकास में सहायता करता है। अन्य एंड्रॉइड एचएएल के साथ, टीवी इनपुट एचएएल ( tv_input
) एओएसपी स्रोत पेड़ में उपलब्ध है और विक्रेता इसके कार्यान्वयन को विकसित करता है।
टीवी ऐप
सिस्टम टीवी ऐप उपयोगकर्ता को लाइव टीवी सामग्री प्रस्तुत करता है। एंड्रॉइड प्लेटफॉर्म के साथ एक संदर्भ टीवी ऐप (लाइव टीवी) प्रदान किया जाता है, जिसे डिवाइस निर्माताओं द्वारा अनुकूलित, विस्तारित या प्रतिस्थापित किया जा सकता है। स्रोत कोड एंड्रॉइड ओपन सोर्स प्रोजेक्ट में उपलब्ध है, और आप इसके साथ संदर्भ टीवी ऐप आलेख में शुरू कर सकते हैं।
डिवाइस निर्माता डिवाइस निर्माता या देश-विशिष्ट सुविधाओं को लागू करने के लिए अपने टीवी ऐप्स का विस्तार कर सकते हैं, हालांकि यह टीआईएफ या संदर्भ टीवी ऐप के दायरे में नहीं है।
कम से कम, सिस्टम टीवी ऐप को निम्नलिखित कार्यों को संभालने की आवश्यकता है:
सेटअप और कॉन्फ़िगरेशन
- टीवी इनपुट का स्वतः पता लगाएं
- टीवी इनपुट्स को चैनल सेटअप शुरू करने दें
- माता-पिता की सेटिंग नियंत्रित करें
- चैनल संपादित करें
देखना
- सभी टीवी चैनलों तक पहुंचें और नेविगेट करें
- टीवी कार्यक्रम की जानकारी बार एक्सेस करें
- इलेक्ट्रॉनिक प्रोग्रामिंग गाइड (ईपीजी) डेटा प्रदर्शित करें
- एकाधिक ऑडियो और उपशीर्षक ट्रैक का समर्थन करें
- आपूर्ति अभिभावकीय नियंत्रण पिन चुनौती
- टीवी मानक (HbbTV, आदि) के लिए टीवी इनपुट UI ओवरले की अनुमति दें
- टीवी चैनलों और कार्यक्रमों के लिए खोज परिणामों को पॉप्युलेट करें
- ऐप लिंकिंग कार्ड प्रदर्शित करें
- टाइमशिफ्टिंग एपीआई का समर्थन करें
- डीवीआर कार्यक्षमता को संभालें और टीवी रिकॉर्डिंग एपीआई का समर्थन करें
यह फीचर सेट नए एंड्रॉइड वर्जन के अनुरूप बढ़ेगा जहां प्लेटफॉर्म टीआईएफ एपीआई का विस्तार किया गया है। सीटीएस सत्यापनकर्ता संगतता परीक्षण कवरेज प्रदान करता है।
तृतीय-पक्ष टीवी इनपुट के लिए समर्थन
एंड्रॉइड टीवी तीसरे पक्ष के टीवी इनपुट के लिए डेवलपर एपीआई प्रदान करता है, इंस्टॉल किए गए ऐप्स को लाइव टीवी अनुभव में सॉफ़्टवेयर चैनल वितरित करने में सक्षम बनाता है। एक संगत एंड्रॉइड डिवाइस कार्यान्वयन सुनिश्चित करने के लिए, सिस्टम टीवी ऐप में उपयोगकर्ता के लिए तीसरे पक्ष के टीवी इनपुट और चैनल पेश करने के संबंध में कुछ जिम्मेदारियां हैं। संदर्भ लाइव टीवी ऐप एक संगत कार्यान्वयन प्रदान करता है; यदि सिस्टम टीवी ऐप को प्रतिस्थापित कर रहे हैं, तो डिवाइस निर्माताओं को यह सुनिश्चित करना होगा कि सभी एंड्रॉइड टीवी डिवाइसों में डेवलपर अपेक्षाओं को पूरा करने के लिए उनके स्वयं के ऐप्स समान संगतता प्रदान करें।
सिस्टम टीवी ऐप को डिवाइस की डिफ़ॉल्ट लाइव टीवी सेवा के साथ-साथ तीसरे पक्ष के इनपुट को पेश करना चाहिए। डेवलपर एपीआई का वादा यह है कि उपयोगकर्ता अपने मानक टीवी अनुभव के भीतर चैनल (एक बार स्थापित) खोजने में सक्षम होंगे।
एंड्रॉइड सीडीडी के टीवी ऐप सेक्शन में परिभाषित अनुसार बिल्ट-इन चैनलों और तीसरे पक्ष के चैनलों के बीच दृश्य अंतर की अनुमति है।
निम्नलिखित खंड दिखाते हैं कि लाइव टीवी एप्लिकेशन सीडीडी आवश्यकताओं को कैसे पूरा करता है।
नया चैनल सेटअप
नए तृतीय-पक्ष इनपुट/चैनलों को जोड़ने की शुरुआत उपयोगकर्ता द्वारा Google Play जैसे किसी एप्लिकेशन स्टोर से टीवी इनपुट खोजने और स्थापित करने से होती है।
कुछ तृतीय-पक्ष टीवी इनपुट स्वचालित रूप से TvProvider डेटाबेस में चैनल जोड़ते हैं। हालांकि अधिकांश उपयोगकर्ता को अपने चैनल सेट करने, लॉगिन विवरण और अन्य कार्रवाइयां प्रदान करने में सक्षम बनाने के लिए एक सेटअप गतिविधि प्रदान करेंगे। सिस्टम टीवी ऐप को यह सुनिश्चित करने की आवश्यकता है कि उपयोगकर्ता इस सेटअप गतिविधि को सक्रिय कर सकता है, यही वजह है कि सीडीडी को तीसरे पक्ष के इनपुट की आवश्यकता होती है जो मुख्य टीवी ऐप से कम से कम नेविगेशन क्रिया हो।
संदर्भ लाइव टीवी ऐप इनपुट तक पहुंचने के लिए चैनल स्रोत मेनू प्रदान करता है।




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

यदि उपयोगकर्ता अधिसूचना के माध्यम से कार्रवाई करता है, तो वे अपने स्रोतों को सेट करने के लिए चुन सकते हैं जैसा कि चित्र 10 में देखा गया है।
इस क्षेत्र में डेवलपर अपेक्षाओं के लिए अपनी टीवी इनपुट सेवा परिभाषित करें देखें।
चैनल सूची को अनुकूलित करें
डिवाइस निर्माता कुछ चैनलों को छिपाने के लिए यूआई प्रदान कर सकते हैं और उपयोगकर्ताओं को अपने स्वयं के ईपीजी प्रबंधित करने में सक्षम बना सकते हैं। लाइव टीवी में यह सुविधा शामिल है।


ईपीजी
तृतीय-पक्ष इनपुट डेवलपर्स को यह विश्वास होना चाहिए कि उपयोगकर्ता सभी संगत एंड्रॉइड टीवी उपकरणों पर सामान्य उपयोग के दौरान आसानी से अपने चैनलों पर नेविगेट कर सकते हैं।
डिवाइस के मानक लाइव टीवी अनुभव EPG के हिस्से के रूप में तृतीय-पक्ष इनपुट के चैनल प्रस्तुत किए जाने चाहिए। तीसरे पक्ष के चैनलों के लिए दृश्य पृथक्करण या अलग श्रेणियों का उपयोग किया जा सकता है (एंड्रॉइड सीडीडी का टीवी ऐप अनुभाग देखें)।
खोज
सर्वश्रेष्ठ उपयोगकर्ता अनुभव सुनिश्चित करने के लिए निर्माताओं को वैश्विक खोज अनुरोधों के लिए खोज परिणामों को शामिल करने के लिए टीवी ऐप को लागू करना चाहिए। लाइव टीवी एक कार्यान्वयन प्रदान करता है (देखें com.android.tv.search.TvProviderSearch ) जो तृतीय-पक्ष इनपुट (प्लेटफ़ॉर्म संगतता के लिए आवश्यक) के साथ-साथ अंतर्निहित इनपुट से परिणाम प्रदान करता है।
समय बदलता है
Android 6.0 और उससे ऊपर के उपकरणों के लिए, टीवी ऐप को Android फ्रेमवर्क टाइम शिफ्टिंग API का समर्थन करना चाहिए। इसके अतिरिक्त, निर्माताओं को टीवी ऐप में प्लेबैक नियंत्रण लागू करना चाहिए, जो उपयोगकर्ताओं को प्लेबैक को रोकने, फिर से शुरू करने, रिवाइंड करने और तेजी से आगे बढ़ाने की अनुमति देता है।
टीवी इनपुट के लिए जो टाइम शिफ्टिंग का समर्थन करते हैं, टीवी ऐप को प्लेबैक नियंत्रण प्रदर्शित करने की आवश्यकता होती है।

डीवीआर
Android 7.0 और इसके बाद के संस्करण पर उपकरणों के लिए, टीवी ऐप को रिकॉर्ड किए गए कार्यक्रमों का समर्थन करने, सूचीबद्ध करने और चलाने के लिए Android फ्रेमवर्क टीवी रिकॉर्डिंग API का समर्थन करना चाहिए।
यह डिवाइस निर्माताओं को अपने डीवीआर सबसिस्टम को टीआईएफ में प्लग करने की अनुमति देता है और एक टीवी डिवाइस पर डीवीआर कार्यक्षमता को सक्षम या एकीकृत करने के लिए आवश्यक एकीकरण प्रयास को नाटकीय रूप से कम करता है। यह तीसरे पक्ष को आफ्टरमार्केट डीवीआर सिस्टम प्रदान करने में सक्षम बनाता है जिसे एंड्रॉइड टीवी डिवाइस में प्लग किया जा सकता है।
लाइव सामग्री रिकॉर्ड करने के अलावा, टीवी ऐप संसाधन संघर्ष को भी संभालता है। उदाहरण के लिए, यदि डिवाइस में दो ट्यूनर हैं, तो यह एक ही समय में दो प्रोग्राम रिकॉर्ड कर सकता है। यदि उपयोगकर्ता तीन रिकॉर्ड करने के लिए कहता है, तो टीवी ऐप को संघर्ष को संभालना चाहिए और या तो एक अधिसूचना या अनुरोध करना चाहिए कि उपयोगकर्ता इन अनुरोधों के लिए प्राथमिकता निर्धारित करे।
टीवी ऐप्स अधिक परिष्कृत तर्क को भी लागू कर सकते हैं जैसे उपयोगकर्ता से पूछना कि क्या वे एक श्रृंखला में सभी भविष्य के एपिसोड रिकॉर्ड करना चाहते हैं जब वे एक एपिसोड रिकॉर्ड करने का अनुरोध करते हैं।
Android TV में संभावित DVR कार्यान्वयन को देखने के लिए निम्न आरेख देखें।

- टीवी इनपुट सेवा टीवी ऐप को बताती है कि कितने ट्यूनर उपलब्ध हैं ताकि टीवी ऐप संभावित संसाधन संघर्ष को संभाल सके।
- टीवी ऐप को टीवी कार्यक्रम रिकॉर्ड करने के लिए उपयोगकर्ता द्वारा शुरू किया गया अनुरोध प्राप्त होता है।
- टीवी ऐप रिकॉर्डिंग शेड्यूल को अपने आंतरिक डेटाबेस में संग्रहीत करता है।
- जब रिकॉर्ड करने का समय आता है, तो टीवी ऐप रिकॉर्डिंग से जुड़े चैनल को ट्यून करने का अनुरोध करता है।
- टीवी इनपुट सेवा इस अनुरोध को प्राप्त करती है, इस पर प्रतिक्रिया देती है कि क्या उपयुक्त संसाधन हैं या नहीं, और चैनल के लिए धुनें।
- फिर टीवी ऐप टीवी इनपुट मैनेजर को रिकॉर्डिंग शुरू करने का अनुरोध भेजता है।
- टीवी इनपुट सेवा इस अनुरोध को प्राप्त करती है और रिकॉर्डिंग शुरू करती है।
- टीवी इनपुट सर्विस वास्तविक वीडियो डेटा को अपने स्टोरेज में स्टोर करती है, जो एक्सटर्नल स्टोरेज या क्लाउड स्टोरेज हो सकता है।
- जब रिकॉर्डिंग खत्म करने का समय आता है, तो टीवी ऐप टीवी इनपुट मैनेजर को स्टॉप रिकॉर्डिंग अनुरोध भेजता है।
- एक बार जब टीवी इनपुट सेवा अनुरोध प्राप्त कर लेती है, तो यह रिकॉर्डिंग बंद कर देती है और टीवी प्रदाता को इसके संबंधित मेटाडेटा को जोड़ती है ताकि टीवी ऐप अनुरोध किए जाने पर उपयोगकर्ताओं को रिकॉर्डिंग दिखा सके।
अपनी टीवी इनपुट सेवा में रिकॉर्डिंग सुविधाओं को लागू करने के बारे में अधिक जानकारी के लिए, यह टीवी रिकॉर्डिंग लेख देखें।
उपयोगी संसाधन
- Android CDD और प्रलेखित डेवलपर API निश्चित संदर्भ हैं।
- सीटीएस सत्यापनकर्ता संगतता परीक्षण कार्यक्रम के हिस्से के रूप में एपीआई का प्रयोग करता है। इसे लाइव टीवी के विरुद्ध चलाना ईपीजी, खोज, माता-पिता के नियंत्रण और अन्य आवश्यकताओं को तृतीय-पक्ष इनपुट के संदर्भ में देखने का एक उपयोगी तरीका हो सकता है।
- इस क्षेत्र में डेवलपर अपेक्षाओं के लिए अपनी टीवी इनपुट सेवा परिभाषित करें देखें।
माता पिता का नियंत्रण
माता-पिता का नियंत्रण एक उपयोगकर्ता को अवांछित चैनलों और कार्यक्रमों को ब्लॉक करने देता है, लेकिन एक पिन कोड दर्ज करके ब्लॉक को बायपास करता है।
माता-पिता के नियंत्रण की कार्यक्षमता की जिम्मेदारी टीवी ऐप, टीवी इनपुट मैनेजर सेवा, टीवी प्रदाता और टीवी इनपुट के बीच साझा की जाती है।
माता-पिता का नियंत्रण अनिवार्य है, और सीटीएस सत्यापनकर्ता द्वारा कवर किया जाता है।
कई देशों ने रेटिंग सिस्टम को परिभाषित किया है जिसे टीवी इनपुट TVContentRating API के माध्यम से उपयोग कर सकते हैं। इसके अतिरिक्त, टीवी इनपुट अपने स्वयं के कस्टम रेटिंग सिस्टम को पंजीकृत कर सकते हैं जैसा कि सीटीएस सत्यापनकर्ता परीक्षण द्वारा प्रदर्शित किया गया है, जो एक 'नकली' रेटिंग पेश करता है। उन देशों के लिए जहां एक मानक रेटिंग प्रणाली मौजूद है, डिवाइस निर्माताओं को टीवी इनपुट फ्रेमवर्क माता-पिता के नियंत्रण को किसी भी अन्य तंत्र के साथ संयोजित करने के लिए प्रोत्साहित किया जाता है जिसमें वे शामिल हो सकते हैं।
टीवी प्रदाता
प्रत्येक चैनल पंक्ति में एक COLUMN_LOCKED
फ़ील्ड होता है जिसका उपयोग पिन कोड दर्ज किए बिना विशिष्ट चैनलों को देखने से रोकने के लिए किया जाता है। प्रोग्राम फ़ील्ड COLUMN_CONTENT_RATING
प्रदर्शन के लिए अभिप्रेत है और इसका उपयोग माता-पिता के नियंत्रण को लागू करने के लिए नहीं किया जाता है।
टीवी इनपुट मैनेजर
टीवी इनपुट मैनेजर प्रत्येक अवरुद्ध TvContentRating
को संग्रहीत करता है और isRatingBlocked()
का जवाब देता है ताकि यह सलाह दी जा सके कि दी गई रेटिंग वाली सामग्री को अवरुद्ध किया जाना चाहिए।
टीवी इनपुट
टीवी इनपुट जांचता है कि क्या वर्तमान सामग्री को टीवी इनपुट मैनेजर पर isRatingBlocked()
पर कॉल करके ब्लॉक किया जाना चाहिए, जब प्रदर्शित सामग्री की रेटिंग बदल गई है (कार्यक्रम या चैनल परिवर्तन पर), या माता-पिता की नियंत्रण सेटिंग्स बदल गई हैं ( ACTION_BLOCKED_RATINGS_CHANGED
और ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
पर) . यदि सामग्री को अवरुद्ध किया जाना चाहिए, तो टीवी इनपुट ऑडियो और वीडियो को अक्षम कर देता है और टीवी ऐप को सूचित करता है कि वर्तमान सामग्री को notifyContentBlocked(TvContentRating)
पर कॉल करके अवरुद्ध किया गया है। यदि सामग्री को अवरुद्ध नहीं किया जाना चाहिए, तो टीवी इनपुट ऑडियो और वीडियो को सक्षम करता है और टीवी ऐप को सूचित करता है कि वर्तमान सामग्री को सूचित करें सामग्री अनुमति notifyContentAllowed()
को कॉल करके अनुमति दी गई है।
टीवी ऐप
माता-पिता के नियंत्रण एपीआई का सम्मान करने के लिए, और इसलिए एक संगत मंच बनाने के लिए, सिस्टम टीवी ऐप को उपयोगकर्ताओं को माता-पिता के नियंत्रण को प्रबंधित करने का एक तरीका प्रदान करने की आवश्यकता है, जिसमें विशिष्ट ऐप द्वारा पंजीकृत कोई भी कस्टम रेटिंग शामिल है।
टीवी ऐप एक पिन कोड यूआई दिखाता है जब उसे टीवी इनपुट द्वारा सूचित किया जाता है कि वर्तमान सामग्री अवरुद्ध है या जब उपयोगकर्ता अवरुद्ध चैनल को देखने का प्रयास करता है।
टीवी ऐप सीधे पैरेंटल कंट्रोल सेटिंग्स को स्टोर नहीं करता है। जब उपयोगकर्ता अभिभावकीय नियंत्रण सेटिंग्स बदलता है, तो प्रत्येक अवरुद्ध TvContentRating
को टीवी इनपुट प्रबंधक द्वारा संग्रहीत किया जाता है, और अवरुद्ध चैनल टीवी प्रदाता द्वारा संग्रहीत किए जाते हैं।
माता-पिता की नियंत्रण सेटिंग बदलने के लिए टीवी ऐप को अनुमति android.permission.MODIFY_PARENTAL_CONTROLS
घोषित करने की आवश्यकता है।
डिवाइस निर्माताओं को प्रोत्साहित किया जाता है:
- संगतता आवश्यकताओं के प्रदर्शन के लिए संदर्भ लाइव टीवी एप्लिकेशन के खिलाफ सीटीएस सत्यापनकर्ता अभिभावकीय नियंत्रण परीक्षण का प्रयोग करें।
- अपने स्वयं के टीवी ऐप के संदर्भ के रूप में लाइव टीवी ऐप का उपयोग करें: विशेष रूप से ContentRatingsManager और RatingSystemsFragment स्रोत देखें, और वे कस्टम रेटिंग को कैसे संभालते हैं।
HDMI-सीईसी
एचडीएमआई-सीईसी एक डिवाइस को दूसरे डिवाइस को नियंत्रित करने की अनुमति देता है, जिससे होम थिएटर में एक रिमोट को कई उपकरणों को नियंत्रित करने में सक्षम बनाता है। इसका उपयोग एंड्रॉइड टीवी द्वारा सेटअप को गति देने और केंद्रीय टीवी ऐप के माध्यम से विभिन्न टीवी इनपुट पर दूर से नियंत्रण की अनुमति देने के लिए किया जाता है। उदाहरण के लिए, यह इनपुट स्विच कर सकता है, डिवाइस को पावर अप या डाउन कर सकता है, और बहुत कुछ।
एंड्रॉइड टीआईएफ एचडीएमआई-सीईसी को एचडीएमआई कंट्रोल सर्विस के रूप में लागू करता है ताकि डिवाइस निर्माताओं को केवल निम्न-स्तरीय ड्राइवर विकसित करने की आवश्यकता हो जो हल्के एंड्रॉइड टीवी एचएएल के साथ बातचीत करते हैं, और अधिक जटिल व्यावसायिक तर्क को छोड़ देते हैं। एक मानक कार्यान्वयन प्रदान करने में, एंड्रॉइड खंडित कार्यान्वयन और चुनिंदा फीचर समर्थन को कम करके संगतता मुद्दों को कम करने का प्रयास करता है। एचडीएमआई कंट्रोल सर्विस इनपुट और पावर सहित मौजूदा एंड्रॉइड सेवाओं का उपयोग करती है।
इसका मतलब है कि मौजूदा एचडीएमआई-सीईसी कार्यान्वयन को एंड्रॉइड टीआईएफ के साथ इंटरऑपरेट करने के लिए फिर से डिजाइन करने की आवश्यकता होगी। हम अनुशंसा करते हैं कि हार्डवेयर प्लेटफॉर्म में सीईसी पावर ऑन और अन्य कमांड प्राप्त करने के लिए एक माइक्रोप्रोसेसर हो।

- सीईसी बस को वर्तमान में सक्रिय स्रोत से एक अलग स्रोत पर स्विच करने के लिए एक आदेश प्राप्त होता है।
- ड्राइवर एचडीएमआई-सीईसी एचएएल को कमांड भेजता है।
- एचएएल सभी
ActiveSourceChangeListeners
को सूचित करता है। - एचडीएमआई कंट्रोल सर्विस को
ActiveSourceChangeListener
के माध्यम से स्रोत परिवर्तन के बारे में सूचित किया जाता है। - टीवी इनपुट प्रबंधक सेवा स्रोत को स्विच करने के लिए टीवी ऐप के लिए एक आशय उत्पन्न करती है।
- टीवी ऐप तब टीवी इनपुट के लिए एक टीवी इनपुट मैनेजर सत्र बनाता है और उस सत्र में
setMain
को कॉल करता है। - टीवी इनपुट मैनेजर सत्र इस जानकारी को एचडीएमआई टीवी इनपुट पर भेजता है।
- एचडीएमआई टीवी इनपुट साइडबैंड सतह सेट करने का अनुरोध करता है।
- जब सतह सेट की जाती है, तो टीवी इनपुट प्रबंधक सेवा एचडीएमआई नियंत्रण सेवा के लिए संबंधित रूटिंग नियंत्रण आदेश उत्पन्न करती है।
टीवी एकीकरण दिशानिर्देश
प्रसारण ऐप
क्योंकि प्रत्येक देश में प्रसारण-विशिष्ट आवश्यकताएं होती हैं (MHEG, Teletext, HbbTV, और अधिक), निर्माताओं से प्रसारण ऐप के लिए अपने स्वयं के समाधान की आपूर्ति करने की अपेक्षा की जाती है, उदाहरण के लिए:
- एमएचईजी: देशी स्टैक
- टेलीटेक्स्ट: देशी स्टैक
- एचबीबीटीवी: वीडब्ल्यूडी सॉफ्टवेयर से एचबीबीटीवी समाधान
एंड्रॉइड एल रिलीज में, एंड्रॉइड टीवी डिवाइस निर्माताओं से क्षेत्रीय टीवी स्टैक के लिए सिस्टम इंटीग्रेटर्स या एंड्रॉइड सॉल्यूशंस का उपयोग करने की अपेक्षा करता है, सतह को टीवी सॉफ्टवेयर स्टैक में पास करता है, या लीगेसी स्टैक के साथ बातचीत करने के लिए आवश्यक कुंजी कोड पास करता है।
यहां बताया गया है कि ब्रॉडकास्ट ऐप और टीवी ऐप कैसे इंटरैक्ट करते हैं:
- टीवी ऐप फोकस में है, सभी चाबियां प्राप्त कर रहा है।
- टीवी ऐप टीवी इनपुट डिवाइस के लिए चाबियाँ (जैसे लाल बटन) पास करता है।
- टीवी इनपुट डिवाइस आंतरिक रूप से लीगेसी टीवी स्टैक के साथ एकीकृत होता है।
- सक्रियण कीकोड (जैसे लाल बटन) प्राप्त करने पर, टीवी इनपुट डिवाइस प्रसारण ऐप्स को सक्रिय करता है।
- एक प्रसारण ऐप टीवी ऐप में फ़ोकस लेता है और उपयोगकर्ता क्रियाओं को संभालता है।
ध्वनि खोज/अनुशंसा के लिए, प्रसारण ऐप ध्वनि खोज के लिए इन-ऐप खोज का समर्थन कर सकता है।