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

การควบคุมอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภคโดยใช้อินเทอร์เฟซมัลติมีเดียความละเอียดสูง (HDMI-CEC) ทำให้ผลิตภัณฑ์สำหรับผู้บริโภคที่สื่อหลากรูปแบบสามารถสื่อสารและ แลกเปลี่ยนข้อมูลระหว่างกัน HDMI-CEC รองรับฟีเจอร์หลายอย่าง เช่น Remote Control Passthrough และ System Audio Control แต่ได้รับความนิยมมากที่สุด คือ One Touch Play One Touch Play ช่วยให้อุปกรณ์แหล่งที่มาของสื่อเปิดทีวีได้ เปลี่ยนพอร์ตอินพุตโดยอัตโนมัติ คุณจึงไม่ต้องค้นหาทีวี รีโมตเพื่อสลับจาก Chromecast เป็นเครื่องเล่นบลูเรย์

สำหรับ Android 12 การควบคุมพลังงานของจอแสดงผลที่เชื่อมต่อ HDMI จะสอดคล้องกับ การควบคุมการเปิด-ปิดของจอแสดงผลภายใน เมื่ออุปกรณ์เล่น HDMI เริ่มทำงาน ระบบจะพยายาม เพื่อปลุกระบบทีวีที่เชื่อมต่ออินเทอร์เน็ตและกลายเป็นแหล่งที่มาที่ใช้งานในปัจจุบันผ่าน HDMI CEC One Touch Play หากอุปกรณ์เข้าสู่โหมดสลีปขณะที่ใช้งานแหล่งที่มาอยู่ ระบบจะพยายามปิด ทีวีที่เชื่อมต่ออินเทอร์เน็ต

โดยทั่วไปแล้วจะรองรับ HDMI-CEC หรือไม่ก็ได้ แต่ผู้ผลิตส่วนใหญ่ใช้ HDMI-CEC อุปกรณ์ของบริษัทจึงทำงานร่วมกับอุปกรณ์ของบริษัทอื่นได้ ผู้ผลิตแต่ละรายใช้ HDMI-CEC เป็นมาตรฐานเดียวกันในรูปแบบต่างๆ ทำให้อุปกรณ์ไม่มีความเข้าใจต่อกันและไม่รองรับซึ่งกันและกัน จะแตกต่างกันไปตามอุปกรณ์ และเนื่องจากความแปรปรวนนี้ ผู้บริโภคจึงไม่สามารถ สมมติว่าผลิตภัณฑ์ 2 รายการที่อ้างว่าการรองรับ CEC ทำงานร่วมกันได้โดยสมบูรณ์

การสนับสนุน HDMI-CEC 2.0 ช่วยปรับปรุงความเข้ากันได้ระหว่างอุปกรณ์ HDMI หากทั้ง การรองรับการส่งและการรับอุปกรณ์ของมาตรฐานเวอร์ชันนี้

โซลูชัน

HDMI-CEC เปิดตัวเฟรมเวิร์กอินพุต (TIF) ของ Android TV จะนำอุปกรณ์ที่เชื่อมต่อทั้งหมดมารวมกันและลดปัญหาเกี่ยวกับความเข้ากันได้ Android ได้สร้างบริการของระบบชื่อ HdmiControlService เพื่อ ช่วยลดปัญหาเหล่านี้ลงได้

ด้วยการเสนอ HdmiControlService เป็นส่วนหนึ่งของ Android Android คาดหวังที่จะนำเสนอสิ่งต่อไปนี้

  • การใช้ HDMI-CEC แบบมาตรฐานสำหรับผู้ผลิตทุกราย ช่วยลดความไม่เข้ากันของอุปกรณ์ ก่อนหน้านี้ ผู้ผลิตจะต้องพัฒนา เป็นเจ้าของ HDMI-CEC หรือใช้โซลูชันของบุคคลที่สาม
  • บริการที่ได้รับการทดสอบเป็นอย่างดีกับอุปกรณ์ HDMI-CEC จำนวนมากอยู่แล้ว ในตลาด Android ได้ทำการวิจัยเกี่ยวกับความเข้ากันได้อย่างเข้มงวด ที่พบในผลิตภัณฑ์และรวบรวมคำแนะนำที่เป็นประโยชน์จากอุปกรณ์ มากประสบการณ์ในด้านเทคโนโลยี บริการ CEC ได้รับการออกแบบมาเพื่อให้ คือการรักษาสมดุลระหว่างมาตรฐานนี้ กับการแก้ไขมาตรฐานดังกล่าว ทำงานร่วมกับผลิตภัณฑ์ที่ผู้คนใช้กันอยู่แล้ว

การออกแบบโดยรวม

HdmiControlService เชื่อมต่อกับส่วนอื่นๆ ของระบบ เช่น TV Input Framework (TIF) บริการเสียง และบริการด้านพลังงานเพื่อติดตั้งใช้งาน คุณลักษณะต่างๆ ที่มาตรฐานระบุไว้

ดูแผนภาพต่อไปนี้เพื่อดูภาพการเปลี่ยนแปลงจาก CEC ที่กําหนดเอง การปรับใช้งานฮาร์ดแวร์ HDMI-CEC ที่ง่ายขึ้น เลเยอร์ (HAL)

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

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

การใช้งาน

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

รูปภาพที่แสดงวิธีรายละเอียดของบริการการควบคุม HDMI

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

องค์ประกอบสำคัญในการใช้งาน HDMI-CEC ของ Android อย่างเหมาะสมมีดังนี้

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

ทั้งนี้ ขึ้นอยู่กับว่าอุปกรณ์ของคุณเป็นอุปกรณ์ซิงก์ HDMI หรืออุปกรณ์แหล่ง HDMI ผู้ผลิตอุปกรณ์ต้องตั้งค่า ro.hdmi.device_type ใน device.mk เพื่อให้ HdmiControlService ทำงานได้อย่างถูกต้อง

สำหรับอุปกรณ์แหล่งสัญญาณ HDMI เช่น อุปกรณ์การแพร่ภาพและเสียงผ่านโครงข่ายอินเทอร์เน็ต (Over The Top หรือ OTT) หรือกล่องรับสัญญาณ (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 ปัจจุบันระบบยังไม่รองรับอุปกรณ์ประเภทอื่น (ตัวรับสัญญาณและโปรแกรมอัดเสียง)

HAL ของ HDMI-CEC

HDMI-CEC HAL API ช่วยให้ 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 ตาม เอกสารประกอบของ HDMI-CEC CTS

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

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