تعرض هذه الصفحة جميع الاختبارات المتاحة لتقييم كاميرا Android وHAL. وهو مخصّص للمصنّعين الأصليين للأجهزة (OEM) وبائعي معالجات التطبيقات (AP) حتى يتمكّنوا من ضمان التنفيذ الصحيح لواجهة برمجة التطبيقات HAL للكاميرا مع الحد الأدنى من العيوب. على الرغم من أنّ هذه إضافة اختيارية إلى مجموعة اختبار التوافق (CTS) في Android، إلا أنّها تزيد بشكل كبير من تغطية اختبار الكاميرا، وستحدّد بالتأكيد الأخطاء المحتملة.
من خلال اجتياز هذه الاختبارات، تتحقّق المصنّعون الأصليون للأجهزة مما إذا كانوا قد دمجوا واجهات واجهة المستوى التجريدي لأجهزة كاميرا Android (HAL) 3 بشكلٍ صحيح. عند الامتثال لجميع العناصر الواردة في قائمة التحقّق، يمكن اعتبار عملية تنفيذ الجهاز كاملة بالنسبة إلى واجهات Android Camera HAL. سيؤدي ذلك بدوره إلى السماح للجهاز
باستخدام حزمة
android.hardware.camera2
بشكلٍ سليم والتي تستند إليها
تطبيقات الكاميرا.
مواصفات Camera HAL3
تُعدّ مواصفة Android Camera HAL3 المصدر الرسمي لجمع المعلومات حول المتطلبات التي يجب أن تستوفيها الأجهزة. وتقدّم هذه الصفحة ملخّصًا عن جميع الاختبارات التي يمكن استخدامها كقائمة تحقّق. على جهات تنفيذ Camera HAL (مثل مورّدي AP ) مراجعة مواصفات Camera HAL3 سطرًا تلو الآخر والتأكّد من امتثال أجهزتهم لها.
تم تحديد مواصفات HAL الحالية في هذه الملفات ضمن حزمة تطوير البرامج العامة لنظام Android 5.0 والإصدارات الأحدث (PDK):
- واجهة Camera 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 بالإضافة إلى إشارات إلى التعليمات المرتبطة بها أدناه:
- مجموعة اختبارات المورّدين (VTS): الاختبارات التي تختبر مباشرةً واجهة HAL للكاميرا
- مجموعة أدوات اختبار التوافق (CTS): اختبارات Android العادية والمبرمَجة لضمان توافق الجهاز لمزيد من التفاصيل، يُرجى الاطّلاع على مجموعة أدوات اختبار التوافق و نظرة عامة على اتحاد التجارة.
- مجموعة اختبارات الصور (ITS): يمكنك إجراء الاختبار يدويًا لضمان صحة الصورة. لمزيد من التفاصيل، يُرجى الاطّلاع على Camera ITS.
- اختبارات TestingCam اليدوية:
يمكنك تشغيلها من المصدر في
pdk/apps/TestingCamera/
. - اختبارات الاختبار اليدويCam2.1: يمكنك تشغيلها من المصدر في
pdk/apps/TestingCamera2/
.
في ما يلي وصف مفصّل لجميع أنواع الاختبارات هذه. يتم عرض هذه الاختبارات بالترتيب الزمني الذي من المتوقّع أن ينفذه المصنّعون الأصليون للأجهزة.
على سبيل المثال، إذا تعذّر على جهاز اجتياز الاختبارات الأصلية، من المؤكد أنّه لن يجتاز اختبارات مجموعة أدوات اختبار التوافق (CTS) اللاحقة. وإذا تعذّر على الجهاز اجتياز مجموعة اختبار التوافق (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/*
اختبارات Image Test Suite (ITS)
تركّز اختبارات "مجموعة اختبارات صور الكاميرا" (ITS) على صحة الصورة. لإجراء الاختبارات، عليك تشغيل نصوص Python البرمجية على محطة عمل مع توصيله بجهاز Android عبر USB.
يمكن العثور على البنية الأساسية لاختبارات تكنولوجيا المعلومات والاتصال (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
).
على سبيل المثال:
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 class
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 تكرارًا، سيتم تسجيل لقطة 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
من المفترض أن تجتاز جميع الاختبارات.
اختبارات Manual TestingCam
يجب تشغيل تطبيق TestingCam يدويًا مع إجراء عمليات التحقّق التالية.
يمكنك العثور على مصدر TestingCam هنا: pdk/apps/TestingCamera/
.
التركيز على مسافة غير محدودة من خلال إمالة الكاميرا
ابدأ TestingCam، وفعِّل ميزة المعاينة، وتأكَّد من ضبط وضع التركيز التلقائي على infinity (ما لا نهاية). باستخدام الزر التقاط صورة، يمكنك التقاط لقطات لموضوعات بعيدة (على بُعد 10 أمتار على الأقل) مع توجيه الكاميرا أفقيًا، وإلى أعلى (بالقرب من الوضع العمودي)، وإلى أسفل (بالقرب من الوضع العمودي). على سبيل المثال، يمكن أن تكون اللقطة التي يتم توجيهها إلى أعلى هي أوراق أو أغصان شجرة من الأسفل، ويمكن أن تكون اللقطة التي يتم توجيهها إلى أسفل هي الشارع كما يظهر من سطح أحد المباني. في جميع الحالات، يجب أن يكون الهدف البعيد واضحًا ومقروءًا. يمكنك حفظ اللقطات وعرضها في عرض المعرض لكي تتمكّن من تكبيرها وفحص الحدة بسهولة أكبر.
يُرجى العِلم أنّ اجتياز هذا الاختبار للكاميرا المزوّدة بمحرك VCM يتطلّب إما نظام تحكّم مغلقًا للتركيز التلقائي، أو نوعًا من تصحيح البرامج استنادًا إلى استخدام بيانات مقياس التسارع لتحديد اتجاه الكاميرا. يجب أيضًا أن تكون عملية المعايرة في المصنع دقيقة لضبط موضع عدسة "اللانهائي".
الاختبار اليدوي لاختبارات Cam2
يجب تشغيل تطبيق TestingCam2 يدويًا، مع تنفيذ عمليات التحقّق التالية:
يمكنك العثور على مصدر TestingCam2 هنا: pdk/apps/TestingCamera2/
.
التقاط الصور بتنسيق JPEG
ابدأ TestingCam2 واضغط على الزر JPEG. يجب أن تظهر الصورة التي تظهر على يسار صورة عدسة الكاميرا بشكل مماثل لتلك الظاهرة في عدسة الكاميرا، بما في ذلك الاتجاه نفسه.