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

অ্যান্ড্রয়েড ১০-এ, car_audio_configuration.xml car_volumes_groups.xml এবং IAudioControl.getBusForContext প্রতিস্থাপন করেছে। অডিও পলিসি ফাইলগুলো, যা সাধারণত ভেন্ডর পার্টিশনে থাকে, বোর্ডের অডিও হার্ডওয়্যার কনফিগারেশনকে উপস্থাপন করে। car_audio_configuration.xml এ উল্লেখিত সমস্ত ডিভাইস অবশ্যই audio_policy_configuration.xml এ সংজ্ঞায়িত থাকতে হবে।

চিত্র ১-এ গাড়ির অডিও পরিষেবা স্থাপত্যের একটি সংক্ষিপ্ত বিবরণ দেখানো হয়েছে, যেখানে গাড়ির অডিও পরিষেবাটি ডিভাইসটির জন্য অডিও সেট আপ করতে গাড়ির অডিও কনফিগারেশন ফাইলটি পড়ে।

গাড়ির অডিও আর্কিটেকচারের সংক্ষিপ্ত বিবরণ

চিত্র ১. গাড়ির অডিও কাঠামোর সংক্ষিপ্ত বিবরণ।

গাড়ির অডিও কনফিগারেশন ফাইলটি ডিভাইসের vendor/etc/ অথবা system/etc/ ফোল্ডারে রাখুন, যেখানে গাড়ির অডিও সার্ভিসটি প্রথমে vendor/etc/ ফোল্ডারে ফাইলটি খোঁজে। গাড়ির অডিও সার্ভিসটি অডিও কনফিগারেশন নির্ধারণ করার জন্য car_audio_configuration.xml ফাইলটি পড়ে।

গাড়ির অডিও জোন:

  • প্রতিটি অডিও জোনে একটি অনন্য অডিও জোন আইডি থাকে।
  • প্রতিটি অডিও জোনকে একটি অকুপ্যান্ট জোনের সাথে ম্যাপ করা যেতে পারে।
  • প্রতিটি জোনের অডিও কার্যক্রমগুলো একে অপরের থেকে স্বাধীন:

    • অডিও ফোকাস
    • অডিও রাউটিং
    • অডিও ডাকিং
  • গাড়ির ভলিউম গ্রুপ:

    • যেসব অডিও ডিভাইসে ভলিউম গ্রুপ থাকে, সেগুলোকে একই গেইন পরিবর্তনের মাধ্যমে একসাথে নিয়ন্ত্রণ করা হয়। একটি গ্রুপের সমস্ত ডিভাইসের অডিও গেইন কনফিগারেশন একই হওয়া উচিত।

    • অডিও কনটেক্সট থেকে অডিও ডিভাইস ম্যাপিং। অডিও ব্যবহারকে একটি আউটপুট ডিভাইসের সাথে ম্যাপ করে এমন একটি অডিও মিক্স তৈরি করতে এটি ব্যবহার করুন।

    • সমস্ত অডিও কনটেক্সট একটি জোনের মধ্যে উপস্থাপন করা উচিত। এর ফলে সমস্ত অডিও অ্যাট্রিবিউট ব্যবহারের জন্য অডিও রাউটিং সঠিকভাবে সেট আপ করা যায়।

অডিও প্রসঙ্গ

AAOS অডিওর কনফিগারেশন সহজ করার জন্য, একই ধরনের ব্যবহারগুলোকে CarAudioContexts অধীনে শ্রেণীবদ্ধ করা হয়েছে। এই অডিও কনটেক্সটগুলো CarAudioService জুড়ে রাউটিং, ভলিউম গ্রুপ, অডিও ফোকাস এবং ডাকিং ম্যানেজমেন্ট নির্ধারণ করতে ব্যবহৃত হয়। AAOS-এর স্ট্যাটিক অডিও কনটেক্সটগুলো এই টেবিলে তালিকাভুক্ত করা হয়েছে।

এই সারণিতে অডিও প্রসঙ্গ এবং ব্যবহারের মধ্যেকার সম্পর্ক বর্ণনা করা হয়েছে। হাইলাইট করা সারিগুলো নতুন সিস্টেম ব্যবহারের জন্য প্রদান করা হয়েছে।

কারঅডিওকনটেক্সট সংশ্লিষ্ট অ্যাট্রিবিউট ব্যবহার
MUSIC UNKNOWN
GAME
MEDIA
NAVIGATION ASSISTANCE_NAVIGATION_GUIDANCE
VOICE_COMMAND ASSISTANT
ASSISTANCE_ACCESSIBILITY
CALL_RING NOTIFICATION_RINGTONE
CALL VOICE_COMMUNICATION
VOICE_COMMUNICATION_SIGNALING
ALARM ALARM
NOTIFICATION NOTIFICATION
NOTIFICATION_*
SYSTEM_SOUND ASSISTANCE_SONIFICATION
EMERGENCY EMERGENCY
SAFETY SAFETY
VEHICLE_STATUS VEHICLE_STATUS
ANNOUNCEMENT ANNOUNCEMENT

AAOS রাউটিং সক্ষম করুন

AAOS-ভিত্তিক রাউটিং ব্যবহার করতে হলে, আপনাকে audioUseDynamicRouting ফ্ল্যাগটি true তে সেট করতে হবে:

<resources>
    <bool name="audioUseDynamicRou>ting<">;<true/bool
>/resources

যখন false , তখন রাউটিং এবং CarAudioService এর বেশিরভাগ অংশ নিষ্ক্রিয় হয়ে যায় এবং AAOS, AudioService এর ডিফল্ট আচরণে ফিরে আসে।

কনফিগারযোগ্য অডিও নীতি ইঞ্জিন

অ্যান্ড্রয়েড ১৪-এ গাড়ির অডিও ম্যানেজমেন্টকে আরও প্রসারিত করতে, AAOS কনফিগারযোগ্য অডিও পলিসি ইঞ্জিন (CAP)- এর মাধ্যমে অডিও ম্যানেজমেন্টের ব্যবহার চালু করেছে। এর ফলে অডিও রাউটিং এবং ভলিউম ম্যানেজমেন্ট নিয়ন্ত্রণে আরও বেশি নমনীয়তা পাওয়া যায় এবং নিম্নলিখিত বিষয়গুলির বহুমুখী সংজ্ঞায়নের সুযোগ তৈরি হয়:

আপনি useCoreAudioVolume এবং useCoreAudioRouting ব্যবহারের মাধ্যমে কনফিগারযোগ্য অডিও পলিসি (CAP) ইঞ্জিন সক্রিয় করতে পারেন, বিস্তারিত জানার জন্য কনফিগারযোগ্য অডিও পলিসি ইঞ্জিন দেখুন।

প্রাথমিক অঞ্চল

ডিফল্টরূপে, সমস্ত অডিও প্রাইমারি জোনে রাউট করা হয়। শুধুমাত্র একটি প্রাইমারি জোন থাকে, যা কনফিগারেশনে isPrimary="true" অ্যাট্রিবিউট দ্বারা নির্দেশিত হয়। প্রাইমারি জোনটিকে স্বয়ংক্রিয়ভাবে Audiomanager.PRIMARY_AUDIO_ZONE হিসেবে নির্ধারণ করা হয়।

নমুনা কনফিগারেশন (সংস্করণ ২)

উদাহরণস্বরূপ, একটি গাড়িতে দুটি জোন থাকতে পারে—একটি প্রাইমারি জোন এবং একটি রিয়ার সিট এন্টারটেইনমেন্ট সিস্টেম। এই পরিস্থিতিতে, আপনি car_audio_configuration.xml ফাইলের সম্ভাব্য ভার্সন ২ নিম্নরূপে ডিজাইন করতে পারেন:

<audioZoneConfiguration version=">;2.0&quo<t;
       zone name="primary zone&qu>ot; isPrimar<y="true>"
         <  vol>umeGroups
          <     group
                   d>evice address="bus0<_media_out"
       >                context <context="music"/
    >                   c<ontext >context="announ<cement"/
                   /d>evice
                  < device address="bus3_c>all_ring_out"
 <       >               conte<xt context="call_ring"/
    >               /device
 <                  device addres>s="bus6_notific<ation_o>ut"
       <      >          contex<t con>text="notificat<ion"/
                   /devic>e
               /group
<               group
        >           device ad<dress=&>quot;bus1_navigation<_out"
                       conte>xt context="navigat<ion"/
                   /d>evice
              <     de>vice address=&qu<ot;bus>2_voice_command_<out&q>uot;
               <        context context=">voice_command"/
   <                /device>
               /gro<up
    >           group<
     >              de<vice >address="bus4_c<all_out"
                 >      context context=&q<uot;call"/
        >           /device
 <       >       /group
  <      >       group
   <     >           device ad<dress="bus5_alarm_out"
     >                  contex<t context="alarm"/
  >                 /device<
               /group
     >          group
        <           device address>="bus7_system_sound<_out"
                      > context context=&qu<ot;syst>em_sound"/
<      >            <     context >context=<">;emergenc<y"/
                       context co>ntext="<safety">/
              <     >    context context=<"vehicle_status"/
     >              /device
  <             /group
    >       /volumeGroups
   <    /zone
        zone name=&>quot;rear seat zone"<; audioZoneId="1"
    >       volumeGroups
    <           group
           >        device address=&<quot;bus100_rear_seat&q>uot;
                   <    context context=&quo>t;music"/
         <              context context=&>quot;navigation"/
 <                      context c>ontext="voice_comma<nd"/
                  >     context context=&qu<ot;call_ring"/
     >                  contex<t context="call"/
     >                  contex<t context="alarm"/
  >                    < contex>t context="<notifi>cation"</
           >     <      > <context context="s>ystem_sound"/
                       context context="emergency"/
                       context context="safety"/
                       context context="vehicle_status"/
                       context context="announcement"/
                   /device
               /group
           /volumeGroups
    /zones
/audioZoneConfiguration

এই উদাহরণে, প্রাইমারি জোন কিছু অডিও কনটেক্সটকে বিভিন্ন ডিভাইসে আলাদা করে দেয়। এর ফলে HAL গাড়ির হার্ডওয়্যার ব্যবহার করে প্রতিটি ডিভাইসে বিভিন্ন পোস্ট-প্রসেসিং এফেক্ট প্রয়োগ করতে এবং আউটপুট মিক্স করতে পারে। ডিভাইসগুলোকে কয়েকটি ভলিউম গ্রুপে সাজানো হয়েছে: মিডিয়া, নেভিগেশন, কল, অ্যালার্ম এবং সিস্টেম সাউন্ড। যদি সিস্টেমটি useFixedVolume হিসেবে কনফিগার করা থাকে, তাহলে প্রতিটি গ্রুপের ভলিউম লেভেল এই ডিভাইসগুলোর আউটপুটে প্রয়োগ করার জন্য HAL-এর কাছে পাঠানো হয়।

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

সেকেন্ডারি জোনের উদাহরণে, সমস্ত অডিও কনটেক্সট একটিমাত্র ডিভাইস এবং একটি ভলিউম গ্রুপে রাউট করা হয়।

CAP ইঞ্জিনের জন্য ভলিউম গ্রুপের সংজ্ঞা

কনফিগারযোগ্য অডিও পলিসি ইঞ্জিন- এ উল্লিখিত CAP ইঞ্জিনের মাধ্যমে ভলিউম ম্যানেজমেন্ট ব্যবহার করতে হলে, ভলিউম গ্রুপ ডেফিনিশনে অবশ্যই একটি নামও থাকতে হবে:


<group name="media">
  <device address="bus0_media_out">
    <context context="music"/>
    <context context="announcement"/>
  </device>
  <device address="bus3_call_ring_out">
     <context context="call_ring"/>
  </device>
  <device address="bus6_notification_out">
    <context context="notification"/>
  </device>
</group>
<group name="navigation">
  <device address="bus1_navigation_out">
    <context context="navigation"/>
  </device>
  <device address="bus2_voice_command_out">
    <context context="voice_command"/>
  </device>
</group>

এই ভলিউম গ্রুপের নামটি অবশ্যই CAP ইঞ্জিনে সংজ্ঞায়িত ভলিউম নামের সাথে মিলতে হবে। এছাড়াও, useFixedVolume কে অবশ্যই false এ সেট করতে হবে। বিস্তারিত জানার জন্য অডিও কনফিগারেশন AAOS ফ্ল্যাগগুলো দেখুন।

অকুপ্যান্ট জোন অডিও কনফিগারেশন

অ্যান্ড্রয়েড ১১-এ, car_audio_configuration.xml ফাইলে audioZoneId এবং occupantZoneId দুটি নতুন ফিল্ড যুক্ত করা হয়েছে। আপনি অডিও জোন ম্যানেজমেন্ট নিয়ন্ত্রণ করতে audioZoneId ব্যবহার করতে পারেন। আর ইউজার আইডির উপর ভিত্তি করে রাউটিং কনফিগার করতে occupantZoneId ব্যবহার করা যায়।

অডিও কনফিগারেশনটি পুনরায় পর্যালোচনা করে, কিন্তু অকুপ্যান্ট জোন আইডি এবং অডিও জোন আইডি ম্যাপিংয়ের জন্য নতুন ফিল্ডটি ব্যবহার করে, ভলিউম গ্রুপ সংজ্ঞাগুলো ছাড়া নতুন কনফিগারেশনটি নিম্নরূপে সেট আপ করা যেতে পারে:

<audioZoneConfiguration version=">;2.0&quo<t;
       zone name="primary zone" isPrimary=">;true" occupantZ<oneId>="0<"
         ...
       /zone
       zone name="rear >seat zone" audio<ZoneI>d=&qu<ot;1&q>u<ot; occupantZoneId=&quo>t;1"
         ...
       /zone
    /zones
/audioZoneConfiguration

এই কনফিগারেশনটি প্রাইমারি জোন থেকে অকুপ্যান্ট জোন ০ এবং audioZoneId ১ থেকে occupantZoneId ১-এর জন্য একটি ম্যাপিং নির্ধারণ করে। অকুপ্যান্ট জোন এবং অডিও জোনের মধ্যে যেকোনো ম্যাপিং কনফিগার করা যেতে পারে। তবে, ম্যাপিংটি অবশ্যই এক-এক হতে হবে। যে নিয়মগুলো দুটি নতুন ফিল্ড নির্ধারণ করেছে, সেগুলো হলো:

  • প্রাইমারি জোনের জন্য audioZoneId সর্বদা PRIMARY_AUDIO_ZONE ID হয়। যদি isPrimary="true" সংজ্ঞায়িত করা থাকে, তাহলে audioZoneId প্রয়োজন হয় না।

  • audioZoneId এবং occupantZoneId নম্বরগুলির পুনরাবৃত্তি হতে পারবে না।

  • audioZoneId এবং occupantZoneId মধ্যে শুধুমাত্র এক-এক সম্পর্ক থাকতে পারে।

অ্যান্ড্রয়েড ১৪ গাড়ির অডিও কনফিগারেশন

অ্যান্ড্রয়েড ১৪-এ, AAOS OEM প্লাগইন সার্ভিস চালু করেছে, যা আপনাকে গাড়ির অডিও সার্ভিস দ্বারা পরিচালিত অডিওর আচরণ নিয়ন্ত্রণ করতে দেয়। নতুন প্লাগইন সার্ভিসগুলোর পাশাপাশি, গাড়ির অডিও কনফিগারেশন ফাইলে নিম্নলিখিত পরিবর্তনগুলো যোগ করা হয়েছে:

  • OEM-সংজ্ঞায়িত গাড়ির অডিও প্রেক্ষাপট
  • অ-প্রাথমিক অঞ্চলের গতিশীল কনফিগারেশন

OEM-সংজ্ঞায়িত গাড়ির অডিও প্রেক্ষাপট

একটি নমনীয় অডিও কনফিগারেশন সক্ষম করতে, অ্যান্ড্রয়েড ১৪-এ কার অডিও সার্ভিস, নির্ধারিত স্ট্যাটিক অডিও কনটেক্সটগুলোর চেয়ে ভিন্নভাবে অডিও ব্যবহারগুলোকে গ্রুপ করার সুযোগ দেয়। এই OEM-নির্ধারিত কনটেক্সটটি car_audio_configuration.xml ভার্সন ৩ ফাইলে সংজ্ঞায়িত করা যেতে পারে।

এর পরিবর্তে পূর্বনির্ধারিত স্ট্যাটিক অডিও কনটেক্সটগুলো ব্যবহার করা হয়। OEM-দ্বারা নির্ধারিত কার অডিও কনটেক্সটের সাধারণ ফরম্যাটটি পরে দেখানো হয়েছে।

প্রতিটি OEM কনটেক্সটের জন্য একটি name পাশাপাশি সেই কনটেক্সটে নির্ধারিত অডিও অ্যাট্রিবিউট ব্যবহারের একটি তালিকা প্রয়োজন। পূর্ববর্তী উদাহরণে, দুটি কনটেক্সট সংজ্ঞায়িত করা হয়েছে:

<carAudioConfiguration version=&qu>ot;3&<quot;
    o>emContext<s
        oemContext na>me="medi<a"
       >     audioAttribu<tes
                usage value=&>quot;<AUDIO_USAGE_MEDIA" /
    usag>e value="<;AUDIO_USAGE_UNK>NOWN"<;/
        >    /audi<oAttributes
        /o>emContext
   <     oemContext> name="game&<quot;
            audioAttribute>s
           <     usage value>="AU<DIO_USAGE_G>AME&quot; /
            /audioAttributes
        /oemContext
...
  • media কনটেক্সটে AUDIO_USAGE_MEDIA এবং AUDIO_USAGE_UNKNOWN অন্তর্ভুক্ত রয়েছে।
  • game কনটেক্সটে শুধুমাত্র AUDIO_USAGE_GAME রয়েছে

car_audio_configuration.xml ফাইলের শীর্ষে কন্টেক্সটটি অবশ্যই সংজ্ঞায়িত করতে হবে। OEM কন্টেক্সটগুলো সংজ্ঞায়িত করা হয়ে গেলে, গাড়ির অডিও কনফিগারেশনের বাকি কাজ আগের মতোই করা যাবে। গাড়ির অডিও কন্টেক্সটের ক্ষেত্রে নিম্নলিখিত নিয়মগুলো প্রযোজ্য:

  • OEM কনটেক্সট সংজ্ঞা ঐচ্ছিক। এর পরিবর্তে স্ট্যাটিক অডিও কনটেক্সট ব্যবহার করা হয়।

  • প্রসঙ্গের নাম পুনরাবৃত্তি করবেন না।

  • একই অডিও অ্যাট্রিবিউটের ব্যবহার একাধিক প্রেক্ষাপটে নির্ধারণ করবেন না।

  • AudioAttributes এ সংজ্ঞায়িত সমস্ত অডিও ব্যবহার কনটেক্সট তৈরি করতে ব্যবহার করা উচিত।

কঠোরভাবে বলতে গেলে, OEM অডিও কনটেক্সট সংজ্ঞায়নের জন্য অডিও ব্যবহারের android.audio.policy.configuration.V7_0.AudioUsage স্ট্রিং উপস্থাপনাটি অবশ্যই ব্যবহার করতে হবে। ভবিষ্যতে, এক অ্যান্ড্রয়েড সংস্করণ থেকে অন্যটিতে স্থানান্তরের সময় ত্রুটি কমাতে, নতুন অডিও অ্যাট্রিবিউটের ব্যবহারগুলো সবচেয়ে উপযুক্ত কনটেক্সটে নির্ধারণ করা হবে।

যদিও OEM প্লাগইন অডিও পরিষেবাটিকে আরও প্রসারিত করার জন্য OEM-সংজ্ঞায়িত কনটেক্সট চালু করা হয়েছিল, এটি এখনও OEM প্লাগইন পরিষেবা ছাড়াই ব্যবহার করা যেতে পারে। এর অডিও আচরণ স্ট্যাটিক অডিও পরিষেবার অনুরূপ:

  • অডিও ফোকাস ইন্টারঅ্যাকশন। অডিও ফোকাস ইন্টারঅ্যাকশন ম্যাট্রিক্স দ্বারা নির্ধারিত সেরা সামঞ্জস্যপূর্ণ আচরণ নির্ধারণ করতে অডিও অ্যাট্রিবিউট ব্যবহার করা হয়। বিস্তারিত জানতে, অডিও ফোকাস দেখুন।

  • অডিও ভলিউম কন্ট্রোল অডিও অ্যাট্রিবিউটটি সেরা মিল নির্ধারণ করতে ব্যবহৃত হয়:

    • OEM-নির্ধারিত প্রেক্ষাপটের উপর ভিত্তি করে ভলিউম গ্রুপ।
    • স্থির ভলিউম তালিকা থেকে অগ্রাধিকার কনফিগার করা হয়েছে।
  • অডিও এড়িয়ে যাওয়ার আচরণ:

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

    • স্ট্যাটিক অডিও ডাকিং ম্যাট্রিক্সের উপর ভিত্তি করে, সংশ্লিষ্ট স্ট্যাটিক কনটেক্সটকে ডাক-এর সাথে ম্যাপ করতে অডিও অ্যাট্রিবিউট ব্যবহার করা হয়।

CAP ইঞ্জিন পণ্য কৌশল

যখন কোনো ডিভাইসকে ভলিউম বা রাউটিং ব্যবস্থাপনার জন্য CAP ইঞ্জিন ব্যবহার করতেই হয়, তখন আপনার OEM-সংজ্ঞায়িত কনটেক্সট অবশ্যই CAP ইঞ্জিন প্রোডাক্ট স্ট্র্যাটেজি সংজ্ঞার সাথে মিলতে হবে। অন্যথায়, আপনি CAP ইঞ্জিন ছাড়াই OEM-সংজ্ঞায়িত কনটেক্সট ব্যবহার করতে পারেন।

আরও জানতে, AAOS-এ CAP ইঞ্জিন পণ্যের কৌশল দেখুন।

ডায়নামিক অডিও জোন কনফিগারেশন

অ্যান্ড্রয়েড ১৪-এ, ডাইনামিক অডিও জোন কনফিগারেশনের সুবিধা দেওয়ার জন্য, অডিও জোন নির্ধারণের কার অডিও কনফিগারেশন স্কিমাও ভার্সন ৩-এ আপডেট করা হয়েছে। নতুন স্কিমা অনুযায়ী প্রতিটি জোনের জন্য আলাদাভাবে কনফিগারেশন সেট আপ করতে হবে।

<carAudioConfiguration version=&qu>ot;3&<quot;
    !-- optional OEM >conte<xt --
    o>emConte<xts
      oemContext na>me="<media"
   >     audioA<ttributes
          usage value=&>quot;AUDIO_<USAGE_MEDIA" /
          usag>e value=&<quot;AUDIO_USAGE>_UNKNOW<N"/
  >      /<audioAttributes
      >/oemConte<xt
      oemCon>text name=&<quot;game"
        audioAtt>ributes
 <         usage v>alue=&q<uot;AUDIO_U>SAGE_GAME<" /
   >   <  /au>dioAt<tributes
      /oemContext
...
    /oemContexts
  zones
    >zone na<me="pr>imary zon<e" isPrimary="true" occupantZoneId=">0"
   <   zoneConfi>gs
        zo<neCon>fig name="<primary zone config 0" isD>efault="true<"
          volumeG>roups
       <     group
            >  device address=<"bus0_media_out"
    >            con<text co>ntext="med<ia"/
            context context=>"game"/<
                context contex>t="announc<ement&q>uot;/
       <      > /device
    <          de>vice <address=<">bus6_notification_out"
                context context="notification"/
              /device
            /group
  ...
      /zoneConfigs
    /zone
  /zones

আরও জানতে, device/generic/car/emulator/audio/car_audio_configuration.xml এ সংজ্ঞায়িত সংস্করণ 3 ফাইলটি দেখুন। Android 14 থেকে, প্রাথমিক জোনে কেবলমাত্র একটি (1) কনফিগারেশন থাকতে পারে। অ-প্রাথমিক জোনে একাধিক কনফিগারেশন থাকতে পারে। গাড়ির অডিও কনফিগারেশনের ক্ষেত্রে নিম্নলিখিত নিয়মগুলি প্রযোজ্য:

  • প্রাথমিক অডিও জোনের কেবল একটিই কনফিগারেশন থাকতে পারে।

  • অপ্রাথমিক অডিও জোনগুলোর একাধিক কনফিগারেশন থাকতে পারে।

  • প্রতিটি অডিও জোন এবং অডিও জোন কনফিগারেশনের জন্য নামটি অবশ্যই অনন্য হতে হবে।

  • একটি অডিও জোনের মধ্যে অডিও কনফিগারেশন ভিন্ন হতে পারে:

    • ভলিউম গ্রুপগুলোর সেট-আপ একই হওয়ার প্রয়োজন নেই।
    • অডিও কনটেক্সট অ্যাসাইনমেন্ট একই হওয়ার প্রয়োজন নেই।
  • অডিও আউটপুট ডিভাইসের নাম জোন বা কনফিগারেশন জুড়ে অনন্য হতে হবে। একটি ডিভাইসের নাম কোনো অডিও কনফিগারেশন বা জোনে কেবল একবারই থাকা উচিত।

  • একই ভলিউম গ্রুপের অন্তর্ভুক্ত অডিও ডিভাইসগুলোর অডিও গেইন কনফিগারেশন একই হওয়া উচিত।

  • প্রতিটি অডিও কনফিগারেশনের জন্য সমস্ত অডিও কনটেক্সট (OEM বা স্ট্যাটিক) অবশ্যই নির্ধারণ করতে হবে।

ফরোয়ার্ড সামঞ্জস্যতা

যদিও car_audio_configuration.xml ফাইলের প্রতিটি আপডেটে নতুন ফিচার যুক্ত হয়, তবুও আপনি AAOS-এর নতুন সংস্করণগুলোতে পুরোনো ফাইলগুলো ব্যবহার করতে পারবেন। যেসব OEM অ্যান্ড্রয়েডের নতুন সংস্করণে আপডেট করছে, তারা car_audio_configuration.xml ফাইলটি পুনরায় ব্যবহার করতে পারে।

car_audio_configuration.xml ফাইলে থাকা নতুন তথ্যের প্রয়োজন এমন কোনো নতুন ফিচার ব্যবহার করতে হলে, ফাইলটির ভার্সন অবশ্যই আপডেট করতে হবে। ফাইলের পুরোনো ভার্সন ব্যবহার করার চেষ্টা করলে, যে ভার্সনটি সমর্থিত নয় এমন তথ্যসহ ফাইলটি ব্যবহার করা হলে, কার সার্ভিস চালু করার সময় একটি IllegalStateException থ্রো হয়। এক্সেপশন মেসেজটিতে কোন তথ্য ব্যবহার করা হচ্ছে এবং কোন ন্যূনতম ভার্সনটি প্রয়োজন, সে সম্পর্কিত প্রাসঙ্গিক তথ্য থাকে।