چک لیست تست دوربین HAL

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

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

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

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

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

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

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

تمام این انواع تست در زیر به تفصیل توضیح داده شده است. این تست ها به ترتیب زمانی ارائه می شوند که انتظار می رود OEM ها آنها را اجرا کنند.

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

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

Android Vendor Test Suite (VTS) یک مجموعه آزمایشی است که در سطح رابط HIDL کار می کند. برای اطلاعات بیشتر در مورد استفاده از VTS، به مجموعه تست فروشنده مراجعه کنید.

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

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

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

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

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

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

زیرساخت و آزمایشات Camera 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/

تست های 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

لطفاً توجه داشته باشید، در حالی که مسیر کلاس بسته جاوا + نام کلاس است، بسته ابزار دقیق لزوماً با بسته جاوا یکسان نیست. اطمینان حاصل کنید که از بسته 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)

-----

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

این تست حافظه پیش‌نمایش، پیش‌نمایش دوربین را برای 200 بار باز و آزاد می‌کند. در هر 20 تکرار، snapshot از 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 باید به صورت دستی با بررسی های زیر اجرا شود. منبع TestingCam اینجاست: pdk/apps/TestingCamera/

فوکوس بی نهایت با شیب دوربین

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

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

تست های دستی TestingCam2

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

ضبط JPEG

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