มาตรฐาน 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 ที่ง่ายขึ้น
รูปที่ 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 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.halIHdmiCecCallback.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 ที่อุปกรณ์เล่นส่ง | ส่งไปยังทีวีเท่านั้น ส่งไปยังทีวีและระบบเสียง ออกอากาศ ไม่มี |
แอปสามารถค้นหาการตั้งค่าแต่ละรายการที่มีอยู่และตัวเลือกที่อนุญาตในรันไทม์