हाई-डेफ़िनिशन मल्टीमीडिया इंटरफ़ेस कंज्यूमर इलेक्ट्रॉनिक्स कंट्रोल (HDMI-CEC) स्टैंडर्ड की मदद से, मल्टीमीडिया कंज्यूमर प्रॉडक्ट एक-दूसरे के साथ जानकारी शेयर कर सकते हैं और एक-दूसरे से बातचीत कर सकते हैं. HDMI-CEC की सुविधा में कई सुविधाएं काम करती हैं. जैसे, रिमोट कंट्रोल पासथ्रू और सिस्टम ऑडियो कंट्रोल. हालांकि, सबसे लोकप्रिय सुविधाओं में से एक One Touch Play है. एक टच प्ले की सुविधा की मदद से, मीडिया सोर्स डिवाइस से टीवी को चालू किया जा सकता है और उसके इनपुट पोर्ट को अपने-आप स्विच किया जा सकता है. इससे, आपको Chromecast से Blu-ray प्लेयर पर स्विच करने के लिए, टीवी रिमोट खोजने की ज़रूरत नहीं पड़ती.
Android 12 में, एचडीएमआई से कनेक्ट किए गए डिसप्ले की पावर कंट्रोल सुविधा, डिवाइस के डिसप्ले की पावर कंट्रोल सुविधा के साथ काम करती है. जब कोई एचडीएमआई प्लेबैक डिवाइस चालू होता है, तो वह कनेक्ट किए गए टीवी को चालू करने की कोशिश करता है. साथ ही, HDMI सीईसी वन टच प्ले की मदद से, मौजूदा सक्रिय सोर्स बन जाता है. अगर डिवाइस, मौजूदा सोर्स के तौर पर काम करते समय स्लीप मोड में चला जाता है, तो वह कनेक्ट किए गए टीवी को बंद करने की कोशिश करता है.
आम तौर पर, HDMI-CEC की सुविधा होना ज़रूरी नहीं है. हालांकि, ज़्यादातर मैन्युफ़ैक्चरर ने HDMI-CEC की सुविधा को अपनाया है, ताकि उनके डिवाइस, दूसरी कंपनियों के डिवाइसों के साथ काम कर सकें. हर मैन्युफ़ैक्चरर, HDMI-CEC स्टैंडर्ड को अलग-अलग तरीकों से लागू करता है. इसलिए, डिवाइस हमेशा एक-दूसरे के साथ काम नहीं करते और उन पर काम करने वाली सुविधाएं अलग-अलग होती हैं. इस अंतर की वजह से, उपभोक्ता यह नहीं मान सकते कि सीईसी के साथ काम करने का दावा करने वाले दो प्रॉडक्ट पूरी तरह से काम करते हैं.
HDMI-CEC 2.0 की सुविधा से, एचडीएमआई डिवाइसों के बीच बेहतर तरीके से काम करने में मदद मिलती है. ऐसा तब होता है, जब डिवाइस से स्ट्रीम भेजने और उसे पाने वाले डिवाइस, दोनों इस स्टैंडर्ड के वर्शन के साथ काम करते हों.
समाधान
Android TV इनपुट फ़्रेमवर्क (TIF) के आने के बाद, एचडीएमआई-सीईसी सभी कनेक्ट किए गए डिवाइसों को एक साथ जोड़ता है. साथ ही, डिवाइसों के साथ काम करने से जुड़ी समस्याओं को कम करता है.
Android ने इन समस्याओं को हल करने के लिए, HdmiControlService
नाम की एक सिस्टम सेवा बनाई है.
Android ने HdmiControlService
को अपने पारिस्थितिक तंत्र का हिस्सा बनाकर, ये सुविधाएं देने की उम्मीद की है:
- सभी मैन्युफ़ैक्चरर के लिए, HDMI-CEC को स्टैंडर्ड तरीके से लागू करना. इससे डिवाइस के साथ काम न करने की समस्या कम हो जाएगी. इससे पहले, मैन्युफ़ैक्चरर को HDMI-CEC को लागू करने के लिए, खुद से सिस्टम बनाना पड़ता था या तीसरे पक्ष के सलूशन का इस्तेमाल करना पड़ता था.
- ऐसी सेवा जिसकी जांच, मार्केट में पहले से मौजूद कई HDMI-CEC डिवाइसों के साथ की जा चुकी हो. Android, प्रॉडक्ट के बीच काम करने से जुड़ी समस्याओं पर ज़रूरी रिसर्च कर रहा है. साथ ही, डिवाइस में इस टेक्नोलॉजी को लागू करने वाले लोगों से काम की सलाह ले रहा है. सीईसी सेवा को इस तरह से डिज़ाइन किया गया है कि वह स्टैंडर्ड और उसमें किए गए बदलावों के बीच एक अच्छा संतुलन बनाए रख सके. इससे यह उन प्रॉडक्ट के साथ काम कर सके जिनका इस्तेमाल लोग पहले से कर रहे हैं.
पूरा डिज़ाइन
HdmiControlService
, स्टैंडर्ड में बताई गई अलग-अलग सुविधाओं को लागू करने के लिए, बाकी सिस्टम से कनेक्ट होता है. जैसे, टीवी इनपुट फ़्रेमवर्क (TIF), ऑडियो सेवा, और पावर सेवा.
कस्टम सीईसी कंट्रोलर से, आसान HDMI-CEC हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) को लागू करने के लिए स्विच करने के बारे में जानने के लिए, नीचे दिया गया डायग्राम देखें.

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

दूसरी इमेज. एचडीएमआई कंट्रोल सेवा की जानकारी
Android HDMI-CEC को सही तरीके से लागू करने के लिए, ये मुख्य बातें ध्यान में रखें:
- मैनेजर क्लास
HdmiControlManager
, एपीआई के साथ खास अधिकार वाले ऐप्लिकेशन उपलब्ध कराता है. टीवी इनपुट मैनेजर सेवा और ऑडियो सेवा जैसी सिस्टम सेवाएं, सीधे तौर पर इस सेवा का इस्तेमाल कर सकती हैं. - इस सेवा को एक से ज़्यादा तरह के लॉजिकल डिवाइस को होस्ट करने के लिए डिज़ाइन किया गया है.
- HDMI-CEC, हार्डवेयर के साथ हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) के ज़रिए कनेक्ट होता है. इससे, डिवाइसों के बीच प्रोटोकॉल और सिग्नल देने के तरीकों में अंतर को आसानी से मैनेज किया जा सकता है. एचएएल डेफ़िनिशन, डिवाइस बनाने वाली कंपनियों के लिए उपलब्ध है, ताकि वे एचएएल लेयर को लागू कर सकें.
ध्यान दें: डिवाइस बनाने वाली कंपनियों को device.mk
में PRODUCT_COPY_FILES
में यह लाइन जोड़नी चाहिए.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
आपका डिवाइस, एचडीएमआई सिंक डिवाइस है या एचडीएमआई सोर्स डिवाइस, इस आधार पर डिवाइस बनाने वाली कंपनियों को HdmiControlService
के सही तरीके से काम करने के लिए, device.mk
में ro.hdmi.device_type
सेट करना होगा.
एचडीएमआई सोर्स डिवाइसों के लिए, जैसे कि ओवर द टॉप (OTT) या सेट-टॉप बॉक्स (STB) डिवाइसों के लिए, ये सेट करें:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
पैनल टीवी जैसे एचडीएमआई सिंक डिवाइसों के लिए, ये सेट करें:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- डिवाइस बनाने वाली कंपनी का दिया गया मालिकाना हक वाला सीईसी कंट्रोलर,
HdmiControlService
के साथ काम नहीं कर सकता. इसे बंद या हटा दिया जाना चाहिए. इसके लिए, आम तौर पर मैन्युफ़ैक्चरर के हिसाब से निर्देशों को मैनेज करने की ज़रूरत होती है. मैन्युफ़ैक्चरर के हिसाब से बनाए गए कमांड हैंडलर को, सेवा में शामिल करने के लिए उसे बड़ा करना या उसमें बदलाव करना होगा. यह काम, डिवाइस बनाने वाली कंपनी के पास होता है. Android इस बारे में कोई जानकारी नहीं देता. ध्यान दें कि मैन्युफ़ैक्चरर के खास निर्देशों के लिए, सेवा में किया गया कोई भी बदलाव, स्टैंडर्ड निर्देशों को मैनेज करने के तरीके में रुकावट नहीं डालना चाहिए. ऐसा होने पर, डिवाइस Android के साथ काम नहीं करेगा. - HDMI-CEC सेवा के ऐक्सेस को सुरक्षा लेवल
SignatureOrSystem
के साथ सुरक्षित किया जाता है. सिर्फ़ सिस्टम के कॉम्पोनेंट या/system/priv-app
में मौजूद ऐप्लिकेशन ही इस सेवा को ऐक्सेस कर सकते हैं. ऐसा इसलिए किया जाता है, ताकि नुकसान पहुंचाने के इरादे से बनाए गए ऐप्लिकेशन, इस सेवा का गलत इस्तेमाल न कर सकें.
Android, टाइप TV/Display(0)
और Playback
device(4)
के साथ काम करता है. TV/Display(0)
, सक्रिय सोर्स बनने के लिए, वन-टच प्ले निर्देश जारी कर सकता है. वहीं, Audio System (5)
सिस्टम ऑडियो मोड और एआरसी को मैनेज करता है.
फ़िलहाल, अन्य तरह के डिवाइसों (ट्यूनर और रिकॉर्डर) पर यह सुविधा काम नहीं करती.
HDMI-CEC HAL
HDMI-CEC HAL API की मदद से, HdmiControlService
, हार्डवेयर रिसॉर्स का इस्तेमाल करके, HDMI-CEC निर्देश भेज/पाता है, ज़रूरी सेटिंग कॉन्फ़िगर करता है, और (ज़रूरी नहीं) उस प्लैटफ़ॉर्म के माइक्रोप्रोसेसर से संपर्क करता है जो Android सिस्टम के स्टैंडबाय मोड में होने पर, सीईसी कंट्रोल को अपने पास ले लेगा.
वर्शन | सुविधाएं | एचएएल फ़ाइलें |
---|---|---|
1.0 | एचएएल का डेटा (पते, सुविधाएं) कॉन्फ़िगर करें. HDMI-CEC निर्देश भेजें. HDMI-CEC कमांड और hotplug इवेंट पाने के लिए, कॉलबैक रजिस्टर करें. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | HDMI-CEC 2.0 टाइप के बारे में जानकारी | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
टेस्ट करना
डिवाइसों में HDMI-CEC की सुविधा को लागू करने के बाद, HDMI-CEC के CTS दस्तावेज़ के मुताबिक, CTS टेस्ट की मदद से इसकी जांच की जाती है और इसकी पुष्टि की जाती है.
HDMI-CEC 2.0
Android सोर्स (प्लेबैक) और सिंक (टीवी पैनल) डिवाइस, HDMI-CEC 2.0 के साथ काम करते हैं. HDMI-CEC 2.0 की मदद से, एचडीएमआई डिवाइसों के बीच बेहतर इंटरऑपरेबिलिटी मिलती है. साथ ही, रिमोट कंट्रोल पास-थ्रू में सुधार होता है और सर्टिफ़िकेट की ज़्यादा टेस्टिंग की जाती है. आम तौर पर, दूसरे डिवाइसों के साथ HDMI-CEC 2.0 इंटरैक्शन ज़्यादा असरदार होते हैं. इससे HDMI-CEC ट्रैफ़िक कम होता है और इंटरैक्शन तेज़ी से होते हैं.
किसी डिवाइस पर HDMI-CEC 2.0 की सुविधा काम करे, इसके लिए ज़रूरी है कि डिवाइस और उपयोगकर्ता कॉन्फ़िगरेशन को HDMI-CEC 2.0 का इस्तेमाल करने के लिए सेट किया गया हो. एचएएल लागू करने के लिए, IHdmiCec#getCecVersion
को कॉल में HDMI-CEC 2.0 के साथ काम करने की जानकारी भी देनी होगी.
सीईसी कॉन्फ़िगरेशन
HDMI-CEC के काम करने के तरीके को बिल्ड टाइम (RRO का इस्तेमाल करने वाले OEM) और रनटाइम (HdmiControlManager
@SystemApi) दोनों पर कॉन्फ़िगर किया जा सकता है.
HDMI-CEC की सेटिंग के उदाहरण:
सेटिंग | विकल्प |
---|---|
HDMI-CEC चालू है या बंद. | चालू है बंद है |
प्लेबैक डिवाइस से भेजे गए, HDMI-CEC पावर कंट्रोल मैसेज का दायरा. | सिर्फ़ टीवी पर टीवी और ऑडियो सिस्टम पर ब्रॉडकास्ट कोई नहीं |
फ़िलहाल, ऐप्लिकेशन रन टाइम पर, हर सेटिंग के लिए उपलब्ध और अनुमति वाले विकल्पों के बारे में क्वेरी कर सकते हैं.