قائمة مراجعة اختبار Camera 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 ، فلن يكون هناك فائدة تذكر في المتابعة إلى Image Test Suite (ITS). نوصي بمعالجة حالات الفشل في كل نوع اختبار قبل المتابعة إلى المجموعة التالية من الاختبارات.

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

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

اختبارات مجموعة اختبار التوافق (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/*

اختبارات Image Test Suite (ITS)

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

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

لإعداد بيئة الاختبار ، قم بتشغيل:
extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
cd android-cts-verifier
adb install -r -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

لمزيد من المعلومات حول كيفية إعداد الاختبارات وتشغيلها ، راجع ملف CameraITS PDF في cts/apps/CameraITS . راجع tutorial.py في دليل tests الفرعي للحصول على دليل حول كيفية استخدام البرامج النصية.

تتطلب اختبارات ITS بيئة Linux. للحصول على تفاصيل حول إصدارات Python المحددة المطلوبة لتشغيل اختبارات ITS ، راجع ملف CameraITS PDF للإصدار أو أيضًا ملاحظات إصدار Android 12 لنظام Android 12.

تم وصف الإعداد الموصى به للمشاهد الثابتة في Camera ITS-in-a-box . الإعداد الموصى به لمشهد sensor_fusion موصوف في دليل البدء السريع لـ Sensor Fusion Box .

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

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

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

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

اختبارات Media Framework

اجتياز جميع اختبارات الوسائط المتعلقة بالكاميرا في 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/

تشغيل اختبارات 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 ) واسم عداء الاختبار ( 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

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

فيما يلي مثال على تشغيل اختبار وظيفي. يتحقق هذا الاختبار من الوظائف الأساسية للمجموعات المختلفة لإعدادات الكاميرا. (على سبيل المثال ، Flash ، التعريض ، 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 هنا: pdk/apps/TestingCamera/

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

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

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

الاختبار اليدوي اختبارات Cam2

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

التقاط JPEG

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