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

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

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