يتيح معيار HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) لمنتجات المستهلك المتعدّدة الوسائط التواصل مع بعضها البعض وتبادل المعلومات. تتيح تقنية HDMI-CEC العديد من الميزات، مثل إرسال إشارة جهاز التحكّم عن بُعد والتحكّم في صوت النظام، ولكن من بين الميزات الأكثر رواجًا هي ميزة One Touch Play. تسمح ميزة One Touch Play لجهاز مصدر وسائط بتشغيل التلفزيون وتبديل منفذ الإدخال تلقائيًا، وبذلك لن تكون هناك حاجة إلى البحث عن التلفزيون عن بُعد للتبديل من جهاز Chromecast إلى مشغّل Blu-ray.
في نظام التشغيل Android 12، يتم ضبط ميزة التحكّم في الطاقة للشاشة المتصلة عبر HDMI مع ميزة التحكّم في الطاقة للشاشة الداخلية. عند تنشيط جهاز تشغيل HDMI، يحاول تنشيط التلفزيون المتصل ويصبح المصدر النشط الحالي من خلال ميزة "التشغيل بنقرة واحدة" في HDMI CEC. إذا دخل الجهاز في وضع السكون وهو المصدر النشط الحالي، سيحاول بعد ذلك إطفاء التلفزيون المتصل.
إنّ توفير ميزة HDMI-CEC اختياري بشكل عام. ومع ذلك، استخدمت معظم الشركات المصنِّعة HDMI-CEC حتى تعمل أجهزتهم مع أجهزة الشركات الأخرى. تطبِّق كل شركة تصنيع معيار HDMI-CEC بطرق مختلفة، لذلك لا تتوافق الأجهزة مع بعضها دائمًا وتختلف ميزات الأجهزة المتوافقة. بسبب هذا التباين، لا يمكن للمستهلكين افتراض بأمان أنّ المنتجَين اللذَين يُزعَم أنّهما متوافقان مع معيار CEC متوافقان تمامًا.
يساعد توفُّر تقنية HDMI-CEC 2.0 في تحسين التوافق بين أجهزة HDMI إذا كان كل من الجهاز المُرسِل والجهاز المستلِم يتيحان استخدام هذا الإصدار من المعيار.
الحل
من خلال تقديم إطار عمل إدخال Android TV (TIF)، يجمع HDMI-CEC
جميع الأجهزة المتصلة ويقلل من مشاكل التوافق.
أنشأ نظام Android خدمة نظام تُسمى HdmiControlService
للتخفيف من هذه المشاكل.
من خلال توفير HdmiControlService
كجزء من منظومة Android
المتكاملة، نأمل في توفير ما يلي:
- تنفيذ عادي لميزة HDMI-CEC لجميع الشركات المصنّعة، ما يؤدي إلى تقليل عدم توافق الأجهزة في السابق، كان على الشركات المصنعة تطوير تطبيقاتها الخاصة لـ HDMI-CEC أو استخدام حلول من جهات خارجية.
- خدمة تم اختبارها جيدًا على العديد من أجهزة HDMI-CEC التي سبق أن تم طرحها في السوق يُجري فريق Android أبحاثًا دقيقة حول مشاكل التوافق التي يتم رصدها في المنتجات، ويجمع نصائح مفيدة من خبراء تكنولوجيا تطبيقات الأجهزة. تم تصميم خدمة التحكم بالأجهزة الإلكترونية الاستهلاكية للحفاظ على توازن صحي بين المعيار والتعديلات على هذا المعيار حتى تعمل مع المنتجات التي يستخدمها الأشخاص بالفعل.
التصميم العام
يتم ربط HdmiControlService
بباقي أجزاء النظام، مثل
إطار عمل إدخال التلفزيون (TIF) وخدمة الصوت وخدمة الطاقة، لتنفيذ
الميزات المختلفة التي يحدّدها المعيار.
اطّلِع على الرسم البياني التالي للاطّلاع على وصف للتبديل من وحدة تحكّم مخصّصة في تكنولوجيا CEC إلى تنفيذ لطبقة HDMI-CEC المخصّصة لتوفير واجهة برمجة تطبيقات بسيطة للأجهزة (HAL).
التنفيذ
اطّلِع على الرسم البياني التالي للحصول على عرض تفصيلي لخدمة التحكّم في HDMI.
في ما يلي المكونات الأساسية لتنفيذ HDMI-CEC بشكل صحيح على Android:
- توفّر فئة المدير
HdmiControlManager
للتطبيقات المميّزة واجهة برمجة التطبيقات. ويمكن لخدمات النظام مثل خدمة "مدير إدخال التلفزيون" وخدمة الصوت استخدام الخدمة مباشرةً. - تم تصميم الخدمة للسماح باستضافة أكثر من نوع واحد من الأجهزة المنطقية.
- يتم ربط واجهة HDMI-CEC بالأجهزة من خلال طبقة تجريد الأجهزة (HAL) لتبسيط التعامل مع الاختلافات في البروتوكول وآليات الإرسال بين الأجهزة. يتوفّر تعريف HAL لصنّاع الأجهزة لاستخدامه في تنفيذ طبقة HAL.
ملاحظة: على المصنّعين إضافة السطر التالي إلى PRODUCT_COPY_FILES
في device.mk
.
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
بناءً على ما إذا كان جهازك حوض HDMI أو جهاز مصدر HDMI، يجب على الشركات المصنّعة للأجهزة ضبط السمة ro.hdmi.device_type
في
device.mk
لكي يعمل HdmiControlService
بشكل صحيح.
بالنسبة إلى أجهزة مصدر HDMI، مثل أجهزة خدمة البث المباشر على الإنترنت (OTT) أو أجهزة فكّ ترميز المحتوى التلفزيوني (STB)، يجب ضبط ما يلي:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
بالنسبة إلى أجهزة أحواض HDMI، مثل أجهزة تلفزيون الألواح، يتم ضبط:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- لا يمكن أن يتوفّر في الجهاز جهاز تحكّم خاص بتكنولوجيا CEC يوفّره المصنّع ويتوافق مع
HdmiControlService
. يجب إيقافه أو إزالته. تأتي المتطلبات الشائعة لذلك من الحاجة إلى التعامل مع الأوامر الخاصة بالشركة المصنعة. يجب دمج معالِج الأوامر الخاص بالشركة المصنّعة في الخدمة من خلال تمديدها أو تعديلها. ويتم ترك هذا العمل للشركة المصنعة للجهاز ولم يحدده Android. يُرجى العِلم أنّ أي تغيير يتم إجراؤه في الخدمة على الأوامر الخاصة بالشركة المصنّعة يجب ألا يتداخل مع طريقة التعامل مع الأوامر العادية، وإلا لن يكون الجهاز متوافقًا مع Android. - يتم تأمين الوصول إلى خدمة HDMI-CEC من خلال مستوى الحماية
SignatureOrSystem
. لا يمكن الوصول إلى الخدمة إلا من خلال مكوّنات النظام أو التطبيقات المضمّنة في ملف/system/priv-app
. ويهدف ذلك إلى حماية الخدمة من إساءة الاستخدام من قِبل التطبيقات التي لها غرض ضار.
يتوافق Android مع النوعَين TV/Display(0)
وPlayback
device(4)
اللذَين يمكنهما إصدار الأمر One Touch Play ليصبحا المصدر
النشط، والنوع Audio System (5)
الذي يتعامل مع وضع صوت النظام وARC.
ولا يمكن حاليًا استخدام أنواع الأجهزة الأخرى (الموالف والمسجّلة الذكية).
HDMI-CEC HAL
تتيح واجهة برمجة التطبيقات HDMI-CEC HAL API لجهاز HdmiControlService
استخدام موارد الأجهزة لإرسال أو تلقّي أوامر HDMI-CEC وضبط الإعدادات اللازمة،
والتواصل (اختياريًا) مع المعالج الدقيق في المنصة الأساسية الذي
سيتولى التحكّم في CEC عندما يكون نظام Android في وضع الاستعداد.
الإصدار | الميزات | ملفات HAL |
---|---|---|
1 | ضبط بيانات HAL (العناوين والميزات). إرسال أوامر HDMI-CEC يمكنك تسجيل معاودة الاتصال لتلقّي أوامر HDMI-CEC وأحداث التوصيل السريع. | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | تقديم أنواع HDMI-CEC 2.0 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
الاختبار
يتم اختبار عمليات تنفيذ ميزة HDMI-CEC في الأجهزة والتحقّق منها من خلال اختبارات CTS وفقًا لملف مستندات CTS الخاصة بميزة HDMI-CEC.
منفذ HDMI-CEC 2.0
تتوافق أجهزة Android المصدر (لتشغيل المحتوى) والأجهزة المُستلِمة (لوحة التلفزيون) مع معيار HDMI-CEC 2.0. توفّر تقنية HDMI-CEC 2.0 إمكانية تشغيل تفاعلي أفضل بين أجهزة HDMI، وتحسينات على ميزة "التحكم عن بُعد" واختبارات اعتماد أكثر شمولاً. بشكل عام، تكون تفاعلات HDMI-CEC 2.0 مع الأجهزة الأخرى أكثر فعالية، مما يؤدي إلى تقليل عدد عمليات نقل البيانات عبر HDMI-CEC وزيادة سرعة التفاعلات.
لكي يكون الجهاز متوافقًا مع معيار HDMI-CEC 2.0، يجب أن يكون الجهاز وإعدادات المستخدم
مُعدَّة لاستخدام معيار HDMI-CEC 2.0. يجب أن يُبلغ تنفيذ HAL أيضًا عن توافقه مع HDMI-CEC 2.0
في طلبات البيانات المرسَلة إلى IHdmiCec#getCecVersion
.
إعدادات CEC
يمكن ضبط سلوك HDMI-CEC في وقت الإنشاء (من قِبل المصنّعين الأصليّين للأجهزة باستخدام حِزم RRO) ووقت التشغيل
(من قِبل HdmiControlManager
@SystemApi).
أمثلة على إعدادات HDMI-CEC:
الإعدادات | Option |
---|---|
ما إذا كانت ميزة HDMI-CEC مفعَّلة أم غير مفعَّلة | مفعّلة غير مفعّلة |
نطاق رسائل التحكّم في الطاقة عبر HDMI-CEC التي يرسلها جهاز التشغيل | للتلفزيون فقط إلى التلفزيون ونظام الصوت البث لا ينطبق |
يمكن للتطبيقات الاستعلام عن كل خيار متاح حاليًا ومسموح به في وقت التشغيل.