این صفحه تمام تست های موجود برای ارزیابی لایه انتزاعی سخت افزار دوربین اندروید (HAL) را فهرست می کند. این برای سازندگان تجهیزات اصلی (OEM) و فروشندگان پردازنده های کاربردی (AP) در نظر گرفته شده است، بنابراین آنها می توانند از اجرای صحیح HAL دوربین با حداقل نقص اطمینان حاصل کنند. اگرچه این یک افزودنی داوطلبانه به مجموعه تست سازگاری اندروید (CTS) است، اما پوشش تست دوربین را تا حد زیادی افزایش میدهد و مطمئناً باگهای احتمالی را شناسایی میکند.
با گذراندن این آزمایشها، OEMها تأیید میکنند که آیا به درستی رابطهای لایه انتزاعی سختافزار دوربین اندروید (HAL) 3 را ادغام کردهاند یا خیر. هنگام تطابق با تمام موارد موجود در چک لیست، اجرای دستگاه ممکن است با توجه به رابطهای HAL دوربین Android کامل در نظر گرفته شود. این به نوبه خود دستگاه را قادر می سازد تا به درستی از بسته android.hardware.camera2
که برنامه های دوربین بر اساس آن ساخته شده اند، پشتیبانی کند.
مشخصات دوربین HAL3
مشخصات دوربین Android HAL3 منبع معتبر اطلاعات در مورد دستگاههایی است که باید رعایت کنند. این صفحه خلاصه ای از تمام تست ها را ارائه می دهد که می تواند به عنوان یک چک لیست استفاده شود. اجراکنندگان دوربین HAL (مثلاً فروشندگان AP) باید مشخصات دوربین HAL3 را خط به خط بررسی کنند و از مطابقت دستگاههایشان با آن اطمینان حاصل کنند.
مشخصات HAL کنونی در این فایلها در کیت توسعه پلتفرم اندروید عمومی Android نسخه 5.0 و بالاتر (PDK) تعریف شده است:
- رابط و مشخصات دوربین HAL 3.x :
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- مشخصات فراداده دوربین HAL 3.x :
system/media/camera/docs/docs.html
- رابط فرمت پیکسل HAL و مشخصات :
system/core/libsystem/include/system/graphics.h
انواع تست دوربین
در اینجا انواع اولیه آزمایش های موجود برای جدیدترین دوربین اندروید به همراه ارجاع به دستورالعمل های مرتبط در زیر آمده است:
- مجموعه تست فروشنده (VTS) : تست هایی که مستقیما رابط HAL دوربین را آزمایش می کنند
- مجموعه تست سازگاری (CTS) : تستهای استاندارد و خودکار اندروید برای اطمینان از سازگاری دستگاه. برای جزئیات بیشتر، مجموعه تست سازگاری و نمای کلی فدراسیون تجارت را ببینید.
- مجموعه تست تصویر (ITS) : برای اطمینان از صحت تصویر، آزمایش ها را به صورت دستی اجرا کنید. برای جزئیات بیشتر، Camera ITS را ببینید.
- تستهای دستی TestingCam : از منبع در
pdk/apps/TestingCamera/
اجرا شود - تست های دستی TestingCam2.1 : از منبع در
pdk/apps/TestingCamera2/
اجرا شود
تمام این انواع تست در زیر به تفصیل توضیح داده شده است. این تست ها به ترتیب زمانی ارائه می شوند که انتظار می رود 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 #
قرار دارد.
برای اطلاعات بیشتر در مورد نحوه تنظیم و اجرای آزمایشها، به 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 را فشار دهید. تصویری که در سمت راست تصویر منظره یاب ظاهر می شود باید مانند منظره یاب ظاهر شود، از جمله دارای جهت گیری یکسان.