অডিও কনফিগারেশন AAOS পতাকা, অডিও কনফিগারেশন AAOS পতাকা

অ্যান্ড্রয়েড অটোমোটিভ ওএস (AAOS) বিভিন্ন ফিচার চালু করার জন্য ফ্ল্যাগ এবং কনফিগারেশন ব্যবহার করে, যার মধ্যে ডাইনামিক রাউটিং থেকে শুরু করে কার সার্ভিস থেকে ভলিউম কন্ট্রোলের মতো আরও সাধারণ ফিচার ফ্ল্যাগও রয়েছে। অডিও ম্যানেজমেন্টের জন্য বর্তমান AAOS কনফিগারেশন ফ্ল্যাগগুলো এখানে বর্ণনা করা হয়েছে।

পতাকা উদ্দেশ্য
audioUseDynamicRouting AAOS রাউটিং সক্ষম করার জন্য এটি কার সার্ভিস কনফিগ ফাইলে সংজ্ঞায়িত করা হয়। কনফিগটি অবশ্যই ' true সেট করতে হবে। যখন এটি false থাকে, তখন রাউটিং এবং CarAudioService এর বেশিরভাগ অংশ নিষ্ক্রিয় হয়ে যায় এবং OS 'অডিও পলিসি কনফিগার করা' অংশে বর্ণিত ডিফল্ট আচরণে ফিরে যায়।
useCoreAudioRouting AAOS কোর অডিও রাউটিং ম্যানেজমেন্ট সক্রিয় করার জন্য এটি কার সার্ভিস কনফিগ ফাইলে সংজ্ঞায়িত করা হয়। যখন মানটি ' true সেট করা হয়, তখন কার অডিও সার্ভিস কনফিগারযোগ্য অডিও পলিসি ইঞ্জিনের মাধ্যমে সেটআপ করা কনফিগারেশন ডেফিনিশনগুলো ব্যবহার করে। যদি মানটি ' false ' সেট করা হয়, তাহলে রাউটিং ম্যানেজমেন্ট audioUseDynamicRouting ব্যবহার করে কনফিগার করা কার অডিও সার্ভিসের ডাইনামিক অডিও পলিসি মিক্স ডেফিনিশনটি ব্যবহার করে।
useCoreAudioVolume AAOS কোর অডিও ভলিউম ম্যানেজমেন্ট সক্রিয় করার জন্য এটি কার সার্ভিস কনফিগ ফাইলে সংজ্ঞায়িত করা হয়। যখন মানটি ' true সেট করা হয়, তখন কার অডিও সার্ভিস কনফিগারযোগ্য অডিও পলিসি ইঞ্জিনের মাধ্যমে সেটআপ করা ভলিউম গ্রুপ ডেফিনিশনগুলো ব্যবহার করে। যদি মানটি ' false ' সেট করা হয়, তাহলে ভলিউম ম্যানেজমেন্ট audioUseDynamicRouting ব্যবহার করে কনফিগার করা কার অডিও সার্ভিসের ডিফল্ট ভলিউম গ্রুপ ডেফিনিশনটি ব্যবহার করে।
audioUseCarVolumeGroupMuting স্বতন্ত্র ভলিউম গ্রুপ মিউট করা সক্ষম করতে এটি কার সার্ভিস কনফিগ ফাইলে সংজ্ঞায়িত করা হয়। যখন এটি false (ডিফল্ট মান) এ সেট করা থাকে, তখন স্বতন্ত্র ভলিউম গ্রুপ মিউট করা নিষ্ক্রিয় থাকে। এর পরিবর্তে, মিউটিং মাস্টার মিউট টগল করে। যখন এটি ' true এ সেট করা থাকে, তখন কার ভলিউম গ্রুপ মিউটিং সক্ষম হয় এবং প্রতিটি স্বতন্ত্র ভলিউম গ্রুপ আলাদাভাবে মিউট করা যায়। true হলে, ভলিউম গ্রুপ মিউটিং অবশ্যই অডিও কন্ট্রোল HAL- এ প্রয়োগ করতে হবে।
audioUseHalDuckingSignals কখন ডাকিং করতে হবে তা HAL-কে জানানোর জন্য IAudioControl#onDevicesToDuckChange API-টি সক্রিয় করতে কার সার্ভিস কনফিগ ফাইলে এটি সংজ্ঞায়িত করা থাকে। যখন এর true (ডিফল্ট মান), তখন API-টি কোন আউটপুট ডিভাইসগুলোকে ডাকিং করতে হবে এবং কোন ব্যবহারগুলো ফোকাস ধরে রাখে, তা নির্দেশকারী সিগন্যাল গ্রহণ করে। যখন এর false , তখন API-টি কল করা হয় না। অডিও কন্ট্রোল HAL ডাকিং বাস্তবায়ন না করলে API-টি কল করা হয় না।
config_oemCarService কার সার্ভিস কনফিগ ফাইলে সংজ্ঞায়িত, এটি হলো OEM কাস্টমাইজেশন সার্ভিসের কম্পোনেন্ট নেম। OEM-রা বিভিন্ন পলিসির জন্য কার সার্ভিস অ্যাকশন কাস্টমাইজ করতে এই সার্ভিসটি ইমপ্লিমেন্ট করার বিকল্প বেছে নিতে পারে। যদি OEM-রা এই কম্পোনেন্টটি ইমপ্লিমেন্ট করার সিদ্ধান্ত নেয়, তবে তাদের অবশ্যই car-lib দ্বারা এক্সপোজ করা OemCarService এক্সটেন্ড করার জন্য একটি সার্ভিস ইমপ্লিমেন্ট করতে হবে এবং তারপর প্রয়োজনীয় কম্পোনেন্ট সার্ভিসগুলো ইমপ্লিমেন্ট করতে হবে। বিশেষ করে কার অডিও সার্ভিসের জন্য, OEM-রা অডিও অ্যাকশন ম্যানেজ করতে যেকোনো অডিও সাব-সার্ভিস ইমপ্লিমেন্ট করতে পারে। বিস্তারিত জানতে, কার অডিও প্লাগইন সার্ভিস দেখুন। যদি কম্পোনেন্ট নেমটি অবৈধ হয়, তাহলে CarService কোনো OEM সার্ভিসের সাথে কানেক্ট হবে না। কম্পোনেন্ট নেমটি কোনো থার্ড-পার্টি প্যাকেজ হতে পারবে না। এটি অবশ্যই প্রি-ইনস্টল করা থাকতে হবে।
audioVolumeAdjustmentContextsVersion

গাড়ির সার্ভিস কনফিগারেশন ফাইলে ভলিউম অ্যাডজাস্টমেন্ট কনটেক্সট প্রায়োরিটি লিস্টের ভার্সন নির্বাচন করার কনফিগারেশনটি সংজ্ঞায়িত করা থাকে।

সংস্করণ ১-এ সমস্ত অডিও প্রসঙ্গ এই ক্রমে অন্তর্ভুক্ত রয়েছে:

  • NAVIGATION
  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
  • CALL_RING
  • SYSTEM_SOUND
  • SAFETY
  • ALARM
  • NOTIFICATION
  • VEHICLE_STATUSEMERGENCY

সংস্করণ ২ নিম্নলিখিত প্রেক্ষাপটগুলিতে, এই ক্রমে সীমাবদ্ধ।

ডিফল্ট সংস্করণটি হলো 1

  • CALL
  • MUSIC
  • ANNOUNCEMENT
  • VOICE_COMMAND
audioPersistMasterMuteState গাড়ির সার্ভিস কনফিগারেশন ফাইলে সংজ্ঞায়িত, এটি গ্লোবাল মিউট স্টেট ধরে রাখার জন্য একটি কনফিগারেশন। যখন এর true (ডিফল্ট মান) থাকে, তখন অ্যান্ড্রয়েড বুট করার সময় গ্লোবাল মিউট স্টেট পুনরুদ্ধার করে। যখন audioUseCarVolumeGroupMuting মান ' true হয়, তখন মিউটের পরিবর্তন ধরে রাখার ক্ষেত্রে এর কোনো প্রভাব পড়ে না, কারণ মিউটের পরিবর্তনগুলো স্বতন্ত্র ভলিউম গ্রুপের উপর ভিত্তি করে হয়। এর ডিফল্ট মান ' true সেট করা থাকে এবং কোনো ডিভাইসের জন্য মাস্টার মিউট ধরে রাখা না চাইলে এই মানটি ওভাররাইট করতে হবে।
audioVolumeKeyEventTimeoutMs

গাড়ির সার্ভিস কনফিগারেশন ফাইলে সংজ্ঞায়িত এই কনফিগারেশনটি, ভলিউম কী ইভেন্টের সময় ভলিউম কন্ট্রোল পরিবর্তনের জন্য গাড়ির ভলিউম গ্রুপটি কতক্ষণ সক্রিয় থাকবে, তার সময়সীমা (মিলিসেকেন্ডে) নির্দেশ করে। এই কনফিগারেশনটি নিম্নোক্তভাবে ব্যবহৃত হয়:

  • কোনো প্লেব্যাক (প্লে হওয়া বন্ধ হয়ে যাওয়ার পরেও) স্বয়ংক্রিয় ভলিউম নির্বাচনের জন্য সেটিকে বিবেচনা করা যাবে কি না, তা নির্ধারণ করতে টাইমআউট ব্যবহার করা হয়।
  • ব্যবহারকারী যা সামঞ্জস্য করছেন, তা পরিবর্তন করার জন্য স্বয়ংক্রিয় ভলিউম সমন্বয়ের মাঝে প্রয়োজনীয় বিরতির সময়কাল হিসেবেও টাইমআউট ব্যবহৃত হয়।

ডিফল্ট মান হলো 3000 মিলিসেকেন্ড এবং ব্যবহারকারীর অভিজ্ঞতা উপযোগী করে তোলার জন্য OEM-দের এটি সমন্বয় করা উচিত।

audioUseCarVolumeGroupEvent গাড়ির সার্ভিস কনফিগারেশন ফাইলে সংজ্ঞায়িত, ভলিউম গ্রুপে কলব্যাক ইভেন্ট সক্রিয় করার কনফিগারেশন। যখন true , ক্লায়েন্টরা ICarVolumeGroupEvent এর মাধ্যমে সেইসব ইভেন্টের কলব্যাক পায় যা ভলিউম গ্রুপকে প্রভাবিত করে। সক্রিয় করা হলে:
  • আমরা দৃঢ়ভাবে সুপারিশ করছি যে বিক্রেতারা যেন অডিও হার্ডওয়্যারের ইভেন্ট এবং পরিবর্তনের জন্য IAudioControl#setModuleChangeCallback এবং IAudioControl#registerGainCallback সমর্থন করেন।
  • যখন একই অ্যাপ দ্বারা CarVolumeCallback এবং CarVolumeGroupEventCallback উভয়ই রেজিস্টার করা হয়, তখন ভলিউম গ্রুপ ইনডেক্স এবং ভলিউম গ্রুপ মিউট কলব্যাকগুলো শুধুমাত্র CarVolumeGroupEventCallback মাধ্যমেই পরিচালিত হবে। অতএব, সামঞ্জস্যপূর্ণ পারফরম্যান্স নিশ্চিত করার জন্য আমরা সকল অ্যাপকে নতুন কলব্যাক ইন্টারফেসে স্থানান্তরিত হওয়ার জন্য দৃঢ়ভাবে সুপারিশ করছি।
  • ডিফল্ট মান হলো false । আমরা আপনাকে এটি true সেট করার পরামর্শ দিচ্ছি, কারণ লিগ্যাসি ভলিউম কলব্যাক সমর্থন করার API-গুলো অপ্রচলিত হয়ে গেছে এবং শীঘ্রই সম্পূর্ণরূপে সরিয়ে ফেলা হবে।

config_useFixedVolume frameworks/base/core/res/res/values/config.xml ফাইলে এটি সংজ্ঞায়িত করা আছে। গাড়ির অডিও সার্ভিসকে ভলিউম নিয়ন্ত্রণ করার অনুমতি দিতে এটিকে অবশ্যই ' true সেট করতে হবে। যখন config_useFixedVolume ফ্ল্যাগটি সেট করা থাকে না, বা ' false ' (ডিফল্ট মান) সেট করা থাকে, তখন অ্যাপগুলো AudioManager ভলিউম ম্যানেজমেন্ট API-গুলোকে কল করতে পারে এবং সফটওয়্যার মিক্সারে স্ট্রিম টাইপ অনুযায়ী ভলিউম পরিবর্তন করতে পারে। এটি অনাকাঙ্ক্ষিত হতে পারে, কারণ এর ফলে অন্যান্য অ্যাপের উপর সম্ভাব্য প্রভাব পড়তে পারে এবং সফটওয়্যার মিক্সারে ভলিউম কমে যাওয়ার ফলে হার্ডওয়্যার অ্যামপ্লিফায়ারে সিগন্যালটি গ্রহণ করার সময় তাতে কম গুরুত্বপূর্ণ বিট (significant bits) থাকতে পারে। নতুন ডিভাইস, যেগুলো কনফিগার করা হয়নি এবং যেগুলো true সেট করা আছে, সেগুলো AudioManager ভলিউম এবং মিউট API-এর মাধ্যমে ভলিউম পরিবর্তন গ্রহণ করে।
config_handleVolumeKeysInWindowManager frameworks/base/core/res/res/values/config.xml ফাইলে সংজ্ঞায়িত, কার অডিও সার্ভিসকে ভলিউম কী ইভেন্ট ইন্টারসেপ্ট করার অনুমতি দিতে এটিকে অবশ্যই ' true সেট করতে হবে। যদি এটি ' false (ডিফল্ট মান) সেট করা হয়, তাহলে ভলিউম কী ইভেন্টগুলো ফোরগ্রাউন্ড অ্যাপে ফরোয়ার্ড করা হতে পারে এবং এর ফলে কার অডিও সার্ভিসের বাইরে ভলিউম কী ইভেন্ট ম্যানেজমেন্টে বিরূপ ফলাফল দেখা দিতে পারে।
audioUseMinMaxActivationVolume সর্বনিম্ন এবং সর্বোচ্চ অ্যাক্টিভেশন ভলিউম সক্রিয় করার জন্য এটি গাড়ির সার্ভিস কনফিগারেশন ফাইলে নির্ধারণ করা হয়। যখন এটি true , তখন সর্বনিম্ন এবং সর্বোচ্চ অ্যাক্টিভেশন ভলিউম ব্যবস্থাপনার কারণে ভলিউম গেইন ইনডেক্স সামঞ্জস্য করা যায়। যখন এটি false (ডিফল্ট মান) হয়, তখন সর্বনিম্ন এবং সর্বোচ্চ অ্যাক্টিভেশন ভলিউম কার্যকর হয় না।
audioUseFadeManagerConfiguration সিস্টেম-প্রবর্তিত অডিও ফোকাস হারানোর আচরণ সক্রিয় করার জন্য এটি গাড়ির পরিষেবা কনফিগারেশন ফাইলে সংজ্ঞায়িত করা হয়। যখন এটি true , তখন গাড়ির অডিও ফ্রেমওয়ার্ক গাড়ির অডিও ফেড কনফিগারেশন সংজ্ঞাগুলো পার্স করে এবং অডিও ফোকাস হারানোর নির্দেশ দেওয়ার সময় সংশ্লিষ্ট FadeManagerConfiguration প্রয়োগ করে। যখন এটি false (ডিফল্ট মান) হয়, তখন কোনো অ্যাপ অডিও ফোকাস হারালে সিস্টেম ফেড আচরণটি প্রয়োগ করে না।

গাড়ির অডিও পরিষেবা কনফিগারেশন

Android 13-এর আগে, packages/services/Car/service/res/values/config.xml ফাইলের জন্য গাড়ির পরিষেবা কনফিগারেশনগুলি একটি প্রোডাক্ট কনফিগারেশন ওভারলে দ্বারা ওভাররাইট করা হত (আরও জানতে, রিসোর্স ওভারলে দিয়ে বিল্ড কাস্টমাইজ করা দেখুন)।

PRODUCT_PACKAGE_OVERLAYS := <path_to_overlay>

<path_to_overlay> থেকে প্রকৃত অবস্থান পর্যন্ত কনফিগারেশন ফাইলের অবস্থানে packages/services/Car/service/res/values/ অন্তর্ভুক্ত থাকা উচিত।

গাড়ি পরিষেবা RROs

অ্যান্ড্রয়েড ১৩ থেকে, AAOS রানটাইম রিসোর্স ওভারলে ( RRO) সমর্থন করে। গাড়ির অডিও কনফিগারেশনের মান পরিবর্তন করতে একটি RRO ব্যবহার করুন। উদাহরণস্বরূপ, device/google/cuttlefish/shared/auto/rro_overlay/ -এ থাকা অটোমোটিভ cuttlefish রেফারেন্সের জন্য RRO-গুলো দেখুন। audioUseDynamicRouting কনফিগারেশনটি device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/values/config.xml ওভাররাইড করা হয়।

<resources>
    <bool name="audioUseDynamicRouting">true</bool>
...

রিসোর্স ওভারলে ম্যাপটি device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/res/xml/overlays.xml এ অন্তর্ভুক্ত আছে:

<overlay>
...
  <item target="bool/audioUseDynamicRouting"
value="@bool/audioUseDynamicRouting" />
...
</overlay>

device/google/cuttlefish/shared/auto/rro_overlay/CarServiceOverlay/AndroidManifest.xml এ সংজ্ঞায়িত রিসোর্স ওভারলে ম্যানিফেস্টে targetPackage হিসেবে com.android.car.updatable সেট করা আছে।

আরও তথ্যের জন্য এই উৎসগুলো দেখুন:

বৈশিষ্ট্য-সক্ষম API

ডিভাইসে ফিচারটি সক্রিয় থাকলে মেথডটি true রিটার্ন করে, অন্যথায় falseCarAudioManager#isAudioFeatureEnabled API-তে, পাস করা প্যারামিটারটি অবশ্যই নিম্নলিখিতগুলির মধ্যে একটি হতে হবে:

  • AUDIO_FEATURE_DYNAMIC_ROUTING
  • AUDIO_FEATURE_VOLUME_GROUP_MUTING
  • AUDIO_FEATURE_OEM_AUDIO_SERVICE
  • AUDIO_FEATURE_VOLUME_GROUP_EVENTS
  • AUDIO_FEATURE_AUDIO_MIRRORING