تربط طبقة التجريد (HAL) للكاميرا في Android المستوى الأعلى واجهات برمجة التطبيقات لإطار عمل الكاميرا في android.hardware.camera2 إلى برنامج تشغيل الكاميرا والأجهزة الأساسية. بدءًا من نظام التشغيل Android 13، واجهة HAL للكاميرا التطوير باستخدام AIDL. تقديم Android 8.0 Treble: تبديل واجهة برمجة تطبيقات HAL للكاميرا إلى واجهة مستقرة تحددها لغة وصف واجهة HAL (HIDL). إذا سبق لك تطوير وحدة HAL للكاميرا وبرنامج تشغيل Android 7.0 وأقل، فكن على دراية بأهم التغييرات في مسار الكاميرا.
طبقة تجريد الأجهزة (HAL) لكاميرا AIDL
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 13 أو الإصدارات الأحدث، يتم استخدام الكاميرا التوافق مع طبقة تجريد الأجهزة (HALs) الخاصة بكاميرا AIDL يعتمد إطار عمل الكاميرا أيضًا وتتوافق مع HALs للكاميرا HIDL، ومع ذلك تمت إضافة ميزات الكاميرا في لا يتوفّر نظام التشغيل Android 13 أو الإصدارات الأحدث إلا من خلال واجهات HAL للكاميرا. لتطبيق هذه الميزات على الأجهزة التي تتم ترقيتها إلى الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، على الشركات المصنّعة للأجهزة نقل عمليات HAL من استخدام واجهات كاميرا HIDL إلى كاميرا AIDL من الواجهات.
للتعرف على مزايا AIDL، راجع AIDL لشهادات HALs:
تنفيذ طبقة تجريد الأجهزة (HAL) للكاميرا AIDL
للحصول على مرجع لتنفيذ "HAL" لكاميرا AIDL، يُرجى الاطّلاع على
hardware/google/camera/common/hal/aidl_service/
تتوفر مواصفات HAL للكاميرا في AIDL في المواقع التالية:
- موفِّر الكاميرا:
hardware/interfaces/camera/provider/aidl/
- جهاز الكاميرا:
hardware/interfaces/camera/device/aidl/
- البيانات الوصفية للكاميرا:
hardware/interfaces/camera/metadata/aidl/
- أنواع البيانات الشائعة:
hardware/interfaces/camera/common/aidl/
بالنسبة إلى الأجهزة التي يتم نقل بياناتها إلى AIDL، قد تحتاج الشركات المصنّعة للأجهزة إلى تعديل سياسة Android SELinux (sepolicy) وملفات RC اعتمادًا على الرمز البرمجي البنية.
التحقّق من طبقة تجريد الأجهزة (HAL) للكاميرا في AIDL
لاختبار تنفيذ طبقة تجريد الأجهزة (HAL) للكاميرا AIDL، تأكَّد من أنّ الجهاز يجتاز كل
اختبارات CTS وVTS. نظام Android 13 يقدّم AIDL VTS
اختبار
VtsAidlHalCameraProvider_TargetTest.cpp
ميزات HAL3 للكاميرا
تهدف إعادة تصميم واجهة برمجة التطبيقات Android Camera API إلى زيادة كبيرة قدرة التطبيقات على التحكّم في النظام الفرعي للكاميرا على أجهزة Android مع إعادة تنظيم واجهة برمجة التطبيقات لجعلها أكثر كفاءة وقابلية للصيانة. تسهّل عليك عناصر التحكّم إنشاء تطبيقات كاميرا عالية الجودة على Android الأجهزة التي يمكنها العمل بشكل موثوق عبر منتجات متعددة مع الاستمرار في استخدام خوارزميات خاصة بالجهاز كلما أمكن ذلك لتحسين الجودة أدائه.
يعمل الإصدار 3 من النظام الفرعي للكاميرا على هيكلة أوضاع التشغيل في طريقة عرض موحّدة واحدة يمكن استخدامها لتنفيذ أي من الأوضاع السابقة وغيرها من الميزات الأخرى، مثل وضع الصور المتسلسلة. ينتج عن ذلك تحكم أفضل للمستخدم في التركيز والتعرض ومزيد من المعالجة بعد المعالجة، مثل تقليل الضوضاء والتباين وزيادة الحدة. علاوةً على ذلك، تُسهِّل طريقة العرض المبسّطة هذه على التطبيق استخدام وظائف الكاميرا المختلفة.
تضع واجهة برمجة التطبيقات النظام الفرعي للكاميرا كمسار يحوِّل الصوت الوارد لطلبات التقاط الإطارات في إطارات بنسبة عرض إلى ارتفاع 1:1. الطلبات جميع معلومات التهيئة المتعلقة بالتقاط ومعالجة الإطار. ويتضمن ذلك درجة الدقة وتنسيق البكسل. أداة استشعار يدوية وعدسة وفلاش التحكم؛ 3A أوضاع التشغيل؛ RAW->التحكم في معالجة YUV؛ إنشاء الإحصاءات وهكذا
بعبارات بسيطة، يطلب إطار عمل التطبيق إطارًا من الكاميرا ويعيد النظام الفرعي للكاميرا النتائج إلى تدفق إخراج. ضِمن بالإضافة إلى ذلك، بيانات التعريف التي تحتوي على معلومات مثل مسافات الألوان والعدسات يتم إنشاء التظليل لكل مجموعة من النتائج. لنفترض أن لديك كاميرا الإصدار 3 مسار البث المباشر أحادي الاتجاه للإصدار 1 من الكاميرا. تحوّل كل لقطة الطلب إلى صورة واحدة التقطتها أداة الاستشعار، وتتم معالجتها في:
- كائن نتيجة يتضمّن بيانات وصفية حول الالتقاط
- من مستودع واحد إلى N من بيانات الصورة، كل منها في سطح الوجهة الخاص بها.
يتم إعداد مجموعة مساحات عرض النتائج المحتملة بشكل مسبق:
- ويمثل كل سطح وجهة تدفق من المخازن المؤقتة للصور ذات الحل.
- يمكن ضبط عدد قليل فقط من مساحات العرض كمخرجات في الوقت نفسه (3 تقريبًا).
يتضمن الطلب جميع إعدادات الالتقاط المطلوبة وقائمة المخرجات
مساحات العرض لإرسال المخازن المؤقتة للصور إلى هذا الطلب (من الإجمالي
المجموعة المناسبة). يمكن أن يكون الطلب لقطة واحدة (باستخدام capture()
) أو
قد تتكرّر إلى أجل غير مسمى (باستخدام setRepeatingRequest()
). التقاطات
تكون لها الأولوية على الطلبات المتكررة.
![نموذج بيانات الكاميرا](https://source.android.google.cn/static/docs/core/camera/images/camera_simple_model.png?authuser=5&hl=ar)
الشكل 1. نموذج التشغيل الأساسي للكاميرا
نظرة عامة على كاميرا HAL1
تم تصميم الإصدار 1 من النظام الفرعي للكاميرا كمربع أسود يحتوي على درجات الضوابط وأوضاع التشغيل الثلاثة التالية:
- معاينة
- تسجيل الفيديو
- جارٍ الالتقاط
ولكل وضع إمكانات مختلفة قليلاً ومتداخلة. وهذا جعل من صعوبة تطبيق ميزات جديدة مثل وضع الصور المتسلسلة، الذي يقع بين اثنين أوضاع التشغيل.
![مخطط كتلة الكاميرا](https://source.android.google.cn/static/docs/core/camera/images/camera_block.png?authuser=5&hl=ar)
الشكل 2. مكوّنات الكاميرا
يواصل Android 7.0 إتاحة استخدام كاميرا HAL1، لأنّ العديد من الأجهزة لا تزال تعتمد على بها. بالإضافة إلى ذلك، تدعم خدمة كاميرا Android تنفيذ كل من HALs (1 و3)، وهو أمر مفيد عندما تريد دعم واجهة أمامية ذات كفاءة أقل كاميرا مع كاميرا HAL1 وكاميرا خلفية أكثر تقدمًا مزودة بكاميرا HAL3.
تتوفّر وحدة واحدة لأجهزة HAL للكاميرا (تحتوي على إصدار رقم)، والذي يسرد أجهزة كاميرا مستقلة متعددة يحتوي كل منها على رقم الإصدار الخاص بها. يجب استخدام وحدة الكاميرا 2 أو وحدة أحدث للحصول على الدعم. الأجهزة 2 أو الإصدارات الأحدث، ويمكن أن تحتوي وحدات الكاميرا هذه على مجموعة من أجهزة الكاميرا. (هذا ما نعنيه عندما نقول أن Android يتيح تنفيذ HALs).