מצב מקרן קול דינמי

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

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

הדרישות

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

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

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

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

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

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

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

מומלץ להשתמש בתפריט Display & Sound (תצוגה וסאונד) כמיקום של הגדרת המשתמש להפעלה או להשבתה של ARC, כפי שמתואר בקטע הטמעת SysUI.

הטמעת המסגרת

ההטמעה של הפונקציונליות של soundbar ב-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.
  • הפעלה של הקצאת כתובות לוגיות כדי להוסיף או להסיר את התקן האודיו המקומי.
  • יש לוודא שמצב ההגדרה נשמר, אם המכשיר מחובר לחשמל.

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

    /**
     * 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

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

הטמעה במכשיר

כדי לתמוך בתכונה של מקרן הקול במכשיר:

  1. פותחים את מכשיר ההפעלה ב-Android מגרסה 14.
  2. הטמעת יציאת HDMI ARC בנהג.
  3. משאירים את ערכי RRO של config_cecSoundbarModeEnabled_default ו-config_cecSoundbarModeDisabled_default ללא שינוי ב-config.xml כדי שהתכונה תישאר מושבתת כברירת מחדל.

  4. מוודאים שיש במכשיר רמקולים מובנים או מחוברים להפעלת האודיו, ועורכים את הגדרת מדיניות האודיו.

  5. כדי לציין שיש תמיכה ב-ARC, מגדירים את מאפיין המערכת persist.sys.hdmi.property_arc_support לערך true.

  6. חושפים את ההגדרה כדי להחליף את מצב ה-Soundbar בממשק המשתמש של המערכת.

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

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

הטמעת SysUI

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

dsm_audio_output

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

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

dsm_ui_disable_arc

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

כשההגדרה HDMI-CEC מופעלת, המשתמש יכול להשתמש בהגדרה ARC בקטע פלט אודיו כדי להפעיל ולכבות את ה-DSM. כדי להפעיל את DSM, המשתמש פועל לפי התהליך בממשק המשתמש שמפורט בטבלה 3. כדי להפעיל את מצב מקרן הקול בתהליך הבא של ממשק המשתמש, המשתמש בוחר רמקול בית, בוחר את ההגדרה ARC ומאשר אותה. כדי להשבית את DSM, המשתמש משבית את ההגדרה ARC.

dsm_ui_enable_arc

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

אימות

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

אימות ידני

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

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

אימות CTS

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

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

במאמר בדיקות CTS של CEC למכשירי Android TV מוסבר איך מריצים את בדיקות Android CTS ל-HDMI CEC.