การสนับสนุนเฟรมเวิร์ก Android 14 ช่วยให้ OEM กำหนดค่ากล่องรับสัญญาณ (STB) และอุปกรณ์ Over The Top (OTT) ที่มีลำโพงในตัวหรือเชื่อมต่อเป็นซาวด์บาร์สำหรับอุปกรณ์ที่เชื่อมต่อได้ โหมดซาวด์บาร์แบบไดนามิก (DSM) ใน Android 14 รองรับแอตทริบิวต์การควบคุมอิเล็กทรอนิกส์สำหรับผู้ใช้ HDMI (CEC) สำหรับซาวด์บาร์ เช่น ช่องส่งเสียง (ARC) และการควบคุมเสียงของระบบ
ฟีเจอร์นี้กำหนดเป้าหมายไปยังอุปกรณ์การเล่น CEC ของ Android TV เท่านั้น
ข้อกำหนด
หากต้องการใช้ฟีเจอร์ซาวด์บาร์ OEM จะต้องปฏิบัติตามข้อกำหนดของอุปกรณ์และ UI ของระบบที่ระบุไว้ในส่วนนี้
ข้อกำหนดของอุปกรณ์
อุปกรณ์ STB หรือ OTT ต้องเป็นไปตามข้อกำหนดต่อไปนี้จึงจะรองรับ DSM ได้
- อุปกรณ์ต้องใช้ Android 14
- เมื่อเปิดใช้ DSM อุปกรณ์ต้องทํางานเหมือนซาวด์บาร์ตามข้อกําหนด HDMI CEC เช่น ARC
- อุปกรณ์ต้องเล่นเสียงในลำโพงในตัวหรือลำโพงที่เชื่อมต่อได้
- เมื่ออุปกรณ์ไม่ใช่แหล่งที่มาที่ใช้งานอยู่ สื่อทั้งหมดต้องหยุดชั่วคราวในอุปกรณ์ ซึ่งจะจำกัดการใช้พลังงาน
ข้อกำหนดของ UI ของระบบ
หากต้องการรองรับ DSM OEM จะต้องปฏิบัติตามข้อกำหนดต่อไปนี้ขณะออกแบบ UI ของระบบ
- ป้ายกำกับ UI ต้องมีการอ้างอิงถึง ARC หรือ Audio Return Channel (ARC)
- UI ต้องแจ้งให้ผู้ใช้เชื่อมต่ออุปกรณ์กับพอร์ต ARC ของทีวีเพื่อสร้างการเชื่อมต่อ ARC
- UI ต้องแจ้งให้ผู้ใช้ทราบว่าฟีเจอร์อาจไม่ทำงานตามที่คาดไว้หากมีการเชื่อมต่อซาวด์บาร์หรือรีซีฟเวอร์สัญญาณเสียงและวิดีโอ (AVR) เครื่องอื่นในเครือข่าย HDMI
- UI ต้องแจ้งให้ผู้ใช้ทราบว่าหน้าจออาจกะพริบเมื่อสลับการตั้งค่า
- หากอุปกรณ์ไม่มีลำโพงในตัว ระบบจะต้องปิดใช้ DSM โดยค่าเริ่มต้น
แนวทางปฏิบัติแนะนำคือให้ใช้เมนูการแสดงผลและเสียงเป็นตำแหน่งสำหรับการตั้งค่าของผู้ใช้ในการเปิดใช้หรือปิดใช้ ARC ดังที่แสดงในการใช้งาน SysUI
การนำเฟรมเวิร์กไปใช้งาน
การใช้งานฟังก์ชันการทำงานของซาวด์บาร์ CEC และการกําหนดที่อยู่แบบไดนามิกของที่อยู่เชิงตรรกะ 5 อยู่ในเฟรมเวิร์ก Android เฟรมเวิร์กจะจัดสรรที่อยู่เชิงตรรกะเมื่อเปิดใช้การตั้งค่าซาวด์บาร์เพื่อให้อุปกรณ์เปลี่ยนเป็นซาวด์บาร์แบบไดนามิก เมื่อปิดใช้การตั้งค่าซาวด์บาร์ เฟรมเวิร์กจะยกเลิกการจัดสรรที่อยู่เชิงตรรกะ
HdmiControlManager
ตั้งค่า CEC_SETTING_NAME_SOUNDBAR_MODE
เป็น SOUNDBAR_MODE_ENABLED
หรือ SOUNDBAR_MODE_DISABLED
ตามข้อมูลที่ผู้ใช้ป้อนใน UI ของระบบ ค่าเริ่มต้นของ CEC_SETTING_NAME_SOUNDBAR_MODE
ตั้งไว้เป็น SOUNDBAR_MODE_DISABLED
HdmiControlService
จะคอยฟังการเปลี่ยนแปลงในCEC_SETTING_NAME_SOUNDBAR_MODE
การตั้งค่าเพื่อทำสิ่งต่อไปนี้
- ตรวจสอบว่ามีอุปกรณ์การเล่นในเครื่องและรองรับพร็อพเพอร์ตี้ ARC หรือไม่
- ทริกเกอร์การจัดสรรที่อยู่เชิงตรรกะเพื่อเพิ่มหรือนำอุปกรณ์เสียงภายในออก
- ตรวจสอบว่าสถานะของการตั้งค่าได้รับการเก็บรักษาไว้ หากมีการเสียบปลั๊กอุปกรณ์
ดูตัวอย่างประกาศต่อไปนี้เพื่อตั้งค่าและดูสถานะของโหมดซาวด์บาร์
/**
* Name of a setting deciding whether the Soundbar mode feature is enabled.
* Before exposing this setting make sure the hardware supports it, otherwise, you may
* experience multiple issues.
*
* @see HdmiControlManager#setSoundbarMode(int)
*/
public static final String CEC_SETTING_NAME_SOUNDBAR_MODE = "soundbar_mode";
/**
* Soundbar mode feature enabled.
*/
public static final int SOUNDBAR_MODE_ENABLED = 1;
/**
* Soundbar mode feature disabled.
*/
public static final int SOUNDBAR_MODE_DISABLED = 0;
/**
* Set the status of Soundbar mode feature.
*
* This allows to enable/disable Soundbar mode on the playback device.
* The setting's effect will be available on devices where the hardware supports this feature.
* If enabled, an audio system local device will be allocated and try to establish an ARC
* connection with the TV. If disabled, the ARC connection will be terminated and the audio
* system local device will be removed from the network.
*/
public void setSoundbarMode(@SoundbarMode int value) {
}
/**
* Get the current status of Soundbar mode feature.
*
* Reflects whether Soundbar mode is currently enabled on the playback device.
* If enabled, an audio system local device will be allocated and try to establish an ARC
* connection with the TV. If disabled, the ARC connection will be terminated and the audio
* system local device will be removed from the network.
*/
public int getSoundbarMode() {}
การใช้งาน OEM
หากต้องการรองรับฟีเจอร์ซาวด์บาร์แบบไดนามิก OEM จะต้องตรวจสอบว่าฮาร์ดแวร์รองรับฟีเจอร์ดังกล่าว OEM ต้องกำหนดค่าอุปกรณ์และใช้ UI ของระบบเพื่อระบุอินเทอร์เฟซที่จำเป็นสำหรับข้อมูลจากผู้ใช้
การติดตั้งใช้งานอุปกรณ์
วิธีรองรับฟีเจอร์ซาวด์บาร์ในอุปกรณ์
- เปิดอุปกรณ์การเล่นใน Android 14
- ติดตั้งพอร์ต HDMI ARC ในไดรเวอร์
ปล่อยค่า RRO ของ
config_cecSoundbarModeEnabled_default
และconfig_cecSoundbarModeDisabled_default
ไว้เหมือนเดิมในconfig.xml
เพื่อให้ฟีเจอร์ยังคงปิดอยู่โดยค่าเริ่มต้นตรวจสอบว่าอุปกรณ์มีลำโพงในตัวหรือเชื่อมต่อไว้เพื่อเปิดเสียง และแก้ไขการกำหนดค่านโยบายเสียง
ตั้งค่าพร็อพเพอร์ตี้ของระบบ
persist.sys.hdmi.property_arc_support
เป็นtrue
เพื่อระบุว่ารองรับ ARCแสดงการตั้งค่าเพื่อสลับโหมดซาวด์บาร์ในUI ของระบบ
สำหรับการแก้ไขข้อบกพร่อง ให้ใช้คำสั่ง
adb
ต่อไปนี้เพื่อเปิดหรือปิดฟีเจอร์ซาวด์บาร์ (1
สำหรับเปิดและ0
สำหรับปิด)
adb shell cmd hdmi_control cec_setting set soundbar_mode <1/0>
การใช้งาน SysUI
ส่วนนี้จะอธิบายขั้นตอนจำลอง UI ที่แนะนำสำหรับการเปิดและปิด DSM การตั้งค่าเอาต์พุตเสียงอยู่ในเมนูการแสดงผลและเสียง ดังที่แสดงในรูปที่ 1
รูปที่ 1 การตั้งค่าเอาต์พุตเสียงในเมนูการแสดงผลและเสียง
คุณต้องเปิดการตั้งค่าเปิดใช้ HDMI-CEC เพื่อให้ DSM ทำงานได้ การตั้งค่า ARC จะเปิดใช้ได้ก็ต่อเมื่อเปิดใช้ HDMI-CEC เท่านั้น การตั้งค่า ARC จะใช้งานไม่ได้และปิดอยู่หากปิดใช้ HDMI-CEC ดังที่แสดงในรูปที่ 2 ในขั้นตอนการนำทาง UI ต่อไปนี้ เมื่อผู้ใช้ปิดการตั้งค่าเปิดใช้ HDMI-CEC ในเมนูจอแสดงผลและเสียง แล้วเลือกลำโพงในบ้าน ระบบจะปิดใช้การตั้งค่า ARC ผู้ใช้สามารถเปิดใช้การตั้งค่าเล่นเสียงจากทีวีได้ด้วยการเปิดใช้ HDMI-CEC
รูปที่ 2 UI สําหรับตัวเลือก ARC ที่ปิดใช้
เมื่อเปิดใช้การตั้งค่า HDMI-CEC ผู้ใช้จะใช้การตั้งค่า ARC ในส่วนเอาต์พุตเสียงเพื่อเปิดและปิด DSM ได้ หากต้องการเปิด DSM ผู้ใช้จะต้องทำตามขั้นตอนใน UI ของรูปที่ 3 ในขั้นตอน UI ต่อไปนี้ ผู้ใช้เลือกลำโพง Home แล้วเลือกและยืนยันการตั้งค่า ARC เพื่อเปิดใช้โหมดซาวด์บาร์ หากต้องการปิด DSM ผู้ใช้จะต้องปิดการตั้งค่า ARC
รูปที่ 3 UI เพื่อเปิดใช้ DSM
การตรวจสอบความถูกต้อง
OEM สามารถทำการทดสอบเสียงเพื่อให้แน่ใจว่าลำโพงของอุปกรณ์การเล่นจะเล่นเสียงที่มาจากทีวีหรือจากอุปกรณ์อื่นๆ ที่เชื่อมต่อกับแผงทีวี
การตรวจสอบด้วยตนเอง
ใช้สถานการณ์ต่อไปนี้เพื่อตรวจสอบลักษณะการทำงานที่คาดไว้ด้วยตนเอง
- การตั้งค่า ARC เปิดใช้อยู่โดยทำดังนี้
- ทีวีปิดเสียงเอง
- ระบบจะส่งเสียงของทีวีไปยังลำโพงของอุปกรณ์
- การตั้งค่า ARC ปิดใช้อยู่ในกรณีต่อไปนี้
- ทีวีจะหยุดส่งเสียงไปยังอุปกรณ์
- ทีวีเริ่มเล่นเสียง
- ระบบจะเปิดใช้การตั้งค่า ARC และอุปกรณ์เชื่อมต่ออยู่กับพอร์ตที่ไม่ใช่ ARC ไปยังทีวี โดยทำดังนี้
- อุปกรณ์ไม่เล่นเสียงของทีวี
- การตั้งค่า ARC จะเปิดใช้อยู่และมีอุปกรณ์อื่นใช้ที่อยู่เชิงตรรกะ 5 ก่อนที่จะเชื่อมต่ออุปกรณ์ ดังนี้
- อุปกรณ์ทํางานเหมือนอุปกรณ์เล่นเสียงล้วนๆ ไม่ใช่ซาวด์บาร์
- เปิดใช้การตั้งค่า ARC อยู่ อุปกรณ์ใช้ที่อยู่เชิงตรรกะ 5 อยู่ และมีการเชื่อมต่อระบบเสียงอื่นในเครือข่าย ดังนี้
- ลักษณะการทำงานของซาวด์บาร์ของอุปกรณ์ไม่มีการเปลี่ยนแปลง
- การตั้งค่า ARC เปิดใช้งานอยู่ อุปกรณ์ที่เชื่อมต่อกับพอร์ตที่ไม่ใช่ ARC ใช้ที่อยู่เชิงตรรกะ 5 และระบบเสียงอื่นเชื่อมต่อกับพอร์ต ARC อยู่ ให้ทำดังนี้
- การเชื่อมต่อ ARC กับทีวีสำหรับระบบเสียงที่ 2 ไม่สำเร็จเนื่องจากใช้ที่อยู่เชิงตรรกะที่ไม่ได้ลงทะเบียน
- การตั้งค่า ARC เปิดใช้งานอยู่ และอุปกรณ์เป็นแบบฮอตปลั๊ก
- อุปกรณ์จะทำงานตามปกติเหมือนตอนที่เปิดใช้การตั้งค่า
การตรวจสอบ CTS
CtsHdmiCecHostTestCases
ต้องผ่านเมื่อปิดใช้การตั้งค่าซาวด์บาร์ การทดสอบ HdmiCecSoundbarModeTest.java
ในชุดทดสอบ CtsHdmiCecHostTestCases
จะทดสอบฟังก์ชันการทำงานของ DSM
แม้ว่าจะไม่ใช่ข้อกำหนดในการรับรอง แต่ให้เรียกใช้ CtsHdmiCecHostTestCases
โดยเปิดใช้การตั้งค่าซาวด์บาร์เพื่อตรวจสอบการติดตั้งใช้งาน
ดูการทดสอบ CEC CTS สำหรับอุปกรณ์ Android TV เพื่อเรียกใช้การทดสอบ Android CTS สำหรับ HDMI CEC