โหมดซาวด์บาร์แบบไดนามิก

การสนับสนุนเฟรมเวิร์ก 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 ของระบบเพื่อระบุอินเทอร์เฟซที่จำเป็นสำหรับข้อมูลจากผู้ใช้

การติดตั้งใช้งานอุปกรณ์

วิธีรองรับฟีเจอร์ซาวด์บาร์ในอุปกรณ์

  1. เปิดอุปกรณ์การเล่นใน Android 14
  2. ติดตั้งพอร์ต HDMI ARC ในไดรเวอร์
  3. ปล่อยค่า RRO ของ config_cecSoundbarModeEnabled_default และ config_cecSoundbarModeDisabled_default ไว้เหมือนเดิมใน config.xml เพื่อให้ฟีเจอร์ยังคงปิดอยู่โดยค่าเริ่มต้น

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

  5. ตั้งค่าพร็อพเพอร์ตี้ของระบบ persist.sys.hdmi.property_arc_support เป็น true เพื่อระบุว่ารองรับ ARC

  6. แสดงการตั้งค่าเพื่อสลับโหมดซาวด์บาร์ในUI ของระบบ

  7. สำหรับการแก้ไขข้อบกพร่อง ให้ใช้คำสั่ง adb ต่อไปนี้เพื่อเปิดหรือปิดฟีเจอร์ซาวด์บาร์ (1 สำหรับเปิดและ 0 สำหรับปิด)

adb shell cmd hdmi_control cec_setting set soundbar_mode <1/0>

การใช้งาน SysUI

ส่วนนี้จะอธิบายขั้นตอนจำลอง UI ที่แนะนำสำหรับการเปิดและปิด DSM การตั้งค่าเอาต์พุตเสียงอยู่ในเมนูการแสดงผลและเสียง ดังที่แสดงในรูปที่ 1

dsm_audio_output

รูปที่ 1 การตั้งค่าเอาต์พุตเสียงในเมนูการแสดงผลและเสียง

คุณต้องเปิดการตั้งค่าเปิดใช้ HDMI-CEC เพื่อให้ DSM ทำงานได้ การตั้งค่า ARC จะเปิดใช้ได้ก็ต่อเมื่อเปิดใช้ HDMI-CEC เท่านั้น การตั้งค่า ARC จะใช้งานไม่ได้และปิดอยู่หากปิดใช้ HDMI-CEC ดังที่แสดงในรูปที่ 2 ในขั้นตอนการนำทาง UI ต่อไปนี้ เมื่อผู้ใช้ปิดการตั้งค่าเปิดใช้ HDMI-CEC ในเมนูจอแสดงผลและเสียง แล้วเลือกลำโพงในบ้าน ระบบจะปิดใช้การตั้งค่า ARC ผู้ใช้สามารถเปิดใช้การตั้งค่าเล่นเสียงจากทีวีได้ด้วยการเปิดใช้ HDMI-CEC

dsm_ui_disable_arc

รูปที่ 2 UI สําหรับตัวเลือก ARC ที่ปิดใช้

เมื่อเปิดใช้การตั้งค่า HDMI-CEC ผู้ใช้จะใช้การตั้งค่า ARC ในส่วนเอาต์พุตเสียงเพื่อเปิดและปิด DSM ได้ หากต้องการเปิด DSM ผู้ใช้จะต้องทำตามขั้นตอนใน UI ของรูปที่ 3 ในขั้นตอน UI ต่อไปนี้ ผู้ใช้เลือกลำโพง Home แล้วเลือกและยืนยันการตั้งค่า ARC เพื่อเปิดใช้โหมดซาวด์บาร์ หากต้องการปิด DSM ผู้ใช้จะต้องปิดการตั้งค่า ARC

dsm_ui_enable_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