تست دوربین HAL

این صفحه تمام تست‌های موجود برای ارزیابی لایه انتزاعی سخت‌افزار دوربین اندروید (HAL) را فهرست می‌کند. این تست برای تولیدکنندگان تجهیزات اصلی (OEMها) و فروشندگان پردازنده‌های کاربردی (AP) در نظر گرفته شده است تا بتوانند از پیاده‌سازی صحیح HAL دوربین با حداقل نقص اطمینان حاصل کنند. اگرچه این یک افزونه داوطلبانه به مجموعه تست سازگاری اندروید (CTS) است، اما پوشش تست دوربین را تا حد زیادی افزایش می‌دهد و مطمئناً اشکالات احتمالی را شناسایی خواهد کرد.

با گذراندن این آزمایش‌ها، تولیدکنندگان اصلی تجهیزات (OEM) تأیید می‌کنند که آیا رابط‌های لایه انتزاعی سخت‌افزار دوربین اندروید (HAL) 3 را به درستی ادغام کرده‌اند یا خیر. در صورت مطابقت با تمام موارد موجود در چک لیست، پیاده‌سازی دستگاه ممکن است از نظر رابط‌های HAL دوربین اندروید کامل در نظر گرفته شود. این به نوبه خود دستگاه را قادر می‌سازد تا به درستی از بسته android.hardware.camera2 که برنامه‌های دوربین بر اساس آن ساخته می‌شوند، پشتیبانی کند.

مشخصات دوربین HAL3

مشخصات دوربین اندروید HAL3 منبع معتبری از اطلاعات در مورد دستگاه‌هایی است که باید الزامات را برآورده کنند؛ این صفحه خلاصه‌ای از تمام آزمایش‌هایی را ارائه می‌دهد که می‌توانند به عنوان یک چک لیست استفاده شوند. مجریان HAL دوربین (به عنوان مثال فروشندگان AP) باید مشخصات دوربین HAL3 را خط به خط بررسی کرده و از مطابقت دستگاه‌های خود با آن اطمینان حاصل کنند.

مشخصات فعلی HAL در این فایل‌ها در کیت توسعه پلتفرم اندروید (PDK) عمومی اندروید ۵.۰ و نسخه‌های بعدی آن تعریف شده است:

انواع تست دوربین

در اینجا انواع اصلی تست‌های موجود برای جدیدترین دوربین اندروید به همراه دستورالعمل‌های مرتبط با آنها آورده شده است:

همه این انواع آزمایش‌ها به تفصیل در زیر شرح داده شده‌اند. این آزمایش‌ها به ترتیب زمانی که انتظار می‌رود تولیدکنندگان تجهیزات اصلی (OEM) آنها را اجرا کنند، ارائه شده‌اند.

برای مثال، اگر دستگاهی در تست‌های بومی شکست بخورد، مطمئناً در تست‌های بعدی مجموعه تست سازگاری (CTS) نیز شکست خواهد خورد. و اگر دستگاهی در CTS شکست بخورد، رفتن به مجموعه تست تصویر (ITS) فایده چندانی ندارد. توصیه می‌کنیم قبل از رفتن به مجموعه تست‌های بعدی، به بررسی شکست‌ها در هر نوع تست بپردازید.

تست‌های مجموعه تست فروشنده (VTS)

مجموعه تست فروشندگان اندروید (VTS) یک مجموعه تست است که در سطح رابط HIDL کار می‌کند. برای اطلاعات بیشتر در مورد استفاده از VTS، به مجموعه تست فروشندگان مراجعه کنید.

تست‌های مجموعه تست سازگاری (CTS)

مجموعه تست سازگاری دوربین اندروید (CTS) بر سازگاری دستگاه تمرکز دارد. برای اطلاعات بیشتر در مورد راه‌اندازی یک محیط آزمایش، به بخش راه‌اندازی CTS مراجعه کنید.

مسیر شروع برای تست‌های CTS دوربین: platform/cts است.

هنگام اجرای CTS دوربین برای دستگاه‌هایی که از دوربین‌های خارجی (مانند وب‌کم‌های USB) پشتیبانی می‌کنند، باید دستگاهی را هنگام اجرای CTS به سیستم متصل کنید، در غیر این صورت آزمایش‌ها به طور خودکار با شکست مواجه می‌شوند. نمونه‌هایی از دوربین‌های خارجی عبارتند از: Logitech HD Pro Webcam C920 و Microsoft 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 برای API مربوط به 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/*

تست‌های مجموعه تست تصویر (ITS)

تست‌های مجموعه تست تصویر دوربین (ITS) بر صحت تصویر تمرکز دارند. برای انجام تست‌ها، اسکریپت‌های پایتون را روی یک ایستگاه کاری با دستگاه اندروید متصل از طریق USB اجرا کنید.

زیرساخت و تست‌های Camera ITS در دایرکتوری cts/apps/CameraITS قرار دارند. هر تست در زیردایرکتوری tests/scene # قرار دارد.

برای اطلاعات بیشتر در مورد نحوه تنظیم و اجرای آزمایش‌ها، به Camera ITS مراجعه کنید.

برای توضیحات صحنه و آزمایش، به آزمایش‌های ITS دوربین مراجعه کنید.

تست‌های ITS یا قبول می‌شوند یا رد می‌شوند. تمام تست‌های اجباری در هر پوشه‌ی صحنه باید قبول شوند. تست‌هایی که اجباری نیستند می‌توانند شکست بخورند و همچنان در CtsVerifier به عنوان قبول شده محسوب شوند.

آزمایش‌های ITS سناریوهایی را آزمایش می‌کنند که در CTS آزمایش نشده‌اند و جزء مهمی از طرح آزمایش HAL 3.2 هستند.

تست‌های چارچوب رسانه

تمام تست‌های رسانه‌ای مربوط به دوربین را در MediaFrameworkTest با موفقیت پشت سر بگذارید. لطفاً توجه داشته باشید که این تست‌ها نیاز به نصب mediaframeworktest.apk روی دستگاه اندروید دارند. شما باید 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

لطفاً توجه داشته باشید، اگرچه مسیر کلاس، پکیج جاوا + نام کلاس است، پکیج instrumentation لزوماً همان پکیج جاوا نیست. هنگام الحاق نام کامپوننت، مطمئن شوید که از پکیج AndroidManifest.xml استفاده می‌کنید، نه از پکیج جاوایی که کلاس اجراکننده‌ی تست در آن قرار دارد.

برای اجرای یک کلاس از تست‌ها، از کلاس -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

تست‌های عملکردی تنظیمات رسانه

در اینجا نمونه‌ای از یک تست عملکردی ارائه شده است. این تست، عملکرد اساسی ترکیبات مختلف تنظیمات دوربین (یعنی فلاش، نوردهی، 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)

-----

آزمون‌های عملکرد رسانه

این تست حافظه پیش‌نمایش، پیش‌نمایش دوربین را برای ۲۰۰ بار باز و منتشر می‌کند. در هر ۲۰ تکرار، تصویر لحظه‌ای از سرور رسانه‌ای ps ضبط می‌شود و میزان استفاده از حافظه را پس از ۲۰۰ تکرار مقایسه می‌کند. اگر اختلاف بیشتر از ۱۵۰ کیلومابایت باشد، تست با شکست مواجه می‌شود.

دستور تست را اجرا کنید:

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 باید به صورت دستی اجرا شود و بررسی‌های زیر انجام شود. منبع TestingCam اینجاست: pdk/apps/TestingCamera/

فوکوس بی‌نهایت با قابلیت کج کردن دوربین

TestingCam را اجرا کنید، پیش‌نمایش را روشن کنید و مطمئن شوید که حالت فوکوس خودکار روی بی‌نهایت تنظیم شده است. با استفاده از دکمه‌ی «عکس بگیرید» ، از سوژه‌های دور (حداقل ۱۰ متر دورتر) با دوربینی که به صورت افقی، رو به بالا (نزدیک به عمودی) و رو به پایین (نزدیک به عمودی) قرار دارد، عکس بگیرید. نمونه‌ای از عکس رو به بالا می‌تواند برگ‌ها/شاخه‌های بالای درخت از زیر باشد و نمونه‌ای از عکس رو به پایین می‌تواند خیابان از پشت بام یک ساختمان باشد. در همه موارد، سوژه دور باید واضح و در فوکوس باشد. عکس‌ها را ذخیره و در نمای گالری مشاهده کنید تا بتوانید بزرگنمایی کرده و وضوح را راحت‌تر بررسی کنید.

توجه داشته باشید که برای اینکه دوربینی با محرک VCM بتواند از این آزمون سربلند بیرون بیاید، یا به یک سیستم کنترل فوکوس خودکار حلقه بسته نیاز دارد، یا به نوعی اصلاح SW بر اساس استفاده از داده‌های شتاب‌سنج برای تعیین جهت دوربین نیاز دارد. کالیبراسیون قابل اعتماد کارخانه‌ای موقعیت بی‌نهایت لنز نیز مورد نیاز خواهد بود.

تست‌های دستی TestingCam2

برنامه TestingCam2 باید به صورت دستی اجرا شود و بررسی‌های زیر انجام شود. منبع TestingCam2 اینجاست: pdk/apps/TestingCamera2/

ضبط JPEG

TestingCam2 را اجرا کنید و دکمه JPEG را فشار دهید. تصویری که در سمت راست تصویر منظره‌یاب ظاهر می‌شود باید مشابه منظره‌یاب باشد، از جمله اینکه جهت‌گیری یکسانی داشته باشد.