অ্যান্ড্রয়েড ১৪ ফ্রেমওয়ার্কের সহায়তায়, OEM-রা বিল্ট-ইন বা সংযুক্ত স্পিকারসহ সেট-টপ বক্স (STB) এবং ওভার-দ্য-টপ (OTT) ডিভাইসগুলোকে সংযুক্ত ডিভাইসগুলোর জন্য সাউন্ডবার হিসেবে কনফিগার করতে পারে। অ্যান্ড্রয়েড ১৪-এর ডাইনামিক সাউন্ডবার মোড (DSM) সাউন্ডবারের জন্য HDMI কনজিউমার ইলেকট্রনিক্স কন্ট্রোল (CEC) অ্যাট্রিবিউট, যেমন অডিও রিটার্ন চ্যানেল (ARC) এবং সিস্টেম অডিও কন্ট্রোল, সমর্থন করে।
এই ফিচারটি শুধুমাত্র অ্যান্ড্রয়েড টিভি সিইসি প্লেব্যাক ডিভাইসগুলোর জন্য প্রযোজ্য।
প্রয়োজনীয়তা
সাউন্ডবার ফিচারটি যুক্ত করতে হলে, OEM-দের অবশ্যই এই বিভাগে তালিকাভুক্ত ডিভাইস এবং সিস্টেম UI-এর শর্তাবলী পূরণ করতে হবে।
ডিভাইসের প্রয়োজনীয়তা
ডিএসএম সমর্থন করার জন্য, এসটিবি বা ওটিটি ডিভাইসটিকে নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:
- ডিভাইসটিতে অবশ্যই অ্যান্ড্রয়েড ১৪ চলতে হবে।
- যখন DSM সক্রিয় করা হয়, তখন ডিভাইসটিকে অবশ্যই HDMI CEC স্পেসিফিকেশন, যেমন ARC, অনুসরণ করে একটি সাউন্ডবারের মতো আচরণ করতে হবে।
- ডিভাইসটিতে অন্তর্নির্মিত বা সংযুক্ত স্পিকারের মাধ্যমে শব্দ বাজানোর সক্ষমতা থাকতে হবে।
- যখন ডিভাইসটি সক্রিয় উৎস হিসেবে ব্যবহৃত হয় না, তখন ডিভাইসের সমস্ত মিডিয়া অবশ্যই বিরতি দিয়ে রাখতে হবে, যা এর বিদ্যুৎ খরচ সীমিত করে।
সিস্টেম UI প্রয়োজনীয়তা
DSM সমর্থন করার জন্য, OEM-দের সিস্টেম UI ডিজাইন করার সময় নিম্নলিখিত শর্তগুলো পূরণ করতে হবে:
- UI লেবেলে অবশ্যই ARC বা Audio Return Channel (ARC)- এর উল্লেখ থাকতে হবে।
- ARC সংযোগ স্থাপন করার জন্য ডিভাইসটিকে টিভির ARC পোর্টে সংযুক্ত করতে ইউজার ইন্টারফেসকে অবশ্যই ব্যবহারকারীকে জানাতে হবে।
- ইউজার ইন্টারফেসকে (UI) অবশ্যই ব্যবহারকারীকে জানাতে হবে যে, HDMI নেটওয়ার্কে অন্য কোনো সাউন্ডবার বা অডিও-ভিডিও রিসিভার (AVR) সংযুক্ত থাকলে ফিচারটি প্রত্যাশিতভাবে কাজ নাও করতে পারে।
- ইউআই-কে অবশ্যই ব্যবহারকারীকে জানাতে হবে যে সেটিংটি টগল করার সময় স্ক্রিনটি ঝিকমিক করতে পারে।
- ডিভাইসটিতে যদি কোনো অন্তর্নির্মিত স্পিকার না থাকে, তাহলে ডিএসএম ডিফল্টরূপে নিষ্ক্রিয় থাকবে।
একটি সর্বোত্তম অনুশীলন হিসেবে, আমরা ARC চালু বা বন্ধ করার জন্য ব্যবহারকারী সেটিংসের স্থান হিসেবে ডিসপ্লে ও সাউন্ড মেনু ব্যবহার করার সুপারিশ করি, যেমনটি SysUI বাস্তবায়নে দেখানো হয়েছে।
ফ্রেমওয়ার্ক বাস্তবায়ন
অ্যান্ড্রয়েড ফ্রেমওয়ার্কে CEC সাউন্ডবার কার্যকারিতা এবং লজিক্যাল অ্যাড্রেস ৫-এর ডায়নামিক অ্যালোকেশনের ব্যবস্থা রয়েছে। যখন সাউন্ডবার সেটিং সক্রিয় করা হয়, তখন ডিভাইসটিকে ডায়নামিকভাবে সাউন্ডবারে পরিণত করার জন্য ফ্রেমওয়ার্কটি লজিক্যাল অ্যাড্রেসটি বরাদ্দ করে। যখন সাউন্ডবার সেটিং নিষ্ক্রিয় করা হয়, তখন ফ্রেমওয়ার্কটি লজিক্যাল অ্যাড্রেসটি অবমুক্ত করে দেয়।
সিস্টেম UI-তে ব্যবহারকারীর ইনপুটের উপর ভিত্তি করে, 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-দের অবশ্যই ডিভাইসটি কনফিগার করতে হবে এবং সিস্টেম UI বাস্তবায়ন করতে হবে ।
ডিভাইস বাস্তবায়ন
ডিভাইসে সাউন্ডবার ফিচারটি সমর্থন করতে:
- অ্যান্ড্রয়েড ১৪-এ প্লেব্যাক ডিভাইসটি চালু করুন।
- ড্রাইভারে HDMI ARC পোর্টটি অন্তর্ভুক্ত করুন।
config.xmlফাইলেconfig_cecSoundbarModeEnabled_defaultএবংconfig_cecSoundbarModeDisabled_defaultএর RRO মানগুলো অপরিবর্তিত রাখুন, যাতে ফিচারটি ডিফল্টরূপে নিষ্ক্রিয় থাকে।অডিও চালানোর জন্য ডিভাইসটিতে অন্তর্নির্মিত বা সংযুক্ত স্পিকার আছে কিনা তা নিশ্চিত করুন এবং অডিও পলিসি কনফিগারেশনটি সম্পাদনা করুন।
ARC সমর্থিত তা বোঝাতে,
persist.sys.hdmi.property_arc_supportসিস্টেম প্রপার্টিটির মানtrueসেট করুন।সিস্টেম UI- তে সাউন্ডবার মোড টগল করার সেটিংটি খুলুন।
ডিবাগিংয়ের জন্য, সাউন্ডবার ফিচারটি চালু বা বন্ধ করতে নিম্নলিখিত
adbকমান্ডটি ব্যবহার করুন (চালু করার জন্য1এবং বন্ধ করার জন্য0):
adb shell cmd hdmi_control cec_setting set soundbar_mode <1/0>
SysUI বাস্তবায়ন
এই বিভাগে ডিএসএম চালু এবং বন্ধ করার জন্য একটি প্রস্তাবিত, নমুনা ইউআই ফ্লো বর্ণনা করা হয়েছে। অডিও আউটপুট সেটিংটি ডিসপ্লে ও সাউন্ড মেনুর অধীনে রয়েছে, যেমনটি চিত্র ১-এ দেখানো হয়েছে:

চিত্র ১. ডিসপ্লে ও সাউন্ড মেনুর অধীনে অডিও আউটপুট সেটিং।
DSM কাজ করার জন্য, ‘Enable HDMI-CEC’ সেটিংটি অবশ্যই অন করা থাকতে হবে। শুধুমাত্র HDMI-CEC চালু থাকলেই ARC সেটিংটি চালু করা যাবে। চিত্র ২-এ যেমন দেখানো হয়েছে, HDMI-CEC বন্ধ থাকলে ARC সেটিংটি অনুপলব্ধ এবং নিষ্ক্রিয় থাকে। নিম্নলিখিত UI ফ্লো-তে, যখন ব্যবহারকারী ‘Display & Sound’ মেনু থেকে ‘ Enable HDMI-CEC’ সেটিংটি বন্ধ করে ‘Home Speaker’ নির্বাচন করেন, তখন ARC সেটিংটি নিষ্ক্রিয় হয়ে যায়। ব্যবহারকারী ‘Enable HDMI-CEC’ চালু করার মাধ্যমে ‘Play television audio’ সেটিংটি সক্রিয় করতে পারেন।

চিত্র ২. নিষ্ক্রিয় ARC অপশনের UI।
যখন HDMI-CEC সেটিংটি চালু থাকে, তখন ব্যবহারকারী অডিও আউটপুটের অধীনে থাকা ARC সেটিং ব্যবহার করে DSM চালু এবং বন্ধ করতে পারেন। DSM চালু করতে, ব্যবহারকারীকে চিত্র ৩-এ দেখানো UI ফ্লো অনুসরণ করতে হবে। নিম্নলিখিত UI ফ্লোতে, সাউন্ডবার মোড চালু করার জন্য, ব্যবহারকারীকে ‘হোম স্পিকার’ নির্বাচন করতে হবে এবং ARC সেটিংটি নির্বাচন ও নিশ্চিত করতে হবে। DSM বন্ধ করতে, ব্যবহারকারীকে ARC সেটিংটি বন্ধ করতে হবে।

চিত্র ৩. ডিএসএম সক্রিয় করার ইউআই।
বৈধতা
প্লেব্যাক ডিভাইসটির স্পিকারগুলো টিভি থেকে, অথবা টিভি প্যানেলের সাথে সংযুক্ত অন্যান্য ডিভাইস থেকে আসা শব্দই প্লে করছে কিনা, তা নিশ্চিত করার জন্য ওইএম-রা একটি অডিও পরীক্ষা করতে পারে।
ম্যানুয়াল যাচাইকরণ
প্রত্যাশিত আচরণ ম্যানুয়ালি যাচাই করতে নিম্নলিখিত পরিস্থিতিগুলো ব্যবহার করুন:
- ARC সেটিংটি সক্রিয় করা আছে:
- টিভিটি নিজে থেকেই মিউট হয়ে যায়।
- টিভির শব্দ ডিভাইসটির স্পিকারগুলোতে পাঠানো হয়।
- ARC সেটিংটি নিষ্ক্রিয় করা আছে:
- টিভি ডিভাইসটিতে অডিও পাঠানো বন্ধ করে দেয়।
- টিভিটি অডিও বাজানো শুরু করে।
- ARC সেটিং সক্রিয় করা আছে এবং ডিভাইসটি টিভির একটি নন-ARC পোর্টে সংযুক্ত আছে:
- ডিভাইসটি টিভির শব্দ বাজায় না।
- ডিভাইসটি সংযুক্ত হওয়ার আগে থেকেই ARC সেটিংটি সক্রিয় আছে এবং লজিক্যাল অ্যাড্রেস ৫ অন্য একটি ডিভাইস দ্বারা ব্যবহৃত হচ্ছে:
- ডিভাইসটি একটি বিশুদ্ধ প্লেব্যাক ডিভাইস হিসেবে কাজ করে, সাউন্ডবার হিসেবে নয়।
- ARC সেটিং সক্রিয় করা আছে, লজিক্যাল অ্যাড্রেস ৫ ডিভাইসটি দ্বারা ব্যবহৃত হচ্ছে, এবং নেটওয়ার্কে আরেকটি অডিও সিস্টেম সংযুক্ত আছে:
- ডিভাইসটির সাউন্ডবারের আচরণে কোনো পরিবর্তন নেই।
- ARC সেটিং সক্রিয় করা আছে, লজিক্যাল অ্যাড্রেস ৫ একটি নন-ARC পোর্টে সংযুক্ত ডিভাইস দ্বারা ব্যবহৃত হচ্ছে, এবং ARC পোর্টে অন্য একটি অডিও সিস্টেম সংযুক্ত আছে:
- দ্বিতীয় অডিও সিস্টেমটির জন্য টিভির সাথে ARC সংযোগ স্থাপিত হচ্ছে না, কারণ এটি একটি অনিবন্ধিত লজিক্যাল অ্যাড্রেস ব্যবহার করে।
- ARC সেটিংটি সক্রিয় করা আছে এবং ডিভাইসটি হটপ্লাগ করা আছে:
- সেটিংটি চালু থাকলে ডিভাইসটি যেমন আচরণ করে, ডিভাইসটিও ঠিক তেমনই আচরণ করে।
CTS বৈধতা
সাউন্ডবার সেটিং নিষ্ক্রিয় থাকলে CtsHdmiCecHostTestCases টেস্টটি পাস করা আবশ্যক। CtsHdmiCecHostTestCases টেস্ট স্যুটের অন্তর্গত HdmiCecSoundbarModeTest.java টেস্টটি DSM কার্যকারিতাগুলো পরীক্ষা করে।
যদিও এটি সার্টিফিকেশনের জন্য আবশ্যক নয়, আপনার ইমপ্লিমেন্টেশন যাচাই করার জন্য সাউন্ডবার সেটিং সক্রিয় রেখে CtsHdmiCecHostTestCases চালান।
HDMI CEC-এর জন্য Android CTS টেস্টগুলো চালাতে, Android TV ডিভাইসগুলোর জন্য CEC CTS টেস্টিং দেখুন।