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

تعرض هذه الصفحة جميع الاختبارات المتاحة لتقييم طبقة تجريد أجهزة الكاميرا (HAL) في Android. وهي مخصّصة لمصنّعي المعدات الأصلية (OEM) ومورّدي معالجات التطبيقات (AP) لضمان التنفيذ السليم لطبقة تجريد أجهزة الكاميرا (HAL) بأقل عدد من العيوب. على الرغم من أنّ هذه الإضافة اختيارية في مجموعة أدوات اختبار التوافق (CTS) في Android، فإنّها تزيد بشكل كبير من تغطية اختبار الكاميرا وستحدّد بالتأكيد الأخطاء المحتملة.

من خلال اجتياز هذه الاختبارات، يتحقّق مصنّعو المعدات الأصلية (OEM) مما إذا كانوا قد دمَجوا بشكلٍ سليم واجهات طبقة تجريد أجهزة الكاميرا (HAL) 3 في Android. عند الالتزام بجميع البنود في قائمة التحقّق، يمكن اعتبار تنفيذ الجهاز كاملاً فيما يتعلق بواجهات طبقة تجريد أجهزة الكاميرا (HAL) في Android. سيؤدي ذلك بدوره إلى تمكين الجهاز من دعم android.hardware.camera2 الحزمة التي تستند إليها تطبيقات الكاميرا بشكلٍ سليم.

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

تُعدّ مواصفات طبقة تجريد أجهزة الكاميرا (HAL) 3 في Android المصدر الموثوق للمعلومات حول المتطلبات التي يجب أن تستوفيها الأجهزة. وتقدّم هذه الصفحة ملخّصًا لجميع الاختبارات التي يمكن استخدامها كقائمة تحقّق. على مطوّري طبقة تجريد أجهزة الكاميرا (HAL) (مثل مورّدي معالجات التطبيقات) مراجعة مواصفات طبقة تجريد أجهزة الكاميرا (HAL) 3 سطرًا بسطر والتأكّد من أنّ أجهزتهم تتوافق معها.

يتم تحديد مواصفات طبقة تجريد الأجهزة (HAL) الحالية في هذه الملفات ضِمن حزمة تطوير منصة Android العامة (PDK) للإصدار Android 5.0 والإصدارات الأحدث:

أنواع اختبارات الكاميرا

في ما يلي الأنواع الأساسية للاختبارات المتاحة لأحدث كاميرا في Android، بالإضافة إلى مراجع للتعليمات المرتبطة أدناه:

في ما يلي وصف تفصيلي لجميع أنواع الاختبارات هذه. يتم عرض هذه الاختبارات بالترتيب الزمني الذي يُتوقَّع من مصنّعي المعدات الأصلية (OEM) تنفيذها به.

على سبيل المثال، إذا لم يجتز الجهاز الاختبارات الأصلية، فمن المؤكّد أنّه لن يجتاز الاختبارات اللاحقة في مجموعة أدوات اختبار التوافق (CTS). وإذا لم يجتز الجهاز مجموعة أدوات اختبار التوافق (CTS)، فليس من المفيد الانتقال إلى مجموعة اختبارات الصور (ITS). ننصح بمعالجة حالات الفشل في كل نوع اختبار قبل الانتقال إلى المجموعة التالية من الاختبارات.

اختبارات مجموعة اختبارات المورّد (VTS)

‫Android Vendor Test Suite (VTS) هي مجموعة اختبارات تعمل على مستوى واجهة HIDL. لمزيد من المعلومات عن استخدام مجموعة اختبارات المورّد (VTS)، يُرجى الاطّلاع على Vendor Test Suite.

اختبارات مجموعة أدوات اختبار التوافق (CTS)

تركز اختبارات مجموعة أدوات اختبار التوافق (CTS) في Android للكاميرا على توافق الجهاز. للحصول على معلومات عن إعداد بيئة اختبار، يُرجى الاطّلاع على إعداد مجموعة أدوات اختبار التوافق (CTS).

مسار البدء لاختبارات مجموعة أدوات اختبار التوافق (CTS) للكاميرا هو: platform/cts.

عند إجراء اختبارات مجموعة أدوات اختبار التوافق (CTS) للكاميرا على الأجهزة التي تتوافق مع الكاميرات الخارجية (مثل كاميرات الويب USB)، يجب توصيل جهاز عند إجراء اختبارات مجموعة أدوات اختبار التوافق (CTS)، وإلا ستفشل الاختبارات تلقائيًا. تشمل أمثلة الكاميرات الخارجية: Logitech HD Pro Webcam C920 وMicrosoft LifeCam HD-3000.

يُرجى الاطّلاع على مقدمة مجموعة أدوات اختبار التوافق (CTS) والصفحات الفرعية للحصول على تعليمات عامة حول إجراء اختبارات مجموعة أدوات اختبار التوافق (CTS).

اختبارات مجموعة أدوات اختبار التوافق (CTS) لواجهة برمجة التطبيقات android.hardware.Camera

يمكنك العثور على اختبارات الكاميرا هذه ضِمن cts/tests/tests/:

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

اختبارات مجموعة أدوات اختبار التوافق (CTS) لواجهة برمجة التطبيقات android.hardware.camera2

يمكنك العثور على اختبارات الكاميرا هذه ضِمن cts/tests/tests/:

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

اختبارات الكاميرا في أداة التحقّق من مجموعة أدوات اختبار التوافق (CTS)

يمكنك العثور على اختبارات الكاميرا هذه ضِمن: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

اختبارات مجموعة اختبارات الصور (ITS)

تركز اختبارات Camera Image Test Suite (ITS) على صحة الصور. لإجراء الاختبارات، شغِّل نصوص Python البرمجية على محطة عمل متصلة بجهاز Android عبر USB.

توجد البنية الأساسية والاختبارات في Camera ITS في الدليل cts/apps/CameraITS. ويقع كل اختبار في دليل فريم tests/scene#.

لمزيد من المعلومات عن كيفية إعداد الاختبارات وإجرائها، يُرجى الاطّلاع على Camera ITS.

للاطّلاع على أوصاف المشاهد والاختبارات، يُرجى الاطّلاع على اختبارات Camera ITS.

تكون نتيجة اختبارات مجموعة اختبارات الصور (ITS) إما "اجتياز" أو "فشل". يجب اجتياز جميع الاختبارات الإلزامية في كل مجلد مشهد. يمكن أن تفشل الاختبارات غير الإلزامية وأن تظل تُحتسب كاجتياز في CtsVerifier.

تختبر مجموعة اختبارات الصور (ITS) سيناريوهات لا يتم اختبارها في مجموعة أدوات اختبار التوافق (CTS)، وهي مكوّن مهم في خطة اختبار طبقة تجريد الأجهزة (HAL) 3.2.

اختبارات Media Framework

يجب اجتياز جميع اختبارات الوسائط ذات الصلة بالكاميرا في MediaFrameworkTest. يُرجى العِلم أنّ هذه الاختبارات تتطلّب تثبيت ملف mediaframeworktest.apk على جهاز Android. عليك تنفيذ الأمر make mediaframeworktest ثم استخدام adb لتثبيت ملف APK الناتج. في ما يلي أمثلة على الأوامر:

مسار البدء لاختبارات Media Framework ذات الصلة بالكاميرا هو: platform/frameworks/base

يمكنك العثور على رمز المصدر للاختبارات هنا: frameworks/base/media/tests/MediaFrameworkTest

لإعداد هذه الاختبارات، اتّبِع الخطوات التالية:

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

يمثّل المتغيّر name الدليل الذي يحتوي على منتج المورّد.

يمكنك العثور على جميع الاختبارات في الدليل التالي أو أدلته الفرعية:

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

يمثّل كل دليل فرعي فئة من الاختبارات:

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

إجراء اختبارات Media Framework

للاطّلاع على جميع الاختبارات المتاحة، يُرجى تنفيذ ما يلي:

adb shell pm list instrumentation

سيؤدي ذلك إلى ظهور نتائج مشابهة لما يلي:

instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)

حدِّد المكوّن واستخرِجه (بين instrumentation: و (target=com.android.mediaframeworktest) ) من كل سطر اختبار. يتكوّن المكوّن من اسم الحزمة المستهدَفة (com.android.mediaframeworktest) واسم أداة تشغيل الاختبار (MediaFrameworkTestRunner).

على سبيل المثال:

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

يمكنك بعد ذلك تمرير كل مكوّن إلى adb shell am instrument على النحو التالي:

adb shell am instrument -w component.name

حيث يساوي component.name القيمة المستخرَجة أعلاه. على سبيل المثال:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

يُرجى العِلم أنّه على الرغم من أنّ مسار الفئة هو حزمة Java + اسم الفئة، فإنّ حزمة أداة قياس حالة التطبيق ليست بالضرورة هي نفسها حزمة Java. تأكَّد من استخدام حزمة AndroidManifest.xml عند ربط اسم المكوّن، وليس حزمة Java التي توجد فيها فئة أداة تشغيل الاختبار.

لتشغيل فئة واحدة من الاختبارات، مرِّر وسيطة -e class على النحو التالي:

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

لتشغيل طريقة واحدة فقط في فئة اختبار، ألحِق علامة الجنيه (#) واسم الطريقة (في هذه الحالة، testConnectPro) باسم الفئة على النحو التالي:

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

الاختبارات الوظيفية لإعدادات الوسائط

في ما يلي مثال على إجراء اختبار وظيفي. يتحقّق هذا الاختبار من الوظائف الأساسية لمجموعات مختلفة من إعدادات الكاميرا. (مثل الفلاش والتعرّض للضوء وتوازن اللون الأبيض والمشهد وحجم الصورة والعلامة الجغرافية)

شغِّل أمر الاختبار:

adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner

اختبارات دمج الوسائط

في ما يلي مثال على إجراء اختبار دمج، في هذه الحالة mediaframeworktest/integration/CameraBinderTest.java وmediaframeworktest/CameraStressTestRunner.java:

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

إذا نجح الاختبار، سيؤدي ذلك إلى ظهور ناتج مشابه لما يلي:

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

اختبارات أداء الوسائط

سيفتح اختبار ذاكرة المعاينة هذا معاينة الكاميرا ويغلقها 200 مرة. في كل 20 تكرارًا، سيتم تسجيل لقطة من ps mediaserver وسيتم مقارنة استخدام الذاكرة المختلف بعد 200 تكرار. سيفشل الاختبار إذا كان الفرق أكبر من 150 كيلوبايت.

شغِّل أمر الاختبار:

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

يمكنك العثور على ناتج أكثر تفصيلاً في: /sdcard/mediaMemOutput.txt

اختبارات وحدة الوسائط

جميع الأوامر لتشغيل اختبارات الوحدة متشابهة. على سبيل المثال، بالنسبة إلى CameraMetadataTest.java، سيكون الأمر على النحو التالي:

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

اختبارات الإجهاد للوسائط

يهدف هذا الاختبار إلى إجهاد عملية التقاط صور الكاميرا وتسجيل الفيديو.

شغِّل أمر الاختبار:

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

يجب اجتياز جميع الاختبارات.

اختبارات TestingCam اليدوية

يجب تشغيل تطبيق TestingCam يدويًا مع إجراء عمليات التحقّق التالية. يمكنك العثور على مصدر TestingCam هنا: pdk/apps/TestingCamera/

التركيز على ما لا نهاية مع إمالة الكاميرا

ابدأ تشغيل TestingCam وفعِّل المعاينة وتأكَّد من ضبط وضع التركيز التلقائي على "ما لا نهاية". باستخدام الزر التقاط صورة ، التقط صورًا لأهداف بعيدة (على بُعد 10 أمتار على الأقل) مع توجيه الكاميرا أفقيًا ولأعلى (قريبًا من الوضع العمودي) ولأسفل (قريبًا من الوضع العمودي). يمكن أن يكون مثال على اللقطة المتّجهة لأعلى هو الأوراق/الأغصان العالية لشجرة من الأسفل، ويمكن أن يكون مثال على اللقطة المتّجهة لأسفل هو الشارع كما يُرى من سطح مبنى. في جميع الحالات، يجب أن يكون الهدف البعيد واضحًا ومحل التركيز. احفظ اللقطات واعرضها في عرض المعرض لتتمكّن من التكبير وفحص الوضوح بسهولة أكبر.

يُرجى العِلم أنّه لكي يجتاز هذا الاختبار كاميرا مزوّدة بمشغّل ملف صوتي مضغوط (VCM)، سيتطلّب ذلك إما نظام تحكّم في التركيز التلقائي ذي الحلقة المغلقة، أو سيتطلّب بعض أنواع تصحيح البرامج استنادًا إلى استخدام بيانات مقياس التسارع لتحديد اتجاه الكاميرا. ستكون هناك حاجة أيضًا إلى معايرة موثوقة في المصنع لموضع ما لا نهاية للعدسة.

اختبارات TestingCam2 اليدوية

يجب تشغيل تطبيق TestingCam2 يدويًا مع إجراء عمليات التحقّق التالية. يمكنك العثور على مصدر TestingCam2 هنا: pdk/apps/TestingCamera2/

التقاط صور JPEG

ابدأ تشغيل TestingCam2 وانقر على الزر JPEG. يجب أن تبدو الصورة التي تظهر على يسار صورة عدسة الكاميرا مماثلةً لعدسة الكاميرا، بما في ذلك الاتجاه نفسه.