قائمة التحقق من اختبار HAL للكاميرا

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

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

مواصفات الكاميرا HAL3

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

يتم تعريف مواصفات HAL الحالية في هذه الملفات ضمن Android 5.0 والإصدارات الأحدث من Android Platform Development Kit (PDK):

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

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

يتم وصف جميع أنواع الاختبارات هذه بالتفصيل أدناه. يتم عرض هذه الاختبارات بالترتيب الزمني الذي من المتوقع أن يقوم مصنعو المعدات الأصلية بتنفيذها به.

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

اختبارات مجموعة اختبار البائع (VTS).

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

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

تركز اختبارات مجموعة اختبار توافق Android (CTS) على توافق الجهاز. للحصول على معلومات حول إعداد بيئة اختبار، راجع إعداد 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 Verifier

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

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

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

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

لمزيد من المعلومات حول كيفية إعداد الاختبارات وتشغيلها، راجع Camera ITS .

للحصول على أوصاف المشهد والاختبار، راجع اختبارات ITS للكاميرا .

اختبارات ITS إما تنجح أو تفشل. يجب أن تمر جميع الاختبارات الإلزامية في كل مجلد مشهد. يمكن أن تفشل الاختبارات غير الإلزامية ولا تزال تُعتبر بمثابة تمريرة في CtsVerifier .

تختبر اختبارات ITS سيناريوهات الاختبار التي لم يتم اختبارها في CTS وهي مكون مهم في خطة اختبار HAL 3.2.

اختبارات الإطار الإعلامي

اجتياز جميع اختبارات الوسائط المتعلقة بالكاميرا في MediaFrameworkTest. يرجى ملاحظة أن هذه الاختبارات تتطلب تثبيت mediaframeworktest.apk على جهاز Android. ستحتاج إلى make mediaframeworktest ثم استخدام adb لتثبيت ملف .apk الناتج. يتم تضمين أوامر المثال أدناه.

مسار البداية لاختبارات إطار عمل الوسائط المتعلقة بالكاميرا هو: 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/

قم بتشغيل اختبارات إطار الوسائط

للاطلاع على كافة الاختبارات المتاحة::

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 ) واسم عداء الاختبار ( MediaFramework TestRunner MediaFramework TestRunner ).

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

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 حجة، مثل ذلك:

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

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

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

قم بتشغيل أمر الاختبار:

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 من اجتياز هذا الاختبار، فإنها ستتطلب إما نظام تحكم في التركيز البؤري التلقائي ذو حلقة مغلقة، أو ستحتاج إلى نوع من تصحيح SW استنادًا إلى استخدام بيانات مقياس التسارع لتحديد اتجاه الكاميرا. ستكون هناك حاجة أيضًا إلى معايرة المصنع الموثوقة لموضع العدسة اللانهائي.

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

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

التقاط JPEG

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