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

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

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

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

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

समाधान

Android TV इनपुट फ़्रेमवर्क (टीआईएफ़) के साथ एचडीएमआई-सीईसी कनेक्ट किए गए सभी डिवाइस को एक साथ लाता है और काम करने की क्षमता में आने वाली समस्याओं को कम करता है. Android ने HdmiControlService नाम की सिस्टम सेवा बनाई है, ताकि इन परेशानी को कम करने के लिए किया जा सकता है.

Android ने HdmiControlService को अपने पारिस्थितिक तंत्र का हिस्सा बनाकर, ये सुविधाएं देने की उम्मीद की है:

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

पूरा डिज़ाइन

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

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

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

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

लागू करना

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

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

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

यहां 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 के साथ काम नहीं करेगा.
  • एचडीएमआई-सीईसी सेवा के ऐक्सेस को सुरक्षा के लेवल पर सुरक्षित रखा जाता है SignatureOrSystem. केवल सिस्टम के घटक या उसमें रखे गए ऐप्लिकेशन /system/priv-app सेवा को ऐक्सेस कर सकता है. ऐसा इसलिए किया जाता है, ताकि नुकसान पहुंचाने के इरादे से बनाए गए ऐप्लिकेशन का गलत इस्तेमाल रोकने के लिए बनाया गया कॉन्टेंट.

Android पर TV/Display(0), Playback device(4) टाइप का इस्तेमाल किया जा सकता है. इसकी मदद से, One Touch Play को चालू करने के लिए निर्देश दिया जा सकता है सोर्स और Audio System (5) हैं, जो सिस्टम के ऑडियो मोड और ARC को मैनेज करते हैं. फ़िलहाल, अन्य तरह के डिवाइसों (ट्यूनर और रिकॉर्डर) पर यह सुविधा काम नहीं करती.

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

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 के सीटीएस दस्तावेज़ के मुताबिक, सीटीएस टेस्ट के ज़रिए इसकी जांच की जाती है और इसकी पुष्टि की जाती है.

HDMI-CEC 2.0

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

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

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

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

HDMI-CEC सेटिंग के उदाहरण:

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

मौजूदा समय में उपलब्ध हर सेटिंग और अनुमति वाले विकल्पों के लिए, ऐप्लिकेशन रन टाइम के दौरान क्वेरी कर सकता है.