HDMI-CEC कंट्रोल सेवा

हाई-डेफ़िनिशन मल्टीमीडिया इंटरफ़ेस कंज्यूमर इलेक्ट्रॉनिक्स कंट्रोल (एचडीएमआई-सीईसी) स्टैंडर्ड की मदद से, मल्टीमीडिया कंज्यूमर प्रॉडक्ट एक-दूसरे से कम्यूनिकेट कर सकते हैं और जानकारी शेयर कर सकते हैं. HDMI-CEC की सुविधा के साथ कई सुविधाएँ काम करती हैं. जैसे, रिमोट कंट्रोल पासथ्रू और सिस्टम ऑडियो कंट्रोल. हालाँकि, सबसे लोकप्रिय सुविधा One Touch Play है. 'एक बार में चलाएं' सुविधा की मदद से, मीडिया सोर्स डिवाइस टीवी को चालू कर सकता है और उसके इनपुट पोर्ट को अपने-आप स्विच कर सकता है. इससे आपको Chromecast से Blu-ray प्लेयर पर स्विच करने के लिए, टीवी का रिमोट कंट्रोल ढूंढने की ज़रूरत नहीं पड़ती.

Android 12 में, एचडीएमआई से कनेक्ट किए गए डिसप्ले का पावर कंट्रोल, इंटरनल डिसप्ले के पावर कंट्रोल के साथ अलाइन होता है. जब एचडीएमआई से कनेक्ट किया गया कोई डिवाइस चालू होता है, तो वह एचडीएमआई सीईसी वन टच प्ले की सुविधा का इस्तेमाल करके, कनेक्ट किए गए टीवी को चालू करने की कोशिश करता है. साथ ही, वह मौजूदा ऐक्टिव सोर्स बन जाता है. अगर डिवाइस, मौजूदा समय में ऐक्टिव सोर्स के तौर पर काम करते समय स्लीप मोड में चला जाता है, तो यह कनेक्ट किए गए टीवी को बंद करने की कोशिश करता है.

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

एचडीएमआई-सीईसी 2.0 के साथ काम करने वाले डिवाइसों के बीच बेहतर तरीके से काम करने की सुविधा मिलती है. हालांकि, इसके लिए ज़रूरी है कि डेटा भेजने और पाने वाले दोनों डिवाइस, इस स्टैंडर्ड के साथ काम करते हों.

समाधान

Android TV Input Framework (TIF) के आने के बाद, एचडीएमआई-सीईसी की मदद से कनेक्ट किए गए सभी डिवाइसों को एक साथ कंट्रोल किया जा सकता है. साथ ही, इससे डिवाइसों के साथ काम न करने की समस्याएं कम हो जाती हैं. Android ने HdmiControlService नाम की एक सिस्टम सर्विस बनाई है, ताकि इन समस्याओं को कम किया जा सके.

Android के इकोसिस्टम के तहत HdmiControlService को उपलब्ध कराकर, Android इन चीज़ों को उपलब्ध कराने की उम्मीद करता है:

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

पूरा डिज़ाइन

HdmiControlService, सिस्टम के बाकी हिस्सों से कनेक्ट होता है. जैसे, टीवी इनपुट फ़्रेमवर्क (टीआईएफ़), ऑडियो सेवा, और पावर सेवा. इससे स्टैंडर्ड में बताई गई अलग-अलग सुविधाओं को लागू किया जा सकता है.

कस्टम सीईसी कंट्रोलर से, आसान एचडीएमआई-सीईसी हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) को लागू करने के लिए, यहां दिया गया डायग्राम देखें.

इस डायग्राम में दिखाया गया है कि Android 5.0 से पहले और बाद में एचडीएमआई-सीईसी को कैसे लागू किया गया था

पहली इमेज. एचडीएमआई कंट्रोल सेवा को बदलना

लागू करना

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

एचडीएमआई कंट्रोल सेवा की जानकारी दिखाने वाली इमेज

दूसरी इमेज. एचडीएमआई कंट्रोल सेवा की जानकारी

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 में device.mk सेट करना होगा, ताकि HdmiControlService ठीक से काम कर सके.

एचडीएमआई सोर्स डिवाइसों के लिए, जैसे कि ओवर द टॉप (ओटीटी) या सेट-टॉप बॉक्स (एसटीबी) डिवाइसों के लिए, यह सेट करें:

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) के साथ काम करता है. Playback device(4), One Touch Play कमांड जारी कर सकता है, ताकि वह चालू सोर्स बन सके. साथ ही, Audio System (5), सिस्टम ऑडियो मोड और एआरसी को मैनेज करता है. फ़िलहाल, अन्य डिवाइस टाइप (ट्यूनर और रिकॉर्डर) के लिए यह सुविधा उपलब्ध नहीं है.

एचडीएमआई-सीईसी एचएएल

HDMI-CEC HAL API की मदद से, HdmiControlService हार्डवेयर रिसोर्स का इस्तेमाल करके, HDMI-CEC कमांड भेज/पा सकता है. साथ ही, ज़रूरी सेटिंग कॉन्फ़िगर कर सकता है. इसके अलावा, यह एपीआई, प्लैटफ़ॉर्म में मौजूद माइक्रोप्रोसेसर के साथ कम्यूनिकेट भी कर सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है. जब 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 के दस्तावेज़ के मुताबिक की जाती है.

HDMI-CEC 2.0

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

किसी डिवाइस पर एचडीएमआई-सीईसी 2.0 की सुविधा काम करने के लिए, डिवाइस और उपयोगकर्ता के कॉन्फ़िगरेशन को एचडीएमआई-सीईसी 2.0 का इस्तेमाल करने के लिए सेट किया जाना चाहिए. एचएएल को लागू करने के दौरान, IHdmiCec#getCecVersion को कॉल करने पर, एचडीएमआई सीईसी 2.0 के साथ काम करने की सुविधा के बारे में भी बताना होगा.

सीईसी कॉन्फ़िगरेशन

एचडीएमआई-सीईसी के व्यवहार को बिल्ड प्रोसेस में लगने वाले समय (OEM, RRO का इस्तेमाल करके) और रनटाइम (HdmiControlManager @SystemApi का इस्तेमाल करके) पर कॉन्फ़िगर किया जा सकता है.

एचडीएमआई सीईसी की सेटिंग के उदाहरण:

सेटिंग विकल्प
एचडीएमआई-सीईसी की सुविधा चालू है या बंद. चालू है
बंद है
प्लेबैक डिवाइस से भेजे गए, एचडीएमआई-सीईसी पावर कंट्रोल मैसेज का स्कोप. सिर्फ़ टीवी पर
टीवी और ऑडियो सिस्टम पर
ब्रॉडकास्ट करें
कोई नहीं

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