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