हाई-डेफ़िनिशन मल्टीमीडिया इंटरफ़ेस कंज़्यूमर इलेक्ट्रॉनिक्स कंट्रोल (एचडीएमआई-सीईसी) स्टैंडर्ड की मदद से मल्टीमीडिया कंज़्यूमर प्रॉडक्ट, एक-दूसरे से बातचीत कर सकते हैं और जानकारी का लेन-देन कर सकते हैं. HDMI-CEC की सुविधा में कई सुविधाएं काम करती हैं. जैसे, रिमोट कंट्रोल पासथ्रू और सिस्टम ऑडियो कंट्रोल. हालांकि, सबसे लोकप्रिय सुविधाओं में से एक One Touch Play है. एक टच प्ले की सुविधा की मदद से, मीडिया सोर्स डिवाइस से टीवी को चालू किया जा सकता है और उसके इनपुट पोर्ट को अपने-आप स्विच किया जा सकता है. इससे, आपको Chromecast से Blu-ray प्लेयर पर स्विच करने के लिए, टीवी रिमोट खोजने की ज़रूरत नहीं पड़ती.
Android 12 में, एचडीएमआई से कनेक्ट किए गए डिसप्ले की पावर कंट्रोल सुविधा, डिवाइस के डिसप्ले की पावर कंट्रोल सुविधा के साथ काम करती है. जब कोई एचडीएमआई प्लेबैक डिवाइस चालू होता है, तो वह कनेक्ट किए गए टीवी को चालू करने की कोशिश करता है. साथ ही, एचडीएमआई सीईसी One Touch Play की मदद से, मौजूदा सक्रिय सोर्स बन जाता है. डिवाइस के स्लीप मोड (कम बैटरी मोड) में चला जाने पर, यह कनेक्टेड टीवी को बंद करने की कोशिश करता है.
आम तौर पर, HDMI-CEC की सुविधा होना ज़रूरी नहीं है. हालांकि, ज़्यादातर मैन्युफ़ैक्चरर ने HDMI-CEC की सुविधा को अपनाया है, ताकि उनके डिवाइस, दूसरी कंपनियों के डिवाइसों के साथ काम कर सकें. हर मैन्युफ़ैक्चरर, HDMI-CEC स्टैंडर्ड को अलग-अलग तरीकों से लागू करता है. इसलिए, डिवाइस हमेशा एक-दूसरे के साथ काम नहीं करते और उन पर काम करने वाली सुविधाएं अलग-अलग होती हैं. इस अंतर की वजह से, उपभोक्ता यह नहीं मान सकते कि सीईसी के साथ काम करने का दावा करने वाले दो प्रॉडक्ट पूरी तरह से काम करते हैं.
अगर भेजने और पाने वाले डिवाइस, दोनों ही इस स्टैंडर्ड वर्शन के साथ काम करते हैं, तो एचडीएमआई-सीईसी 2.0 के साथ काम करने से एचडीएमआई डिवाइसों के साथ काम करने की सुविधा बेहतर होती है.
समाधान
Android TV इनपुट फ़्रेमवर्क (टीआईएफ़) के आने से एचडीएमआई-सीईसी,
कनेक्ट किए गए सभी डिवाइस को एक जगह पर ऐक्सेस कर देता है. साथ ही, यह काम करने से जुड़ी समस्याओं को भी कम करता है.
Android ने इन समस्याओं को हल करने के लिए, HdmiControlService
नाम की एक सिस्टम सेवा बनाई है.
Android ने HdmiControlService
को अपने पारिस्थितिक तंत्र का हिस्सा बनाकर, ये सुविधाएं देने की उम्मीद की है:
- सभी मैन्युफ़ैक्चरर के लिए, 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
आपका डिवाइस एचडीएमआई सिंक डिवाइस है या एचडीएमआई सोर्स डिवाइस, इसके हिसाब से डिवाइस बनाने वाली कंपनियों को device.mk
में ro.hdmi.device_type
सेट करना होगा, ताकि HdmiControlService
ठीक से काम कर सके.
एचडीएमआई सोर्स डिवाइसों के लिए, जैसे कि ओवर द टॉप (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)
टाइप काम करता है जो ऐक्टिव सोर्स बनने के लिए One Touch Play कमांड दे सकता है.
साथ ही, Audio System (5)
जो सिस्टम के ऑडियो मोड और ARC को हैंडल करता है.
फ़िलहाल, अन्य तरह के डिवाइसों (ट्यूनर और Recorder) का इस्तेमाल नहीं किया जा सकता.
एचडीएमआई-सीईसी एचएएल
HDMI-CEC HAL API की मदद से, HdmiControlService
, हार्डवेयर संसाधन का इस्तेमाल करके HDMI-CEC निर्देश भेज/पाता है, ज़रूरी सेटिंग कॉन्फ़िगर करता है, और (ज़रूरी नहीं) उस प्लैटफ़ॉर्म के माइक्रोप्रोसेसर से संपर्क करता है जो Android सिस्टम के स्टैंडबाय मोड में होने पर, सीईसी कंट्रोल को अपने पास ले लेगा.
वर्शन | सुविधाएं | HAL फ़ाइलें |
---|---|---|
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 2.0
एचडीएमआई-सीईसी 2.0 पर काम करने वाले Android सोर्स (प्लेबैक) और सिंक (टीवी पैनल) डिवाइस. HDMI-CEC 2.0 की मदद से, HDMI डिवाइसों के बीच बेहतर इंटरऑपरेबिलिटी मिलती है. साथ ही, रिमोट कंट्रोल पासथ्रू में सुधार होता है और सर्टिफ़िकेट की ज़्यादा टेस्टिंग की जाती है. आम तौर पर, दूसरे डिवाइसों के साथ HDMI-CEC 2.0 इंटरैक्शन ज़्यादा असरदार होते हैं. इससे HDMI-CEC ट्रैफ़िक कम होता है और इंटरैक्शन तेज़ी से होते हैं.
किसी डिवाइस पर HDMI-CEC 2.0 की सुविधा काम करे, इसके लिए ज़रूरी है कि डिवाइस और उपयोगकर्ता कॉन्फ़िगरेशन को HDMI-CEC 2.0 का इस्तेमाल करने के लिए सेट किया गया हो. एचएएल लागू करने के लिए, IHdmiCec#getCecVersion
पर किए जाने वाले कॉल में, एचडीएमआई-सीईसी 2.0 के साथ काम करने की जानकारी भी देनी होगी.
सीईसी कॉन्फ़िगरेशन
एचडीएमआई-सीईसी के काम करने का तरीका, बिल्ड टाइम (आरआरओ का इस्तेमाल करके OEM) और रनटाइम (HdmiControlManager
@SystemApi की मदद से) दोनों पर कॉन्फ़िगर किया जा सकता है.
HDMI-CEC सेटिंग के उदाहरण:
सेटिंग | विकल्प |
---|---|
HDMI-CEC चालू है या बंद. | चालू है बंद है |
किसी प्लेलबैक डिवाइस से भेजे गए, HDMI-CEC पावर कंट्रोल मैसेज का दायरा. | सिर्फ़ टीवी पर टीवी और ऑडियो सिस्टम पर ब्रॉडकास्ट कोई नहीं |
फ़िलहाल, ऐप्लिकेशन रन टाइम पर, हर सेटिंग के लिए उपलब्ध और अनुमति वाले विकल्पों के बारे में क्वेरी कर सकते हैं.