มาตรฐาน 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 นั้นเข้ากันได้อย่างสมบูรณ์
การรองรับ 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 hardware abstraction layer (HAL) ที่ง่ายกว่า
การนำไปปฏิบัติ
ดูแผนภาพต่อไปนี้สำหรับมุมมองโดยละเอียดของบริการควบคุม HDMI
ต่อไปนี้เป็นองค์ประกอบสำคัญในการใช้งาน Android HDMI-CEC ที่เหมาะสม:
- คลาสผู้จัดการ
HdmiControlManager
มอบแอปที่มีสิทธิพิเศษด้วย API บริการของระบบ เช่น บริการ TV Input Manager และบริการเสียง สามารถใช้บริการได้โดยตรง - บริการนี้ได้รับการออกแบบเพื่อให้สามารถโฮสต์อุปกรณ์ลอจิคัลได้มากกว่าหนึ่งประเภท
- 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
ผู้ผลิตอุปกรณ์จำเป็นต้องตั้ง ro.hdmi.device_type
ใน device.mk
เพื่อให้ HdmiControlService
ทำงานได้อย่างถูกต้อง ทั้งนี้ขึ้นอยู่กับว่าอุปกรณ์ของคุณเป็นอุปกรณ์ HDMI sink หรืออุปกรณ์ต้นทาง 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)
ซึ่งสามารถออกคำสั่ง One Touch Play ให้กลายเป็นแหล่งสัญญาณที่ใช้งานอยู่และ 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-CEC2.0
อุปกรณ์ต้นทาง Android (การเล่น) และ 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 ที่ส่งโดยอุปกรณ์เล่นภาพ | ไปยังทีวีเท่านั้น ไปยังทีวีและระบบเครื่องเสียง ออกอากาศ ไม่มี |
สำหรับการตั้งค่าแต่ละรายการที่มีอยู่ในปัจจุบันและแอปสามารถสอบถามตัวเลือกที่อนุญาตได้ในขณะใช้งาน