Android Automotive OS (AAOS) একটি গাড়িতে ইনফোটেইনমেন্ট সিস্টেম হিসাবে কাজ করার ক্ষেত্রে ব্যবহারের ক্ষেত্রে সমর্থন করার জন্য মূল Android অডিও স্ট্যাকের উপর তৈরি করে। AAOS ইনফোটেইনমেন্ট সাউন্ডের জন্য দায়ী (এটি হল মিডিয়া, নেভিগেশন এবং যোগাযোগ) কিন্তু চীম এবং সতর্কতার জন্য সরাসরি দায়ী নয় যেগুলির জন্য কঠোর উপলব্ধতা এবং সময়ের প্রয়োজনীয়তা রয়েছে৷
যদিও AAOS গাড়িটিকে অডিও পরিচালনা করতে সাহায্য করার জন্য সংকেত এবং প্রক্রিয়া সরবরাহ করে, শেষ পর্যন্ত এটি গাড়ির উপর নির্ভর করে যে চালক এবং যাত্রীদের জন্য কোন শব্দগুলি বাজানো উচিত, নিরাপত্তার সমালোচনামূলক শব্দ এবং নিয়ন্ত্রক শব্দগুলি ছাড়াই সঠিকভাবে শোনা যায় তা নিশ্চিত করে বাধা
যেহেতু AAOS অ্যান্ড্রয়েড অডিও স্ট্যাক ব্যবহার করে, তাই অডিও বাজানো তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলিকে ফোনে ভিন্ন কিছু করার দরকার নেই। অডিও নীতি কনফিগারেশনে বর্ণিত হিসাবে অ্যাপ্লিকেশনটির অডিও রাউটিং স্বয়ংক্রিয়ভাবে AAOS দ্বারা পরিচালিত হয়৷
যেহেতু অ্যান্ড্রয়েড গাড়ির মিডিয়া অভিজ্ঞতা পরিচালনা করে, রেডিও টিউনারের মতো বাহ্যিক মিডিয়া উত্সগুলিকে অ্যাপস দ্বারা উপস্থাপন করা উচিত, যা উত্সের জন্য অডিও ফোকাস এবং মিডিয়া কী ইভেন্টগুলি পরিচালনা করতে পারে৷
অ্যান্ড্রয়েড সাউন্ড এবং স্ট্রিম
স্বয়ংচালিত অডিও সিস্টেম নিম্নলিখিত শব্দ এবং প্রবাহ পরিচালনা করে:
চিত্র 1. স্ট্রীম-কেন্দ্রিক আর্কিটেকচার ডায়াগ্রাম।
অ্যান্ড্রয়েড অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি থেকে আসা শব্দগুলি পরিচালনা করে, সেই অ্যাপগুলিকে নিয়ন্ত্রণ করে এবং শব্দের প্রকারের উপর ভিত্তি করে HAL-এ আউটপুট ডিভাইসগুলিতে তাদের শব্দগুলিকে রাউট করে:
লজিক্যাল স্ট্রীম , মূল অডিও নামকরণে উৎস হিসেবে পরিচিত, অডিও বৈশিষ্ট্যের সাথে ট্যাগ করা হয়।
আসল অডিও নামকরণে ডিভাইস হিসাবে পরিচিত শারীরিক স্ট্রীম , মিশ্রিত করার পরে কোনও প্রসঙ্গ তথ্য থাকে না।
নির্ভরযোগ্যতার জন্য, বাহ্যিক শব্দ (স্বতন্ত্র উৎস থেকে আসা, যেমন সিটবেল্ট সতর্কীকরণ চাইমস) অ্যান্ড্রয়েডের বাইরে, HAL-এর নীচে বা এমনকি আলাদা হার্ডওয়্যারেও পরিচালিত হয়। সিস্টেম বাস্তবায়নকারীদের অবশ্যই একটি মিক্সার প্রদান করতে হবে যা Android থেকে এক বা একাধিক স্ট্রীম সাউন্ড ইনপুট গ্রহণ করে এবং তারপর সেই স্ট্রিমগুলিকে উপযুক্ত উপায়ে গাড়ির জন্য প্রয়োজনীয় বাহ্যিক শব্দ উত্সগুলির সাথে একত্রিত করে৷ অ্যান্ড্রয়েড কন্ট্রোল এইচএএল অ্যান্ড্রয়েডের বাইরে যোগাযোগ করার জন্য অ্যান্ড্রয়েডের বাইরে উত্পন্ন শব্দগুলির জন্য একটি ভিন্ন প্রক্রিয়া প্রদান করে:
- অডিও ফোকাস অনুরোধ
- লাভ বা আয়তনের সীমাবদ্ধতা
- লাভ এবং ভলিউম পরিবর্তন
অডিও HAL বাস্তবায়ন এবং বাহ্যিক মিক্সার নিরাপত্তা-গুরুত্বপূর্ণ বাহ্যিক শব্দ শোনার জন্য এবং Android-প্রদত্ত স্ট্রীমগুলিতে মিশ্রিত করার জন্য এবং উপযুক্ত স্পীকারে তাদের রাউটিং করার জন্য দায়ী।
অ্যান্ড্রয়েড শব্দ
অ্যাপ্লিকেশানগুলিতে এক বা একাধিক প্লেয়ার থাকতে পারে যা অডিও ডেটার এক বা একাধিক যৌক্তিক স্ট্রীম নির্গত করতে স্ট্যান্ডার্ড অ্যান্ড্রয়েড এপিআইগুলির মাধ্যমে ইন্টারঅ্যাক্ট করে (উদাহরণস্বরূপ, ফোকাস নিয়ন্ত্রণের জন্য অডিও ম্যানেজার বা স্ট্রিমিংয়ের জন্য মিডিয়াপ্লেয়ার )। এই ডেটা একক চ্যানেল মনো বা 7.1 চারপাশে হতে পারে, তবে এটিকে একক উত্স হিসাবে রুট করা এবং বিবেচনা করা হয়। অ্যাপ স্ট্রীমটি AudioAttributes- এর সাথে যুক্ত যা অডিও কীভাবে প্রকাশ করা উচিত সে সম্পর্কে সিস্টেমকে ইঙ্গিত দেয়।
লজিক্যাল স্ট্রীমগুলি অডিওসার্ভিসের মাধ্যমে পাঠানো হয় এবং উপলব্ধ ফিজিক্যাল আউটপুট স্ট্রীমগুলির একটিতে (এবং শুধুমাত্র একটি) রুট করা হয়, যার প্রতিটি অডিওফ্লিংগারের মধ্যে একটি মিক্সারের আউটপুট। অডিও অ্যাট্রিবিউটগুলি একটি ফিজিক্যাল স্ট্রিমে মিশে যাওয়ার পরে, সেগুলি আর পাওয়া যায় না৷
হার্ডওয়্যারে রেন্ডার করার জন্য প্রতিটি ফিজিক্যাল স্ট্রীম অডিও HAL-এ বিতরণ করা হয়। স্বয়ংচালিত অ্যাপ্লিকেশনগুলিতে, রেন্ডারিং হার্ডওয়্যার স্থানীয় কোডেক (মোবাইল ডিভাইসের অনুরূপ) বা গাড়ির শারীরিক নেটওয়ার্ক জুড়ে একটি দূরবর্তী প্রসেসর হতে পারে। যেভাবেই হোক, আসল নমুনা ডেটা সরবরাহ করা এবং এটিকে শ্রবণযোগ্য করে তোলা অডিও HAL বাস্তবায়নের কাজ।
বাহ্যিক প্রবাহ
যে সাউন্ড স্ট্রিমগুলিকে অ্যান্ড্রয়েডের মাধ্যমে রুট করা উচিত নয় (প্রত্যয়নপত্র বা সময়ের কারণে) সরাসরি বহিরাগত মিক্সারে পাঠানো হতে পারে। Android 11-এর হিসাবে, HAL এখন Android কে জানানোর জন্য এই বাহ্যিক শব্দগুলির জন্য ফোকাস করার অনুরোধ করতে সক্ষম হয়েছে যাতে এটি মিডিয়াকে বিরতি দেওয়া বা অন্যদের ফোকাস পেতে বাধা দেওয়ার মতো উপযুক্ত পদক্ষেপ নিতে পারে।
যদি বাহ্যিক স্ট্রীমগুলি মিডিয়া উত্স হয় যেগুলি Android যে শব্দ পরিবেশ তৈরি করছে তার সাথে ইন্টারঅ্যাক্ট করা উচিত (উদাহরণস্বরূপ, একটি বাহ্যিক টিউনার চালু হলে MP3 প্লেব্যাক বন্ধ করুন), সেই বাহ্যিক স্ট্রিমগুলিকে একটি Android অ্যাপ দ্বারা উপস্থাপন করা উচিত৷ এই ধরনের একটি অ্যাপ HAL-এর পরিবর্তে মিডিয়া সোর্সের তরফে অডিও ফোকাস করার অনুরোধ করবে, এবং Android ফোকাস নীতিতে মাপসই করার জন্য প্রয়োজনীয় বাহ্যিক উত্স শুরু এবং বন্ধ করে ফোকাস বিজ্ঞপ্তিগুলির প্রতিক্রিয়া জানাবে।
প্লে এবং পজের মতো মিডিয়া কী ইভেন্টগুলি পরিচালনা করার জন্যও অ্যাপটি দায়ী। এই ধরনের বাহ্যিক ডিভাইসগুলিকে নিয়ন্ত্রণ করার জন্য একটি প্রস্তাবিত প্রক্রিয়া হল HwAudioSource
. আরও জানতে, AAOS-এ একটি ইনপুট ডিভাইস সংযুক্ত করুন দেখুন।
আউটপুট ডিভাইস
অডিও HAL স্তরে, ডিভাইসের ধরন AUDIO_DEVICE_OUT_BUS
গাড়ির অডিও সিস্টেমে ব্যবহারের জন্য একটি জেনেরিক আউটপুট ডিভাইস সরবরাহ করে। বাস ডিভাইসটি অ্যাড্রেসযোগ্য পোর্টগুলিকে সমর্থন করে (যেখানে প্রতিটি পোর্ট একটি ফিজিক্যাল স্ট্রিমের জন্য শেষ বিন্দু) এবং এটি একটি গাড়িতে একমাত্র সমর্থিত আউটপুট ডিভাইস টাইপ হবে বলে আশা করা হচ্ছে।
একটি সিস্টেম বাস্তবায়ন সমস্ত অ্যান্ড্রয়েড সাউন্ডের জন্য একটি বাস পোর্ট ব্যবহার করতে পারে, এই ক্ষেত্রে অ্যান্ড্রয়েড সবকিছু একসাথে মিশ্রিত করে এবং এটিকে একটি স্ট্রিম হিসাবে সরবরাহ করে। বিকল্পভাবে, HAL প্রতিটি CarAudioContext- এর জন্য একটি বাস পোর্ট সরবরাহ করতে পারে যাতে যেকোনো ধরনের শব্দের একযোগে ডেলিভারি করা যায়। এটি এইচএএল বাস্তবায়নের জন্য পছন্দসই বিভিন্ন শব্দ মিশ্রিত করা এবং হাঁস করা সম্ভব করে তোলে।
আউটপুট ডিভাইসে অডিও কনটেক্সট অ্যাসাইনমেন্ট করা হয় car_audio_configuration.xml
ফাইলের মাধ্যমে। আরও জানতে, অডিও নীতি কনফিগারেশন দেখুন।