ऑडियो

Android Audio HAL का आइकॉन

Android का ऑडियो हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल), android.media में मौजूद, ऑडियो के लिए बने फ़्रेमवर्क के एपीआई को ऑडियो ड्राइवर और हार्डवेयर से जोड़ता है. इस सेक्शन में, लागू करने के निर्देश और परफ़ॉर्मेंस को बेहतर बनाने के लिए सलाह शामिल हैं.

Android ऑडियो आर्किटेक्चर से यह तय होता है कि ऑडियो फ़ंक्शन को कैसे लागू किया जाता है. साथ ही, यह लागू करने में शामिल काम के सोर्स कोड की जानकारी भी देता है.

ऑडियो आर्किटेक्चर

पहली इमेज. Android ऑडियो आर्किटेक्चर

ऐप्लिकेशन फ़्रेमवर्क
ऐप्लिकेशन फ़्रेमवर्क में ऐप्लिकेशन कोड शामिल होता है. यह ऑडियो हार्डवेयर के साथ इंटरैक्ट करने के लिए, android.media एपीआई का इस्तेमाल करता है. अंदरूनी तौर पर, यह कोड ऑडियो हार्डवेयर के साथ इंटरैक्ट करने वाले नेटिव कोड को ऐक्सेस करने के लिए, उससे जुड़ी JNI glue क्लास को कॉल करता है.
JNI
android.media से जुड़ा JNI कोड, ऑडियो हार्डवेयर को ऐक्सेस करने के लिए, निचले लेवल के नेटिव कोड को कॉल करता है. JNI, frameworks/base/core/jni/ और frameworks/base/media/jni में मौजूद है.
नेटिव फ़्रेमवर्क
नेटिव फ़्रेमवर्क, android.media पैकेज के बराबर नेटिव सुविधाएं देता है. यह मीडिया सर्वर की ऑडियो से जुड़ी सेवाओं को ऐक्सेस करने के लिए, Binder IPC प्रॉक्सी को कॉल करता है. नेटिव फ़्रेमवर्क कोड frameworks/av/media/libmedia में मौजूद है.
Binder IPC
Binder IPC प्रॉक्सी, प्रोसेस की सीमाओं के बीच कम्यूनिकेशन को आसान बनाते हैं. प्रोक्सी, frameworks/av/media/libmedia में मौजूद होती हैं और "I" अक्षर से शुरू होती हैं.
मीडिया सर्वर
मीडिया सर्वर में ऑडियो सेवाएं होती हैं. ये असल कोड होते हैं, जो आपके एचएएल लागू करने के साथ इंटरैक्ट करते हैं. मीडिया सर्वर, frameworks/av/services/audioflinger में मौजूद है.
HAL
एचएएल, स्टैंडर्ड इंटरफ़ेस तय करता है. ऑडियो सेवाएं इस इंटरफ़ेस को कॉल करती हैं. साथ ही, ऑडियो हार्डवेयर को सही तरीके से काम करने के लिए, आपको इसे लागू करना होगा. ज़्यादा जानकारी के लिए, ऑडियो HAL इंटरफ़ेस देखें. साथ ही, HAL वर्शन डायरेक्ट्री की *.hal फ़ाइलों में मौजूद टिप्पणियां देखें.
कर्नेल ड्राइवर
ऑडियो ड्राइवर, आपके हार्डवेयर और एचएएल लागू करने के साथ इंटरैक्ट करता है. Advanced Linux Sound Architecture (ALSA), Open Sound System (OSS) या पसंद के मुताबिक ड्राइवर का इस्तेमाल किया जा सकता है. HAL, ड्राइवर पर निर्भर नहीं करता.

ध्यान दें: अगर ALSA का इस्तेमाल किया जाता है, तो हमारा सुझाव है कि ड्राइवर के उपयोगकर्ता हिस्से के लिए external/tinyalsa का इस्तेमाल करें. ऐसा इसलिए, क्योंकि यह लाइसेंस के साथ काम करता है. स्टैंडर्ड यूज़र-मोड लाइब्रेरी का लाइसेंस GPL है.

Open SL ES पर आधारित Android नेटिव ऑडियो (दिखाया नहीं गया)
यह एपीआई, Android NDK के हिस्से के तौर पर उपलब्ध है और यह android.media के जैसे ही आर्किटेक्चर लेवल पर है.