خدمة التحكّم في HDMI-CEC

يتيح معيار High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) لمنتجات الوسائط المتعددة الاستهلاكية التواصل مع بعضها البعض وتبادل المعلومات. تتيح ميزة HDMI-CEC العديد من الميزات، مثل Remote Control Passthrough وSystem Audio Control، ولكن إحدى الميزات الأكثر شيوعًا هي One Touch Play. تتيح ميزة "التشغيل بلمسة واحدة" لجهاز مصدر الوسائط تشغيل التلفزيون وتبديل منفذ الإدخال تلقائيًا، ما يغنيك عن البحث عن جهاز التحكّم عن بُعد الخاص بالتلفزيون للتبديل من Chromecast إلى مشغّل Blu-ray.

في نظام التشغيل Android 12، يتوافق التحكّم في إيقاف/تشغيل شاشة العرض المتصلة بكابل HDMI مع التحكّم في إيقاف/تشغيل الشاشة الداخلية. عندما يستأنف جهاز تشغيل HDMI نشاطه، يحاول تنبيه التلفزيون المتصل به ليصبح المصدر النشط الحالي من خلال ميزة "التشغيل بلمسة واحدة" في HDMI CEC. إذا انتقل الجهاز إلى وضع السكون أثناء كونه المصدر النشط الحالي، سيحاول إيقاف التلفزيون المتصل.

بشكل عام، يكون توفير ميزة HDMI-CEC اختياريًا. ومع ذلك، اعتمدت معظم الشركات المصنّعة ميزة HDMI-CEC لتتوافق أجهزتها مع أجهزة الشركات الأخرى. تطبّق كل شركة مصنّعة معيار HDMI-CEC بطرق مختلفة، لذا لا تتوافق الأجهزة دائمًا مع بعضها البعض، وتختلف الميزات المتوافقة بين الأجهزة. وبسبب هذا التباين، لا يمكن للمستهلكين افتراض أنّ منتجَين يدّعيان توفير ميزة CEC متوافقان تمامًا.

يساعد التوافق مع الإصدار 2.0 من HDMI-CEC في تحسين التوافق بين أجهزة HDMI إذا كان كل من الجهاز المرسِل والجهاز المستلِم متوافقًا مع هذا الإصدار من المعيار.

الحل

مع طرح إطار عمل إدخال Android TV (TIF)، تجمع ميزة HDMI-CEC بين جميع الأجهزة المتصلة وتقلّل مشاكل التوافق. أنشأ Android خدمة تابعة لنظام التشغيل باسم HdmiControlService للتخفيف من هذه المشاكل.

من خلال توفير HdmiControlService كجزء من نظام Android المتكامل، يهدف Android إلى تقديم ما يلي:

  • تطبيق موحّد لميزة HDMI-CEC لدى جميع الشركات المصنّعة، ما سيؤدي إلى الحد من عدم توافق الأجهزة في السابق، كان على الشركات المصنّعة تطوير عمليات التنفيذ الخاصة بها لميزة HDMI-CEC أو استخدام حلول تابعة لجهات خارجية.
  • خدمة تم اختبارها جيدًا على العديد من أجهزة HDMI-CEC المتوفرة في السوق. أجرى فريق Android أبحاثًا دقيقة حول مشاكل التوافق التي تم رصدها في المنتجات، كما جمع نصائح مفيدة من مطوّري الأجهزة الذين لديهم خبرة في هذه التكنولوجيا. تم تصميم خدمة CEC للحفاظ على توازن سليم بين المعيار والتعديلات التي يتم إجراؤها على هذا المعيار، وذلك لكي تتوافق مع المنتجات التي يستخدمها الأشخاص حاليًا.

التصميم العام

HdmiControlService مرتبط ببقية النظام، مثل TV Input Framework (TIF) وخدمة الصوت وخدمة الطاقة، لتنفيذ الميزات المختلفة التي يحدّدها المعيار.

راجِع الرسم البياني التالي للاطّلاع على وصف لعملية الانتقال من وحدة تحكّم مخصّصة في CEC إلى تنفيذ طبقة تجريد أجهزة HDMI-CEC الأبسط (HAL).

مخطّط يوضّح كيفية تنفيذ HDMI-CEC قبل وبعد الإصدار 5.0 من نظام التشغيل Android

الشكل 1. استبدال خدمة التحكم في HDMI

التنفيذ

اطّلِع على الرسم التخطيطي التالي للحصول على عرض تفصيلي لخدمة التحكّم عبر HDMI.

صورة تعرض تفاصيل خدمة "التحكّم عبر HDMI"

الشكل 2. تفاصيل خدمة التحكم في HDMI

في ما يلي المكوّنات الأساسية لتنفيذ ميزة HDMI-CEC بشكل سليم على Android:

  • يوفر صف المدير HdmiControlManager التطبيقات التي لديها امتيازات مع واجهة برمجة التطبيقات. يمكن لخدمات النظام، مثل خدمة TV Input Manager وخدمة الصوت، استخدام الخدمة مباشرةً.
  • تم تصميم الخدمة للسماح باستضافة أكثر من نوع واحد من الأجهزة المنطقية.
  • يتم ربط 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)، اللذين يمكنهما إصدار أمر "التشغيل بنقرة واحدة" ليصبحا المصدر النشط، والنوع Audio System (5) الذي يتعامل مع وضع الصوت في النظام وقناة ARC. لا تتوافق أنواع الأجهزة الأخرى (جهاز استقبال البث وجهاز التسجيل) مع هذه الميزة حاليًا.

طبقة تجريد الأجهزة HDMI-CEC

تتيح واجهة برمجة تطبيقات طبقة تجريد الأجهزة (HAL) الخاصة بميزة HDMI-CEC لجهاز HdmiControlService الاستفادة من مورد الأجهزة لإرسال أو تلقّي أوامر HDMI-CEC وضبط الإعدادات اللازمة والتواصل (اختياريًا) مع المعالج الدقيق في النظام الأساسي الذي سيتولّى التحكّم في CEC أثناء وضع الاستعداد لنظام التشغيل Android.

الإصدار الميزات ملفات HAL
1 ضبط بيانات طبقة تجريد الأجهزة (العناوين والميزات) إرسال أوامر 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) أيضًا إمكانية استخدام الإصدار 2.0 من HDMI-CEC في طلبات IHdmiCec#getCecVersion.

إعدادات CEC

يمكن ضبط سلوك HDMI-CEC في وقت الإنشاء (من قِبل الشركات المصنّعة للمعدات الأصلية باستخدام عمليات تراكب موارد وقت التشغيل) ووقت التشغيل (من قِبل HdmiControlManager @SystemApi).

أمثلة على إعدادات HDMI-CEC:

الإعدادات خيار
تحديد ما إذا كانت ميزة HDMI-CEC مفعَّلة أو غير مفعَّلة مفعَّلة
غير مفعَّلة
نطاق رسائل التحكّم في الطاقة عبر HDMI-CEC التي يرسلها جهاز تشغيل إلى التلفزيون فقط
إلى التلفزيون ونظام الصوت
البث
بلا صوت

يمكن للتطبيقات الاستعلام عن كل إعداد متاح حاليًا والخيارات المسموح بها في وقت التشغيل.