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

มาตรฐาน High-Definition Multimedia Interface Consumer Electronics Control (HDMI-CEC) ช่วยให้ผลิตภัณฑ์อิเล็กทรอนิกส์สำหรับผู้บริโภคแบบมัลติมีเดียสื่อสารและแลกเปลี่ยนข้อมูลกันได้ HDMI-CEC รองรับฟีเจอร์มากมาย เช่น การส่งผ่านรีโมตคอนโทรลและการควบคุมเสียงของระบบ แต่ฟีเจอร์ที่ได้รับความนิยมมากที่สุดอย่างหนึ่งคือ 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 บริการของระบบ เช่น บริการจัดการอินพุตทีวีและบริการเสียงจะใช้บริการดังกล่าวได้โดยตรง
  • บริการนี้ออกแบบมาเพื่อโฮสต์อุปกรณ์ตรรกะได้มากกว่า 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

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

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