บริการควบคุม HDMI-CEC

มาตรฐาน 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 ที่ง่ายกว่า

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

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

การใช้งาน

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

แอปจะค้นหาการตั้งค่าแต่ละรายการที่พร้อมใช้งานในปัจจุบันและตัวเลือกที่อนุญาตได้ในขณะรันไทม์