מצב דינמי של פס קול

עם תמיכה במסגרת Android 14, יצרני ציוד מקורי (OEM) יכולים להגדיר ממירים ומכשירים במודל 'ישירות ללקוח' (OTT) עם רמקולים מובנים או רמקולים מחוברים, כך שהם ישמשו כמקרני קול למכשירים מחוברים. מצב מקרן הקול הדינמי (DSM) ב-Android 14 תומך במאפיינים של HDMI CEC (שליטה בציוד אלקטרוני לצרכן) עבור מקרני קול, כמו ערוץ החזרת אודיו (ARC) ושליטה באודיו של המערכת.

התכונה הזו מיועדת רק למכשירי הפעלה עם CEC ב-Android TV.

דרישות

כדי להטמיע את תכונת ה-Soundbar, יצרני ציוד מקורי (OEM) צריכים לעמוד בדרישות המכשיר וממשק המשתמש של המערכת שמפורטות בקטע הזה.

דרישות לגבי מכשירים

כדי לתמוך ב-DSM, הממיר או מכשיר ה-OTT צריכים לעמוד בדרישות הבאות:

  • במכשיר צריכה להיות מותקנת מערכת Android מגרסה 14.
  • כשהתכונה DSM מופעלת, המכשיר צריך להתנהג כמו מקרן קול בהתאם למפרטים של HDMI CEC, כמו ARC.
  • המכשיר צריך להיות מסוגל להשמיע צליל ברמקולים מובנים או ברמקולים מחוברים.
  • כשהמכשיר לא משמש כמקור פעיל, צריך להשהות את כל המדיה במכשיר כדי לצמצם את צריכת החשמל שלו.

דרישות ממשק המשתמש של המערכת

כדי לתמוך ב-DSM, יצרני ציוד מקורי צריכים לעמוד בדרישות הבאות במהלך התכנון של ממשק המשתמש של המערכת:

  • תווית ממשק המשתמש צריכה לכלול הפניה ל-ARC או ל-Audio Return Channel (ARC).
  • בממשק המשתמש צריך להופיע מידע למשתמש על חיבור המכשיר ליציאת ה-ARC בטלוויזיה כדי ליצור את חיבור ה-ARC.
  • ממשק המשתמש צריך להודיע למשתמש שהתכונה לא תפעל כצפוי אם מחובר למערכת HDMI סאונד בר או מקלט אודיו-וידאו (AVR) אחר.
  • ממשק המשתמש צריך להודיע למשתמש שהמסך עלול להבהב כשמחליפים את ההגדרה.
  • אם למכשיר אין רמקולים מובנים, DSM חייב להיות מושבת כברירת מחדל.

מומלץ להשתמש בתפריט תצוגה וצליל כמקום שבו המשתמש יכול להפעיל או להשבית את ARC, כמו שמוצג בהטמעה של SysUI.

הטמעה של Framework

ההטמעה של הפונקציונליות של מקרן הקול CEC וההקצאה הדינמית של כתובת לוגית 5 קיימת ב-Android framework. המסגרת מקצה את הכתובת הלוגית כשההגדרה של פס הקול מופעלת, כדי שהמכשיר יהפוך לפס קול באופן דינמי. כשההגדרה של פס הקול מושבתת, המסגרת מבטלת את ההקצאה של הכתובת הלוגית.

על סמך קלט המשתמש בממשק המשתמש של המערכת, HdmiControlManager מגדיר את CEC_SETTING_NAME_SOUNDBAR_MODE ל-SOUNDBAR_MODE_ENABLED או ל-SOUNDBAR_MODE_DISABLED. ערך ברירת המחדל של CEC_SETTING_NAME_SOUNDBAR_MODE מוגדר כ-SOUNDBAR_MODE_DISABLED.

HdmiControlService מאזין לשינוי בהגדרה CEC_SETTING_NAME_SOUNDBAR_MODE כדי לבצע את הפעולות הבאות:

  • בודקים אם קיים מכשיר הפעלה מקומי ואם מאפיין ARC נתמך.
  • הפעלת הקצאה של כתובת לוגית כדי להוסיף או להסיר את מכשיר האודיו המקומי.
  • מוודאים שהמצב של ההגדרה נשמר אם המכשיר מחובר ומוסר בזמן שהמחשב פועל (hotplug).

בדוגמה הבאה מוצגות הצהרות להגדרת הסטטוס של מצב הסאונדבר ולקבלת הסטטוס:

    /**
     * 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) צריכים להגדיר את המכשיר ולהטמיע את ממשק המשתמש של המערכת כדי לספק את הממשק הנדרש לקלט של המשתמשים.

הטמעה של מכשיר

כדי לתמוך בתכונת ה-Soundbar במכשיר:

  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. הצגת ההגדרה להחלפת מצב מקרן הקול בממשק המשתמש של המערכת.

  7. לצורך ניפוי באגים, משתמשים בפקודה adb הבאה כדי להפעיל או להשבית את התכונה של פס הקול (1 להפעלה ו-0 להשבתה):

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

הטמעה של SysUI

בקטע הזה מתואר תהליך מומלץ ודמיוני של ממשק משתמש להפעלה ולהשבתה של DSM. ההגדרה פלט אודיו נמצאת בתפריט תצוגה וצליל, כמו שמוצג באיור 1:

dsm_audio_output

איור 1. הגדרת פלט אודיו בתפריט 'תצוגה ושמע'.

כדי ש-DSM יעבוד, צריך להפעיל את ההגדרה הפעלת HDMI-CEC. אפשר להפעיל את ההגדרה ARC רק אם מופעלת ההגדרה HDMI-CEC. ההגדרה ARC לא זמינה ומושבתת אם HDMI-CEC מושבת, כמו שמוצג באיור 2. בתרשים זרימת ממשק המשתמש הבא, כשהמשתמש משבית את ההגדרה הפעלת HDMI-CEC בתפריט תצוגה וצליל ובוחר באפשרות רמקול Home, ההגדרה ARC מושבתת. המשתמש יכול להפעיל את ההגדרה הפעלת אודיו של טלוויזיה על ידי הפעלת הפעלת HDMI-CEC.

dsm_ui_disable_arc

איור 2. ממשק משתמש לאפשרות ARC מושבתת.

כשההגדרה HDMI-CEC מופעלת, המשתמש יכול להשתמש בהגדרה ARC בקטע Audio output כדי להפעיל ולכבות את ה-DSM. כדי להפעיל את ה-DSM, המשתמש פועל לפי זרימת ממשק המשתמש באיור 3. בתרשים זרימת ממשק המשתמש הבא, כדי להפעיל את מצב פס הקול, המשתמש בוחר באפשרות רמקול ביתי, בוחר בהגדרה ARC ומאשר אותה. כדי להשבית את DSM, המשתמש משבית את ההגדרה ARC.

dsm_ui_enable_arc

איור 3. ממשק משתמש להפעלת DSM.

אימות

יצרני ציוד מקורי (OEM) יכולים לבצע בדיקת אודיו כדי לוודא שהרמקולים של מכשיר ההפעלה משמיעים צליל שמגיע מהטלוויזיה או ממכשירים אחרים שמחוברים למסך הטלוויזיה.

אימות ידני

כדי לאמת באופן ידני את ההתנהגות הצפויה, אפשר להשתמש בתרחישים הבאים:

  • ההגדרה ARC מופעלת:
    • הטלוויזיה מושתקת.
    • הצליל של הטלוויזיה מנותב לרמקולים של המכשיר.
  • ההגדרה ARC מושבתת:
    • הטלוויזיה מפסיקה להעביר את האודיו למכשיר.
    • האודיו מתחיל להתנגן בטלוויזיה.
  • ההגדרה ARC מופעלת והמכשיר מחובר ליציאה שאינה ARC בטלוויזיה:
    • הסאונד של הטלוויזיה לא מושמע במכשיר.
  • ההגדרה ARC מופעלת וכתובת לוגית 5 נמצאת בשימוש על ידי מכשיר אחר לפני שהמכשיר מחובר:
    • המכשיר מתנהג כמו מכשיר הפעלה בלבד, ולא כמו מקרן קול.
  • ההגדרה ARC מופעלת, כתובת לוגית 5 נמצאת בשימוש על ידי המכשיר, ו מערכת אודיו אחרת מחוברת לרשת:
    • לא יהיה שינוי בהתנהגות של מקרן הקול במכשיר.
  • ההגדרה ARC מופעלת, כתובת לוגית 5 נמצאת בשימוש על ידי המכשיר שמחובר ליציאה שאינה ARC, ומערכת אודיו אחרת מחוברת ליציאת ה-ARC:
    • חיבור ה-ARC לא נוצר עם הטלוויזיה עבור מערכת האודיו השנייה כי נעשה בה שימוש בכתובת לוגית לא רשומה.
  • ההגדרה ARC מופעלת, והמכשיר מחובר בחיבור חם:
    • המכשיר יתנהג כרגיל, כמו כשההגדרה מופעלת.

אימות CTS

CtsHdmiCecHostTestCases חובה להעביר את הבדיקה כשההגדרה של מקרן הקול מושבתת. הבדיקה HdmiCecSoundbarModeTest.java בחבילת הבדיקות CtsHdmiCecHostTestCases בודקת את הפונקציות של DSM.

למרות שזה לא נדרש לאישור, מומלץ להריץ את CtsHdmiCecHostTestCases עם ההגדרה של פס הקול מופעלת כדי לאמת את ההטמעה.

כדי להריץ את בדיקות ה-CTS של Android ל-HDMI CEC, אפשר לעיין במאמר בנושא בדיקות CEC CTS למכשירי Android TV.