בדף הזה מפורטים כל הבדיקות שזמינות להערכת שכבת ההפשטה של חומרת המצלמה (HAL) ב-Android. הוא מיועד ליצרני ציוד מקורי (OEM) ולספקי מעבדי אפליקציות (AP), כדי שיוכלו להבטיח הטמעה תקינה של HAL המצלמה עם מספר פגמים מינימלי. זוהי תוספת וולונטרית לחבילת בדיקות התאימות של Android (CTS), אבל היא מרחיבה מאוד את הכיסוי של בדיקות המצלמה ותזהה בוודאות באגים פוטנציאליים.
כשהם עוברים את הבדיקות האלה, יצרני ציוד מקורי מאמתים שהם שילבו כראוי את ממשקי שכבת ההפשטה של חומרת המצלמה של Android (HAL) 3. אם ההטמעה של המכשיר עומדת בכל הפריטים ברשימת המשימות, היא נחשבת מלאה מבחינת ממשקי ה-HAL של מצלמת Android. כך המכשיר יוכל לתמוך כראוי בחבילה
android.hardware.camera2
שעלייה מבוססות אפליקציות המצלמה.
מפרט HAL3 של מצלמה
המפרט Android Camera HAL3 הוא המקור המהימן למידע על הדרישות למכשירים. בדף הזה מופיע סיכום של כל הבדיקות שאפשר להשתמש בהן כרשימת משימות. מי שמטמיע את Camera HAL (למשל, ספקי AP) צריך לעבור על המפרט של Camera HAL3 שורה אחרי שורה ולוודא שהמכשירים שלו תואמים לו.
מפרט ה-HAL הנוכחי מוגדר בקבצים הבאים ב-Android Platform Development Kit (PDK) הגנרי של Android 5.0 ואילך:
- הממשק והמפרט של Camera 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
סוגי בדיקות המצלמה
אלה סוגי הבדיקות העיקריים שזמינים למצלמה העדכנית ביותר של Android, יחד עם הפניות להוראות הקשורות:
- חבילת בדיקה של ספקים (VTS): בדיקות שבודקות ישירות את ממשק HAL של המצלמה
- חבילה לבדיקות תאימות (CTS): בדיקות רגילות ואוטומטיות של Android כדי לוודא את תאימות המכשיר. פרטים נוספים זמינים במאמרים חבילת בדיקות התאימות וסקירה כללית על Trade Federation.
- Image Test Suite (ITS): הרצת בדיקות ידניות כדי לוודא שהתמונה תקינה. מידע נוסף זמין במאמר Camera ITS.
- בדיקות ידניות של TestingCam:
מריצים מהמקור ב-
pdk/apps/TestingCamera/
- בדיקות ידניות TestingCam2.1: הרצה מהמקור ב-
pdk/apps/TestingCamera2/
כל סוגי הבדיקות האלה מתוארים בהרחבה בהמשך. הבדיקות האלה מוצגות בסדר כרונולוגי, שבו אנחנו מצפים מיצרני ציוד מקורי לבצע אותן.
לדוגמה, אם מכשיר נכשל בבדיקות המקוריות, הוא ייכשל בהחלט בבדיקות הבאות של הכלי לבדיקת תאימות (CTS). אם מכשיר נכשל ב-CTS, אין הרבה טעם להמשיך ל-Image Test Suite (ITS). מומלץ לטפל בכשלים בכל סוג בדיקה לפני שממשיכים לקבוצת הבדיקות הבאה.
בדיקות של חבילה לבדיקת ספקים (VTS)
חבילת Android Vendor Test Suite (VTS) היא חבילת בדיקות שפועלת ברמת הממשק HIDL. למידע נוסף על השימוש ב-VTS, ראו חבילת בדיקה של ספקים.
בדיקות של הכלי לבדיקת תאימות (CTS)
הבדיקות של חבילה לבדיקות תאימות (CTS) של Android למצלמות מתמקדות בתאימות למכשירים. מידע נוסף על הגדרת סביבת בדיקה זמין במאמר הגדרת CTS.
נתיב ההתחלה לבדיקות CTS של מצלמה הוא: platform/cts
.
כשמריצים בדיקת CTS למצלמה במכשירים שתומכים במצלמות חיצוניות (כמו מצלמות רשת מסוג USB), צריך לחבר את המכשיר בזמן הרצת הבדיקה, אחרת הבדיקות ייכשל באופן אוטומטי. דוגמאות למצלמות חיצוניות: Logitech HD Pro Webcam C920 ו-Microsoft LifeCam HD-3000.
הוראות כלליות להרצת CTS מפורטות במבוא ל-CTS ובדפי המשנה שלו.
בדיקות CTS ל-API של 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 של API android.hardware.camera2
בדיקות המצלמה הבאות נמצאות ב-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/*
בדיקות של Image Test Suite (ITS)
ערכת הבדיקה של תמונות המצלמה (ITS) מתמקדת בבדיקת תקינות התמונות. כדי לבצע את הבדיקות, מריצים את הסקריפטים של Python בתחנת עבודה כשמכשיר Android מחובר באמצעות USB.
התשתית והבדיקות של Camera ITS נמצאות בספרייה
cts/apps/CameraITS
.
כל בדיקה נמצאת בספריית משנה tests/scene#
.
מידע נוסף על הגדרת הבדיקות והפעלתן זמין במאמר Camera ITS.
לתיאור הסצינות והבדיקות, אפשר לעיין במאמר בדיקות ITS למצלמה.
בדיקות ITS עוברות בהצלחה או נכשלות. כל הבדיקות שנדרשות לכל תיקיית סצנות חייבות לעבור בהצלחה.
בדיקות ללא הרשאה עלולות להיכשל ועדיין לספור אותן כמעבר
ב-CtsVerifier
.
בדיקות ITS בודקות תרחישים שלא נבדקים ב-CTS, והן חלק חשוב בתוכנית הבדיקה של HAL 3.2.
בדיקות של Media Framework
עברו את כל בדיקות המדיה שקשורות למצלמה ב-MediaFrameworkTest. שימו לב שהבדיקות האלה מחייבות את ההתקנה של mediaframeworktest.APK במכשיר Android. כדי להתקין את קובץ ה-APK שמתקבל, צריך make mediaframeworktest
ולאחר מכן להשתמש ב-adb. בהמשך מפורטות דוגמאות לפקודות.
נתיב ההתחלה לבדיקות framework של מדיה שקשורה למצלמה הוא:
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
).
לדוגמה:
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 שבה נמצאת הכיתה של מפעיל הבדיקות.
כדי להריץ סוג אחד של בדיקות, מעבירים את הארגומנט
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
בדיקות פונקציונליות של הגדרות המדיה
לפניכם דוגמה להרצה של בדיקה פונקציונלית. הבדיקה הזו מאמתת את הפונקציונליות הבסיסית של שילובים שונים של הגדרות המצלמה. (למשל, Flash, חשיפת התמונה, 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. התמונה שמופיעה מימין לתמונה במסך העינית אמורה להיראות כמו התמונה במסך העינית, כולל אותו כיוון.