خدمة التحكّم في 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 One Touch Play. إذا انتقل الجهاز إلى وضع السكون أثناء استخدامه كمصدر نشط حالي، سيحاول إيقاف التلفزيون المتصل.

بشكل عام، يكون توفير ميزة 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.0 ضبط بيانات طبقة تجريد الأجهزة (العناوين والميزات) إرسال أوامر 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 في وقت الإنشاء (من قِبل الشركات المصنّعة للمعدات الأصلية باستخدام RRO) ووقت التشغيل (من قِبل HdmiControlManager @SystemApi).

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

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

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