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

الشكل 1. نموذج التشغيل الأساسي للكاميرا
نظرة عامة على Camera HAL1
يُنصح باستخدام الإصدار 3 من Camera HAL على الأجهزة التي تعمل بالإصدار 9 من نظام التشغيل Android أو إصدار أحدث.تم تصميم الإصدار 1 من نظام الكاميرا الفرعي على شكل صندوق أسود يتضمّن عناصر تحكّم رفيعة المستوى وأوضاع التشغيل الثلاثة التالية:
- معاينة
- تسجيل فيديو
- التقاط صورة ثابتة
تتضمّن كل وسيلة نقل إمكانات مختلفة قليلاً ومتداخلة. وقد أدّى ذلك إلى صعوبة تنفيذ ميزات جديدة، مثل وضع التصوير المتتابع، الذي يقع بين وضعَي التشغيل.

الشكل 2. مكوّنات الكاميرا
يواصل نظام التشغيل Android 7.0 توفير الدعم لطبقة تجريد الأجهزة (HAL) 1 الخاصة بالكاميرا، لأنّ العديد من الأجهزة لا تزال تعتمد عليها. بالإضافة إلى ذلك، تتيح خدمة كاميرا Android تنفيذ كلتا طبقتَي تجريد الأجهزة (1 و3)، وهو أمر مفيد عندما تريد توفير كاميرا أمامية أقل إمكانات باستخدام طبقة تجريد الأجهزة 1 للكاميرا، وكاميرا خلفية أكثر تقدّمًا باستخدام طبقة تجريد الأجهزة 3 للكاميرا.
يتوفّر وحدة واحدة من طبقة تجريد الأجهزة (HAL) الخاصة بالكاميرا (مع رقم الإصدار الخاص بها)، وتتضمّن الوحدة عدة أجهزة كاميرا مستقلة لكل منها رقم الإصدار الخاص به. يجب توفُّر وحدة كاميرا 2 أو إصدار أحدث لتتوافق مع الأجهزة 2 أو إصدار أحدث، ويمكن أن تتضمّن وحدات الكاميرا هذه مزيجًا من إصدارات أجهزة الكاميرا (هذا ما نعنيه عندما نقول إنّ Android يتيح تنفيذ كلتا طبقتَي تجريد الأجهزة).