มาตรฐาน High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) ช่วยให้ผลิตภัณฑ์มัลติมีเดียสำหรับผู้บริโภคสื่อสารและ แลกเปลี่ยนข้อมูลกันได้ HDMI-CEC รองรับฟีเจอร์มากมาย เช่น การส่งผ่านรีโมตคอนโทรลและการควบคุมเสียงของระบบ แต่ฟีเจอร์ที่ได้รับความนิยมมากที่สุดอย่างหนึ่ง คือการเล่นด้วยการแตะเพียงครั้งเดียว การเล่นด้วยการแตะเพียงครั้งเดียวช่วยให้อุปกรณ์แหล่งที่มาของสื่อเปิดทีวีและ เปลี่ยนพอร์ตอินพุตโดยอัตโนมัติ คุณจึงไม่ต้องค้นหารีโมตทีวี เพื่อเปลี่ยนจาก Chromecast ไปยังเครื่องเล่น Blu-ray
ใน Android 12 การควบคุมการเปิด/ปิดจอแสดงผลที่เชื่อมต่อ HDMI จะสอดคล้องกับการควบคุมการเปิด/ปิดจอแสดงผลภายใน เมื่ออุปกรณ์เล่น HDMI ตื่นขึ้นมา อุปกรณ์จะพยายาม ปลุกทีวีที่เชื่อมต่อและกลายเป็นแหล่งที่มาที่ใช้งานอยู่ปัจจุบันผ่านการเล่นด้วยการแตะเพียงครั้งเดียวของ HDMI CEC หากอุปกรณ์เข้าสู่โหมดสลีปขณะเป็นแหล่งที่มาที่ใช้งานอยู่ ระบบจะพยายามปิดทีวีที่เชื่อมต่อ
โดยทั่วไปแล้วการรองรับ 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 แก่แอปที่มีสิทธิ์ บริการของระบบ เช่น บริการ TV Input Manager และบริการเสียง สามารถใช้บริการได้โดยตรง - บริการนี้ออกแบบมาเพื่อให้โฮสต์อุปกรณ์เชิงตรรกะได้มากกว่า 1 ประเภท
- HDMI-CEC เชื่อมต่อกับฮาร์ดแวร์ผ่าน Hardware Abstraction Layer (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 เช่น อุปกรณ์ Over the Top (OTT) หรือ Set-top box (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
ขณะนี้ระบบยังไม่รองรับอุปกรณ์ประเภทอื่นๆ (จูนเนอร์และเครื่องบันทึก)
HAL ของ HDMI-CEC
API ของ HAL สำหรับ HDMI-CEC ช่วยให้ 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 ตาม เอกสารประกอบ 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 ต้องรายงานการรองรับ HDMI-CEC 2.0
ในการเรียกใช้ IHdmiCec#getCecVersion
ด้วย
การกำหนดค่า CEC
คุณกำหนดค่าลักษณะการทำงานของ HDMI-CEC ได้ทั้งในเวลาบิลด์ (โดย OEM ที่ใช้ RRO) และรันไทม์
(โดย HdmiControlManager
@SystemApi)
ตัวอย่างการตั้งค่า HDMI-CEC
การเกริ่นนำ | ตัวเลือก |
---|---|
เปิดใช้หรือปิดใช้ HDMI-CEC หรือไม่ | เปิดใช้ ปิดใช้ |
ขอบเขตของข้อความควบคุมการเปิด/ปิด HDMI-CEC ที่ส่งโดยอุปกรณ์การเล่น | ทีวีเท่านั้น ทีวีและระบบเสียง ออกอากาศ ไม่มี |
แอปจะค้นหาการตั้งค่าแต่ละรายการที่พร้อมใช้งานในปัจจุบันและตัวเลือกที่อนุญาตได้ในขณะรันไทม์