تسرد هذه الصفحة جميع الاختبارات المتاحة لتقييم طبقة تجريد أجهزة كاميرا Android (HAL). وهي مخصّصة للمصنّعين الأصليين للأجهزة (OEM) ومورّدي معالجات التطبيقات (AP) لضمان التنفيذ السليم لطبقة تجريد الأجهزة (HAL) الخاصة بالكاميرا بأقل قدر من العيوب. على الرغم من أنّ هذه الإضافة اختيارية في مجموعة اختبار التوافق (CTS) لنظام Android، فإنّها تزيد بشكل كبير من تغطية اختبار الكاميرا، ومن المؤكّد أنّها ستساعد في تحديد الأخطاء المحتملة.
ومن خلال اجتياز هذه الاختبارات، يتأكّد مصنّعو المعدات الأصلية من أنّهم قد دمَجوا واجهات الإصدار 3 من طبقة تجريد أجهزة الكاميرا (HAL) في Android بشكلٍ سليم. عند استيفاء جميع العناصر الواردة في قائمة التحقّق، يمكن اعتبار تنفيذ الجهاز كاملاً فيما يتعلق بواجهات Android Camera HAL. سيؤدي ذلك بدوره إلى تمكين الجهاز من توفير الدعم المناسب لحزمة
android.hardware.camera2
التي تستند إليها تطبيقات الكاميرا.
مواصفات Camera HAL3
مواصفات Android Camera HAL3 هي المصدر الموثوق للمعلومات حول المتطلبات التي يجب أن تستوفيها الأجهزة، وتقدّم هذه الصفحة ملخّصًا لجميع الاختبارات التي يمكن استخدامها كقائمة مرجعية. على مطوّري طبقة تجريد الأجهزة (HAL) للكاميرا (مثل مورّدي معالجات التطبيقات) مراجعة مواصفات الإصدار 3 من طبقة تجريد الأجهزة (HAL) للكاميرا سطرًا بسطر والتأكّد من أنّ أجهزتهم تتوافق معها.
يتم تحديد مواصفات طبقة تجريد الأجهزة الحالية في هذه الملفات ضمن حزمة تطوير منصة Android العامة (PDK) لنظام Android 5.0 والإصدارات الأحدث:
- مواصفات وواجهة Camera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- مواصفات البيانات الوصفية لإصدار 3.x من طبقة تجريد الأجهزة (HAL) الخاصة بالكاميرا:
system/media/camera/docs/docs.html
- واجهة وتحديد تنسيق البكسل في طبقة تجريد الأجهزة (HAL):
system/core/libsystem/include/system/graphics.h
أنواع اختبارات الكاميرا
في ما يلي الأنواع الأساسية من الاختبارات المتاحة لأحدث إصدار من تطبيق "كاميرا Android"، بالإضافة إلى مراجع للتعليمات ذات الصلة أدناه:
- مجموعة اختبارات المورّد (VTS): تجري اختبارات مباشرة لواجهة HAL الخاصة بالكاميرا.
- مجموعة أدوات اختبار التوافق (CTS): هي اختبارات Android تلقائية وموحّدة لضمان توافق الأجهزة. لمزيد من التفاصيل، يُرجى الاطّلاع على مجموعة أدوات اختبار التوافق ونظرة عامة على Trade Federation.
- حزمة اختبار الصور (ITS): يمكنك إجراء الاختبارات يدويًا للتأكّد من صحة الصور. لمزيد من التفاصيل، يُرجى الاطّلاع على مجموعة أدوات اختبار توافق الكاميرا (ITS).
- اختبارات Manual TestingCam:
يتم تنفيذها من المصدر في
pdk/apps/TestingCamera/
- اختبارات Manual TestingCam2.1: يتم تنفيذها من المصدر في
pdk/apps/TestingCamera2/
في ما يلي وصف تفصيلي لجميع أنواع الاختبارات هذه. يتم عرض هذه الاختبارات بالترتيب الزمني المتوقّع أن ينفّذها مصنّعو الأجهزة الأصلية.
على سبيل المثال، إذا لم يجتَز الجهاز الاختبارات الأصلية، لن يجتَز بالتأكيد اختبارات "مجموعة أدوات اختبار التوافق" (CTS) اللاحقة. وفي حال عدم اجتياز الجهاز لمجموعة اختبار التوافق، لن يكون من المفيد الانتقال إلى "مجموعة اختبار الصور" (ITS). ننصحك بمعالجة حالات التعذّر في كل نوع اختبار قبل الانتقال إلى المجموعة التالية من الاختبارات.
اختبارات "مجموعة اختبارات المورّدين" (VTS)
مجموعة اختبارات المورّدين في Android (VTS) هي مجموعة اختبارات تعمل على مستوى واجهة HIDL. لمزيد من المعلومات حول استخدام VTS، يُرجى الاطّلاع على مجموعة أدوات اختبار المورّد.
اختبارات "مجموعة أدوات اختبار التوافق" (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.
للاطّلاع على أوصاف المشاهد والاختبارات، يُرجى الانتقال إلى اختبارات ITS للكاميرا.
تكون نتائج اختبارات ITS إما ناجحة أو غير ناجحة. يجب اجتياز جميع الاختبارات الإلزامية في كل مجلد مشهد.
يمكن أن تفشل الاختبارات غير الإلزامية وأن يتم احتسابها كاجتياز في CtsVerifier
.
تختبر مجموعة اختبارات ITS سيناريوهات لا يتم اختبارها في مجموعة اختبارات التوافق (CTS)، وهي عنصر مهم في خطة اختبار HAL 3.2.
اختبارات 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
).
على سبيل المثال:
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
اختبارات الوظائف لإعدادات الوسائط
في ما يلي مثال على تشغيل اختبار وظيفي. يتحقّق هذا الاختبار من الوظائف الأساسية لمجموعات مختلفة من إعدادات الكاميرا. (مثل الفلاش والتعرّض للضوء وتوازن اللون الأبيض والمشهد وحجم الصورة والعلامة الجغرافية)
نفِّذ أمر الاختبار:
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 تكرارًا، سيتم تسجيل لقطة من عملية mediaserver الخاصة بـ ps، وسيتم مقارنة اختلاف استخدام الذاكرة بعد 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 هذا الاختبار، يجب أن تتضمّن نظام تحكّم في التركيز التلقائي بحلقة مغلقة، أو أن تتضمّن نوعًا من تصحيح البرامج استنادًا إلى استخدام بيانات مقياس التسارع لتحديد اتجاه الكاميرا. يجب أيضًا إجراء معايرة موثوقة للإعدادات الأصلية لموضع اللانهاية للعدسة.
اختبارات Manual TestingCam2
يجب تشغيل تطبيق TestingCam2 يدويًا، مع إجراء عمليات التحقّق التالية. يمكنك الاطّلاع على مصدر TestingCam2 هنا: pdk/apps/TestingCamera2/
التقاط صور بتنسيق JPEG
ابدأ تطبيق TestingCam2، ثم اضغط على الزر JPEG. يجب أن تكون الصورة التي تظهر على يمين صورة عدسة الكاميرا مماثلةً لصورة عدسة الكاميرا، بما في ذلك الاتجاه نفسه.