
অ্যান্ড্রয়েডের অডিও হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) android.media- তে থাকা উচ্চ-স্তরের, অডিও-নির্দিষ্ট ফ্রেমওয়ার্ক API-গুলোকে অন্তর্নিহিত অডিও ড্রাইভার এবং হার্ডওয়্যারের সাথে সংযুক্ত করে। এই বিভাগে বাস্তবায়নের নির্দেশাবলী এবং কর্মক্ষমতা উন্নত করার জন্য কিছু পরামর্শ অন্তর্ভুক্ত রয়েছে।
অ্যান্ড্রয়েড অডিও আর্কিটেকচার নির্ধারণ করে যে অডিও কার্যকারিতা কীভাবে বাস্তবায়িত হবে এবং এই বাস্তবায়নের সাথে জড়িত প্রাসঙ্গিক সোর্স কোড নির্দেশ করে।

চিত্র ১. অ্যান্ড্রয়েড অডিও আর্কিটেকচার
- অ্যাপ্লিকেশন ফ্রেমওয়ার্ক
- অ্যাপ্লিকেশন ফ্রেমওয়ার্কের মধ্যে অ্যাপ কোড অন্তর্ভুক্ত থাকে, যা অডিও হার্ডওয়্যারের সাথে ইন্টারঅ্যাক্ট করার জন্য android.media API ব্যবহার করে। অভ্যন্তরীণভাবে, এই কোডটি অডিও হার্ডওয়্যারের সাথে ইন্টারঅ্যাক্টকারী নেটিভ কোড অ্যাক্সেস করার জন্য সংশ্লিষ্ট JNI গ্লু ক্লাসগুলোকে কল করে।
- জেএনআই
- android.media- এর সাথে যুক্ত JNI কোড অডিও হার্ডওয়্যার অ্যাক্সেস করার জন্য নিম্ন স্তরের নেটিভ কোডকে কল করে। JNI
frameworks/base/core/jni/এবংframeworks/base/media/jniতে অবস্থিত। - নেটিভ ফ্রেমওয়ার্ক
- নেটিভ ফ্রেমওয়ার্কটি android.media প্যাকেজের একটি নেটিভ সমতুল্য সংস্করণ প্রদান করে, যা মিডিয়া সার্ভারের অডিও-সংক্রান্ত পরিষেবাগুলো অ্যাক্সেস করার জন্য বাইন্ডার আইপিসি প্রক্সিগুলোকে কল করে। নেটিভ ফ্রেমওয়ার্কের কোড
frameworks/av/media/libmediaফোল্ডারে অবস্থিত। - বাইন্ডার আইপিসি
- বাইন্ডার আইপিসি প্রক্সিগুলো প্রসেস সীমানা জুড়ে যোগাযোগ সহজ করে। প্রক্সিগুলো
frameworks/av/media/libmediaতে অবস্থিত এবং "I" অক্ষর দিয়ে শুরু হয়। - মিডিয়া সার্ভার
- মিডিয়া সার্ভারে অডিও সার্ভিসগুলো থাকে, যেগুলো হলো সেই প্রকৃত কোড যা আপনার HAL ইমপ্লিমেন্টেশনগুলোর সাথে যোগাযোগ করে। মিডিয়া সার্ভারটি
frameworks/av/services/audioflingerএ অবস্থিত। - এইচএএল
- HAL সেই স্ট্যান্ডার্ড ইন্টারফেসটি নির্ধারণ করে, যেটিতে অডিও সার্ভিসগুলো কল করে এবং আপনার অডিও হার্ডওয়্যার সঠিকভাবে কাজ করার জন্য আপনাকে অবশ্যই এটি ইমপ্লিমেন্ট করতে হবে। আরও বিস্তারিত তথ্যের জন্য, সংশ্লিষ্ট HAL ভার্সন ডিরেক্টরির
*.halফাইলগুলোতে থাকা অডিও HAL ইন্টারফেস এবং কমেন্টগুলো দেখুন। - কার্নেল ড্রাইভার
- অডিও ড্রাইভারটি আপনার হার্ডওয়্যার এবং HAL ইমপ্লিমেন্টেশনের সাথে ইন্টারঅ্যাক্ট করে। আপনি অ্যাডভান্সড লিনাক্স সাউন্ড আর্কিটেকচার (ALSA), ওপেন সাউন্ড সিস্টেম (OSS), অথবা একটি কাস্টম ড্রাইভার ব্যবহার করতে পারেন (HAL ড্রাইভার-অ্যাগনস্টিক)।
দ্রষ্টব্য : আপনি যদি ALSA ব্যবহার করেন, তাহলে আমরা ড্রাইভারের ব্যবহারকারী অংশের জন্য
external/tinyalsaব্যবহারের সুপারিশ করি, কারণ এর লাইসেন্সিং সামঞ্জস্যপূর্ণ (স্ট্যান্ডার্ড ইউজার-মোড লাইব্রেরিটি GPL-লাইসেন্সপ্রাপ্ত)। - ওপেন এসএল ইএস ভিত্তিক অ্যান্ড্রয়েড নেটিভ অডিও (প্রদর্শিত নয়)
- এই API-টি Android NDK- এর অংশ হিসেবে উন্মুক্ত করা হয়েছে এবং এটি android.media- এর মতো একই আর্কিটেকচার স্তরে রয়েছে।