บริการควบคุม HDMI-CEC

มาตรฐาน High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) ช่วยให้ผลิตภัณฑ์มัลติมีเดียสำหรับผู้บริโภคสามารถสื่อสารและแลกเปลี่ยนข้อมูลกันได้ HDMI-CEC รองรับฟีเจอร์มากมาย เช่น Remote Control Passthrough และ System Audio Control แต่ฟีเจอร์ที่ได้รับความนิยมมากที่สุดอย่างหนึ่งคือ One Touch Play One Touch Play ช่วยให้อุปกรณ์แหล่งที่มาของสื่อเปิดทีวีและเปลี่ยนพอร์ตอินพุตโดยอัตโนมัติ คุณจึงไม่ต้องค้นหารีโมตทีวีเพื่อเปลี่ยนจาก Chromecast เป็นเครื่องเล่น Blu-ray

ใน Android 12 การควบคุมการเปิด/ปิดจอแสดงผลที่เชื่อมต่อ HDMI จะสอดคล้องกับ การควบคุมการเปิด/ปิดจอแสดงผลภายใน เมื่ออุปกรณ์เล่น HDMI ตื่นขึ้น อุปกรณ์จะพยายาม ปลุกทีวีที่เชื่อมต่อและกลายเป็นแหล่งที่มาที่ใช้งานอยู่ปัจจุบันผ่าน HDMI CEC One Touch Play หากอุปกรณ์เข้าสู่โหมดสลีปขณะที่เป็นแหล่งที่มาที่ใช้งานอยู่ปัจจุบัน อุปกรณ์จะพยายามปิด ทีวีที่เชื่อมต่อ

โดยทั่วไปแล้ว การรองรับ HDMI-CEC เป็นตัวเลือก อย่างไรก็ตาม ผู้ผลิตส่วนใหญ่ได้นำ HDMI-CEC มาใช้เพื่อให้ทำงานร่วมกับอุปกรณ์ของผู้ผลิตรายอื่นได้ ผู้ผลิตแต่ละรายใช้มาตรฐาน HDMI-CEC ในรูปแบบที่แตกต่างกัน ดังนั้นอุปกรณ์จึงอาจไม่เข้าใจกันเสมอไป และฟีเจอร์ที่รองรับจะแตกต่างกันไปในแต่ละอุปกรณ์ ด้วยเหตุนี้ ผู้บริโภคจึงไม่สามารถสันนิษฐานได้อย่างปลอดภัยว่าผลิตภัณฑ์ 2 รายการที่อ้างว่ารองรับ CEC จะใช้งานร่วมกันได้อย่างสมบูรณ์

การรองรับ HDMI-CEC 2.0 ช่วยปรับปรุงความเข้ากันได้ระหว่างอุปกรณ์ HDMI หากทั้งอุปกรณ์ที่ส่งและรับรองรับมาตรฐานเวอร์ชันนี้

โซลูชัน

เมื่อมีการเปิดตัว Android TV Input Framework (TIF) HDMI-CEC จะรวมอุปกรณ์ที่เชื่อมต่อทั้งหมดเข้าด้วยกันและลดปัญหาความเข้ากันได้ Android ได้สร้างบริการของระบบที่เรียกว่า HdmiControlService เพื่อลดปัญหาเหล่านี้

Android หวังว่าจะมอบสิ่งต่อไปนี้ด้วยการนำเสนอ HdmiControlService เป็นส่วนหนึ่งของระบบนิเวศ Android

  • การใช้งาน HDMI-CEC มาตรฐานสำหรับผู้ผลิตทุกราย ซึ่งจะช่วยลดปัญหาความเข้ากันไม่ได้ของอุปกรณ์ ก่อนหน้านี้ ผู้ผลิตต้องพัฒนาการใช้งาน HDMI-CEC ของตนเองหรือใช้โซลูชันของบุคคลที่สาม
  • บริการที่ผ่านการทดสอบกับอุปกรณ์ HDMI-CEC จำนวนมากที่วางจำหน่ายในตลาดแล้ว Android ได้ทำการวิจัยอย่างเข้มงวดเกี่ยวกับปัญหาความเข้ากันได้ที่พบในผลิตภัณฑ์ต่างๆ และรวบรวมคำแนะนำที่เป็นประโยชน์จากผู้ใช้เทคโนโลยีที่มีประสบการณ์ บริการ CEC ได้รับการออกแบบมาเพื่อรักษาสมดุลระหว่างมาตรฐานและการแก้ไขมาตรฐานเพื่อให้ทำงานร่วมกับผลิตภัณฑ์ที่ผู้คนใช้อยู่แล้วได้

การออกแบบโดยรวม

HdmiControlService เชื่อมต่อกับส่วนอื่นๆ ของระบบ เช่น TV Input Framework (TIF), บริการเสียง และบริการเปิด/ปิด เพื่อใช้งานฟีเจอร์ต่างๆ ที่มาตรฐานระบุ

ดูแผนภาพต่อไปนี้เพื่อดูภาพการเปลี่ยนจากตัวควบคุม CEC ที่กำหนดเองเป็นการใช้งานเลเยอร์การแยกฮาร์ดแวร์ (HAL) ของ HDMI-CEC ที่ง่ายขึ้น

แผนภาพที่แสดงวิธีใช้ HDMI-CEC ก่อนและหลัง Android 5.0

รูปที่ 1 การแทนที่บริการควบคุม HDMI

การใช้งาน

ดูแผนภาพต่อไปนี้เพื่อดูรายละเอียดของบริการควบคุม HDMI

รูปภาพที่แสดงรายละเอียดบริการการควบคุม HDMI

รูปที่ 2 รายละเอียดบริการควบคุม HDMI

ต่อไปนี้เป็นส่วนประกอบสำคัญสำหรับการใช้งาน HDMI-CEC ของ Android อย่างเหมาะสม

  • คลาสตัวจัดการ HdmiControlManager จะให้ API แก่แอปที่มีสิทธิ์ บริการของระบบ เช่น บริการตัวจัดการอินพุตทีวีและบริการเสียงสามารถใช้บริการนี้ได้โดยตรง
  • บริการนี้ได้รับการออกแบบมาเพื่อรองรับอุปกรณ์ลอจิกัลมากกว่า 1 ประเภท
  • 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

ผู้ผลิตอุปกรณ์ต้องตั้งค่า ro.hdmi.device_type ใน device.mk เพื่อให้ HdmiControlService ทำงานได้อย่างถูกต้อง ทั้งนี้ขึ้นอยู่กับว่าอุปกรณ์ของคุณเป็นอุปกรณ์ HDMI Sink หรืออุปกรณ์ HDMI Source

สำหรับอุปกรณ์ HDMI Source เช่น อุปกรณ์ Over the Top (OTT) หรือกล่องรับสัญญาณ (STB) ให้ตั้งค่าดังนี้

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

สำหรับอุปกรณ์ HDMI Sink เช่น ทีวีแบบแผง ให้ตั้งค่าดังนี้

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

API HDMI-CEC HAL ช่วยให้ HdmiControlService ใช้ทรัพยากรฮาร์ดแวร์เพื่อส่ง/รับคำสั่ง HDMI-CEC กำหนดค่าที่จำเป็น และ (ไม่บังคับ) สื่อสารกับไมโครโปรเซสเซอร์ในแพลตฟอร์มพื้นฐานที่จะควบคุม CEC ขณะที่ระบบ Android อยู่ในโหมดสแตนด์บาย

เวอร์ชัน ฟีเจอร์ ไฟล์ HAL
1.0 กำหนดค่าข้อมูล HAL (ที่อยู่ ฟีเจอร์) ส่งคำสั่ง HDMI-CEC ลงทะเบียน Callback เพื่อรับคำสั่ง HDMI-CEC และเหตุการณ์ Hotplug IHdmiCec.hal
IHdmiCecCallback.hal
1.1 แนะนำประเภท HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

การทดสอบ

การใช้งาน HDMI-CEC ของอุปกรณ์จะได้รับการทดสอบและยืนยันผ่านการทดสอบ CTS ตาม เอกสารประกอบ HDMI-CEC CTS

HDMI-CEC 2.0

อุปกรณ์ Android Source (การเล่น) และ Sink (แผงทีวี) รองรับ HDMI-CEC 2.0 HDMI-CEC 2.0 มีความสามารถในการทำงานร่วมกันที่ดีขึ้นระหว่างอุปกรณ์ HDMI, การปรับปรุง Remote Control Passthrough และการทดสอบการรับรองที่ครอบคลุมมากขึ้น โดยทั่วไปแล้ว การโต้ตอบของ HDMI-CEC 2.0 กับอุปกรณ์อื่นๆ มีประสิทธิภาพมากขึ้น ส่งผลให้การรับส่งข้อมูล HDMI-CEC น้อยลงและการโต้ตอบเร็วขึ้น

อุปกรณ์และค่ากำหนดของผู้ใช้ต้องตั้งค่าให้ใช้ HDMI-CEC 2.0 อุปกรณ์จึงจะรองรับ HDMI-CEC 2.0 ได้ การใช้งาน HAL ต้องรายงานการรองรับ HDMI-CEC 2.0 ในการเรียก IHdmiCec#getCecVersion ด้วย

การกำหนดค่า CEC

คุณสามารถกำหนดค่าลักษณะการทำงานของ HDMI-CEC ได้ทั้งในเวลาบิลด์ (โดย OEM ที่ใช้ RRO) และรันไทม์ (โดย HdmiControlManager @SystemApi)

ตัวอย่างการตั้งค่า HDMI-CEC

การตั้งค่า ตัวเลือก
เปิดหรือปิดใช้ HDMI-CEC เปิด
ปิด
ขอบเขตของข้อความการควบคุมการเปิด-ปิด HDMI-CEC ที่อุปกรณ์เล่นส่ง ส่งไปยังทีวีเท่านั้น
ส่งไปยังทีวีและระบบเสียง
ออกอากาศ
ไม่มี

แอปสามารถค้นหาการตั้งค่าแต่ละรายการที่มีอยู่และตัวเลือกที่อนุญาตในรันไทม์