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