تربط طبقة التجريد (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 يتيح إطار عمل الكاميرا أيضًا استخدام واجهات HAL للكاميرا من HIDL، ولكن ميزات الكاميرا المُضافة في Android 13 أو الإصدارات الأحدث لا تتوفّر إلا من خلال واجهات HAL للكاميرا من AIDL. لتنفيذ هذه الميزات على الأجهزة التي يتم ترقيتها إلى Android 13 أو إصدار أحدث، على المصنّعين نقل عملية HAL من استخدام واجهات HIDL للكاميرا إلى واجهات AIDL للكاميرا.
للتعرّف على مزايا AIDL، اطّلِع على مقالة AIDL لواجهة HAL.
تنفيذ طبقة تجريد الأجهزة (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. يقدّم الإصدار 13 من Android اختبار فحص سلامة النقل (VTS) لـ AIDL،
VtsAidlHalCameraProvider_TargetTest.cpp
.
ميزات HAL3 للكاميرا
يهدف إعادة تصميم Android Camera API إلى زيادة قدرة التطبيقات على التحكّم بشكل كبير في النظام الفرعي للكاميرا على أجهزة Android، مع إعادة تنظيم واجهة برمجة التطبيقات لجعلها أكثر فعالية وسهولة في الصيانة. تسهّل عليك عناصر التحكّم إنشاء تطبيقات كاميرا عالية الجودة على Android الأجهزة التي يمكنها العمل بشكل موثوق عبر منتجات متعددة مع الاستمرار في استخدام خوارزميات خاصة بالجهاز كلما أمكن ذلك لتحسين الجودة أدائه.
يعمل الإصدار 3 من النظام الفرعي للكاميرا على هيكلة أوضاع التشغيل في طريقة عرض موحّدة واحدة يمكن استخدامها لتنفيذ أي من الأوضاع السابقة وغيرها من الميزات الأخرى، مثل وضع الصور المتسلسلة. ويؤدي ذلك إلى إتاحة إمكانية تحكّم أفضل للمستخدم في التركيز والتعريض ومزيد من عمليات المعالجة اللاحقة، مثل تقليل الضوضاء والتباين والتوضيح. علاوةً على ذلك، تُسهِّل طريقة العرض المبسّطة هذه على التطبيق البرامج على استخدام الوظائف المختلفة للكاميرا.
تنشئ واجهة برمجة التطبيقات نموذجًا للنظام الفرعي للكاميرا على أنّه مسار تحويل يحوّل الطلبات الواردة لالتقاط اللقطات إلى لقطات، على أساس 1:1. الطلبات جميع معلومات التهيئة المتعلقة بالتقاط ومعالجة الإطار. ويتضمن ذلك درجة الدقة وتنسيق البكسل. أداة استشعار يدوية وعدسة وفلاش التحكّم 3A أوضاع التشغيل؛ RAW->التحكم في معالجة YUV؛ إنشاء الإحصاءات وهكذا
بعبارة بسيطة، يطلب إطار عمل التطبيق إطارًا من المنظومة الفرعية للكاميرا، وتُرجع المنظومة الفرعية للكاميرا النتائج إلى بث الإخراج. ضِمن بالإضافة إلى ذلك، بيانات التعريف التي تحتوي على معلومات مثل مسافات الألوان والعدسات يتم إنشاء التظليل لكل مجموعة من النتائج. يمكنك اعتبار الإصدار 3 من الكاميرا كمسار لبث الإصدار 1 من الكاميرا في اتجاه واحد. تحوّل كل لقطة الطلب إلى صورة واحدة التقطتها أداة الاستشعار، وتتم معالجتها في:
- كائن نتيجة يتضمّن بيانات وصفية حول الالتقاط
- من واحد إلى N مخزن مؤقت لبيانات الصور، كلّ منها في سطحه المقصود
يتم إعداد مجموعة مساحات عرض النتائج المحتملة بشكل مسبق:
- كل سطح هو وجهة لبثّ وحدات تخزين مؤقت للصور بدرجة استقطاب ثابتة.
- لا يمكن ضبط سوى عدد صغير من مساحات العرض كمَخرجات في المرة الواحدة (3 تقريبًا).
يتضمن الطلب جميع إعدادات الالتقاط المطلوبة وقائمة المخرجات
مساحات العرض لإرسال المخازن المؤقتة للصور إلى هذا الطلب (من الإجمالي
المجموعة المناسبة). يمكن أن يكون الطلب لمرة واحدة (مع capture()
)، أو
قد تتمّ إعادته إلى أجل غير مسمى (مع setRepeatingRequest()
). وتكون عمليات الالتقاط
لها الأولوية على الطلبات المتكرّرة.
نظرة عامة على كاميرا HAL1
تم تصميم الإصدار 1 من النظام الفرعي للكاميرا كمربع أسود يحتوي على درجات الضوابط وأوضاع التشغيل الثلاثة التالية:
- معاينة
- تسجيل الفيديو
- التقاط الصور الثابتة
ولكل وضع إمكانات مختلفة قليلاً ومتداخلة. وهذا جعل من صعوبة تطبيق ميزات جديدة مثل وضع الصور المتسلسلة، الذي يقع بين اثنين أوضاع التشغيل.
يواصل Android 7.0 إتاحة استخدام كاميرا HAL1، لأنّ العديد من الأجهزة لا تزال تعتمد على بها. بالإضافة إلى ذلك، تدعم خدمة كاميرا Android تنفيذ كل من HALs (1 و3)، وهو أمر مفيد عندما تريد دعم واجهة أمامية ذات كفاءة أقل كاميرا مع كاميرا HAL1 وكاميرا خلفية أكثر تقدمًا مزودة بكاميرا HAL3.
تتوفّر وحدة واحدة لأجهزة HAL للكاميرا (تحتوي على إصدار رقم)، والذي يسرد أجهزة كاميرا مستقلة متعددة يحتوي كل منها على رقم الإصدار الخاص بها. يجب استخدام وحدة الكاميرا 2 أو وحدة أحدث للحصول على الدعم. الأجهزة 2 أو الإصدارات الأحدث، ويمكن أن تحتوي وحدات الكاميرا هذه على مجموعة من أجهزة الكاميرا. (هذا ما نعنيه عندما نقول أن Android يتيح تنفيذ HALs).