يتضمّن الإصدار 10 من نظام التشغيل Android أو الإصدارات الأحدث العديد من مكوّنات الوسائط القابلة للتحديث التي تتيح تحديث مكوّنات إطار العمل من خلال البنية الأساسية لـ "متجر Google Play" أو من خلال آلية تحديث عبر الهواء (OTA) يوفّرها أحد الشركاء. يتم تجميع مكونات الوسائط معًا في وحدات تتيح تقديم تحديثات الأمان وتحديثات الميزات بدون الحاجة إلى تحديث صورة النظام بالكامل.
تتوفّر مكوّنات الوسائط القابلة للتعديل في الوحدات التالية.
الوسائط تتضمّن هذه الوحدة أدوات استخراج الوسائط وواجهات برمجة التطبيقات
MediaSession2
وواجهات برمجة التطبيقاتMediaParser
.برامج ترميز الوسائط. تتضمّن هذه الوحدة برامج Codec2 قابلة للتحديث.
MediaProvider. تعمل هذه الوحدة على تحسين البيانات الوصفية المفهرسة (الصوت والفيديو والصور من بطاقات SD وأجهزة USB)، وتتيح هذه البيانات للتطبيقات من خلال واجهات برمجة التطبيقات العامة في MediaStore.
للحصول على تفاصيل حول إضافة أدوات استخراج وفك ترميز مخصّصة، يُرجى الاطّلاع على تخصيص مكونات الوسائط.
أدوات استخراج الوسائط
في نظام التشغيل Android 9 والإصدارات الأقدم، يتم تجميع أدوات الاستخراج في ملف libstagefright.so
واحد. في نظام التشغيل Android 10 أو الإصدارات الأحدث،
تكون أدوات استخراج الوسائط عبارة عن مكونات منفصلة. يحتوي كل مستخرِج على ملف .so
خاص به مع نقطة دخول توفّر دالة sniffer لتحديد ما إذا كان بإمكان المستخرِج التعامل مع ملف الوسائط المحدّد، ودالة factory تنشئ نسخة من المستخرِج لملف الوسائط المحدّد. يتم تسمية كل أداة استخراج (للمساعدة في تصحيح الأخطاء) وتحديد إصدارها للإشارة إلى أحدث أداة استخراج.
يحمّل إطار عمل الوسائط تلقائيًا جميع ملفات .so
المتاحة، ما يتيح لك إنشاء أدوات استخراج خاصة بك من خلال إضافة ملف .so
جديد بدون الحاجة إلى تعديل libstagefright
أو مكتبات إطار عمل الوسائط الأخرى. يمكنك أيضًا التأكّد من أنّ أداة الاستخراج المخصّصة لها الأولوية على أداة الاستخراج التي توفّرها Google.
MediaSession2 API
تتيح واجهة برمجة التطبيقات MediaSession2 لتطبيقات الوسائط عرض عناصر التحكّم في النقل ومعلومات التشغيل لعمليات أخرى، مثل إطار عمل Android والتطبيقات الأخرى. لا يمكن تخصيص هذا المكوِّن.
MediaParser API
تتيح واجهة MediaParser API لتطبيق ExoPlayer الاستخدام الفعّال لأدوات تحليل حاويات الوسائط في إطار العمل من أجل استخراج عيّنات الوسائط من حاويات الوسائط. يتضمّن MediaParser التغييرات التالية على حدود رمز المصدر:
frameworks/base/apex/media/framework/java/android/media/MediaParser.java
. تنفيذ واجهة برمجة التطبيقات والطبقة الرقيقةexternal/exoplayer/
. مصادر Exoplayer الحرفية التي تم إنشاء MediaParser عليها
لا يمكن تخصيص MediaParser API. لاختبار MediaParser، استخدِم الاختبارات في
cts/tests/tests/mediaparser/
.
برامج ترميز الوسائط
تتضمّن وحدة Media Codecs مكونات Codec2 قابلة للتحديث. يختلف مدى توفّر ميزات التخصيص بين الإصدارات:
في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث (تحديدًا Google Play System Update v292100200)، يمكنك تخصيص مَعلمات تخصيص ذاكرة ION (راجِع التفاصيل أدناه).
في نظام التشغيل Android 9 أو الإصدارات الأقدم، لا يمكن تعديل واجهة برمجة التطبيقات لبرنامج الترميز OMX، ولكن يمكنك مواصلة استخدامها في قسم المورّد.
تخصيص ذاكرة ION
في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث وتحديث نظام Google Play الإصدار 292100200 أو الإصدارات الأحدث، يمكنك تخصيص المَعلمات التالية لتخصيص مساحة تخزين ION.
المَعلمة | القيمة التلقائية | الوصف |
---|---|---|
heapMask |
0xFFFFFFFF |
يُسمح بجميع أنواع الذاكرة المؤقتة. |
allocFlags |
0 |
لم يتم ضبط أي علامات. |
minAlignment |
0 |
لا يوجد محاذاة. |
لتجاوز المَعلمات:
تسجيل خدمة
android.hardware.media.c2
تلقائية وتقديم مَعلمات مخصّصة لاستخدام IONلإنشاء خدمة جديدة، انسخ الملف frameworks/av/media/codec2/hidl/services/vendor.cpp إلى المستودع الخاص بك، ثم عدِّل
StoreImpl::Interface::SetIonUsage()
حسب الحاجة.لإعادة استخدام عملية (OMX)
media.codec
، انسخ فئةStoreImpl
من frameworks/av/media/codec2/hidl/services/vendor.cpp وسجِّلها في ملفmediacodec
الحالي (frameworks/av/services/mediacodec/main_codecservice.cpp).
أضِف الرمز التالي إلى الجهاز
manifest.xml
.<hal format="hidl"> <name>android.hardware.media.c2</name> <transport>hwbinder</transport> <version>1.0</version> <interface> <name>IComponentStore</name> <instance>default</instance> </interface> </hal>
التنسيق والاعتماديات
تتوفّر وحدة Media (com.android.media
) ووحدة Media Codec (com.android.media.swcodec
) بتنسيق APEX. تعتمد مكوّنات الوسائط المضمّنة على واجهات برمجة التطبيقات في NDK فقط.
التحديثات
أثناء التحديث، تحمّل مكوّنات إطار العمل على الجهاز حزمة APEX تحتوي على رمز Java ورمز أصلي.
الشكل 1. خطوات تعديل مكوّن الوسائط
بعد أن يثبِّت إطار العمل حزمة APEX، تتم إعادة تشغيل الجهاز ويتم تركيب صورة القرص، كما يتم تحميل عمليات نظام الوسائط (media.extractor
وmedia.codec
) للوحدات المعدَّلة من نقطة التركيب.