
شهد نظام أندرويد في السنوات الأخيرة تطورًا هائلًا في إدارة الملفات وأمان النظام. ومن بين العناصر الأقل شرحًا - مع أهميتها البالغة للتخزين السليم وحماية خصوصية المستخدم - وحدة MediaProvider المعروفة . إذا تساءلت يومًا عن ماهية هذه الوحدة، أو سبب ظهورها أحيانًا في رسائل النظام، أو التحسينات التي تُقدمها مع كل إصدار جديد من أندرويد، أو كيفية تأثيرها على هاتفك، فسنشرحها بالتفصيل هنا.
من السهل أن تصادف اسم "موفر الوسائط" أثناء تصفح إعدادات هاتفك، أو التحقق من استخدام مساحة التخزين، أو زيارة المنتديات التقنية، لكن معظم المستخدمين ليسوا متأكدين تمامًا من وظيفته أو سبب أهميته لعمل تطبيقات مثل معارض الصور ومشغلات الموسيقى ومديري الملفات بسلاسة . دعونا نلقي نظرة فاحصة لتكون على دراية كاملة بدوره في تجربتك اليومية مع نظام أندرويد، سواء كنت ترغب ببساطة في فهم هاتفك بشكل أفضل أو تطوير تطبيقات أو أنظمة تشغيل مخصصة.
ما هو MediaProvider وما وظيفته في الأندرويد؟
El وحدة موفر الوسائط وهو أحد المكونات الداخلية لنظام أندرويد المسؤولة عن إدارة وفهرسة وتوفير الوصول إلى ملفات الوسائط المتعددة مثل الصور والفيديوهات والموسيقى المخزنة على الذاكرة الداخلية والأجهزة الخارجية (بطاقات SD، محركات أقراص USB، إلخ). إنه ليس تطبيقًا عاديًا، بل هو موفر محتوى النظام والتي تعتمد على قاعدة البيانات العامة MediaStore حتى تتمكن التطبيقات الأخرى من الوصول إلى محتوى الوسائط المتعددة بسرعة وأمان.
تتمثل وظيفتها الرئيسية في تحليل الملفات، واستخراج بياناتها الوصفية، وفهرستها في جداول مُحسَّنة. تشمل هذه البيانات الوصفية عناصر مثل نوع الملف، ومدة الفيديو أو الصوت، ودقة الصورة، وتاريخ الالتقاط، والحجم، وموقع التخزين، وفي بعض الحالات، بيانات EXIF المتقدمة للصور الفوتوغرافية.
بفضل هذه الوحدة، تستطيع التطبيقات عرض مكتبتك بالكامل دون الحاجة إلى مسح شجرة المجلدات يدويًا . على سبيل المثال، لا يحتاج معرض الصور إلى مسح كل مجلد، بل يرسل استعلامًا إلى MediaStore ويحصل في غضون أجزاء من الثانية على قائمة مُفهرسة بجميع الصور، مُرتبة ومُفلترة حسب الحاجة. هذا يُحسّن الأداء وعمر البطارية بشكل ملحوظ مقارنةً بالمسح المباشر لنظام الملفات.
يتكامل MediaProvider أيضًا مع نموذج التخزين المُحدد النطاق . عمليًا، يعني هذا أن الوحدة تُطبّق قواعد أمان للتحكم في التطبيقات التي يُمكنها عرض ملفات مُعينة وتعديلها. على سبيل المثال، تُخفي أو تُنقّح البيانات الوصفية الحساسة ، مثل الموقع الدقيق الذي التُقطت فيه الصورة، عندما لا يحتاج التطبيق إلى هذه المعلومات أو لا يملك الأذونات اللازمة.
ومن الجوانب الرئيسية الأخرى أن MediaProvider جزء من ما يُسمى بالوحدات الرئيسية (أو الوحدات القابلة للتحديث من قِبل النظام)، مما يسمح لشركة جوجل والشركات المصنعة بتحديثه بشكل مستقل عبر متجر جوجل بلاي . وبهذه الطريقة، يتم إصلاح الثغرات الأمنية، وإضافة التوافق مع تنسيقات الملفات الجديدة، وتحسين الميزات دون انتظار تحديث كامل للنظام.
كيف يؤثر مزود خدمة الوسائط على حياتك اليومية
على الرغم من أنك لا تستطيع رؤيته، إلا أن MediaProvider يعمل باستمرار في الخلفية. إليك بعض الأمثلة الواضحة على كيفية تأثيره على تجربتك اليومية:
- افتتاح سريع للمعرض: عند فتح تطبيق الصور، يقوم التطبيق بالاستعلام من MediaStore، وبفضل الفهرسة المسبقة للوحدة، يمكنه عرض صورك على الفور تقريبًا.
- البحث حسب التاريخ أو النوع أو الألبوم: تتيح لك العديد من المعارض إمكانية التصفية حسب مقاطع الفيديو، أو الصور الشخصية، أو لقطات الشاشة، أو تواريخ محددة. كل هذه المعلومات تأتي من تتم إدارة البيانات الوصفية بواسطة موفر الوسائط.
- مشغلات الموسيقى والبودكاست: تعتمد القوائم المصنفة حسب الفنان أو الألبوم أو النوع أو قوائم التشغيل على البيانات التي جمعها MediaProvider وقام بتوحيدها من الملفات الصوتية.
- تطبيقات المراسلة ووسائل التواصل الاجتماعي: عندما تشارك صورة من واتساب أو تيليجرام أو إنستجرام باستخدام أداة اختيار الصور، فإنها في الواقع قراءة كتالوج MediaStore والتصفية حسب نوع المحتوى المطلوب.
- مديري الملفات: تستخدم بعض المتصفحات استعلامات MediaStore لعرض جميع الوسائط المتعددة بسرعة، بدلاً من الاضطرار إلى تصفح آلاف المجلدات والملفات يدويًا.
حتى المهام الأقل وضوحًا، مثل ظهور صورة ملتقطة بالكاميرا في المعرض أو السحابة في غضون ثوانٍ، يتم تنسيقها عادةً مع MediaProvider، المسؤول عن تسجيل العنصر الجديد واستخراج بياناته الوصفية وإخطار التطبيقات المهتمة بالتغييرات.
تطور MediaProvider: من Android 10 إلى Android 11 وما بعده

بدأت القفزة الكبيرة في تطور MediaProvider مع وصول التخزين المحدد النطاق في Android 10. ومنذ تلك اللحظة، أعاد النظام تنظيم كيفية تحديد ملفات الوسائط وكيفية عرضها للتطبيقات، مما أجبر MediaProvider على أن يصبح أكثر ذكاءً وأمانًا.
التغييرات التي تم إدخالها بدءًا من نظام Android 10
منذ ذلك الإصدار، أدخل نظام أندرويد العديد من التحسينات الرئيسية المتعلقة بتحديد واستخراج البيانات من ملفات الوسائط المتعددة :
- يحدد النظام نوع محتوى الملف باستخدام الجزء الأول من نوع MIMEفعلى سبيل المثال، هو يعلم أن
image/pngyimage/x-newly-invented-formatسون أمبوس أنواع الصوروهذا يسمح بوصف أفضل للأذونات والسلوكيات المرتبطة بها للمستخدم. - لتحسين الأمن ، استنتج نوع MIME فقط من الامتداد من الملف، وتجنب تقنيات الكشف عن المحتوى التي قد تؤدي إلى ظهور ثغرات أمنية.
- يعتمد تحديد MIME على مزيج من الجداول الموروثة من نظام دبيان لينكس وتعريفات نظام أندرويد الخاصةوينتج عن ذلك اكتشاف أكثر موثوقية واتساقًا للتنسيقات غير العادية.
- يقوم مزود الوسائط بتفويض عملية الحصول على البيانات الوصفية المتقدمة إلى أدوات متخصصة:
MediaMetadataRetrieverللملفاتvideo/*yaudio/*،ExifInterfaceبالنسبة للملفاتimage/*، وبالتالي الحصول على المدة، معدل البت، الدقة، الاتجاه، معلومات الكاميرا ومعلومات مفيدة أخرى.
سمحت هذه المجموعة من التغييرات للتطبيقات بتلقي بيانات وصفية أكثر موثوقية ومعيارية ، مع تعزيز التدابير الأمنية ووضع الأساس لأذونات الوصول المحسنة التي نعرفها اليوم.
التحسينات التي تم إدخالها بدءًا من نظام Android 11
مع نظام Android 11، بنى MediaProvider على هذه الأسس واتخذ خطوة أخرى في تنظيم المحتوى والأداء والقدرات للتطبيقات :
- صنعت تحسينات عميقة في الفهرسة من الملفات والبيانات الوصفية. الآن، تعمل الوحدة على التوفيق بين البيانات الوصفية المتاحة وما تعرضه واجهات برمجة تطبيقات MediaStore، مما يحسن التوافق بين ما يتم تخزينه داخليًا وما يمكن للتطبيقات الاستعلام عنه.
- تمت إضافة أعمدة جديدة إلى قاعدة البيانات، مثل:
is_favoriteوالحجة المؤيدة للتشاورQUERY_ARG_MATCH_FAVORITEوهذا يسمح بتطبيقات من نوع المعرض قم بتصفية المحتوى المصنف كمفضل بسرعة من قبل المستخدم. - بدأ موفر الوسائط بيانات تعريف مساحة لون الفهرسيُعدّ هذا الأمر أساسياً للتعامل مع محتوى HDR، والصور التي تبدو أقرب إلى الواقع، وتمثيلاً أكثر دقة على الشاشات المتقدمة.
- تم تقديم العمود
is_trashedوالحجةQUERY_ARG_MATCH_TRASHEDلتمييز الملفات الموجودة في سلة المهملاتالسماح للمعارض بإدارة سلة المهملات هذه بشكل طبيعي. - لقد ظهروا واجهات برمجة تطبيقات جديدة للعمليات المجمعة على عدة عناصر مع مربع حوار تأكيد واحد للمستخدم، بما في ذلك:
createDeleteRequest()لحذف ملفات متعددة دفعة واحدة.createFavoriteRequest()وضع علامة أو إلغاء وضع علامة على العديد من العناصر المفضلة بإجراء واحد.createTrashRequest()لإرسال مجموعات من الملفات مباشرة إلى سلة المهملات.createWriteRequest()لطلب أذونات الكتابة على عناصر متعددة.
- تمت إضافة أعمدة جديدة مثل
GENERATION_ADDEDyGENERATION_MODIFIEDالتي تسمح للتطبيقات اكتشاف سريع لما تغير منذ عملية المزامنة السابقة. دون الحاجة إلى إعادة مسح المكتبة بأكملها. - تمت إضافة واحد واجهة برمجة التطبيقات العامة لـ
GROUP BYمما يسمح لك بتجميع النتائج حسب الألبوم أو التاريخ أو البيانات الوصفية الأخرى دون الحاجة إلى إجراء معالجة لاحقة معقدة في التطبيق. - لقد تم تحسينه
ExifInterfaceإلى استخراج البيانات الوصفية من حاويات PNG و WebP، مما يؤدي إلى توسيع عدد تنسيقات الصور التي تتم معالجتها بطريقة متقدمة. - بدأ نظام واجهة المستخدم بكتابة البيانات الوصفية
DateTimeOriginalفي لقطات الشاشة، حتى يتمكن موفر الوسائط من لتحسين تنظيم وعرض هذه الأنواع من الصور داخل المعارض.
من الناحية المعمارية، تم نقل MediaProvider إلى تنسيق APK-in-APEX . وهذا يعني أن كود Java مُغلّف كملف APK داخل حاوية APEX على مستوى النظام. وتكمن الميزة في إمكانية تحميل الوحدة في وقت مبكر جدًا من عملية بدء التشغيل ، حتى قبل العديد من أجزاء إطار العمل، مع الاستفادة أيضًا من التحديثات السريعة عبر متجر Google Play.
MediaProvider ووحدات Mainline: تحديثات مستقلة على Android

تتمثل إحدى استراتيجيات جوجل الرئيسية لمكافحة التجزئة وتوفير أجهزة أكثر أمانًا في إنشاء وحدات Mainline . وهي عبارة عن مكونات نظام يمكن تحديثها بشكل مستقل عن متجر جوجل بلاي، دون تدخل مباشر من الشركة المصنعة أو الحاجة إلى تثبيت تحديث كامل عبر الهواء (OTA).
تتضمن هذه الوحدات MediaProvider، بالإضافة إلى وحدات أخرى مثل ART (بيئة تشغيل التطبيقات)، وConscrypt (مكتبة تشفير)، وMedia ، و Media Codecs ، و Wi-Fi ، و Tethering ، وغيرها الكثير. وتتيح هذه الوحدات مجتمعةً لنظام Android إصلاح الأخطاء الحرجة، وتحسين الأداء، وإضافة ميزات جديدة دون الاعتماد كليًا على جدول إصدارات كل مُصنِّع.
من المهم توضيح أنه على الرغم من بدء تطبيق البنية المعيارية مع نظام Android 10، إلا أن تطبيق MediaProvider تحديدًا استفاد من تحديثات Mainline بدءًا من Android 11. وبفضل ذلك، في حال اكتشاف ثغرة أمنية، أو عدم توافق مع تنسيقات الوسائط المتعددة الجديدة، أو مشكلة في أداء الفهرسة، تستطيع جوجل إصلاحها وإصدار التحديث تمامًا كأي تطبيق آخر على متجر جوجل بلاي. وبهذه الطريقة، يظل هاتفك أكثر أمانًا وتوافقًا مع بقية تطبيقات النظام، حتى لو لم تكن الشركة المصنعة سريعة في إصدار نسخ جديدة من Android.
ما هي وحدات Mainline الأخرى الموجودة وكيف ترتبط MediaProvider بها؟

يُعدّ MediaProvider أحد وحدات Mainline العديدة المصممة لجعل النظام أكثر مرونة وأمانًا وسهولة في التحديث. ومن أهم هذه الوحدات، لا سيما تلك المتعلقة بتجربة الوسائط المتعددة والشبكة، ما يلي:
- وسائل الإعلام: يتولى معالجة ملفات الوسائط المتعددة على الجهاز المحمول، بما في ذلك خدمات التشغيل والتقاط الفيديو وإدارة البث.
- برامج ترميز الوسائط: فهو يحافظ على تحديث برامج ترميز الصوت والفيديو، مما يسمح بتحسين التوافق والأمان في فك التشفير والترميز دون المساس بالنظام بأكمله.
- فن: يدير هذا النظام بيئة تشغيل التطبيق (التجميع، وتحسين رمز البايت، وما إلى ذلك). وتؤثر التحسينات في هذه الوحدة بشكل مباشر على أداء التطبيق.
- تشفير: يقوم بتحديث الجزء التشفيري من النظام، وهو أمر حيوي للاتصالات الآمنة والشهادات والتشفير.
- واي فاي: يحتوي على منطق اتصال واي فاي، مما يسمح بتطبيق تحسينات في الاستقرار والتوافق والأمان بدون بث هوائي كامل.
- الربط: تحكم في مشاركة اتصالات Wi-Fi أو USB أو Bluetooth أو Ethernet عبر جهازك المحمول.
- PermissionController: قم بتحديث الوحدة التي تدير عناصر واجهة الأذونات والخصوصية للمستخدمين.
يعمل MediaProvider بتكامل وثيق مع وحدتي Media و Media Codecs ، حيث تتولى هاتان الوحدتان الأخيرتان مسؤولية فك تشفير ومعالجة المحتوى الذي يقوم MediaProvider بفهرسته. عند إصدار تنسيقات جديدة أو تحديث برامج الترميز الحالية، يستطيع MediaProvider البدء في التعرف على هذه التنسيقات الأحدث وفهرستها (على سبيل المثال، إصدارات HEVC الجديدة، أو HDR، أو برامج ترميز الصوت) دون الحاجة إلى تحديث كامل لنظام Android، شريطة تحديث وحدات الوسائط الأخرى أيضًا.
لمعرفة وحدات Mainline التي يدعمها هاتفك، يمكنك استخدام أدوات مثل تطبيق Mainline Updater المجاني ، الذي يعرض الوحدات الموجودة، وبضغطة زر واحدة، ينقلك إلى قسم تحديثات النظام في متجر Google Play . هناك، ستجد ما إذا كانت هناك أي تحديثات معلقة تؤثر، من بين أمور أخرى، على MediaProvider.
موفر الوسائط، الخصوصية وأمان التخزين

من أبرز التطورات الحديثة المتعلقة بـ MediaProvider حماية خصوصية المستخدم . ففي السابق، كان بإمكان العديد من التطبيقات الوصول إلى مجلدات كاملة على وحدة التخزين الخارجية وقراءة بيانات وصفية مفصلة للغاية - بما في ذلك موقع GPS المضمن في الصور - دون أي ضبط دقيق من قبل النظام.
مع الجمع بين التخزين ذي النطاق المحدد + موفر الوسائط + مخزن الوسائط ، تغيرت الأمور:
- التطبيقات لديها دخول مقيد إلى الصور والفيديوهات والملفات الصوتية. على سبيل المثال، يمكن لتطبيق تحرير الصور الوصول إلى صورة محددة يختارها المستخدم من خلال منتقي الصورلكن ليس باقي معرض الصور الخاص بك.
- يمكن لمزود الوسائط تنقيح أو تقييد البيانات الوصفية الحساسة، مثل الموقع الدقيق لالتقاط الصورة أو معلومات الكاميرا الداخلية، إذا لم يكن التطبيق بحاجة إلى تلك البيانات.
- أصبحت التصاريح أكثر حبيبي وشفافلم يعد الأمر يتعلق بالسماح أو الرفض بالوصول الكامل إلى التخزين، بل يتعلق بمنح الوصول إلى أنواع محددة من المحتوى (الصور، مقاطع الفيديو، الصوت) أو حتى الملفات التي يختارها المستخدم.
- تم تعزيز الحماية ضد التطبيقات الخبيثة التي تحاول فحص وحدة التخزين بحثًا عن مستندات خاصة أو محتوى حساس. يعمل موفر الوسائط كـ التصفية والتقييم ما يمكن رؤيته أو تعديله.
كل هذا يتحد مع إمكانيات التجارب المتقدمة، مثل أحدث أداة لاختيار الصور وموفري محتوى الوسائط السحابية ، والتي يعد MediaProvider جزءًا منها أيضًا في تدفق البيانات.
واجهات برمجة التطبيقات وأمثلة الاستخدام: كيفية تفاعل التطبيقات مع MediaProvider

لا تتواصل تطبيقات المستخدم مباشرةً مع MediaProvider، بل عبر MediaStore ، وهي واجهة برمجة تطبيقات عامة تعمل كواجهة. توفر هذه الواجهة نظامًا بيئيًا متكاملًا من النوايا والثوابت وطرق الاستعلام للوصول إلى ملفات الوسائط بطريقة موحدة.
محاولات التقاط المحتوى وتحديده
من بين أبرز الأهداف التي تستفيد من MediaStore (وبالتالي MediaProvider):
MediaStore.ACTION_IMAGE_CAPTURE: يتيح لك ذلك تشغيل الكاميرا لالتقاط صورة وإعادتها إلى تطبيق الاتصال.MediaStore.ACTION_IMAGE_CAPTURE_SECURE: يشبه النظام السابق، ولكنه مصمم للبيئات التي يكون فيها الجهاز محميًا (رمز PIN، نمط، بيومترية) ويجب الحفاظ على سياق آمن.MediaStore.ACTION_VIDEO_CAPTURE: قم بتشغيل الكاميرا في وضع الفيديو وأعد النتيجة إلى التطبيق المُستدعي.MediaStore.ACTION_PICK_IMAGES: افتح ال منتقي الصور نظام أندرويد الحديث، الذي يوفر تجربة موحدة لاختيار الصور ومقاطع الفيديو من مصادر مختلفة (التخزين المحلي، السحابة، إلخ).MediaStore.ACTION_PICK_IMAGES_SETTINGS: يؤدي هذا إلى الإعدادات المتعلقة بمحدد الصور وموفري الوسائط.MediaStore.ACTION_REVIEWyMediaStore.ACTION_REVIEW_SECURE: تتيح لك هذه الميزة مراجعة أو معاينة محتوى الوسائط المتعددة الذي تم التقاطه حديثًا في سياق مُتحكم فيه.
إضافةً إلى هذه الأهداف، يُعرّف MediaStore قائمةً طويلةً من الإضافات والثوابت التي يحترمها MediaProvider ويستخدمها لتطبيق قواعد مُحددة. بعض الأمثلة:
EXTRA_DURATION_LIMIT: الحد الأقصى لوقت التسجيل المسموح به عند التقاط الفيديو.EXTRA_SIZE_LIMIT: الحد الأقصى لحجم ملف الإخراج.EXTRA_OUTPUT: عنوان URI حيث سيتم تخزين الصورة أو الفيديو الناتج.EXTRA_PICK_IMAGES_MAX: الحد الأقصى لعدد العناصر التي يمكن للمستخدم تحديدها في جلسة التحديد.
استعلامات متقدمة إلى MediaStore
تستخدم التطبيقات التي تحتاج إلى قراءة مكتبة الوسائط استعلامات إلى MediaStore مع وسائط وفلاتر متنوعة. ومن بين الوظائف التي يوفرها MediaProvider من خلال MediaStore ما يلي:
- تمت التصفية حسب المفضلة والنفايات: باستخدام الوسائط
QUERY_ARG_MATCH_FAVORITEyQUERY_ARG_MATCH_TRASHEDيمكن للتطبيقات الحصول على العناصر التي تم وضع علامة عليها كمفضلة فقط أو تلك الموجودة في سلة المهملات. - الكشف التدريجي عن التغييرات: أعمدة مثل
GENERATION_ADDEDyGENERATION_MODIFIEDتتيح لك هذه الميزة رؤية العناصر التي تمت إضافتها أو تعديلها بسرعة منذ عملية المزامنة السابقة، وهو أمر حيوي لتطبيقات النسخ الاحتياطي أو المعارض المتقدمة. - عمليات جماعية يتحكم بها المستخدم: طرق مثل
createDeleteRequest(),createTrashRequest(),createFavoriteRequest()ocreateWriteRequest()السماح للتطبيقات اقتراح تغييرات الدفعةلكن النظام هو الذي يعرض مربع حوار تأكيد للمستخدم حتى يكون له الكلمة الأخيرة. - قراءة وكتابة بيانات EXIF: من خلال
ExifInterfaceيمكن للتطبيقات قراءة بيانات مثل اتجاه الشاشة، ووقت التقاط الصورة، ونوع الكاميرا، والموقع (إن كان متاحًا ومسموحًا به من قبل المستخدم)، وغيرها من البيانات الوصفية. وهذا أمر بالغ الأهمية لـ قم بتدوير الصور بشكل صحيح، أو ترتيبها زمنيًا، أو عرض بيانات الالتقاط..
موفر الوسائط، والتخزين السحابي، ومنتقي الصور

مع ظهور أداة اختيار الصور الحديثة وموفري الوسائط السحابية ، أصبح دور موفر الوسائط أكثر أهمية في عملية اختيار الصور والفيديوهات.
يسمح نظام أندرويد لبعض التطبيقات، وخاصة خدمات الصور السحابية التي تحددها الشركات المصنعة، بالعمل كمزودي وسائط سحابية . توفر هذه التطبيقات المحتوى المخزن في السحابة لمُنتقي الصور، مما يتيح للمستخدم اختيار الملفات المحلية بالإضافة إلى الملفات المخزنة على خدمات بعيدة.
في هذا السيناريو، يعمل كل من MediaProvider و Photo Picker جنبًا إلى جنب:
- يقوم النظام بتهيئة موفر الخدمة السحابية المفضل ومزامنته بشكل دوري بيانات تعريف الوسائط المتعددة مع الواجهة الخلفية لاختيار الصور.
- عندما يقوم تطبيق ما بتشغيل أداة اختيار الصور باستخدام نوايا مثل
ACTION_PICK_IMAGESoACTION_GET_CONTENT، المحدد يتم دمجها في شبكة واحدة العناصر المحلية التي يوفرها MediaProvider والعناصر البعيدة التي يوفرها CloudMediaProvider. - أثناء قيام المستخدم بالتمرير، تظهر رسالة التحديد صور مصغرة محسّنة إلى الموردين، بحيث تكون عملية التحميل سريعة وفعالة.
- عند اكتمال عملية الاختيار، إذا تم اختيار محتوى سحابي، يقوم النظام بإنشاء عناوين URI الآمنة ويقوم MediaProvider بالتنسيق، من خلال FUSE وطبقات أخرى، للوصول إلى البيانات الحقيقية، مع الحفاظ دائمًا على الأذونات والخصوصية.
أما CloudMediaProvider، من جانبه، فيُتيح طرقًا مثل onQueryMedia(), onQueryDeletedMedia(), onQueryAlbums(), onOpenMedia() u onOpenPreview()والتي يستخدمها منتقي الصور لعرض العناصر والألبومات والمحتوى المحذوف، ولفتح كل من المعاينات والملف الكامل. على الرغم من أن هذه الطرق تُنفذ خارج موفر الوسائط، إلا أن وحدة الوسائط في النظام تتكامل معها لتقديم تجربة متسقة للوصول إلى الوسائط المحلية والسحابية.
موفر الوسائط وتقنية تحويل ترميز الفيديو المتوافقة

من الميزات المتقدمة الأخرى التي يلعب فيها موفر الوسائط دورًا رئيسيًا هي تحويل ترميز محتوى الوسائط المتوافق . تتيح هذه الميزة للأجهزة استخدام تنسيقات الفيديو الحديثة والفعالة - مثل HEVC أو بعض ملفات تعريف HDR - دون التأثير على التوافق مع التطبيقات القديمة التي لا تفهم سوى التنسيقات الكلاسيكية مثل AVC (H.264).
تعمل الآلية على النحو التالي:
- يمكن للمصنعين والمستخدمين ضبط الكاميرا لـ التسجيل بصيغة HEVC افتراضيًا أو تنسيقات أخرى أكثر كفاءة من حيث المساحة وعرض النطاق الترددي.
- عندما يكون هناك تطبيق... لا يدعم ترميز الفيديو عالي الدقة (HEVC) عند محاولة فتح فيديو من خلال MediaStore و MediaProvider، قد يواجه النظام مشكلة. اعتراض قراءة الملف بفضل استخدام FUSE (نظام الملفات في مساحة المستخدم).
- إذا تم اكتشاف أن التطبيق لا يدعم التنسيق، فسيتم استخدام MediaProvider، بالإضافة إلى خدمة تحويل الوسائط، يبدأ عملية تحويل في الخلفية لإنشاء نسخة بتنسيق AVC أو تنسيق متوافق آخر.
- يتلقى التطبيق واصف ملف يشير إلى النسخة التي تم تحويل ترميزها بالفعل (أو النسخة الأصلية، إذا كان التطبيق يدعم التنسيق)، بطريقة شفافة تمامًا للمطور.
تخضع عملية تحويل الترميز هذه لقيود زمنية وموارد لمنع إساءة الاستخدام؛ فعلى سبيل المثال، لا تتم معالجة سوى مقاطع الفيديو التي لا تتجاوز طولًا معينًا، كما أن عدد الجلسات المتتالية أو إجمالي وقت المعالجة لكل تطبيق محدود. وفي حال تجاوز هذه الحدود، يُعيد النظام الملف الأصلي غير المُعالَج.
ولتحقيق ذلك، تتضمن البنية عدة مكونات:
- مدير تحويل الوسائط: واجهة برمجة تطبيقات النظام التي تسمح لموفر الوسائط وأجزاء أخرى من الإطار بالتواصل مع خدمة تحويل الترميز.
- خدمة تحويل الوسائط: خدمة تدير قوائم انتظار تحويل الترميز، والجلسات النشطة، وتخصيص موارد الترميز.
- برنامج ترميز الوسائط: مكتبة أصلية تقوم بالتحويل بين التنسيقات، بالاعتماد على MediaCodec وفي إضافات محتملة من مصنعي المعدات الأصلية لعمليات مثل تحويل HDR إلى SDR.
يُعد MediaProvider محور هذا التدفق بأكمله: فهو الوحدة التي تعترض محاولة قراءة الملفات ، وتقرر ما إذا كان إعادة الترميز ضروريًا أم لا وفقًا لقدرات التطبيق، وأخيرًا تُسلّم الواصف الصحيح، إما للملف الأصلي أو للملف الذي تمت إعادة ترميزه.
التخصيص والتوسعة: MediaProvider للمطورين والمصنعين
إحدى أقوى ميزات MediaProvider - وأقلها شهرة - هي القدرة على تخصيص سلوكها . وهذا الأمر ذو أهمية خاصة لمطوري أنظمة التشغيل المخصصة، ومصنعي المعدات الأصلية، والشركات المصنعة ، كما أنه يساعد على فهم سبب اختلاف سلوك بعض الأجهزة مع تنسيقات أو مسارات تخزين معينة.
تنسيقات الوسائط المخصصة
بإمكان الشركات المصنعة إضافة دعم لتنسيقات الوسائط الخاصة أو غير الشائعة . ولكل نوع جديد، يجب عليها:
- سجل امتداد ملف فريد وربطه بنوع MIME محدد بواسطة
MimeUtils. - قم بتهيئة الوحدة مستخرج الوسائط حتى يتمكن من قراءة البيانات الوصفية بهذا التنسيق، حتى يتمكن MediaProvider من فهرستها بشكل صحيح.
- في حالة
video/*yaudio/*، استمر في الاعتماد علىMediaMetadataRetrieverلعرض البيانات الوصفية ذات الصلة. - في حالة
image/*توسيع أو استخدامandroid.media.ExifInterfaceلاستخراج وإرجاع بيانات تعريف EXIF الموحدة حتى في تنسيقات الصور المخصصة.
من المهم ملاحظة أنه لا يُسمح بإعادة تعريف الامتدادات أو أنواع MIME المحددة مسبقًا في AOSP ، وذلك لتجنب التناقضات أو التعارضات بين الأجهزة.
اختيار أجهزة التخزين للفهرسة
يقوم MediaProvider، بشكل افتراضي، بفهرسة جميع وحدات التخزين التي يتم إرجاعها بواسطة StorageManager.getStorageVolumes() حيث StorageVolume.getMediaStoreVolumeName() ليس الأمر معدوماً. ومع ذلك، يمكن لمصنعي المعدات الأصلية تحسين تحديد المجلدات التي يتم فهرستها تأسيس العلامة التجارية VolumeInfo.MOUNT_FLAG_INDEXABLE على تلك الأجهزة التي ترغب في ظهورها في مكتبة الوسائط.
يوصى بتجنب وضع علامة على وحدات التخزين المؤقتة على أنها قابلة للفهرسة - مثل بعض محركات أقراص USB OTG التي يتم توصيلها وفصلها بشكل متكرر - لمنع حدوث تناقضات في قاعدة البيانات أو أخطاء ناتجة عن اختفاء وحدة التخزين فجأة.
استبدال وتخصيص حزمة بروتوكول نقل الوسائط
تم فصل منطق بروتوكول نقل الوسائط (MTP)، المستخدم لنقل الملفات بين جهاز محمول وجهاز كمبيوتر عبر منفذ USB ، عن وحدة MediaProvider. بدءًا من إصدارات معينة، أصبح بروتوكول MTP موجودًا بالكامل خارج الوحدة، ويضمن عمله باستخدام واجهات برمجة التطبيقات العامة والنظامية فقط.
يسمح هذا للمصنعين الذين يحتاجون إلى حلول نقل محددة باستبدال أو تكييف حزمة MTP الخاصة بهم، طالما أنهم يحافظون على التوافق مع عقود MediaStore و MediaProvider ، بحيث تظل تجربة نسخ وقراءة الملفات من الكمبيوتر متسقة.
المجلدات الافتراضية وقائمة الاستثناءات
عند تفعيل وحدة التخزين لأول مرة، يقوم موفر الوسائط عادةً بإنشاء سلسلة من المجلدات القياسية كما Music/, Podcasts/, Ringtones/, Alarms/, Notifications/, Pictures/, Movies/, Download/, DCIM/, Documents/, Audiobooks/ y Recordings/ (هذا الأخير غير متوفر في بعض الإصدارات القديمة).
بالنسبة للأجهزة التي لها متطلبات تنظيمية محددة، يمكن لمصنعي المعدات الأصلية توفير قائمة المجلدات المراد حذفها أثناء الإنشاء الأولي من خلال تراكب الموارد config_foldersToSkipInDefaultCreationوهكذا، على سبيل المثال، يمكنهم منع إنشاء المجلدات بشكل افتراضي. Notifications/ o Ringtones/ إذا كان لديهم بالفعل نظام بديل لهم.
تبعيات MediaProvider والمتطلبات الفنية

عند تخصيص MediaProvider، يجب على مصنعي المعدات الأصلية مراعاة عدد من التبعيات التقنية لضمان استمرار كل شيء في العمل بشكل صحيح:
- عند استخدام تنسيقات ملفات الوسائط المتعددة غير القياسيةيجب تسجيل كل تنسيق في كليهما
MimeUtilsكما هو الحال في وحدة مستخرج الوسائطوإلا، فلن يتمكن MediaProvider من فهرسة هذه الملفات أو توفير بيانات وصفية كاملة. - لضمان فهرسة مجموعة مخصصة من أجهزة التخزين (فتحات بطاقات SD، ومنافذ USB المدمجة، وما إلى ذلك)، يتم تنفيذ ما يلي:
StorageManagerServiceيجب عليك تحديد الأحجام المطلوبة باستخدامVolumeInfo.MOUNT_FLAG_INDEXABLE. - إذا تم استخدام حزمة بروتوكول نقل الوسائط المخصصة، فيجب أن تستند حصريًا إلى واجهات برمجة التطبيقات العامة والنظامية للحفاظ على التوافق مع MediaStore وعدم تعطيل التفاعل بين الكمبيوتر ومكتبة الوسائط الخاصة بالجهاز.
علاوة على ذلك، في سياق تحويل ترميز الفيديو، يجب أن تستوفي الأجهزة الحد الأدنى من متطلبات الأجهزة : دعم ترميز HEVC الممكّن في الكاميرا الأصلية، وأداء قراءة وكتابة كافٍ في التخزين، وبرامج ترميز قادرة على تحقيق معدلات معالجة عالية في مهام التحويل.
اختبار موفر الوسائط وتشخيصه والأخطاء الشائعة

في الاستخدام العادي، لا يُلاحظ وجود MediaProvider عادةً. ومع ذلك، وكأي مكون من مكونات النظام، قد يواجه مشاكل: إيقاف تشغيل غير متوقع ، أخطاء عند قراءة ملفات معينة، فشل عند تحديث البيانات الوصفية، أو تعطل عند فحص وحدات التخزين التالفة.
في نظام أندرويد البيئي، توجد العديد من الاختبارات الآلية للتحقق من صحة عمله:
- حالات اختبار موفر Cts: مجموعة اختبار من مجموعة اختبارات التوافق والذي يتحقق من صحة سلوك واجهات برمجة التطبيقات العامة لـ MediaStore مقابل MediaProvider.
- اختبارات موفر الوسائط: ركزت الاختبارات الداخلية على السلوك المحدد للوحدة ومكوناتها.
يمكن للمطورين أو الفنيين تشغيل مجموعات الاختبار هذه باستخدام أوامر مثل:
atest --test-mapping packages/providers/MediaProvider
في المنتديات التقنية، أفاد بعض المستخدمين أعطال متكررة في موفر الوسائط بسبب أخطاء في الذاكرة (OutOfMemoryErrorخاصةً عند فحص مجموعات الفيديو الكبيرة جدًا أو التعامل مع أقسام بطاقة الذاكرة التالفة. في هذه الحالات، يُنصح بما يلي:
- افحص ال الحالة الفيزيائية للذاكرة الداخلية والخارجية (قم بتهيئة البطاقة أو استبدالها إذا كانت بها أخطاء).
- صيانة النظام و وحدات رئيسية محدثة قم بتنزيل التطبيق من متجر جوجل بلاي لتلقي التصحيحات.
- تحقق مما إذا كان أي تطبيق يقوم بإنشاء ملفات تالفة أو ملفات تحتوي على بيانات وصفية غير طبيعية مما يتسبب في فشل الفهرسة.
الأدوات والمرافق المتعلقة بمزود الوسائط

إذا كنت ترغب في معرفة المزيد حول كيفية تحديث MediaProvider أو وحدات Mainline التي قمت بتثبيتها، يمكنك استخدام بعض الأدوات:
- مُحدِّث الخط الرئيسي: تطبيق بسيط يعرض قائمة بـ الوحدات الرئيسية الموجودة على جهازك كما يوفر اختصارات إلى لوحة تحديثات نظام جوجل بلاي. وهذا مفيد للتحقق من تحديث موفر الوسائط والمكونات الأساسية الأخرى.
- مدير مزود خدمات الوسائط: وحدة Xposed مفتوحة المصدر تسمح مراقبة استخدام متجر الوسائط والحد منه من خلال التطبيقات. وباستخدامها، يمكن للمستخدمين المتقدمين مراجعة التطبيقات التي تقدم أكبر عدد من الطلبات، والأذونات التي تستخدمها، وحتى تقييد وصول معين لتحسين الخصوصية.
لا تعتبر هذه الأنواع من الأدوات ضرورية للمستخدم العادي، ولكنها توفر درجة إضافية من التحكم لأولئك الذين يرغبون في إدارة سلوك الوسائط المتعددة والخصوصية على جهاز Android الخاص بهم بطريقة أكثر دقة.
أصبح MediaProvider مكونًا أساسيًا في نظام أندرويد، فهو يُنظم جميع محتويات الوسائط المتعددة بكفاءة، ويُحسّن حماية الخصوصية من خلال التخزين المُوسّع، ويُسهّل تحويل ترميز الصيغ الحديثة، ويُحدّث نفسه تلقائيًا بفضل وحدات Mainline. إن فهم كيفية عمل هذا المكون غير المرئي يُفسّر سبب عمل معرض الصور وتطبيقات الموسيقى وخدمات التخزين السحابي اليوم بشكل أسرع وأكثر اتساقًا وأمانًا من الأجيال السابقة للنظام.


