"لا يتوفر المزيد من أسماء المسارات" عند استخدام OpenSL ES

StackOverflow https://stackoverflow.com//questions/9720516

  •  16-12-2019
  •  | 
  •  

سؤال

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

E/AudioFlinger(  119): no more track names available
E/AudioTrack( 6884): AudioFlinger could not create track, status: -12
E/libOpenSLES( 6884): AudioTrack::initCheck status 4294967284
W/libOpenSLES( 6884): Leaving Object::Realize (SL_RESULT_CONTENT_UNSUPPORTED)

حسنًا، لقد قرأت أن هذا يعني أن العناصر المجانية قد نفدت ويجب أن أحرر بعض العناصر.

ومع ذلك، وفقا ل http://mobilepearls.com/labs/native-android-api/opensles/

يدعم Opensl es for Android محركًا واحدًا لكل تطبيق ، وما يصل إلى 32 كائن

فهل هذا 32 كائنًا لكل تطبيق، أم أنه 32 كائنًا عالميًا؟إذا كان الأمر كذلك، فأنا مجبر على تدمير () (وإعادة إنشاء) كائنات المشغل في كل مرة يصبح فيها تطبيقي غير نشط (onPause/onStop)؟

هل كانت مفيدة؟

المحلول

يبدو أن هناك 32 كائنًا لكل جهاز.لذلك فمن الأفضل أن Destroy لهم كلما لم تكن هناك حاجة إليها (onStop, onDestroy)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top