يسرد هذا المستند جميع الاختبارات المتاحة لتقييم طبقة تجريد أجهزة كاميرا 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):
- واجهة الكاميرا HAL 3.x والمواصفات :
hardware/libhardware/include/hardware/camera3.h
،hardware/libhardware/include/hardware/camera_common.h
- مواصفات البيانات الوصفية لـ Camera HAL 3.x :
system/media/camera/docs/docs.html
- واجهة تنسيق HAL بكسل والمواصفات :
system/core/libsystem/include/system/graphics.h
أنواع اختبار الكاميرا
فيما يلي الأنواع الأساسية للاختبارات المتاحة لأحدث كاميرا Android جنبًا إلى جنب مع المراجع للتعليمات ذات الصلة أدناه:
- Vendor Test Suite (VTS) : الاختبارات التي تختبر مباشرة واجهة HAL للكاميرا
- مجموعة اختبار التوافق (CTS) : اختبارات Android القياسية والآلية لضمان توافق الجهاز - راجع مقدمة CTS ونظرة عامة على الاتحاد التجاري
- Image Test Suite (ITS) : قم بتشغيل الاختبارات يدويًا لضمان صحة الصورة - راجع ملفات
README
ذات المستوى الأعلى والخاصة بالاختبار والبرنامجtutorial.py
. py للحصول على إرشادات الإعداد - الاختبارات اليدوية TestingCam : تشغيل من المصدر في
pdk/apps/TestingCamera/
- اختبارات Manual TestingCam2.1 : تشغيل من المصدر في
pdk/apps/TestingCamera2/
يتم وصف جميع أنواع الاختبارات هذه بالتفصيل أدناه. يتم تقديم هذه الاختبارات بالترتيب الزمني الذي يُتوقع من مصنعي المعدات الأصلية تنفيذها.
على سبيل المثال ، إذا فشل الجهاز في الاختبارات الأصلية ، فسيفشل بالتأكيد في اختبارات مجموعة اختبار التوافق (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 . يجب أن تظهر الصورة التي تظهر على يمين صورة معين المنظر مثل معين المنظر ، بما في ذلك نفس الاتجاه.