خذ استبيان قابلية الاستخدام لدينا لتحسين هذا الموقع.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

يسرد هذا المستند جميع الاختبارات المتاحة لتقييم طبقة تجريد أجهزة كاميرا 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):

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

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

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

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

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

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

اختبارات مجموعة اختبار التوافق (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/*

اختبارات Image Test Suite (ITS)

تركز اختبارات Camera Image Test Suite (ITS) على صحة الصورة. لإجراء الاختبارات ، قم بتشغيل نصوص Python النصية على محطة عمل مع توصيل جهاز Android عبر USB.

توجد البنية الأساسية والاختبارات الخاصة بـ Camera 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 مع Sensor Fusion Box مع نظام التشغيل Linux.

الإعداد الموصى به للمشاهد 0-4 موصوف في Camera ITS-in-a-box . الإعداد الموصى به لمشهد sensor_fusion موصوف في دليل البدء السريع لـ Sensor Fusion Box .

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

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

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

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

تمثل هذه المشاهد جزءًا كبيرًا من اختبار ITS ويتم تضمينها كملفات PDF في مجلد scene . لأتمتة هذه الاختبارات ، استخدم نظام Camera ITS-in-a-box .

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

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

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

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

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

اختبارات 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 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

الاختبارات الوظيفية لإعدادات الوسائط

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

قم بتشغيل أمر الاختبار:

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

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

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

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

التقاط JPEG

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