با پشتیبانی از چارچوب اندروید ۱۴، تولیدکنندگان اصلی تجهیزات (OEM) میتوانند دستگاههای گیرنده دیجیتال (STB) و دستگاههای OTT با بلندگوهای داخلی یا متصل را به عنوان ساندبار برای دستگاههای متصل پیکربندی کنند. حالت ساندبار پویا (DSM) در اندروید ۱۴ از ویژگیهای کنترل لوازم الکترونیکی مصرفی HDMI (CEC) برای ساندبارها، مانند کانال بازگشت صدا (ARC) و کنترل صدای سیستم، پشتیبانی میکند.
این ویژگی فقط دستگاههای پخش CEC اندروید تیوی را هدف قرار میدهد.
الزامات
برای استفاده از ویژگی ساندبار، تولیدکنندگان اصلی تجهیزات (OEM) باید الزامات دستگاه و رابط کاربری سیستم ذکر شده در این بخش را برآورده کنند.
الزامات دستگاه
برای پشتیبانی از DSM، دستگاه STB یا OTT باید شرایط زیر را داشته باشد:
- دستگاه باید اندروید ۱۴ را اجرا کند.
- وقتی DSM فعال است، دستگاه باید مانند یک ساندبار عمل کند و از مشخصات HDMI CEC مانند ARC پیروی کند.
- دستگاه باید قابلیت پخش صدا از بلندگوهای داخلی یا متصل را داشته باشد.
- وقتی دستگاه منبع فعالی نیست، تمام رسانههای روی دستگاه باید متوقف شوند و مصرف برق آن محدود شود.
الزامات رابط کاربری سیستم
برای پشتیبانی از DSM، تولیدکنندگان اصلی تجهیزات (OEM) باید الزامات زیر را هنگام طراحی رابط کاربری سیستم رعایت کنند:
- برچسب رابط کاربری باید شامل ارجاعی به ARC یا کانال بازگشت صدا (ARC) باشد.
- رابط کاربری باید به کاربر اطلاع دهد که برای برقراری اتصال ARC، دستگاه را به پورت ARC تلویزیون متصل کند.
- رابط کاربری باید به کاربر اطلاع دهد که اگر یک ساندبار یا گیرنده صوتی-تصویری (AVR) دیگر به شبکه HDMI متصل باشد، ممکن است این ویژگی آنطور که انتظار میرود کار نکند.
- رابط کاربری باید به کاربر اطلاع دهد که هنگام تغییر تنظیمات، ممکن است صفحه نمایش بلرزد.
- اگر دستگاه بلندگوی داخلی ندارد، DSM باید به طور پیشفرض غیرفعال باشد.
به عنوان بهترین روش، توصیه میکنیم از منوی Display & Sound به عنوان محل تنظیم کاربر برای فعال یا غیرفعال کردن ARC استفاده کنید، همانطور که در پیادهسازی SysUI نشان داده شده است.
پیادهسازی چارچوب
پیادهسازی قابلیت CEC ساندبار و تخصیص پویای آدرس منطقی ۵ در چارچوب اندروید وجود دارد. این چارچوب، آدرس منطقی را هنگام فعال بودن تنظیمات ساندبار، برای تبدیل شدن دستگاه به یک ساندبار به صورت پویا، اختصاص میدهد. هنگامی که تنظیمات ساندبار غیرفعال میشود، چارچوب، آدرس منطقی را آزاد میکند.
بر اساس ورودی کاربر در رابط کاربری سیستم، 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 پشتیبانی میشود یا خیر.
- تخصیص آدرس منطقی را برای اضافه یا حذف دستگاه صوتی محلی فعال کنید.
- اگر دستگاه در حالت اتصال گرم (hotplugged) است، مطمئن شوید که وضعیت تنظیمات حفظ شده است.
برای تنظیم و دریافت وضعیت حالت ساندبار، به نمونه اعلانهای زیر مراجعه کنید:
/**
* 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) باید دستگاه را پیکربندی کرده و رابط کاربری سیستم (System UI) را پیادهسازی کنند تا رابط مورد نیاز برای ورودیهای کاربر فراهم شود.
پیادهسازی دستگاه
برای پشتیبانی از ویژگی ساندبار در یک دستگاه:
- دستگاه پخش را در اندروید ۱۴ بالا بیاورید.
- پورت HDMI ARC را در درایور پیادهسازی کنید.
مقادیر RRO مربوط به
config_cecSoundbarModeEnabled_defaultوconfig_cecSoundbarModeDisabled_defaultرا درconfig.xmlبدون تغییر بگذارید تا این ویژگی به طور پیشفرض غیرفعال باقی بماند.مطمئن شوید که دستگاه بلندگوهای داخلی یا متصل برای پخش صدا دارد و پیکربندی سیاست صوتی را ویرایش کنید.
برای نشان دادن اینکه ARC پشتیبانی میشود، ویژگی سیستم
persist.sys.hdmi.property_arc_supportرویtrueتنظیم کنید.برای تغییر حالت ساندبار در رابط کاربری سیستم، تنظیمات را باز کنید.
برای اشکالزدایی، از دستور
adbزیر برای روشن یا خاموش کردن ویژگی ساندبار استفاده کنید (1برای روشن و0برای خاموش):
adb shell cmd hdmi_control cec_setting set soundbar_mode <1/0>
پیادهسازی SysUI
این بخش یک رابط کاربری آزمایشی و پیشنهادی برای روشن و خاموش کردن DSM را شرح میدهد. تنظیمات خروجی صدا ، همانطور که در شکل ۱ نشان داده شده است، در زیر منوی Display & Sound قرار دارد:

شکل ۱. تنظیمات خروجی صدا در منوی Display & Sound.
برای اینکه DSM کار کند، باید تنظیمات Enable HDMI-CEC روشن باشد. تنظیمات ARC فقط در صورتی قابل فعال شدن است که HDMI-CEC فعال باشد. اگر HDMI-CEC همانطور که در شکل 2 نشان داده شده است غیرفعال باشد، تنظیمات ARC در دسترس نیست و غیرفعال میشود. در رابط کاربری زیر، وقتی کاربر تنظیمات Enable HDMI-CEC را در منوی Display & Sound خاموش میکند و Home Speaker را انتخاب میکند، تنظیمات ARC غیرفعال میشود. کاربر میتواند با فعال کردن Enable HDMI-CEC، تنظیمات پخش صدای تلویزیون را فعال کند.

شکل ۲. رابط کاربری برای گزینه غیرفعال ARC.
وقتی تنظیم HDMI-CEC فعال باشد، کاربر میتواند از تنظیمات ARC در زیر خروجی صدا برای روشن و خاموش کردن DSM استفاده کند. برای روشن کردن DSM، کاربر مطابق شکل ۳ از رابط کاربری استفاده میکند. در رابط کاربری زیر، برای فعال کردن حالت ساندبار، کاربر گزینه Home Speaker را انتخاب کرده و تنظیمات ARC را انتخاب و تأیید میکند. برای خاموش کردن DSM، کاربر تنظیمات ARC را خاموش میکند.

شکل ۳. رابط کاربری برای فعالسازی DSM.
اعتبارسنجی
تولیدکنندگان اصلی تجهیزات (OEM) میتوانند یک آزمایش صوتی انجام دهند تا مطمئن شوند که بلندگوهای دستگاه پخش، صدایی را که از تلویزیون یا از سایر دستگاههای متصل به پنل تلویزیون پخش میشود، پخش میکنند.
اعتبارسنجی دستی
برای اعتبارسنجی دستی رفتار مورد انتظار از سناریوهای زیر استفاده کنید:
- تنظیمات ARC فعال است:
- تلویزیون خودش صدا را قطع میکند.
- صدای تلویزیون به بلندگوهای دستگاه هدایت میشود.
- تنظیمات ARC غیرفعال است:
- تلویزیون ارسال صدا به دستگاه را متوقف میکند.
- تلویزیون شروع به پخش صدا میکند.
- تنظیمات ARC فعال است و دستگاه به پورت غیر ARC تلویزیون متصل است:
- دستگاه صدای تلویزیون را پخش نمیکند.
- تنظیمات ARC فعال است و آدرس منطقی ۵ قبل از اتصال دستگاه توسط دستگاه دیگری در حال استفاده است:
- این دستگاه مانند یک دستگاه پخش خالص رفتار میکند، نه یک ساندبار.
- تنظیمات ARC فعال است، آدرس منطقی ۵ توسط دستگاه در حال استفاده است و سیستم صوتی دیگری به شبکه متصل است:
- هیچ تغییری در رفتار ساندبار دستگاه ایجاد نشده است.
- تنظیمات ARC فعال است، آدرس منطقی ۵ توسط دستگاه متصل به پورت غیر ARC در حال استفاده است و سیستم صوتی دیگری به پورت ARC متصل است:
- اتصال ARC با تلویزیون برای سیستم صوتی دوم برقرار نشده است زیرا از یک آدرس منطقی ثبت نشده استفاده میکند.
- تنظیمات ARC فعال است و دستگاه در حالت اتصال گرم (hotplugged) قرار دارد:
- دستگاه مانند زمانی که این تنظیم فعال است، رفتار عادی خود را دنبال میکند.
اعتبارسنجی CTS
وقتی تنظیمات ساندبار غیرفعال است، CtsHdmiCecHostTestCases برای قبولی لازم است. آزمون HdmiCecSoundbarModeTest.java در مجموعه آزمون CtsHdmiCecHostTestCases ، قابلیتهای DSM را آزمایش میکند.
اگرچه نیازی به صدور گواهینامه نیست، اما CtsHdmiCecHostTestCases را با فعال کردن تنظیمات ساندبار اجرا کنید تا پیادهسازی شما اعتبارسنجی شود.
برای اجرای تستهای CTS اندروید برای HDMI CEC، به تست CEC CTS برای دستگاههای تلویزیون اندروید مراجعه کنید.