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

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

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

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

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

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

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

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

همه این انواع تست در زیر به تفصیل توضیح داده شده است. این تست ها به ترتیب زمانی ارائه می شوند که انتظار می رود 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

این تست‌های دوربین را در زیر پیدا کنید: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

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

تست‌های مجموعه تست تصویر دوربین (ITS) بر صحت تصویر تمرکز دارند. برای انجام تست‌ها، اسکریپت‌های پایتون را روی یک ایستگاه کاری با دستگاه 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 -g CtsVerifier.apk
cd CameraITS
source build/envsetup.sh
را اجرا کنید

برای اطلاعات بیشتر در مورد نحوه تنظیم و اجرای آزمایش‌ها، به فایل PDF CameraITS در cts/apps/CameraITS کنید. برای راهنمایی در مورد نحوه استفاده از اسکریپت ها به tutorial.py در زیر شاخه tests ها مراجعه کنید.

تست های ITS به یک محیط لینوکس نیاز دارند. برای جزئیات بیشتر در مورد نسخه‌های خاص پایتون مورد نیاز برای اجرای آزمایش‌های ITS، فایل PDF CameraITS برای انتشار یا همچنین یادداشت‌های انتشار Android 12 برای Android 12 را ببینید.

تنظیمات توصیه شده برای صحنه های ایستا در Camera ITS-in-a-box توضیح داده شده است. تنظیمات توصیه شده برای صحنه sensor_fusion در راهنمای شروع سریع جعبه سنسور توضیح داده شده است.

برای اجرای دستی ITS، یک محیط فیزیکی ساده با یک هدف خاص و قابل استفاده مجدد مانند یک دیوار سفید، یک کارت خاکستری و یک چراغ رومیزی آماده کنید. دستگاه اندروید را روی سه پایه نصب کنید و اسکریپت ها را برای تست عملکرد دوربین اجرا کنید. اکثر آزمون ها قبولی یا ناموفق هستند اما برخی معیارها را ارائه می دهند.

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

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

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

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

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