डाइनैमिक साउंडबार मोड

Android 14 फ़्रेमवर्क के साथ, OEM, सेट-टॉप बॉक्स (एसटीबी) और ओवर-द-टॉप (ओटीटी) डिवाइसों को कॉन्फ़िगर कर सकते हैं. इनमें बिल्ट-इन या कनेक्ट किए गए स्पीकर को कनेक्ट किए गए डिवाइसों के लिए साउंडबार के तौर पर कॉन्फ़िगर किया जा सकता है. Android 14 में डाइनैमिक साउंडबार मोड (डीएसएम), साउंडबार के लिए एचडीएमआई कंज्यूमर इलेक्ट्रॉनिक्स कंट्रोल (सीईसी) एट्रिब्यूट के साथ काम करता है. जैसे, ऑडियो रिटर्न चैनल (एआरसी) और सिस्टम ऑडियो कंट्रोल.

यह सुविधा सिर्फ़ Android TV CEC वाले प्लेबैक डिवाइसों को टारगेट करती है.

ज़रूरी शर्तें

साउंडबार की सुविधा इस्तेमाल करने के लिए, OEM को इस सेक्शन में दी गई डिवाइस और सिस्टम यूज़र इंटरफ़ेस की ज़रूरी शर्तें पूरी करनी होंगी.

डिवाइस की ज़रूरी शर्तें

डीएसएम की सुविधा के साथ काम करने के लिए, एसटीबी या ओटीटी डिवाइस को ये शर्तें पूरी करनी होंगी:

  • आपके डिवाइस पर Android 14 होना चाहिए.
  • डीएसएम चालू होने पर, डिवाइस को साउंडबार की तरह काम करना चाहिए. इसके लिए, डिवाइस को एचडीएमआई सीईसी की खास बातों का पालन करना होगा. जैसे, एआरसी.
  • डिवाइस में पहले से मौजूद या कनेक्ट किए गए स्पीकर पर आवाज़ चलनी चाहिए.
  • जब डिवाइस कोई चालू सोर्स नहीं होता, तो उस पर मौजूद सभी मीडिया को रोक दिया जाना चाहिए. इससे डिवाइस की बैटरी खर्च होने की दर कम हो जाती है.

सिस्टम यूज़र इंटरफ़ेस (यूआई) से जुड़ी ज़रूरी शर्तें

डीएसएम की सुविधा देने के लिए, OEM को सिस्टम यूज़र इंटरफ़ेस डिज़ाइन करते समय ये ज़रूरी शर्तें पूरी करनी होंगी:

  • यूज़र इंटरफ़ेस (यूआई) लेबल में, एआरसी या ऑडियो रिटर्न चैनल (एआरसी) का रेफ़रंस शामिल होना चाहिए.
  • यूज़र इंटरफ़ेस (यूआई) को उपयोगकर्ता को यह बताना चाहिए कि ARC कनेक्शन बनाने के लिए, डिवाइस को टीवी के ARC पोर्ट से कनेक्ट करें.
  • यूज़र इंटरफ़ेस (यूआई) को उपयोगकर्ता को यह बताना चाहिए कि अगर HDMI नेटवर्क में कोई दूसरा साउंडबार या ऑडियो-वीडियो रिसीवर (एवीआर) कनेक्ट है, तो हो सकता है कि यह सुविधा उम्मीद के मुताबिक काम न करे.
  • यूज़र इंटरफ़ेस (यूआई) को उपयोगकर्ता को यह बताना चाहिए कि सेटिंग को टॉगल करने पर, स्क्रीन फ़्लिकर कर सकती है.
  • अगर डिवाइस में कोई बिल्ट-इन स्पीकर नहीं है, तो डिफ़ॉल्ट रूप से डीएसएम बंद होना चाहिए.

हमारा सुझाव है कि डिसप्ले और साउंड मेन्यू को उपयोगकर्ता सेटिंग के तौर पर इस्तेमाल करें, ताकि ARC को चालू या बंद किया जा सके. इस बारे में ज़्यादा जानकारी के लिए, SysUI लागू करने सेक्शन देखें.

फ़्रेमवर्क लागू करना

Android फ़्रेमवर्क में, सीईसी साउंडबार की सुविधा को लागू करने और लॉजिकल पते 5 को डाइनैमिक तौर पर असाइन करने की सुविधा मौजूद है. साउंडबार की सेटिंग चालू होने पर, फ़्रेमवर्क लॉजिकल पता असाइन करता है, ताकि डिवाइस डाइनैमिक तौर पर साउंडबार बन सके. साउंडबार की सेटिंग बंद होने पर, फ़्रेमवर्क लॉजिकल पते को डिलीकेट कर देता है.

सिस्टम यूज़र इंटरफ़ेस (यूआई) पर उपयोगकर्ता के इनपुट के आधार पर, 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 प्रॉपर्टी काम करती है या नहीं.
  • स्थानीय ऑडियो डिवाइस को जोड़ने या हटाने के लिए, लॉजिकल पता असाइन करने की सुविधा को ट्रिगर करें.
  • पक्का करें कि डिवाइस को हॉटप्लग करने पर, सेटिंग की स्थिति में कोई बदलाव न हो.

साउंडबार मोड की स्थिति सेट करने और उसे पाने के लिए, यहां दिए गए एलान के सैंपल देखें:

    /**
     * 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 को डिवाइस को कॉन्फ़िगर करना होगा और सिस्टम यूज़र इंटरफ़ेस (यूआई) लागू करना होगा.

डिवाइस पर लागू करना

किसी डिवाइस पर साउंडबार की सुविधा इस्तेमाल करने के लिए:

  1. Android 14 पर, वीडियो चलाने वाला डिवाइस चुनें.
  2. ड्राइवर में एचडीएमआई एआरसी पोर्ट लागू करें.
  3. config.xml में, config_cecSoundbarModeEnabled_default और config_cecSoundbarModeDisabled_default की आरआरओ वैल्यू में कोई बदलाव न करें, ताकि यह सुविधा डिफ़ॉल्ट रूप से बंद रहे.

  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_audio_output

पहली इमेज. डिसप्ले और साउंड मेन्यू में ऑडियो आउटपुट की सेटिंग.

डीएसएम के काम करने के लिए, HDMI-CEC चालू करें सेटिंग को टॉगल करके चालू करना ज़रूरी है. एआरसी सेटिंग सिर्फ़ तब चालू की जा सकती है, जब एचडीएमआई-सीईसी चालू हो. अगर HDMI-CEC की सुविधा बंद है, तो ARC सेटिंग उपलब्ध नहीं होती और यह बंद रहती है. इसकी जानकारी, दूसरे चित्र में दी गई है. यहां दिए गए यूज़र इंटरफ़ेस (यूआई) फ़्लो में, जब उपयोगकर्ता डिसप्ले और साउंड मेन्यू में एचडीएमआई-सीईसी चालू करें सेटिंग को बंद करता है और होम स्पीकर चुनता है, तो एआरसी सेटिंग बंद हो जाती है. उपयोगकर्ता, एचडीएमआई-सीईसी चालू करें को चालू करके, टीवी का ऑडियो चलाएं सेटिंग चालू कर सकता है.

dsm_ui_disable_arc

दूसरी इमेज. बंद किए गए ARC विकल्प के लिए यूज़र इंटरफ़ेस (यूआई).

HDMI-CEC सेटिंग चालू होने पर, उपयोगकर्ता ऑडियो आउटपुट में जाकर, ARC सेटिंग का इस्तेमाल करके, डीएसएम को चालू और बंद कर सकता है. डीएसएम को चालू करने के लिए, उपयोगकर्ता तीसरे चित्र में दिए गए यूज़र इंटरफ़ेस (यूआई) फ़्लो का पालन करता है. यहां दिए गए यूज़र इंटरफ़ेस (यूआई) फ़्लो में, उपयोगकर्ता साउंडबार मोड चालू करने के लिए, होम स्पीकर चुनता है. इसके बाद, वह एआरसी सेटिंग को चुनता है और उसकी पुष्टि करता है. डीएसएम को बंद करने के लिए, उपयोगकर्ता एआरसी सेटिंग को बंद कर देता है.

dsm_ui_enable_arc

तीसरी इमेज. डीएसएम को चालू करने के लिए यूज़र इंटरफ़ेस (यूआई).

पुष्टि करें

OEM, ऑडियो टेस्ट कर सकते हैं. इससे यह पक्का किया जा सकता है कि वीडियो चलाने वाले डिवाइस के स्पीकर, टीवी या टीवी पैनल से कनेक्ट किए गए अन्य डिवाइसों से आने वाली आवाज़ को चलाते हैं.

मैन्युअल तरीके से पुष्टि करना

उम्मीद के मुताबिक व्यवहार की मैन्युअल तौर पर पुष्टि करने के लिए, इन स्थितियों का इस्तेमाल करें:

  • ARC सेटिंग चालू हो:
    • टीवी अपने-आप म्यूट हो जाता है.
    • टीवी की आवाज़, डिवाइस के स्पीकर पर भेजी जाती है.
  • ARC सेटिंग बंद है:
    • टीवी, डिवाइस पर ऑडियो भेजना बंद कर देता है.
    • टीवी पर ऑडियो चलने लगता है.
  • ARC सेटिंग चालू हो और डिवाइस, टीवी के ऐसे पोर्ट से कनेक्ट हो जो ARC के साथ काम नहीं करता:
    • डिवाइस पर टीवी की आवाज़ नहीं आ रही है.
  • ARC सेटिंग चालू है और डिवाइस कनेक्ट होने से पहले, लॉजिकल पते 5 का इस्तेमाल किसी दूसरे डिवाइस ने कर लिया है:
    • डिवाइस, साउंडबार के बजाय सिर्फ़ वीडियो चलाने वाले डिवाइस की तरह काम करता है.
  • ARC सेटिंग चालू है, डिवाइस पर लॉजिकल पता 5 का इस्तेमाल किया जा रहा है, और नेटवर्क में कोई दूसरा ऑडियो सिस्टम कनेक्ट है:
    • डिवाइस के साउंडबार के काम करने के तरीके में कोई बदलाव नहीं होता.
  • ARC सेटिंग चालू है, लॉजिकल पता 5 का इस्तेमाल, किसी ऐसे डिवाइस के लिए किया जा रहा है जो किसी ऐसे पोर्ट से कनेक्ट है जो ARC पोर्ट नहीं है, और कोई दूसरा ऑडियो सिस्टम ARC पोर्ट से कनेक्ट है:
    • दूसरे ऑडियो सिस्टम के लिए, टीवी के साथ ARC कनेक्शन सेट अप नहीं किया जा सकता, क्योंकि यह रजिस्ट्रेशन नहीं किए गए लॉजिकल पते का इस्तेमाल करता है.
  • ARC सेटिंग चालू हो और डिवाइस को हॉटप्लग किया गया हो:
    • डिवाइस, सेटिंग चालू होने पर की तरह ही काम करता है.

सीटीएस की पुष्टि

साउंडबार की सेटिंग बंद होने पर, CtsHdmiCecHostTestCases को पास करना ज़रूरी है. CtsHdmiCecHostTestCases टेस्ट सुइट में HdmiCecSoundbarModeTest.java टेस्ट, डीएसएम की सुविधाओं की जांच करता है.

हालांकि, सर्टिफ़िकेट पाने के लिए, ऐसा करना ज़रूरी नहीं है. हालांकि, लागू करने की पुष्टि करने के लिए, साउंडबार की सेटिंग चालू करके CtsHdmiCecHostTestCases चलाएं.

HDMI CEC के लिए Android CTS टेस्ट चलाने के लिए, Android TV डिवाइसों के लिए सीईसी सीटीएस टेस्टिंग देखें.