בדף הזה מפורטים כל הבדיקות שזמינות להערכת שכבת ההפשטה של חומרת המצלמה ב-Android (HAL). הוא מיועד ליצרני ציוד מקורי (OEM) ולספקי מעבדי אפליקציות (AP), כדי שיוכלו לוודא שההטמעה של HAL המצלמה תקינה עם מינימום פגמים. למרות שמדובר בתוספת אופציונלית לחבילה לבדיקות תאימות (CTS) של Android, היא מגדילה מאוד את הכיסוי של בדיקות המצלמה, ובוודאות תזהה באגים פוטנציאליים.
יצרני ציוד מקורי משתמשים בבדיקות האלה כדי לוודא שהם שילבו בצורה נכונה את ממשקי שכבת ההפשטה (HAL) 3 של חומרת המצלמה ב-Android. כשמיישמים את כל הפריטים ברשימת הבדיקה, אפשר להגדיר את יישום המכשיר כמלא ביחס לממשקי Android Camera HAL. הפעולה הזו תאפשר למכשיר לתמוך בצורה תקינה בחבילה
android.hardware.camera2 שעליה מבוססות אפליקציות המצלמה.
מפרט Camera HAL3
המפרט של Android Camera HAL3 הוא המקור המוסמך למידע על הדרישות ממכשירים. בדף הזה מופיע סיכום של כל הבדיקות שאפשר להשתמש בהן כרשימת תיוג. מפתחים של Camera HAL (למשל ספקי AP ) צריכים לעבור על המפרט של Camera HAL3 שורה אחר שורה ולוודא שהמכשירים שלהם תואמים לו.
המפרט הנוכחי של HAL מוגדר בקבצים האלה בתוך ערכת פיתוח כללית של פלטפורמת Android (PDK) בגרסה Android 5.0 ואילך:
- ממשק ומפרט של Camera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h,hardware/libhardware/include/hardware/camera_common.h - מפרט המטא-נתונים של Camera HAL 3.x:
system/media/camera/docs/docs.html - ממשק ומפרט של פורמט פיקסלים ב-HAL:
system/core/libsystem/include/system/graphics.h
סוגי בדיקות מצלמה
אלה הסוגים העיקריים של בדיקות שזמינים למצלמה העדכנית של Android, עם הפניות להוראות שקשורות אליהן בהמשך:
- Vendor Test Suite (VTS): בדיקות שבודקות ישירות את הממשק של HAL המצלמה
- חבילה לבדיקות תאימות (CTS): בדיקות סטנדרטיות ואוטומטיות של Android שנועדו לוודא שהמכשיר תואם. פרטים נוספים זמינים במאמרים בנושא חבילת בדיקות התאימות וסקירה כללית של Trade Federation.
- Image Test Suite (ITS): הרצת בדיקות ידנית כדי לוודא שהתמונה נכונה. לפרטים נוספים אפשר לעיין במאמר בנושא מערכת ITS למצלמות.
- בדיקות ידניות של מצלמות:
הפעלה מהמקור ב-
pdk/apps/TestingCamera/ - Manual TestingCam2.1
tests: הפעלה מהמקור ב-
pdk/apps/TestingCamera2/
בהמשך מפורטים כל סוגי הבדיקות האלה. הבדיקות האלה מוצגות בסדר כרונולוגי שבו יצרני ציוד מקורי (OEM) צפויים לבצע אותן.
לדוגמה, אם מכשיר נכשל בבדיקות המקוריות, הוא ייכשל בוודאות בבדיקות הבאות של חבילת בדיקות התאימות (CTS). אם מכשיר נכשל ב-CTS, אין טעם להמשיך ל-Image Test Suite (ITS). מומלץ לטפל בכשלים בכל סוג בדיקה לפני שממשיכים לסדרה הבאה של בדיקות.
בדיקות בחבילה לבדיקת ספקים (VTS)
חבילת הבדיקות של ספקים ב-Android (VTS) היא חבילת בדיקות שפועלת ברמת ממשק HIDL. מידע נוסף על השימוש ב-VTS זמין במאמר בנושא Vendor Test Suite.
בדיקות בחבילה לבדיקות תאימות (CTS)
בדיקות חבילת התאימות (CTS) של מצלמת Android מתמקדות בתאימות המכשיר. מידע על הגדרת סביבת בדיקה זמין במאמר בנושא הגדרת CTS.
נתיב ההתחלה לבדיקות CTS של המצלמה הוא: platform/cts.
כשמריצים את בדיקות התאימות של המצלמה במכשירים שתומכים במצלמות חיצוניות (כמו מצלמות רשת בחיבור USB), צריך לחבר מכשיר בזמן ההרצה של בדיקות התאימות, אחרת הבדיקות ייכשלו באופן אוטומטי. דוגמאות למצלמות חיצוניות: מצלמת אינטרנט HD Pro C920 של Logitech ו-Microsoft LifeCam HD-3000.
הוראות כלליות להפעלת CTS מופיעות במאמר המבוא ל-CTS ובדפי המשנה שלו.
בדיקות CTS ל-API android.hardware.Camera
אפשר למצוא את בדיקות המצלמה האלה בקטע cts/tests/tests/:
hardware/src/android/hardware/cts/CameraTest.javahardware/src/android/hardware/cts/CameraGLTest.javahardware/src/android/hardware/cts/Camera_SizeTest.javapermission/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)
הכלי Camera Image Test Suite (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. תצטרכו make mediaframeworktest ואז להשתמש ב-adb כדי להתקין את קובץ ה-APK שנוצר. בהמשך מופיעות פקודות לדוגמה.
נתיב ההתחלה לבדיקות של מסגרת המדיה שקשורות למצלמה הוא:
platform/frameworks/base
קוד המקור של הבדיקות זמין כאן:
frameworks/base/media/tests/MediaFrameworkTest
כדי להגדיר את הבדיקות האלה:
make mediaframeworktestadb 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 שבה נמצאת המחלקה של כלי ההרצה של הבדיקה.
כדי להריץ בדיקה של כיתה אחת, מעבירים את הארגומנט -e class
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, exposure, WB, scene, picture size ו-geoTag)
מריצים את פקודת הבדיקה:
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 איטרציות, תתועד תמונת המצב של ps mediaserver, ותתבצע השוואה של השימוש בזיכרון אחרי 200 איטרציות. הבדיקה תיכשל אם ההבדל גדול מ-150,000 ק"מ.
מריצים את פקודת הבדיקה:
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
כל הבדיקות צריכות לעבור.
בדיקות ידניותבדיקות של מצלמת Cam
צריך להפעיל את אפליקציית TestingCam באופן ידני ולבצע את הבדיקות הבאות.
קוד המקור של TestingCam זמין כאן: pdk/apps/TestingCamera/
מיקוד אינסופי עם הטיית המצלמה
מפעילים את TestingCam, מפעילים את התצוגה המקדימה ומוודאים שמצב הפוקוס האוטומטי מוגדר לאינסוף. בעזרת הלחצן צילום תמונה, מצלמים תמונות של נושאים מרוחקים (לפחות 10 מטרים) כשהמצלמה מכוונת אופקית, כלפי מעלה (קרוב לאנכית) וכלפי מטה (קרוב לאנכית). דוגמה לצילום כלפי מעלה יכולה להיות עלים או ענפים גבוהים של עץ מלמטה, ודוגמה לצילום כלפי מטה יכולה להיות הרחוב כפי שנראה מגג של בניין. בכל המקרים, האובייקט המרוחק צריך להיות חד וממוקד. אפשר לשמור את התמונות ולראות אותן בתצוגת הגלריה כדי להגדיל אותן ולבדוק את החדות שלהן בקלות רבה יותר.
שימו לב: כדי שמצלמה עם מפעיל VCM תעבור את הבדיקה הזו, היא תצטרך מערכת בקרה של מיקוד אוטומטי (AF) עם לולאה סגורה, או תיקון תוכנה כלשהו שמבוסס על שימוש בנתוני מד תאוצה כדי לקבוע את כיוון המצלמה. יהיה צורך גם בכיול אמין של מיקום האינסוף של העדשה.
בדיקות ידניותבדיקות Cam2
צריך להפעיל את האפליקציה TestingCam2 באופן ידני ולבצע את הבדיקות הבאות:
מקור הקוד של TestingCam2 זמין כאן: pdk/apps/TestingCamera2/
צילום בפורמט JPEG
מתחילים את TestingCam2 ולוחצים על הלחצן JPEG. התמונה שמופיעה משמאל לתמונה של העינית צריכה להיות זהה לתמונה של העינית, כולל אותו כיוון.