البدء

يوفّر هذا القسم المعلومات اللازمة لبدء استخدام واجهات برمجة تطبيقات OpenSL ES.

إضافة OpenSL ES إلى تطبيقك

يمكنك استدعاء OpenSL ES من الرمزين C وC++. لإضافة بروتوكول OpenSL ES الأساسي إلى تطبيقك، ضمِّن ملف عنوان OpenSLES.h:

#include <SLES/OpenSLES.h>

لإدراج إضافات Android في OpenSL ES، أيضًا، قم بتضمين ملف العنوان 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 الذي يعمل كأحد ملفات ملفات Makefiles الخاصة بنظام إصدار NDK. أضف السطر التالي إلى Android.mk:

LOCAL_LDLIBS += -lOpenSLES

لتصحيح الأخطاء بشكلٍ فعّال، ننصحك بفحص قيمة SLresult الأكثر عرض واجهات برمجة تطبيقات OpenSL ES. يمكنك استخدام تأكيد أو منطق معالجة الأخطاء الأكثر تقدمًا لتصحيح الأخطاء لا توجد عروض ميزة كامنة للعمل مع OpenSL ES، على الرغم من أن أحدهما أو الآخر قد يكون أكثر لحالة استخدام معينة.

نستخدم تأكيدات في الأمثلة، لأنها تساعد في اكتشاف الظروف غير الواقعية التي قد تشير إلى خطأ في التعليمات البرمجية. أر قد استخدمت معالجة واضحة للأخطاء لشروط أخرى من المرجح أن تحدث في مرحلة الإنتاج.

تؤدي العديد من أخطاء واجهة برمجة التطبيقات إلى إدخال في السجلّ، بالإضافة إلى رمز نتيجة غير صفري. مثل هذه الإدخالات في السجلّ تفاصيل إضافية تثبت فائدتها بشكل خاص لواجهات برمجة التطبيقات المعقّدة نسبيًا، مثل Engine::CreateAudioPlayer

يمكنك عرض السجلّ من سطر الأوامر أو من "استوديو Android". لفحص السجل من سطر الأوامر، اكتب ما يلي:

$ adb logcat

لفحص السجلّ من "استوديو Android"، اختَر عرض > نوافذ الأدوات > Logcat. لمزيد من المعلومات، يُرجى الاطِّلاع على كتابة السجلات وعرضها باستخدام Logcat.

مثال على الرمز البرمجي

نقترح استخدام نموذج رمز برمجي متوافق ومُختبَر وقابل للاستخدام كنموذج خاص بك. والذي يقع في صوت صدى الصوت أو محتوى صوتي أصلي مجلدات android-ndk في GitHub المستودع.

تنبيه: تحتوي مواصفات OpenSL ES 1.0.1 على نموذج التعليمة البرمجية في الملاحق (راجع قاعدة بيانات Khronos OpenSL ES للحصول على مزيد من التفاصيل). ومع ذلك، فإن الأمثلة في الملحق ب: نموذج كود الملحق ج: نموذج رمز حالة الاستخدام يستخدم ميزات لا يدعمها Android. بعض الإشعارات تحتوي الأمثلة أيضًا على أخطاء مطبعية أو تستخدم واجهات برمجة تطبيقات من المرجح أن تتغير. المتابعة باستخدام بحذر عند الإشارة إليها رغم أن التعليمات البرمجية قد تكون مفيدة في فهم لغة OpenSL ES الكاملة بمعيار، فلا يجب استخدامه كما هو في Android.

محتوى صوتي

في ما يلي بعض الطرق العديدة لتجميع محتوى صوتي في تطبيقك:

  • الموارد: من خلال وضع ملفاتك الصوتية في مجلد res/raw/، ويمكن الوصول إليها بسهولة من خلال واجهات برمجة التطبيقات المرتبطة Resources ومع ذلك، لا يتوفّر وصول مباشر إلى الموارد من السكان الأصليين، لذلك يجب كتابة Java برمجة لغة البرمجة لنسخها قبل الاستخدام.
  • مواد العرض: من خلال وضع ملفاتك الصوتية في مجلد assets/، سيتم يمكن الوصول إليها مباشرةً من خلال واجهات برمجة التطبيقات لأداة إدارة مواد العرض الأصلية لنظام التشغيل Android. الاطّلاع على ملفات العناوين android/asset_manager.h وandroid/asset_manager_jni.h لمزيد من المعلومات عن هذه واجهات برمجة التطبيقات. مثال التعليمة البرمجية الموجود في android-ndk يستخدم مستودع GitHub واجهات برمجة التطبيقات لنظام إدارة مواد العرض الأصلية جنبًا إلى جنب مع ملف Android محدد موقع البيانات أو واصف البيانات.
  • الشبكة: يمكنك استخدام محدِّد موقع بيانات معرّف الموارد المنتظم (URI) لتشغيل محتوى الصوت مباشرةً. من الشبكة. ومع ذلك، تأكد من قراءة الأمان والأذونات
  • نظام الملفات المحلي: يتوافق محدِّد موقع بيانات معرّف الموارد المنتظم (URI) مع نظام file:. للملفات المحلية، بشرط أن يتمكن التطبيق من الوصول إلى الملفات. تجدر الإشارة إلى أنّ نظام التشغيل Android يقيّد إطار عمل الأمان الوصول إلى الملفات من خلال آليات معرّف المستخدم ومعرّف المجموعة في Linux.
  • مسجلة: يمكن للتطبيق تسجيل البيانات الصوتية من إدخال الميكروفون، وتخزين هذا المحتوى وإعادة تشغيله لاحقًا يستخدم المثال الرمز هذه الطريقة لـ تشغيل المقطع.
  • محتوى مُجمَّع ومرتبط: يمكنك ربط المحتوى الصوتي مباشرةً في المكتبة المشتركة، ثم تشغيلها باستخدام مشغِّل صوت به محدد موقع بيانات قائمة انتظار المخزن المؤقت. هذا النمط الأنسب للمقاطع القصيرة بتنسيق PCM. يستخدم الرمز النموذجي هذا الأسلوب لنظام مرحبًا ومقاطع Android. تم تحويل بيانات PCM إلى سلاسل سداسية عشرية باستخدام أداة bin2c (غير مُقدَّمة).
  • التجميع في الوقت الفعلي: يمكن لتطبيقك تجميع بيانات PCM بسرعة وسهولة ثم تشغيلها باستخدام مشغِّل صوت مع محدد موقع بيانات قائمة انتظار المخزن المؤقت. هذا متقدم نسبيًا وتفاصيل صناعة الصوت خارج نطاق هذه المقالة.

ملاحظة: إنّ العثور على محتوى صوتي مفيد لتطبيقك أو إنشائه ليس خارج نطاق هذه المقالة. يمكنك استخدام عبارات بحث على الويب مثل محتوى صوتي تفاعلي أو صوت اللعبة أو صوت". والتصميم والبرمجة الصوتية للعثور على مزيد من المعلومات.

تنبيه: تقع المسؤولية على عاتقك. لضمان أنّه يُسمح لك قانونًا بتشغيل المحتوى أو تسجيله. قد تكون هناك خصوصية اعتبارات تسجيل المحتوى.

عيّنات التعليمات البرمجية

تتوفّر نماذج التطبيقات التالية على صفحة GitHub:

يختلف تنفيذ Android NDK لـ OpenSL ES من المواصفات المرجعية لـ OpenSL ES 1.0.1 في عدد من الجوانب. وتعد هذه الاختلافات سببًا مهمًا في أن عينة التعليمات البرمجية الذي تنسخه مباشرة من المواصفات المرجعية لـ OpenSL ES في تطبيق Android.

للمزيد من المعلومات حول الاختلافات بين مواصفات المرجع التنفيذ في Android، يُرجى مراجعة OpenSL ES لأجهزة Android.