تعرض هذه الصفحة تفاصيل الاختلافات في HALs للكاميرا وواجهات برمجة التطبيقات وواجهات برمجة التطبيقات المرتبطة اختبارات مجموعة اختبار التوافق (CTS) كما يتناول العديد من التغييرات الهندسية التي تم إجراؤها لتعزيز وتأمين إطار عمل الكاميرا في Android 7.0، والتبديل إلى Treble في الإصدار Android 8.0، والتحديثات التي يجب على المورّدين إجراؤها لدعم هذه التغييرات في استخدام الكاميرات.
المصطلحات
تم استخدام المصطلحات التالية في هذه الصفحة:
- واجهة برمجة التطبيقات للكاميرا 1
- إطار عمل الكاميرا على مستوى التطبيق في الأجهزة التي تعمل بنظام التشغيل Android 4.4 والإصدارات الأقدم، مكشوفة
من خلال الفئة
android.hardware.Camera
. - واجهة برمجة التطبيقات للكاميرا 2
- إطار عمل الكاميرا على مستوى التطبيق في الأجهزة التي تعمل بنظام التشغيل Android 5.0 والإصدارات الأحدث، مكشوفة
من خلال حزمة
android.hardware.camera2
. - طبقة تجريد الأجهزة (HAL) للكاميرا
- طبقة وحدة الكاميرا التي ينفّذها مورّدو المنظومة على الرقاقة (SoC) الجمهور على مستوى التطبيق مُنشأة أعلى طبقة تجريد الأجهزة (HAL) للكاميرا.
- كاميرا HAL3.1
- إصدار HAL لجهاز الكاميرا الذي تم طرحه مع Android 4.4.
- كاميرا HAL3.2
- إصدار HAL لجهاز الكاميرا الذي تم طرحه مع Android 5.0.
- واجهة برمجة التطبيقات للكاميرا CTS
- مجموعة من اختبارات CTS للكاميرا التي يتم تشغيلها أعلى الكاميرا واجهة برمجة التطبيقات1.
- واجهة برمجة التطبيقات للكاميرا CTS
- مجموعة إضافية من اختبارات CTS للكاميرا التي يتم تشغيلها أعلى واجهة برمجة التطبيقات للكاميرا 2.
- صوت عالي الطبقة
- يفصل بين تنفيذ المورِّد (برنامج خاص بالجهاز والمستوى الأدنى من البرنامج). الشركة المصنّعة للسيليكون) من إطار عمل نظام التشغيل Android من خلال أداة جديدة وواجهة البائع.
- مؤسسة HIDL
- لغة تعريف واجهة HAL مع Treble وتُستخدم لتحديد الواجهة بين HAL مستخدميها.
- الإحالات الناجحة المحسّنة للعملاء المحتملين (VTS)
- تم تقديم حزمة اختبار المورّد جنبًا إلى جنب الصوت العالي الطبقة.
واجهات برمجة تطبيقات الكاميرا
يتضمّن Android واجهات برمجة التطبيقات التالية للكاميرا.
واجهة برمجة التطبيقات للكاميرا 1
تم إيقاف تطبيق Camera API1 نهائيًا في نظام التشغيل Android 5.0، والذي لا يزال يجري إيقافه كواجهة جديدة. يركّز تطوير المنصة على واجهة برمجة التطبيقات للكاميرا 2. ومع ذلك، ستخضع فترة الإيقاف التدريجي طويلة جدًا، وستستمر إصدارات Android في إتاحة تطبيقات "الكاميرا" على واجهة برمجة التطبيقات1 بعض الوقت. على وجه التحديد، يستمر الدعم لما يلي:
- واجهات برمجة التطبيقات للكاميرا 1 في التطبيقات تطبيقات الكاميرا المُصمَّمة في أعلى تطبيق "الكاميرا" من المفترض أن تعمل واجهة برمجة التطبيقات API1 بالشكل نفسه على الأجهزة التي تعمل بإصدارات Android أقدم.
- إصدارات طبقة تجريد الأجهزة (HAL) للكاميرا يشمل التوافق مع كاميرا HAL1.0.
واجهة برمجة التطبيقات للكاميرا 2
إنّ إطار عمل Camera API2 يتيح للتطبيق التحكّم في الكاميرا من المستوى الأدنى. بما في ذلك تدفقات البث/التدفق الفعالة بدون نسخ وعناصر التحكم لكل إطار تعرض، زيادة، موازنة اللون الأبيض، تحويل اللون، إزالة التشويش، زيادة الحدة والمزيد. للحصول على التفاصيل، يمكنك مشاهدة فيديو يتضمن نظرة عامة حول مؤتمر Google I/O
يشمل الإصدار 5.0 من نظام التشغيل Android والإصدارات الأحدث واجهة برمجة التطبيقات Camera API2. إلا أنّ الأجهزة التي تعمل بنظام التشغيل Android
قد لا يتوافق الإصدار 5.0 والإصدارات الأحدث مع كل ميزات Camera API2. تشير رسالة الأشكال البيانية
موقع واحد (android.info.supportedHardwareLevel
) يمكن للتطبيقات إجراء طلبات بحث عنه
من خلال واجهات Camera API2، يتم الإبلاغ عن أحد الدعمَين التاليَين:
المستويات:
LEGACY
: تعرض هذه الأجهزة الإمكانات للتطبيقات من خلال واجهات الكاميرا API2 التي لها نفس القدرات تقريبًا للتطبيقات من خلال واجهات برمجة التطبيقات للكاميرا. الرمز البرمجي لأُطر العمل القديمة ترجمة طلبات البيانات من واجهة برمجة التطبيقات للكاميرا إلى طلبات البيانات من واجهة برمجة التطبيقات1 للكاميرا الأجهزة القديمة لا تتوافق مع ميزات واجهة برمجة التطبيقات للكاميرا 2 (الكاميرا) مثل عناصر التحكم لكل إطار.LIMITED
: تتوافق هذه الأجهزة مع بعض إمكانيات واجهة برمجة التطبيقات للكاميرا 2. (وليس كلها) ويجب استخدام طبقة HAL 3.2 للكاميرا أو إصدار أحدث.FULL
: تتوافق هذه الأجهزة مع جميع الإمكانات الرئيسية واجهة برمجة التطبيقات للكاميرا 2 (الكاميرا) ويجب أن تستخدم الإصدار 3.2 من تقنية HAL للكاميرا أو الإصدارات الأحدث والإصدار 5.0 من نظام التشغيل Android أو الإصدارات الأحدث.LEVEL_3
: تتيح هذه الأجهزة إعادة معالجة YUV وصورة RAW التقاط البيانات، إلى جانب إعدادات إضافية لبث الإخراج.EXTERNAL
: هذه الأجهزة تشبه جهازLIMITED
. الأجهزة التي لها بعض الاستثناءات؛ على سبيل المثال، قد تتضمن بعض معلومات المستشعر أو العدسة لا يتم تسجيلها أو يكون عدد اللقطات في الثانية فيها أقل ثباتًا. يُستخدم هذا المستوى للمستخدمين الخارجيين والكاميرات مثل كاميرات الويب USB.
تتعرض القدرات الفردية من خلال
السمة android.request.availableCapabilities
في واجهة برمجة التطبيقات للكاميرا 2
من الواجهات. يتطلّب جهازان (FULL
) توفُّر MANUAL_SENSOR
إمكانات MANUAL_POST_PROCESSING
وغير ذلك تشير رسالة الأشكال البيانية
إنّ إمكانية استخدام RAW
اختيارية حتى في أجهزة FULL
.
يمكن لأجهزة LIMITED
الإعلان عن أي مجموعة فرعية من هذه الإمكانات،
بما في ذلك لا شيء منها. مع ذلك، فإنّ إمكانية BACKWARD_COMPATIBLE
تحديدها دائمًا.
مستوى الأجهزة المتوافقة، بالإضافة إلى كاميرا الجهاز المحددة تتوفر إمكانات واجهة برمجة التطبيقات 2 التي تتوافق معها كعلامات للميزات التالية السماح بفلترة تطبيقات الكاميرا API2 للكاميرا من Google Play.
android.hardware.camera.hardware_level.full
android.hardware.camera.capability.raw
android.hardware.camera.capability.manual_sensor
android.hardware.camera.capability.manual_post_processing
متطلبات CTS
على الأجهزة التي تعمل بالإصدار 5.0 من نظام التشغيل Android أو الإصدارات الأحدث، يجب اجتياز الكاميرا API1 CTS والكاميرا اختبارات واجهة برمجة التطبيقات API2 CTS وCTS Verifier.
الأجهزة التي لا يتم تطبيق معيار HAL3.2 للكاميرا عليها ولا يتم توفيره
القادر على دعم واجهات الكاميرا API2 الكاملة يجب أن يجتاز الكاميرا
اختبارات API2 CTS. ومع ذلك، يعمل الجهاز باستخدام واجهة برمجة التطبيقات Camera API2.
وضع LEGACY
(الذي يتم فيه ربط طلبات واجهة برمجة التطبيقات 2 للكاميرا بشكل نظري
لطلبات البيانات من واجهة برمجة التطبيقات 1 للكاميرا) لذا فإن أي اختبارات CTS للكاميرا API2 ذات صلة بالميزات أو
يتم تخطيها تلقائيًا بشكل أفضل من واجهة برمجة التطبيقات للكاميرا 1 (الكاميرا).
على الأجهزة القديمة، تستخدم اختبارات الكاميرا API2 CTS التي يتم تشغيلها واجهات برمجة التطبيقات1 للكاميرا العامة الحالية وإمكاناتها بدون إضافة متطلبات المشروع. الأخطاء التي يتم الكشف عنها (والتي تؤدّي إلى تعذُّر ظهور أداة Camera API2 CTS) أخطاء موجودة بالفعل في طبقة تجريد الأجهزة (HAL) للكاميرا الحالية في الجهاز، وبالتالي من خلال تطبيقات Camera API1 الحالية. لا نتوقّع حدوث أخطاء كثيرة من هذا النوع (على الرغم من ذلك، يجب إصلاح مثل هذه الأخطاء لاجتياز اختبارات الكاميرا API2 CTS).
متطلبات ميزة VTS
يجب أن تتوافق الأجهزة التي تعمل بالإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث مع عمليات تنفيذ HAL بشكل مجمّع تخطّي الكاميرا اختبارات VTS
تقوية إطار عمل الكاميرا
لتعزيز أمان إطار عمل الوسائط والوسائط، يعمل Android 7.0 على تحريك الكاميرا. خارج خادم الوسائط. بدءًا من الإصدار Android 8.0، ستتخذ كل كاميرا مجمّعة يتم تشغيل HAL في عملية منفصلة عن خدمة الكاميرا. قد يحتاج الموردون إلى إجراء التغييرات في طبقة تجريد الأجهزة (HAL) للكاميرا اعتمادًا على إصدارات واجهة برمجة التطبيقات وHAL قيد الاستخدام. تشير رسالة الأشكال البيانية توضح الأقسام التالية بالتفصيل التغييرات المعمارية في AP1 وAP2 بالنسبة إلى HAL1 HAL3، إلى جانب المتطلبات العامة.
تغييرات بنية API1
قد يفترض تسجيل الفيديو عبر واجهة برمجة التطبيقات 1 تشغيل الكاميرا وبرنامج ترميز الفيديو على نفس الدفع. عند استخدام API1 على:
- HAL3، حيث تستخدم خدمة الكاميرا Bufferplaylist لتمرير الموارد الاحتياطية بين لن يكون هناك حاجة إلى تحديث أي مورد.
- HAL1، الذي يتيح تمرير البيانات الوصفية في الموارد الاحتياطية للفيديو، يجب على البائعين
يُرجى تعديل HAL لاستخدام
kMetadataBufferTypeNativeHandleSource
. (لم يعد تطبيقkMetadataBufferTypeCameraSource
متاحًا في نظام التشغيل Android. 7.0)
تغييرات بنية واجهة برمجة التطبيقات 2 API
بالنسبة إلى واجهة برمجة التطبيقات (API2) على HAL1 أو HAL3، تمرر Buffer playlist المخازن المؤقتة بحيث تستمر هذه المسارات إلى العمل. بنية Android 7.0 لواجهة برمجة التطبيقات 2 API على:
- لا يتأثر HAL1 بنقل خدمة الكاميرا، ولا يتأثر أي مورّد تحديث مطلوبة.
- يتأثّر HAL3، ولكن لم يتم إجراء أي تحديث من قِبل المورّد. ضروري:
متطلبات إضافية
التغييرات الهندسية التي أُدخلت على تعزيز إطار عمل الوسائط والوسائط من متطلبات الأمان الإضافية التالية.
- أحكام عامة: تتطلب الأجهزة معدل نقل بيانات إضافيًا بسبب IPC،
ما قد يؤثّر في حالات استخدام الكاميرا الحساسة للوقت، مثل تسجيل الفيديو عالي السرعة
التسجيل. يمكن للبائعين قياس التأثير الفعلي من خلال إدارة
"
android.hardware.camera2.cts.PerformanceTest
" و"كاميرا Google" لتسجيل فيديو عالي السرعة بسرعة 120/240 لقطة في الثانية. تتطلب الأجهزة أيضًا قدرًا صغيرًا من ذاكرة الوصول العشوائي الإضافية لإنشاء العملية الجديدة. - تمرير البيانات الوصفية في التخزين المؤقت للفيديو (HAL1 فقط) في حال توفُّر HAL1
بتخزين البيانات الوصفية بدلاً من بيانات إطارات YUV الحقيقية في مخازن مؤقتة للفيديو، يجب على HAL
استخدام
kMetadataBufferTypeNativeHandleSource
كمخزن مؤقت للبيانات الوصفية كتابةVideoNativeHandleMetadata
واجتيازه في المخازن المؤقتة للفيديو. (لم يعد تطبيقkMetadataBufferTypeCameraSource
متاحًا على Android. 7.0) باستخدامVideoNativeHandleMetadata
، تتوفر إطارات عمل الكاميرا والوسائط قادرون على تمرير المخازن المؤقتة للفيديو بين العمليات من خلال إنشاء تسلسل إلغاء تسلسل الأسماء المعرِّفة الأصلية بشكل صحيح. - لا يخزِّن عنوان معرِّف المخزن المؤقت دائمًا المخزن المؤقت نفسه. (HAL3 فقط). لكل طلب التقاط، يحصل HAL3 على عناوين المورد الاحتياطي. الأسماء المعرِّفة. لا يمكن لـ HAL استخدام العناوين لتحديد الموارد الاحتياطية لأن العناوين تخزين مؤشر آخر للمخزن المؤقت بعد أن يقوم HAL بإرجاع المخزن المؤقت. يجب تحديث HAL لاستخدام مؤشرات المخزن المؤقت لتحديد الموارد الاحتياطية. على سبيل المثال، تتلقى HAL عنوان مقبض المخزن المؤقت A، الذي يخزن مؤشر المخزن المؤقت A. بعد عودة HAL مؤشر المخزن المؤقت A، قد يخزن عنوان مقبض المخزن المؤقت A مؤشر المخزن المؤقت B في المرة التالية على جهاز HAL.
- تعديل سياسات SELinux لخادم الكاميرا. في حال حذف تمنح سياسات SELinux الخاصة بالجهاز أذونات خادم الوسائط لتشغيل الكاميرا، يجب تحديث سياسات SELinux لمنح الأذونات المناسبة لخادم الكاميرا. أر عدم تشجيع تكرار سياسات SELinux لخادم الوسائط لخادم الكاميرا (نظرًا لأن خادم الوسائط وخادم الكاميرا يتطلبان موارد مختلفة بشكل عام في النظام). يجب أن يمتلك خادم الكاميرا الأذونات اللازمة فقط لتشغيل الكاميرا أي وظائف وأي أذونات غير ضرورية متعلقة بالكاميرا في خادم الوسائط .
- الفصل بين طبقة تجريد الأجهزة (HAL) للكاميرا وخادم الكاميرا جهاز Android 8.0 أو أعلى لفصل طبقة تجريد الأجهزة (HAL) للكاميرا في عملية واحدة عن خادم الكاميرا. يمر IPC من خلال الواجهات المحدّدة من خلال HIDL.
التحقُّق
بالنسبة إلى جميع الأجهزة التي تتضمّن كاميرا وتعمل بنظام التشغيل Android 7.0، عليك التأكّد من التنفيذ من خلال تشغيل Android 7.0 CTS. رغم أن Android 7.0 لا يتضمن اختبارات CTS الجديدة التي تتحقّق من التغييرات في خدمة الكاميرا، وتتعذّر اختبارات CTS الحالية إذا لم تكن قد أجريت التعديلات المشار إليها أعلاه
عليك إثبات ملكية جميع الأجهزة التي تتضمّن كاميرا وتعمل بالإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث. تنفيذ البائع عن طريق تشغيل VTS.
سجلّ تعديلات طبقة تجريد الأجهزة (HAL) للكاميرا
للاطّلاع على قائمة بالاختبارات المتاحة لتقييم طبقة تجريد الأجهزة (HAL) لكاميرا Android، يمكنك الاطّلاع على اختبار طبقة تجريد الأجهزة (HAL) للكاميرا قائمة التحقّق:
Android 10
يقدّم نظام التشغيل Android 10 التحديثات التالية.
واجهة برمجة التطبيقات للكاميرا
- تحسينات على استخدام كاميرات متعددة تسمح للكاميرات المادية بشكل فردي أو من خلال الكاميرات المنطقية المقابلة عن طريق إخفاء معرّفات الكاميرات الفعلية. عرض إتاحة استخدام كاميرات متعدّدة
- القدرة على التحقق مما إذا كانت تهيئة جلسة معينة
بدون تكاليف الأداء لإنشاء جلسة جديدة.
عرض
CameraDevice
- إمكانية استرداد إعدادات البث المقترَحة لاستخدام معيّن
لجعل العميل أكثر كفاءة وأداءً في الطاقة. عرض
getRecommendedStreamConfigurationMap
- الدعم لـ تنسيق صورة JPEG بعمق. لمزيد من التفاصيل، يُرجى مراجعة مواصفات العمق الديناميكي:
- الدعم لـ تنسيق صورة HEIC: عرض تصوير HEIF:
- تحسينات على الخصوصية احتياج العميل إلى مفاتيح معيّنة
الحصول على
أذونات
CAMERA
قبل أن يتم استردادها منCameraCharacteristics
عرضgetKeysNeedingPermission
طبقة تجريد الأجهزة (HAL) للكاميرا
يتم تحديث إصدارات HAL التالية للكاميرا في Android 10-
3.5
ICameraDevice
-
getPhysicalCameraCharacteristics
: يشير هذا المصطلح إلى معلومات الكاميرا الثابتة لمعرّف كاميرا مادي. كاميرا. عرض إتاحة استخدام كاميرات متعدّدة isStreamCombinationSupported
: هذه الطريقة متاحة للجمهور العام واجهة برمجة تطبيقات تساعد العملاء في الاستعلام عما إذا كان إعداد الجلسة متوافقًا راجِع واجهة برمجة التطبيقات. إلى مجموعات مصادر طلبات البحث
ICameraDeviceSession
-
isReconfigurationNeeded
: طريقة توضّح إطار عمل الكاميرا ما إذا كان البث مكتملاً يجب إعادة الضبط لقيم مَعلمات الجلسات الجديدة المحتملة. هذا النمط في تجنُّب أي تأخير غير ضروري في إعادة ضبط الكاميرا. عرض طلب إعادة ضبط الجلسة. - طبقة تجريد الأجهزة (HAL)
واجهات برمجة التطبيقات لإدارة التخزين المؤقت: تتيح واجهات برمجة التطبيقات هذه لطبقة المقابس الآمنة (HAL) للكاميرا طلب
من إطار عمل الكاميرا عند الحاجة فقط بدلاً من إقران كل منها
التقاط الطلب مع الموارد الاحتياطية المرتبطة به خلال مسار الكاميرا،
مما قد يؤدي إلى توفير كبير في الذاكرة.
-
signalStreamFlush
: إشارات إلى طبقة تجريد الأجهزة (HAL) بأنّ الكاميرا على وشك تنفيذconfigureStreams_3_5
وأن يجب أن تعرض HAL جميع الموارد الاحتياطية لعمليات البث المحددة. -
configureStreams_3_5
: مشابه لـICameraDevice3.4.configureStreams
، لكن في بالإضافة إلى ذلك، يتم تقديم العدّادstreamConfigCounter
إلى البحث عن حالة سباق بينconfigureStreams_3_5
وsignalStreamFlush
.
-
تعديلات على "ICameraDeviceCallback
":
-
requestStreamBuffers
: معاودة الاتصال المتزامنة التي تستدعيها طبقة تجريد الأجهزة (HAL) للكاميرا لطلب المعلومات من خادم الكاميرا والموارد الاحتياطية. عرضrequestStreamBuffers
-
returnStreamBuffers
: معاودة الاتصال المتزامنة لبروتوكول HAL للكاميرا لإعادة الموارد الاحتياطية للمخرجات إلى خادم الكاميرا. عرضreturnStreamBuffers
3.4
تتم إضافة المفاتيح التالية إلى البيانات الوصفية للكاميرا في Android 10-
- تنسيقات الصور
ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
ANDROID_SCALER_AVAILABLE_FORMATS_Y8
- علامات البيانات الوصفية للكاميرا
ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION
ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP
ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS
ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS
ANDROID_HEIC_INFO_SUPPORTED
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
- الإمكانات
-
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
-
- قيم
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT
مفتاحANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
- تكوينات البث الديناميكي المتعمّق المتاحة
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
- إعدادات بث HEIC المتاحة
-
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT
-
وحدة الكاميرا
يتم تحديث الإصدارات التالية من وحدات الكاميرا في Android. 10-
2.5
- إضافة طريقة
notifyDeviceStateChange
للأجهزة لإرسال الإشعارات طبقة تجريد الأجهزة (HAL) للكاميرا عند حدوث تغييرات فعلية، مثل الطي، تؤثر في الكاميرا التوجيه.
2.4
- يجب الإبلاغ عن الأجهزة التي تعمل بالمستوى 29 أو أعلى لواجهة برمجة التطبيقات
true
فيisTorchModeSupported
.
الإصدار 9 من نظام التشغيل Android
يقدّم إصدار Android 9 التعديلات التالية على واجهة برمجة التطبيقات API2 للكاميرا واجهة HAL.
واجهة برمجة التطبيقات للكاميرا
- تقدم واجهة برمجة التطبيقات للكاميرات المتعددة لدعم الأجهزة التي تحتوي على عدة كاميرات الكاميرات المواجهة في الاتجاه ذاته، مع إتاحة ميزات مثل الخلفية الضبابية تكبير/تصغير سلس. يتيح هذا الإجراء للتطبيقات عرض عدة كاميرات على جهاز واحد ككاميرا واحدة. وحدة منطقية (كاميرا منطقية). يمكن أيضًا إرسال طلبات الالتقاط إلى شخص أجهزة كاميرا ضمنها كاميرا منطقية واحدة. عرض إتاحة استخدام كاميرات متعدّدة
- تقدِّم مَعلمات الجلسة. مَعلمات الجلسات هي مجموعة فرعية من معلمات الالتقاط المتاحة التي قد تتسبب في تأخير حاد في المعالجة تم تعديله. يمكن التخفيف من هذه التكاليف إذا مرر العملاء قيمهم الأولية أثناء تهيئة جلسة التسجيل. عرض مَعلمات الجلسات:
- تضيف مفاتيح بيانات التثبيت البصري (OIS) للتثبيت على مستوى التطبيق.
التأثيرات. عرض
STATISTICS_OIS_SAMPLES
- لإضافة دعم الفلاش الخارجي. عرض
CONTROL_AE_MODE_ON_EXTERNAL_FLASH
- إضافة هدف تتبع الحركة في
CAPTURE_INTENT
عرضCONTROL_CAPTURE_INTENT_MOTION_TRACKING
- سيتم إيقاف
LENS_RADIAL_DISTORTION
نهائيًا وعمليات الإضافة.LENS_DISTORTION
بدلاً منه. - يضيف هذا الإعداد أوضاع تصحيح التشوّه في
CaptureRequest
. عرضDISTORTION_CORRECTION_MODE
- يتيح هذا الخيار استخدام كاميرات USB/UVC الخارجية على الأجهزة المتوافقة. عرض
INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL
طبقة تجريد الأجهزة (HAL) للكاميرا
3.4
تعديلات على ICameraDeviceSession
-
configureStreams_3_4
: يضيف التوافق معsessionParameters
والكاميرات المنطقية. -
processCaptureRequest_3_4
: يتيح هذا الخيار تضمين معرّفات الكاميرا المادية في بنية البث.
تعديلات على ICameraDeviceCallback
-
processCaptureResult_3_4
: يضيف هذا الخيار البيانات الوصفية المادية للكاميرا إلى نتائج الالتقاط.
3.3
تتم إضافة المفاتيح التالية إلى البيانات الوصفية للكاميرا في Android 9.
- الإمكانات
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
- علامات البيانات الوصفية للكاميرا
ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES
ANDROID_LENS_POSE_REFERENCE
-
ANDROID_LENS_DISTORTION
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
ANDROID_STATISTICS_OIS_DATA_MODE
ANDROID_STATISTICS_OIS_TIMESTAMPS
ANDROID_STATISTICS_OIS_X_SHIFTS
ANDROID_STATISTICS_OIS_Y_SHIFTS
Android 8.0
يقدم إصدار Android 8.0 Treble. مع صوت عالي الطبقة، يستخدم البائع طبقة تجريد الأجهزة (HAL) للكاميرا عمليات التنفيذ binderized. Android 8.0 أيضًا يحتوي على التحسينات الرئيسية التالية في خدمة الكاميرا:
- مساحات العرض المشتركة: تفعيل مساحات عرض متعددة تتشارك المستخدم نفسه
OutputConfiguration
- واجهة برمجة تطبيقات النظام لأوضاع الكاميرا المخصَّصة
onCaptureQueueEmpty
راجِع الأقسام أدناه للاطّلاع على مزيد من المعلومات عن هذه الميزات.
مساحات العرض المشتركة
وتتيح هذه الميزة لمجموعة واحدة فقط من الموارد الاحتياطية توجيه مخرجين، مثل ومعاينة الفيديو وترميز الفيديو، مما يقلل من استهلاك الطاقة والذاكرة. إلى لدعم هذه الميزة، يتعين على الشركات المصنعة للأجهزة التأكد من أن طبقة تجريد الأجهزة (HAL) للكاميرا يمكن أن تؤدي عمليات تنفيذ gralloc HAL إلى إنشاء مخازن مؤقتة يتم استخدامها من قِبل العديد من المستهلكين المختلفين (مثل المؤلف الموسيقي/وحدة معالجة الرسومات والفيديو برنامج ترميز)، بدلاً من مستهلك واحد فقط. تجتاز خدمة الكاميرا عمليات الإبلاغ عن استخدام المستهلك إلى طبقة تجريد الأجهزة (HAL) للكاميرا وجرابو HAL يجب أن يكون تخصيص الأنواع الصحيحة من المخازن المؤقتة، أو أن طبقة تجريد الأجهزة (HAL) للكاميرا تحتاج إلى عرض خطأ عدم دعم هذه المجموعة من المستهلكين.
يمكنك الاطّلاع على
enableSurfaceSharing
.
مستندات المطوِّرين للحصول على تفاصيل إضافية.
واجهة برمجة تطبيقات النظام لأوضاع الكاميرا المخصَّصة
تحدِّد واجهة برمجة التطبيقات العامة للكاميرا وضعَي تشغيل: عادي ومحدود
والتسجيل عالي السرعة. لديهم دلالات مختلفة إلى حد ما؛ على سبيل المثال،
وضع السرعة العالية يقتصر على مخرجين محددين كحد أقصى في الوقت نفسه. متعددة
أعرب المصنّعون الأصليون للأجهزة عن اهتمامهم بتحديد أوضاع مخصّصة أخرى
والإمكانات الخاصة بالأجهزة. الخيارات المتقدمة عبارة عن عدد صحيح
تم تمريره إلى configure_streams
. يمكنك الاطّلاع على:
hardware/camera/device/3.2/ICameraDeviceSession#configurestreams
تتضمّن هذه الميزة طلب بيانات من واجهة برمجة التطبيقات للنظام يمكن أن تستخدمه تطبيقات الكاميرا الخاصة بالمصنّع الأصلي للجهاز لتفعيل وضع مخصص. يجب أن تبدأ هذه الأوضاع بقيمة عدد صحيح 0x8000 لتجنّب حدوث تعارض مع إضافة الأوضاع المستقبلية إلى واجهة برمجة التطبيقات العامة.
ولدعم هذه الميزة، لا يحتاج المصنّعون الأصليون للأجهزة سوى إلى إضافة الوضع الجديد إلى طبقة تجريد الأجهزة (HAL) لديهم، يتم تشغيلها من خلال هذا العدد الصحيح الذي يتم تمريره إلى HAL في Configuration_streams، ثم تطبيق الكاميرا المخصص لديهم واجهة برمجة تطبيقات النظام.
اسم الطريقة هو
android.hardware.camera2.CameraDevice#createCustomCaptureSession
.
يمكنك الاطّلاع على:
frameworks/base/core/java/android/hardware/camera2/CameraDevice
OnCaptureقائمة فارغة
الغرض من واجهة برمجة التطبيقات هذه هو تقليل وقت الاستجابة لتغييرات عناصر التحكّم، مثل التكبير أو التصغير
مع إبقاء قائمة انتظار الطلبات فارغة قدر الإمكان. onCaptureQueueEmpty
لا يتطلب عمل HAL؛ كانت مجرد إضافة من جانب إطار العمل. التطبيقات التي
تريد الاستفادة منها، عليك إضافة
مستمِع إلى معاودة الاتصال تلك والرد
بشكل مناسب. يتم ذلك بشكل عام من خلال إرسال طلب التقاط آخر إلى الكاميرا.
الخاص بك.
واجهة HIDL للكاميرا
إنّ واجهة Camera HIDL هي إصلاح كامل لواجهة HAL الخاصة بالكاميرا. تستخدم واجهات برمجة تطبيقات ثابتة ومحددة بتقنية HIDL. جميع الميزات وإمكانيات الكاميرا تم تقديمها في أحدث إصدارين قديمين 3.4 و2.4 (للكاميرا ) هي أيضًا جزء من تعريفات HIDL.
3.4
إضافات طفيفة على البيانات الوصفية المتوافقة والتغييرات على إتاحة data_space:
- إضافة بيانات
ANDROID_SENSOR_OPAQUE_RAW_SIZE
الوصفية الثابتة كإلزامية إذا كان التنسيقRAW_OPAQUE
متوافقًا. - إضافة عنصر
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
الثابت البيانات الوصفية كإلزامية إذا كان أي تنسيق RAW متوافقًا. - تبديل حقل
camera3_stream_t data_space
إلى حقل أكثر مرونة باستخدام تعريف الإصدار 0 لتشفير مساحة البيانات. - إضافات البيانات الوصفية العامة المتاحة للاستخدام مع HALv3.2 أو الإصدارات الأحدث:
-
ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
ANDROID_SENSOR_OPAQUE_RAW_SIZE
ANDROID_SENSOR_OPTICAL_BLACK_REGIONS
-
3.3
مراجعة طفيفة لـ HAL ذو القدرة الموسّعة:
- تحديثات واجهة برمجة التطبيقات لإعادة معالجة OPAQUE وYUV
- دعم أساسي للمخازن الاحتياطية للمخرجات العميقة.
- إضافة حقل
data_space
إلىcamera3_stream_t
- إضافة حقل التدوير إلى
camera3_stream_t
. - جارٍ إضافة وضع عملية إعداد بث الكاميرا3 إلى
camera3_stream_configuration_t
3.2
مراجعة طفيفة لـ HAL ذو القدرة الموسّعة:
- سيتم إيقاف
get_metadata_vendor_tag_ops
. استخدام يمكنك الحصول علىget_vendor_tag_ops
فيcamera_common.h
بدلاً من ذلك. - سيتم إيقاف
register_stream_buffers
. جميع الموارد الاحتياطية gralloc الذي يقدمه إطار العمل إلى HAL فيprocess_capture_request
قد تكون جديدة في أي وقت. - إضافة دعم للنتائج الجزئية. قد يكون
process_capture_result
ويتم استدعائها عدة مرات مع مجموعة فرعية من النتائج المتاحة قبل نتيجة متاحة. - أضِف نموذجًا يدويًا إلى
camera3_request_template
. حملة التطبيقات استخدام هذا النموذج للتحكم في إعدادات الالتقاط مباشرةً. - أعِد صياغة مواصفات البث الثنائي الاتجاه وبث الإدخال.
- تغيير مسار إرجاع المخزن المؤقت للإدخال يتم إرجاع المخزن المؤقت
process_capture_result
بدلاً منprocess_capture_request
3.1
مراجعة طفيفة لـ HAL ذو القدرة الموسّعة:
- يمرِّر
configure_streams
علامات استخدام المستهلك إلى HAL. - تدفق الاتصال لحذف كل الطلبات/الموارد الاحتياطية أثناء الطيران بأسرع وقت ممكن.
3
المراجعة الأولى لـ HAL ذو القدرة الموسّعة:
- تغيّر كبير في الإصدار لأنّ واجهة التطبيق الثنائية (ABI) مختلفة تمامًا. لا تغيير في إمكانات الأجهزة المطلوبة أو الطراز التشغيلي من 2.0.
- إعادة صياغة طلبات الإدخال وواجهات قائمة انتظار البث: استدعاء إطار عمل في HAL مع الطلب التالي، وتم بالفعل إلغاء انتظار الموارد الاحتياطية للبث. إتاحة إطار عمل المزامنة فهو ضروري لعمليات التنفيذ الفعالة.
- تم نقل العوامل المشغِّلة إلى الطلبات، ومعظم الإشعارات في النتائج.
- دمج جميع عمليات الاستدعاء في إطار عمل في بنية واحدة، وجميع عمليات الإعداد
الطرق في استدعاء
initialize()
واحد. - تم إعداد البث في مكالمة واحدة لتبسيط إدارة البث.
تحل أحداث البث ثنائية الاتجاه محل
STREAM_FROM_STREAM
البنية. - دلالات الوضع المحدود للأجهزة القديمة/المحدودة
2.0
الإصدار الأولي من طبقة تجريد الأجهزة (HAL) ذات الإمكانات الموسّعة (نظام التشغيل Android 4.2) [camera2.h]:
- كافٍ لتنفيذ
android.hardware.Camera
الحالية واجهة برمجة التطبيقات. - يسمح بإعداد قائمة انتظار ZSL في طبقة خدمة الكاميرا.
- لم يتم اختباره للتأكد من توافقه مع أي ميزات جديدة، مثل التحكم في الالتقاط يدويًا وBayer RAW. التقاط بيانات RAW وإعادة معالجتها وما إلى ذلك.
1
طبقة تجريد الأجهزة (HAL) لكاميرا Android (نظام التشغيل Android 4.0) [camera.h]:
- تم التحويل من طبقة تجريد واجهة الكاميرا++ C++.
- يتوافق مع واجهة برمجة تطبيقات
android.hardware.Camera
.
سجلّ تعديلات وحدة الكاميرا
يحتوي هذا القسم على معلومات حول إصدارات الوحدة الخاصة بجهاز الكاميرا
استنادًا إلى camera_module_t.common.module_api_version
. الاثنين
أهم رقم سداسي عشري يمثل الإصدار الرئيسي، ويمثل الرقمان الأقل
بشكل كبير الإصدار الثانوي.
2.4
يضيف إصدار وحدة الكاميرا هذا التغييرات التالية على واجهة برمجة التطبيقات:
- التوافق مع "وضع الكشاف" ويمكن لإطار العمل تفعيل وضع الكشاف لأي
جهاز كاميرا يحتوي على وحدة فلاش بدون فتح كاميرا. تشير رسالة الأشكال البيانية
يكون لجهاز الكاميرا أولوية أعلى في الوصول إلى وحدة الفلاش مقارنةً بالكاميرا
الوحدة يؤدي فتح جهاز الكاميرا إلى إطفاء الكشاف إذا كان مفعلاً
من خلال واجهة الوحدة. عندما يكون هناك أي تعارضات في الموارد، مثل
يتم استدعاء
open()
لفتح جهاز كاميرا، وهو وحدة HAL للكاميرا يجب إبلاغ إطار العمل من خلال استدعاء حالة وضع الكشاف بأن الكشاف تم إيقاف الوضع. - إتاحة استخدام الكاميرا الخارجية (مثلاً، كاميرا USB التي تعمل بالتوصيل السريع) تشير رسالة الأشكال البيانية
تحدّد تعديلات واجهة برمجة التطبيقات إتاحة المعلومات الثابتة للكاميرا فقط عندما تكون الكاميرا
ومتصلة وجاهزة للاستخدام مع كاميرات التوصيل الحراري الخارجية. مكالمات للحصول على بيانات ثابتة
المعلومات هي مكالمات غير صالحة عندما تكون حالة الكاميرا ليست كذلك
CAMERA_DEVICE_STATUS_PRESENT
يعتمد إطار العمل فقط على تغيير حالة الجهاز لإدارة قائمة الكاميرات الخارجية المتاحة. - نصائح للتحكيم في مجال الكاميرا: إضافة دعم للإشارة الصريح
عدد أجهزة الكاميرا التي يمكن فتحها واستخدامها في الوقت نفسه. إلى
تحديد مجموعات صالحة من الأجهزة، بالإضافة إلى
resource_cost
يجب دائمًا ضبط الحقلconflicting_devices
في بنيةcamera_info
التي تعرضهاget_camera_info
الاتصال. - طريقة إعداد الوحدة. تم الاتصال من خلال خدمة الكاميرا بعد تحميل وحدة HAL للسماح بتهيئة HAL لمرة واحدة. ويتم استدعاؤها قبل استدعاء أي طرق وحدة أخرى.
2.3
يضيف هذا الإصدار من وحدة الكاميرا توافقًا مفتوحًا مع جهاز HAL للكاميرا القديمة.
يمكن لإطار العمل استخدامه لفتح جهاز الكاميرا كإصدار منخفض من HAL للجهاز.
جهاز HAL إذا كان الجهاز نفسه يتيح إمكانية تشغيل إصدارات متعددة من واجهة برمجة التطبيقات للأجهزة.
الاتصال المفتوح لوحدة الجهاز العادية
(common.methods->open
) متابعة
لفتح جهاز الكاميرا بأحدث إصدار متوافق، وهو
أيضًا بالإصدار المدرج في camera_info_t.device_version
.
2.2
يضيف إصدار وحدة الكاميرا هذا دعمًا لعلامات المورِّد من خلال الوحدة
يؤدي إلى إيقاف vendor_tag_query_ops
القديمة التي كانت فقط في السابق
ويمكن الوصول إليها بمجرد فتح الجهاز.
2.1
يضيف هذا الإصدار من وحدة الكاميرا دعمًا لمعاودة الاتصال غير المتزامنة إلى
من وحدة HAL للكاميرا، والذي يُستخدم لإبلاغ إطار العمل
حول التغييرات في حالة وحدة الكاميرا. الوحدات التي توفر
يجب أن تُبلغ طريقة set_callbacks()
عن رقم الإصدار هذا على الأقل.
2.0
وحدات الكاميرا التي تسجّل رقم الإصدار هذا تستخدم الإصدار الثاني
لواجهة HAL لوحدة الكاميرا. أجهزة الكاميرات التي يمكن فتحها من خلال هذه البيانات
قد تتوافق الوحدة مع الإصدار 1.0 أو الإصدار 2.0 من جهاز الكاميرا
واجهة HAL. يكون الحقل device_version
في Camera_info دائمًا
صالحة الحقل static_camera_characteristics
من
يكون الحقل camera_info
صالحًا إذا كان الحقل device_version
2.0 أو أعلى.
1
وتنفذ وحدات الكاميرا التي تسجّل أرقام الإصدارات هذه
واجهة HAL لوحدة الكاميرا. يمكن فتح جميع أجهزة الكاميرا من خلال هذا
لا تتوافق إلا مع الإصدار 1 من طبقة تجريد الأجهزة (HAL) للكاميرا. تشير رسالة الأشكال البيانية
device_version
وstatic_camera_characteristics
حقول camera_info
غير صالحة. فقط
يمكن لهذه الوحدة وواجهة برمجة تطبيقات android.hardware.Camera
الخاصة بها
الأجهزة.