มาตรฐาน High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) ช่วยให้ผลิตภัณฑ์อิเล็กทรอนิกส์สำหรับผู้บริโภคแบบมัลติมีเดียสื่อสารและแลกเปลี่ยนข้อมูลกันได้ HDMI-CEC รองรับฟีเจอร์มากมาย เช่น การส่งผ่านรีโมตคอนโทรลและการควบคุมเสียงของระบบ แต่ฟีเจอร์ที่ได้รับความนิยมมากที่สุดอย่างหนึ่งคือการเล่นด้วยการแตะครั้งเดียว ฟีเจอร์เล่นด้วยการแตะครั้งเดียวช่วยให้อุปกรณ์แหล่งที่มาของสื่อเปิดทีวีและสลับพอร์ตอินพุตโดยอัตโนมัติ คุณจึงไม่ต้องค้นหารีโมตทีวีเพื่อสลับจาก 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
เพื่อบรรเทาปัญหาเหล่านี้
การเสนอ HdmiControlService
เป็นส่วนหนึ่งของระบบนิเวศ Android จะช่วยให้ Android มอบสิ่งต่อไปนี้ได้
- การใช้งาน HDMI-CEC มาตรฐานสำหรับผู้ผลิตทุกราย ซึ่งจะช่วยลดการใช้งานอุปกรณ์ที่เข้ากันไม่ได้ ก่อนหน้านี้ ผู้ผลิตต้องพัฒนาการใช้งาน HDMI-CEC ของตนเองหรือใช้โซลูชันของบุคคลที่สาม
- บริการที่ได้รับการทดสอบอย่างละเอียดกับอุปกรณ์ HDMI-CEC จำนวนมากในตลาดแล้ว Android ดำเนินการวิจัยอย่างละเอียดเกี่ยวกับปัญหาความเข้ากันได้ที่พบในผลิตภัณฑ์ต่างๆ และรวบรวมคำแนะนำที่เป็นประโยชน์จากผู้ติดตั้งใช้งานอุปกรณ์ที่มีประสบการณ์ด้านเทคโนโลยี บริการ CEC ออกแบบมาเพื่อรักษาสมดุลที่เหมาะสมระหว่างมาตรฐานและการแก้ไขมาตรฐานดังกล่าวเพื่อให้ทำงานร่วมกับผลิตภัณฑ์ที่ผู้คนใช้อยู่แล้วได้
การออกแบบโดยรวม
HdmiControlService
เชื่อมต่อกับระบบส่วนอื่นๆ เช่น TV Input Framework (TIF), บริการเสียง และบริการจ่ายไฟ เพื่อใช้ฟีเจอร์ต่างๆ ที่มาตรฐานระบุ
ดูภาพแผนภาพต่อไปนี้เพื่อดูภาพการเปลี่ยนจากตัวควบคุม CEC ที่กําหนดเองไปใช้เลเยอร์การแยกแยะฮาร์ดแวร์ HDMI-CEC (HAL) ที่ง่ายขึ้น

รูปที่ 1 บริการควบคุม 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 หรืออุปกรณ์ต้นทาง HDMI
สำหรับอุปกรณ์แหล่งที่มาของ HDMI เช่น อุปกรณ์ Over The Top (OTT) หรือ Set-top box (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)
ซึ่งสามารถออกคำสั่งเล่นด้วยการแตะครั้งเดียวเพื่อเป็นแหล่งที่มาที่ใช้งานอยู่ และ Audio System (5)
ซึ่งจัดการโหมดเสียงของระบบและ ARC
ขณะนี้ระบบยังไม่รองรับอุปกรณ์ประเภทอื่นๆ (จูนเนอร์และเครื่องบันทึกเสียง)
HDMI-CEC HAL
HDMI-CEC HAL API ช่วยให้ HdmiControlService
ใช้ประโยชน์จากทรัพยากรฮาร์ดแวร์เพื่อส่ง/รับคําสั่ง HDMI-CEC กําหนดการตั้งค่าที่จําเป็น และ (ไม่บังคับ) สื่อสารกับไมโครโปรเซสเซอร์ในแพลตฟอร์มพื้นฐานที่จะควบคุม CEC แทนขณะที่ระบบ Android อยู่ในโหมดสแตนด์บาย
เวอร์ชัน | ฟีเจอร์ | ไฟล์ HAL |
---|---|---|
1.0 | กําหนดค่าข้อมูล 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 ตาม เอกสารประกอบ HDMI-CEC CTS
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 ได้ทั้งในช่วงที่สร้าง (โดย OEM ที่ใช้ RRO) และรันไทม์ (โดย HdmiControlManager
@SystemApi)
ตัวอย่างการตั้งค่า HDMI-CEC
การเกริ่นนำ | ตัวเลือก |
---|---|
เปิดใช้หรือปิดใช้ HDMI-CEC | เปิดใช้ ปิดใช้ |
ขอบเขตของข้อความควบคุมการเปิด/ปิด HDMI-CEC ที่ส่งโดยอุปกรณ์การเล่น | ไปยังทีวีเท่านั้น ไปยังทีวีและระบบเสียง ออกอากาศ ไม่มี |
แอปจะค้นหาตัวเลือกที่พร้อมใช้งานและได้รับอนุญาตในปัจจุบันสำหรับการตั้งค่าแต่ละรายการได้เมื่อรันไทม์