इस सेक्शन में, OpenSL ES API का इस्तेमाल शुरू करने से जुड़ी ज़रूरी जानकारी दी गई है.
अपने ऐप्लिकेशन में OpenSL ES जोड़ें
C और C++, दोनों तरह के कोड से OpenSL ES को कॉल किया जा सकता है. मुख्य OpenSL ES जोड़ने के लिए
सुविधा को आपके ऐप्लिकेशन पर सेट कर दिया गया है, तो OpenSLES.h
हेडर फ़ाइल शामिल करें:
#include <SLES/OpenSLES.h>
OpenSL ES Android एक्सटेंशन जोड़ने के लिए,
भी, OpenSLES_Android.h
हेडर फ़ाइल शामिल करें:
#include <SLES/OpenSLES_Android.h>
OpenSLES_Android.h
हेडर फ़ाइल शामिल करने पर, यहां दिए गए हेडर शामिल होते हैं
स्वचालित रूप से:
#include <SLES/OpenSLES_AndroidConfiguration.h> #include <SLES/OpenSLES_AndroidMetadata.h>
ध्यान दें: ये हेडर ज़रूरी नहीं हैं, लेकिन इन्हें एपीआई को सीखने में मदद के तौर पर दिखाया गया है.
बिल्ड और डीबग
आप अपने बिल्ड में OpenSL ES को
Android.mk
फ़ाइल अपलोड की गई है.
NDK बिल्ड सिस्टम की मेकफ़ाइल. निम्न पंक्ति इसमें जोड़ें
Android.mk
:
LOCAL_LDLIBS += -lOpenSLES
बेहतर तरीके से डीबग करने के लिए, हमारा सुझाव है कि आप उस SLresult
वैल्यू की जांच करें जिसमें से ज़्यादातर
तो आपको OpenSL ES API से वापस जाना होगा. Google Analytics 4 पर माइग्रेट करने के लिए,
असर
या डीबग करने के लिए, गड़बड़ी को ठीक करने वाला ज़्यादा बेहतर लॉजिक; कोई भी ऑफ़र
OpenSL ES के साथ काम करने का एक स्वाभाविक लाभ, हालांकि इनमें से कोई एक उसके लिए ज़्यादा सही हो सकता है
का इस्तेमाल किया जा सकता है.
हम अपने उदाहरण के लिए: बुध प्रोडक्शन में होने वाली अन्य स्थितियों के लिए, गड़बड़ियों को साफ़ तौर पर हैंडल करने का तरीका इस्तेमाल किया हो.
एपीआई की कई गड़बड़ियों की वजह से, शून्य के अलावा कोई नतीजा देने वाले कोड के साथ-साथ लॉग एंट्री भी हो जाती है. ऐसी लॉग एंट्री
अतिरिक्त जानकारी दे सकता है जो बाकी की जानकारी वाले एपीआई के लिए खास तौर पर मददगार होती है. जैसे,
Engine::CreateAudioPlayer
.
यह लॉग, कमांड लाइन या Android Studio में देखा जा सकता है. लॉग की जांच करने के लिए तो ये टाइप करें:
$ adb logcat
Android Studio में लॉग की जांच करने के लिए, View > टूल की विंडो > Logcat. ज़्यादा जानकारी के लिए, Logcat की मदद से लॉग लिखना और देखना लेख पढ़ें.
कोड का उदाहरण
हम समर्थित और जांचे गए उदाहरण कोड का इस्तेमाल करने का सुझाव देते हैं, जिसे आपके खुद के मॉडल के रूप में इस्तेमाल किया जा सकता है जो ऑडियो-इको और नेटिव-ऑडियो के फ़ोल्डर android-ndk GitHub डेटा स्टोर करने की जगह.
चेतावनी: OpenSL ES 1.0.1 की खास जानकारी में, अपेंडिक्स में उदाहरण कोड शामिल है (देखें Khronos OpenSL ES रजिस्ट्री देखें). हालांकि, अपेंडिक्स B: सैंपल कोड और अपेंडिक्स C: केस सैंपल कोड का इस्तेमाल करें उन सुविधाओं का इस्तेमाल करता है जो Android पर काम नहीं करतीं. कुछ सूचनाएं मिल रही हैं उदाहरणों में टाइपोग्राफ़िक गड़बड़ियां भी शामिल हैं या वे ऐसे एपीआई इस्तेमाल करते हैं जिनमें बदलाव हो सकता है. इसके साथ आगे बढ़ें इनके बारे में बात करते समय सावधानी बरतें; हालांकि, कोड से OpenSL ES को समझने में भी मदद मिल सकती है नहीं है, तो इसका इस्तेमाल Android के साथ नहीं किया जाना चाहिए.
ऑडियो कन्टैंट
अपने ऐप्लिकेशन के लिए ऑडियो सामग्री पैकेज करने के कई तरीके नीचे दिए गए हैं:
- संसाधन: अपनी ऑडियो फ़ाइलों को
res/raw/
फ़ोल्डर में रखकर, तो उन्हें संबंधित एपीआई से आसानी से ऐक्सेस किया जा सकता हैResources
. हालांकि, संसाधनों का सीधा ऐक्सेस नहीं होता, इसलिए आपको Java लिखना होगा प्रोग्रामिंग भाषा कोड का इस्तेमाल किया जा सकता है. - ऐसेट: आपकी ऑडियो फ़ाइलों को
assets/
फ़ोल्डर में रखने पर, वे Android के नेटिव ऐसेट मैनेजर एपीआई से सीधे तौर पर ऐक्सेस किए जा सकते हैं. हेडर फ़ाइलें देखें इन बारे में ज़्यादा जानकारी के लिए,android/asset_manager.h
औरandroid/asset_manager_jni.h
एपीआई. उदाहरण के लिए, यह कोड Android-एनडीके GitHub रिपॉज़िटरी इन नेटिव ऐसेट मैनेजर एपीआई का इस्तेमाल, Android फ़ाइल के साथ करता है डिस्क्रिप्टर डेटा लोकेटर. - नेटवर्क: यूआरआई डेटा लोकेटर का इस्तेमाल करके सीधे ऑडियो कॉन्टेंट चलाया जा सकता है नेटवर्क से हटाया जा सकता है. हालांकि, अपने समाचार संगठन के लिए, सुरक्षा और अनुमतियां.
- लोकल फ़ाइल सिस्टम: यूआरआई डेटा लोकेटर
file:
स्कीम के साथ काम करता है स्थानीय फ़ाइलों के लिए, बशर्ते ऐप्लिकेशन से फ़ाइलें ऐक्सेस की जा सकें. ध्यान दें कि Android सुरक्षा फ़्रेमवर्क, Linux यूज़र आईडी और ग्रुप आईडी मैकेनिज़्म के ज़रिए फ़ाइल को ऐक्सेस करने पर पाबंदी लगाता है. - रिकॉर्ड किया गया: आपका ऐप्लिकेशन माइक्रोफ़ोन इनपुट से ऑडियो डेटा रिकॉर्ड कर सकता है, इस कॉन्टेंट को सेव कर लें और बाद में चलाकर देखें. उदाहरण कोड प्लेबैक क्लिप.
- कंपाइल और लिंक किए गए इनलाइन: आपके पास अपने ऑडियो कॉन्टेंट को सीधे
शेयर की गई लाइब्रेरी से जोड़ा जा सकता है और फिर बफ़र क्यू डेटा लोकेटर वाले ऑडियो प्लेयर का इस्तेमाल करके, इसे चलाया जा सकता है. यह
PCM फ़ॉर्मैट वाली छोटी क्लिप के लिए सबसे सही होता है. उदाहरण कोड
हैलो और Android क्लिप. पीसीएम डेटा को
bin2c
टूल (उपलब्ध नहीं है). - रीयल-टाइम सिंथेसिस: आपका ऐप्लिकेशन, पीसीएम डेटा को तुरंत इकट्ठा कर सकता है और इसके बाद, बफ़र क्यू डेटा लोकेटर वाले ऑडियो प्लेयर का इस्तेमाल करके, इसे चलाएं. यह अन्य लोगों के मुकाबले तकनीक के बारे में ज़्यादा जानकारी शामिल है और ऑडियो सिंथेसिस की जानकारी इस लेख में शामिल नहीं है.
ध्यान दें: आपके ऐप्लिकेशन के लिए उपयोगी ऑडियो सामग्री ढूंढना या बनाना इस लेख में बताए गए दायरे से बाहर है. वेब पर खोज के लिए इस्तेमाल हुए शब्दों का इस्तेमाल किया जा सकता है. जैसे, इंटरैक्टिव ऑडियो, गेम ऑडियो, साउंड डिज़ाइन, और ऑडियो प्रोग्रामिंग को ज़्यादा जानकारी दी जा सकती है.
चेतावनी: यह आपकी ज़िम्मेदारी है ताकि यह पक्का किया जा सके कि आपके पास कॉन्टेंट को चलाने या रिकॉर्ड करने की कानूनी अनुमति है. शायद निजता मौजूद हो ध्यान दें.
कोड सैंपल
ये सैंपल ऐप्लिकेशन, हमारे GitHub पेज पर उपलब्ध हैं:
- ऑडियो-इको एक इनपुट-से-आउटपुट राउंडट्रिप लूप बनाता है.
- नेटिव-ऑडियो एक सामान्य ऑडियो रिकॉर्डर/प्लेयर है.
OpenSL ES को Android NDK में लागू करने का तरीका अलग है ने कई संदर्भ में, OpenSL ES 1.0.1 के रेफ़रंस स्पेसिफ़िकेशन ये अंतर एक अहम वजह हैं, क्योंकि इसकी वजह से हो सकता है कि आप सीधे OpenSL ES संदर्भ स्पेसिफ़िकेशन से कॉपी करते हों, तो Android ऐप्लिकेशन.
पहचान से जुड़ी खास जानकारी और Android लागू करने के बारे में जानें. इसके लिए, यहां जाएं Android के लिए OpenSL ES.