قائمة مراجعة اختبار Camera HAL

يسرد هذا المستند جميع الاختبارات المتاحة لتقييم طبقة تجريد أجهزة كاميرا Android (HAL). إنه مخصص لمصنعي المعدات الأصلية (OEMs) وبائعي معالجات التطبيقات (AP) حتى يتمكنوا من ضمان التنفيذ السليم للكاميرا HAL مع الحد الأدنى من العيوب. على الرغم من أن هذه إضافة طوعية لمجموعة اختبار توافق Android (CTS) ، إلا أنها تزيد بشكل كبير من تغطية اختبار الكاميرا وستحدد بالتأكيد الأخطاء المحتملة.

من خلال اجتياز هذه الاختبارات ، يتحقق مصنعو المعدات الأصلية من صحة ما إذا كانوا قد قاموا بدمج واجهات طبقة تجريد أجهزة كاميرا Android (HAL) 3 بشكل صحيح. عندما تتفق مع جميع البنود في قائمة، يمكن النظر في تنفيذ جهاز كامل فيما يتعلق اجهات كاميرا الروبوت HAL. وهذا بدوره يتيح جهاز لتوفير الدعم اللازم ل android.hardware.camera2 حزمة الكاميرا التطبيقات بناء عليها.

مواصفات الكاميرا HAL3

و كاميرا الروبوت HAL3 مواصفات هي مصدر موثوق للمعلومات حول ما يجب أن ترضي الأجهزة. توفر هذه الصفحة ملخصًا لجميع الاختبارات التي يمكن استخدامها كقائمة تحقق. يجب أن تخضع منفذي Camera HAL (مثل موردي AP) لمواصفات Camera HAL3 سطرًا سطرًا وأن تتأكد من توافق أجهزتهم معها.

يتم تحديد مواصفات HAL الحالية في هذه الملفات داخل Android 5.0 والإصدارات الأحدث من Android Platform Development Kit (PDK):

أنواع اختبار الكاميرا

فيما يلي الأنواع الأساسية للاختبارات المتوفرة لأحدث كاميرا Android جنبًا إلى جنب مع المراجع للتعليمات ذات الصلة أدناه:

يتم وصف جميع أنواع الاختبارات هذه بالتفصيل أدناه. يتم تقديم هذه الاختبارات بالترتيب الزمني الذي يُتوقع من مصنعي المعدات الأصلية تنفيذها.

على سبيل المثال ، إذا فشل الجهاز في الاختبارات الأصلية ، فسيفشل بالتأكيد في اختبارات مجموعة اختبار التوافق (CTS) اللاحقة. وإذا فشل الجهاز في CTS ، فلن يكون هناك فائدة تذكر في المتابعة إلى Image Test Suite (ITS). نوصي بمعالجة حالات الفشل في كل نوع اختبار قبل المتابعة إلى المجموعة التالية من الاختبارات.

اختبارات مجموعة اختبار البائعين (VTS)

مجموعة اختبار البائعين من Android (VTS) عبارة عن مجموعة اختبار تعمل على مستوى واجهة HIDL. لمزيد من المعلومات حول استخدام VTS، انظر البائع اختبار جناح .

اختبارات مجموعة اختبار التوافق (CTS)

تركز اختبارات مجموعة اختبار توافق الكاميرا مع Android (CTS) على توافق الجهاز. للحصول على معلومات حول إعداد بيئة اختبار، انظر إعداد CTS .

الطريق بدءا للكاميرا اختبارات CTS هو: platform/cts .

عند تشغيل كاميرا CTS للأجهزة التي تدعم الكاميرات الخارجية (مثل كاميرات الويب USB) ، يجب أن يكون لديك جهاز متصل عند تشغيل CTS وإلا ستفشل الاختبارات تلقائيًا. أمثلة من الكاميرات الخارجية ما يلي: لوجيتك HD برو كاميرا C920 و مايكروسوفت lifecam HD-3000 .

انظر مقدمة CTS والصفحات الفرعية للحصول على التعليمات العامة للتشغيل CTS.

CTS اختبارات ل android.hardware.Camera API

العثور على هذه الاختبارات كاميرا تحت 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 API

العثور على هذه الاختبارات كاميرا تحت 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.

الكاميرا تقع 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 CtsVerifier.apk
cd CameraITS
source build/envsetup.sh

لمزيد من المعلومات حول كيفية إعداد وتشغيل الاختبارات، راجع CameraITS ملف PDF في cts/apps/CameraITS . انظر tutorial.py في tests الفرعي لدليل على كيفية استخدام البرامج النصية.

يمكن تشغيل اختبارات ITS الثابتة (المشاهد 0-5) مع أي نظام تشغيل مع بيئة Python 2.7 المطلوبة. ومع ذلك، فإن sensor_fusion اختبار مع فيوجن صندوق الاستشعار يجب تشغيل مع نظام التشغيل لينكس.

يوصف الإعداد الموصى بها للمشاهد 0-4 في كاميرا ITS-في-مربع . يوصف الإعداد الموصى به للمشهد sensor_fusion في الاستشعار فيوجن صندوق دليل البدء السريع .

لتشغيل أنظمة النقل الذكية يدويًا ، قم بإعداد بيئة مادية بسيطة مع هدف محدد قابل لإعادة الاستخدام مثل جدار أبيض وبطاقة رمادية ومصباح مكتبي. قم بتركيب جهاز Android على حامل ثلاثي القوائم وقم بتشغيل البرامج النصية لاختبار وظائف الكاميرا. تنجح معظم الاختبارات أو تفشل ولكن بعضها يقدم مقاييس.

تختبر هذه البرامج النصية السيناريوهات التي لم يتم اختبارها في CTS وهي مكون مهم في خطة اختبار HAL 3.2.

اختبارات ITS إما أن تنجح أو تفشل. يجب أن تمر جميع الاختبارات الإلزامية في كل مجلد مشهد. الاختبارات التي لم يتم تكليف يمكن أن تفشل وما زالت تعول كما تمريرة في CtsVerifier .

مشهد من 0 إلى مسرح 4 اختبارات

وتمثل هذه المشاهد جزء كبير من التجارب ITS وتدرج على شكل ملفات PDF في scene المجلد. لأتمتة هذه الاختبارات، استخدم كاميرا ITS في واحد في مربع النظام.

  • المشهد 0: لا يتطلب أي إعداد.
  • المشهد 1: يتطلب بطاقة رمادية.
  • المشهد 2: يتطلب مشهد الوجه.
  • المشهد 3: مخطط ISO12233.
  • المشهد 4: مشهد مخصص بدائرة داخل مربع.

اختبارات المشهد الخامس

تتطلب اختبارات المشهد الخامس وضع ناشر أعلى الكاميرا.

اختبارات اندماج أجهزة الاستشعار

تتطلب اختبارات اندماج المستشعر حركة محددة للكاميرا لاختبار اختلاف الطابع الزمني بين الكاميرا والجيروسكوب لتطبيقات الواقع المعزز والواقع الافتراضي. يتم تخطي هذا الاختبار إذا تم تضمين أي جيروسكوب أو إذا كان REALTIME لم يتم تمكين المعلمة. و sensor_fusion الاختبار يمكن أن يكون آليا مع فيوجن صندوق الاستشعار .

اختبارات Media Framework

اجتياز جميع اختبارات الوسائط المتعلقة بالكاميرا في MediaFrameworkTest. يرجى ملاحظة أن هذه الاختبارات تتطلب تثبيت mediaframeworktest.apk على جهاز Android. سوف تحتاج إلى make mediaframeworktest ثم استخدم بنك التنمية الآسيوي لتثبيت 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 ، وقم بتشغيل المعاينة ، وتأكد من ضبط وضع التركيز التلقائي على ما لا نهاية. باستخدام زر الصورة لقطة، لقطات القبض على مواضيع بعيدة أشار (على الأقل 10M بعيدا) مع الكاميرا أفقيا، صعودا (بالقرب من رأسي)، وأسفل (بالقرب من رأسي)؛ يمكن أن يكون أحد الأمثلة على اللقطة لأعلى عبارة عن أوراق / أغصان شجرة عالية من أسفل ويمكن أن يكون مثال على اللقطة لأسفل هو الشارع كما يظهر من سطح المبنى. في جميع الحالات ، يجب أن يكون الموضوع البعيد حادًا ومركّزًا. احفظ اللقطات واعرضها في عرض المعرض بحيث يمكنك التكبير وفحص الحدة بسهولة أكبر.

لاحظ أنه لكي تتمكن الكاميرا المزودة بمشغل VCM من اجتياز هذا الاختبار ، فإنها تتطلب إما نظام تحكم AF مغلق الحلقة ، أو ستحتاج إلى نوع من تصحيح SW استنادًا إلى استخدام بيانات مقياس التسارع لتحديد اتجاه الكاميرا. ستكون هناك حاجة أيضًا إلى معايرة المصنع الموثوقة لموضع اللانهاية للعدسة.

الاختبار اليدوي اختبارات Cam2

يجب تشغيل تطبيق TestingCam2 يدويًا ، مع إجراء الفحوصات التالية. مصدر للTestingCam2 هنا هو: pdk/apps/TestingCamera2/

التقاط JPEG

بداية TestingCam2، واضغط على زر JPEG. يجب أن تظهر الصورة التي تظهر على يمين صورة معين المنظر مثل معين المنظر ، بما في ذلك نفس الاتجاه.