تتضمّن هذه الصفحة جميع الاختبارات المتاحة لتقييم طبقة تجريد أجهزة كاميرا Android (HAL). وهو مخصّص للمصنّعين الأصليين للأجهزة (OEM) وبائعي معالجات التطبيقات (AP) حتى يتمكّنوا من ضمان التنفيذ الصحيح لواجهة برمجة التطبيقات HAL للكاميرا مع الحد الأدنى من العيوب. على الرغم من أنّ هذه إضافة اختيارية إلى مجموعة اختبار التوافق (CTS) في Android، إلا أنّها تزيد بشكل كبير من تغطية اختبار الكاميرا، وستحدّد بالتأكيد الأخطاء المحتملة.
من خلال اجتياز هذه الاختبارات، تتحقّق المصنّعون الأصليون للأجهزة مما إذا كانوا قد دمجوا واجهات واجهة المستوى التجريدي لأجهزة كاميرا Android (HAL) 3 بشكلٍ صحيح. عند الامتثال لجميع العناصر الواردة في قائمة التحقّق، يمكن اعتبار عملية تنفيذ الجهاز كاملة بالنسبة إلى واجهات Android Camera HAL. سيؤدي ذلك بدوره إلى السماح للجهاز
باستخدام حزمة
android.hardware.camera2
بشكلٍ سليم والتي تستند إليها
تطبيقات الكاميرا.
مواصفات Camera HAL3
تُعدّ مواصفات HAL3 لكاميرا Android المصدر الرسمي لاطلاعك على المعلومات حول المتطلبات التي يجب أن تستوفيها الأجهزة. وتقدّم هذه الصفحة ملخّصًا لجميع الاختبارات التي يمكن استخدامها كقائمة تحقّق. على جهات تنفيذ 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.
يمكن العثور على البنية الأساسية لاختبارات تكنولوجيا المعلومات والاتصال بالكاميرا في الدليل
cts/apps/CameraITS
.
يتوفّر كل اختبار في دليل فرعي tests/scene#
.
لمزيد من المعلومات عن كيفية إعداد الاختبارات وتنفيذها، يُرجى الاطّلاع على قسم تكنولوجيا المعلومات في الكاميرا.
للحصول على أوصاف المشهد والاختبارات، يُرجى الاطّلاع على اختبارات تكنولوجيا المعلومات للكاميرا.
اختبارات تكنولوجيا المعلومات إما تجتاز أو تفشل. يجب اجتياز جميع الاختبارات المطلوبة في كل مجلد مشهد.
يمكن أن تفشل الاختبارات غير الإلزامية ويظلّ لها اعتبار اجتياز في
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 وفعِّل المعاينة وتأكَّد من ضبط وضع التركيز التلقائي على ما لا نهاية. باستخدام الزر التقاط صورة، التقِط صورًا لأجسام بعيدة (على بُعد 10 أمتار على الأقل) مع توجيه الكاميرا أفقيًا، ولأعلى (بالقرب من الرأسية)، وإلى أسفل (بالقرب من الوضع العمودي). كمثال على اللقطة العلوية، أوراق شجر مرتفعة/فروع شجرة من أسفل، ومثال على اللقطة لأسفل هو الشارع كما هو موضّح من سطح أحد المباني. في جميع الحالات، يجب أن يكون الهدف البعيد واضحًا ومقروءًا. يمكنك حفظ اللقطات وعرضها في عرض المعرض حتى تتمكّن من تكبيرها وفحص الحدة بسهولة أكبر.
لاجتياز هذا الاختبار، تتطلّب الكاميرا المزوّدة بمشغّل VCM إما نظام التحكم في التركيز التلقائي ذي الحلقة المغلقة، أو ستحتاج إلى نوع من تصحيح SW استنادًا إلى استخدام بيانات مقياس التسارع لتحديد اتجاه الكاميرا. وعليك أيضًا إجراء معايرة موثوق بها من المصنع لموضع لا نهائي للعدسة.
الاختبار اليدوي لاختبارات Cam2
يجب تشغيل تطبيق TestingCam2 يدويًا، مع تنفيذ عمليات التحقّق التالية:
يمكنك العثور على مصدر TestingCam2 هنا: pdk/apps/TestingCamera2/
.
التقاط صورة JPEG
ابدأ TestingCam2، ثم اضغط على الزرّ JPEG. يجب أن تظهر الصورة التي تظهر على يسار صورة عدسة الكاميرا بشكل مماثل لتلك الظاهرة في عدسة الكاميرا، بما في ذلك الاتجاه نفسه.