دعم إصدار الكاميرا

تعرض هذه الصفحة تفاصيل الاختلافات في 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 لتمرير الموارد الاحتياطية بين لن يكون هناك حاجة إلى تحديث أي مورد.

    كاميرا ووسائط Android 7.0
حزمة في API1 على HAL3

    الشكل 1. كاميرا ووسائط Android 7.0 حزمة في API1 على HAL3

  • HAL1، الذي يتيح تمرير البيانات الوصفية في الموارد الاحتياطية للفيديو، يجب على البائعين يُرجى تعديل HAL لاستخدام kMetadataBufferTypeNativeHandleSource. (لم يعد تطبيق kMetadataBufferTypeCameraSource متاحًا في نظام التشغيل Android. 7.0)

    كاميرا ووسائط Android 7.0
حزمة في API1 على HAL1

    الشكل 2. كاميرا ووسائط Android 7.0 حزمة في API1 على HAL1

تغييرات بنية واجهة برمجة التطبيقات 2 API

بالنسبة إلى واجهة برمجة التطبيقات (API2) على HAL1 أو HAL3، تمرر Buffer playlist المخازن المؤقتة بحيث تستمر هذه المسارات إلى العمل. بنية Android 7.0 لواجهة برمجة التطبيقات 2 API على:

  • لا يتأثر HAL1 بنقل خدمة الكاميرا، ولا يتأثر أي مورّد تحديث مطلوبة.
  • يتأثّر HAL3، ولكن لم يتم إجراء أي تحديث من قِبل المورّد. ضروري:

    كاميرا Android 7.0
حزمة الوسائط في API2 على HAL3

    الشكل 3. كاميرا ووسائط Android 7.0 تكديس في API2 على 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 التحديثات التالية.

واجهة برمجة التطبيقات للكاميرا

طبقة تجريد الأجهزة (HAL) للكاميرا

يتم تحديث إصدارات HAL التالية للكاميرا في Android 10-

3.5

ICameraDevice

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

يضيف إصدار وحدة الكاميرا هذا التغييرات التالية على واجهة برمجة التطبيقات:

  1. التوافق مع "وضع الكشاف" ويمكن لإطار العمل تفعيل وضع الكشاف لأي جهاز كاميرا يحتوي على وحدة فلاش بدون فتح كاميرا. تشير رسالة الأشكال البيانية يكون لجهاز الكاميرا أولوية أعلى في الوصول إلى وحدة الفلاش مقارنةً بالكاميرا الوحدة يؤدي فتح جهاز الكاميرا إلى إطفاء الكشاف إذا كان مفعلاً من خلال واجهة الوحدة. عندما يكون هناك أي تعارضات في الموارد، مثل يتم استدعاء open() لفتح جهاز كاميرا، وهو وحدة HAL للكاميرا يجب إبلاغ إطار العمل من خلال استدعاء حالة وضع الكشاف بأن الكشاف تم إيقاف الوضع.
  2. إتاحة استخدام الكاميرا الخارجية (مثلاً، كاميرا USB التي تعمل بالتوصيل السريع) تشير رسالة الأشكال البيانية تحدّد تعديلات واجهة برمجة التطبيقات إتاحة المعلومات الثابتة للكاميرا فقط عندما تكون الكاميرا ومتصلة وجاهزة للاستخدام مع كاميرات التوصيل الحراري الخارجية. مكالمات للحصول على بيانات ثابتة المعلومات هي مكالمات غير صالحة عندما تكون حالة الكاميرا ليست كذلك CAMERA_DEVICE_STATUS_PRESENT يعتمد إطار العمل فقط على تغيير حالة الجهاز لإدارة قائمة الكاميرات الخارجية المتاحة.
  3. نصائح للتحكيم في مجال الكاميرا: إضافة دعم للإشارة الصريح عدد أجهزة الكاميرا التي يمكن فتحها واستخدامها في الوقت نفسه. إلى تحديد مجموعات صالحة من الأجهزة، بالإضافة إلى resource_cost يجب دائمًا ضبط الحقل conflicting_devices في بنية camera_info التي تعرضها get_camera_info الاتصال.
  4. طريقة إعداد الوحدة. تم الاتصال من خلال خدمة الكاميرا بعد تحميل وحدة 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 الخاصة بها الأجهزة.