บริการควบคุม 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 ในรูปแบบต่างๆ ดังนั้นอุปกรณ์จึงไม่เข้าใจกันเสมอไป และคุณลักษณะที่รองรับจะแตกต่างกันไปตามแต่ละอุปกรณ์ เนื่องจากความแปรปรวนนี้ ผู้บริโภคจึงไม่สามารถสรุปได้อย่างปลอดภัยว่าผลิตภัณฑ์สองรายการที่อ้างว่าสนับสนุน 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), Audio service และ Power service เพื่อใช้งานคุณสมบัติต่างๆ ที่มาตรฐานกำหนด

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

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

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

การดำเนินการ

ดูไดอะแกรมต่อไปนี้สำหรับมุมมองโดยละเอียดของบริการควบคุม HDMI

ภาพที่แสดงให้เห็นว่ารายละเอียดการบริการควบคุม HDMI

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

นี่คือส่วนผสมหลักในการใช้งาน Android HDMI-CEC ที่เหมาะสม:

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

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 และเหตุการณ์ 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 (เล่น) และซิงก์ (แผงทีวี) รองรับ 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 ที่ส่งโดยอุปกรณ์เล่น ไปยังทีวีเท่านั้น
ไปยังทีวีและเครื่องเสียง
ออกอากาศ
ไม่มี

สำหรับแต่ละการตั้งค่าที่มีอยู่และตัวเลือกที่อนุญาตสามารถสอบถามโดยแอพในขณะใช้งาน