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

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

दूसरी इमेज. एचडीएमआई कंट्रोल सर्विस की जानकारी
Android में एचडीएमआई-सीईसी की सुविधा को सही तरीके से लागू करने के लिए, यहां कुछ ज़रूरी बातें बताई गई हैं:
- मैनेजर क्लास
HdmiControlManager
, एपीआई के साथ खास अधिकार वाले ऐप्लिकेशन उपलब्ध कराती है. सिस्टम सेवाएं, जैसे कि टीवी इनपुट मैनेजर सेवा और ऑडियो सेवा, सीधे तौर पर इस सेवा का इस्तेमाल कर सकती हैं. - इस सेवा को इस तरह से डिज़ाइन किया गया है कि इसमें एक से ज़्यादा तरह के लॉजिकल डिवाइस होस्ट किए जा सकें.
- एचडीएमआई-सीईसी, हार्डवेयर से हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) के ज़रिए कनेक्ट होता है. इससे डिवाइसों के बीच प्रोटोकॉल और सिग्नलिंग मेकेनिज़्म के अंतर को आसानी से मैनेज किया जा सकता है. डिवाइस बनाने वाली कंपनियां, एचएएल लेयर को लागू करने के लिए एचएएल डेफ़िनिशन का इस्तेमाल कर सकती हैं.
ध्यान दें: डिवाइस बनाने वाली कंपनियों को 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
डिवाइस बनाने वाली कंपनियों को यह सेट करना होगा कि उनका डिवाइस एचडीएमआई सिंक डिवाइस है या एचडीएमआई सोर्स डिवाइस. इसके बाद, उन्हें ro.hdmi.device_type
में ro.hdmi.device_type
सेट करना होगा, ताकि HdmiControlService
ठीक से काम कर सके.device.mk
एचडीएमआई सोर्स डिवाइसों के लिए, जैसे कि ओवर द टॉप (ओटीटी) या सेट-टॉप बॉक्स (एसटीबी) डिवाइसों के लिए, यह सेट करें:
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 API की मदद से, HdmiControlService
हार्डवेयर रिसोर्स का इस्तेमाल करके, HDMI-CEC कमांड भेज/पा सकता है. साथ ही, ज़रूरी सेटिंग कॉन्फ़िगर कर सकता है. इसके अलावा, यह एपीआई, उस प्लैटफ़ॉर्म के माइक्रोप्रोसेसर के साथ कम्यूनिकेट कर सकता है जिस पर HdmiControlService
काम करता है. इससे, Android सिस्टम के स्टैंडबाय मोड में होने पर भी, CEC कंट्रोल किया जा सकता है.
वर्शन | सुविधाएं | एचएएल फ़ाइलें |
---|---|---|
1.0 | HAL डेटा (पते, सुविधाएं) कॉन्फ़िगर करें. HDMI-CEC निर्देश भेजें. एचडीएमआई-सीईसी कमांड और हॉटप्लग इवेंट पाने के लिए, कॉलबैक रजिस्टर करें. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | एचडीएमआई-सीईसी 2.0 के टाइप के बारे में जानकारी | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
टेस्ट करना
डिवाइसों पर HDMI-CEC की सुविधा को लागू करने की जांच और पुष्टि, CTS टेस्ट के ज़रिए की जाती है. यह जांच, HDMI-CEC CTS के दस्तावेज़ के मुताबिक की जाती है.
एचडीएमआई-सीईसी 2.0
Android सोर्स (प्लेबैक) और सिंक (टीवी पैनल) डिवाइसों पर, HDMI-CEC 2.0 काम करता है. एचडीएमआई-सीईसी 2.0 की मदद से, एचडीएमआई डिवाइसों के बीच बेहतर इंटरऑपरेबिलिटी मिलती है. साथ ही, रिमोट कंट्रोल पासथ्रू की सुविधा बेहतर होती है और सर्टिफ़िकेशन की ज़्यादा टेस्टिंग की जा सकती है. आम तौर पर, HDMI-CEC 2.0 की मदद से अन्य डिवाइसों के साथ इंटरैक्शन ज़्यादा असरदार होते हैं. इससे, HDMI-CEC का ट्रैफ़िक कम होता है और इंटरैक्शन तेज़ी से होते हैं.
किसी डिवाइस पर HDMI-CEC 2.0 की सुविधा काम करने के लिए, डिवाइस और उपयोगकर्ता के कॉन्फ़िगरेशन को HDMI-CEC 2.0 का इस्तेमाल करने के लिए सेट किया जाना चाहिए. एचएएल को लागू करने के दौरान, IHdmiCec#getCecVersion
को किए गए कॉल में, एचडीएमआई-सीईसी 2.0 के साथ काम करने की सुविधा के बारे में भी बताना होगा.
सीईसी कॉन्फ़िगरेशन
एचडीएमआई-सीईसी के व्यवहार को बिल्ड टाइम (OEM, RRO का इस्तेमाल करके) और रनटाइम (HdmiControlManager
@SystemApi) पर कॉन्फ़िगर किया जा सकता है.
एचडीएमआई-सीईसी की सेटिंग के उदाहरण:
सेटिंग | विकल्प |
---|---|
HDMI-CEC की सुविधा चालू है या बंद है. | चालू है बंद है |
प्लेबैक डिवाइस से भेजे गए, HDMI-CEC की मदद से डिवाइस को चालू/बंद करने से जुड़े मैसेज का स्कोप. | सिर्फ़ टीवी पर टीवी और ऑडियो सिस्टम पर ब्रॉडकास्ट करें कोई नहीं |
फ़िलहाल उपलब्ध हर सेटिंग और अनुमति वाले विकल्पों के बारे में, ऐप्लिकेशन रन टाइम पर क्वेरी कर सकते हैं.