java - موضوع - مشروع برمجة الروبوت




الروبوت: لماذا يتم إهمال منشئ سوندبول؟ (2)

هل هذا يعني أننا لا نستطيع استخدامه بعد الآن؟ ماذا يجب أن نستخدم إذا تم تعيين أبي دقيقة أدناه 21؟ أيضا، هل من الخطأ تجاهل التحذير كما التطبيقات القديمة بنيت استخدامه على أنظمة التشغيل الجديدة؟


استخدام SoundPool.Builder بدلا من ذلك. تم تغيير طريقة إنشاء سوندبول. يتم تشجيعك على استخدام الطريقة الجديدة.


لماذا تم إهمال منشئ سوندبول

تم إهمال منشئ SoundPool القديم لصالح استخدام SoundPool.Builder لبناء كائن SoundPool . كان لدى المنشئ القديم ثلاث معلمات: maxStreams ، streamType ، و srcQuality .

  • لا يزال يمكن تعيين المعلمة maxStreams مع منشئ . (وإذا لم تقم بتعيينه، فإنه الافتراضي إلى 1.)
  • يتم استبدال المعلمة streamType بواسطة AudioAttributes ، وهو أكثر وصفية من streamType . (انظر الثوابت نوع تيار مختلفة ابتداء من هنا .) مع AudioAttributes يمكنك تحديد استخدام (لماذا كنت تلعب الصوت)، ونوع المحتوى (ما كنت تلعب)، والأعلام (كيفية تشغيله).
  • وكان من المفترض أن srcQuality معلمة srcQuality هناك لتعيين نوعية محول معدل العينة. ومع ذلك، لم ينفذ أبدا ووضع لها أي تأثير.

وبالتالي، SoundPool.Builder هو أفضل من منشئ القديم لأن maxStreams لا تحتاج إلى أن يتم تعيين صراحة، AudioAttributes يحتوي على مزيد من المعلومات من streamType ، وتم القضاء على srcQuality المعلمة عديمة الفائدة. لهذا السبب تم إهمال المنشئ القديم.

استخدام كونستروكتور مهملة لدعم الإصدارات قبل أبي 21

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

إذا كنت ترغب في الاستفادة من منشئ جديد في حين لا تزال تدعم الإصدارات القديمة يمكنك استخدام بيان إف لتحديد إصدار أبي.

SoundPool mSoundPool;
int mSoundId;

//...

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
     mSoundPool = new SoundPool.Builder()
            .setMaxStreams(10)
            .build();
} else {
    mSoundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 1);
}

mSoundId = mSoundPool.load(this, R.raw.somesound, 1);

// ...

mSoundPool.play(mSoundId, 1, 1, 1, 0, 1);

شاهد هذا الفيديو للحصول على مزيد من التفاصيل.





deprecated