בדף הזה מפורטות כל הבדיקות שזמינות להערכת מצלמת Android חומרה בהפשטה (HAL). הוא מיועד לציוד מקורי יצרנים (OEM) ואפליקציה של ספקי מעבדים (AP) כדי לוודא שהמצלמה מוטמעת בצורה תקינה. HAL עם פגמים מינימליים. למרות שזו תוספת וולונטרית למכשירי Android הכלי לבדיקת תאימות (CTS), מגדיל באופן משמעותי את הכיסוי של בדיקות המצלמה יזהה באגים אפשריים.
כשעוברים את הבדיקות האלה, יצרני ציוד מקורי (OEM) מבצעים אימות
אם הם שילבו באופן תקין את מערכת Android
חומרת מצלמה
בשכבת הפשטה (HAL) 3 ממשקים. בעת תאימות לכל הפריטים
רשימת משימות, הטמעת מכשיר עשויה להיחשב כמלאה
לממשקי HAL של מצלמת Android. הפעולה הזו תאפשר למכשיר
לתמוך כראוי
חבילה של android.hardware.camera2
אפליקציות מצלמות נעזרות.
מפרט HAL3 של מצלמה
מפרט מצלמת Android HAL3 הוא המקור המוסמך מידע על המכשירים שחייבים לספק, בדף הזה מופיע סיכום של כל הבדיקות שאפשר להשתמש בהן כרשימת משימות. מטמיעי HAL של מצלמות (למשל AP) ספקים), לעבור על מפרט המפרט של מצלמת HAL3 שורה אחרי שורה ולוודא שהמכשירים שלהם עומדים בדרישות האלה.
מפרט HAL הנוכחי מוגדר בקבצים האלה ב-Android גרסה 5.0 ואילך של Android Platform Development Kit (PDK) גנריות של Android:
- הממשק והמפרט של 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 העדכנית ביותר וכן הפניות להוראות המשויכות הבאות:
- Vendor Test Suite (VTS): בדיקות שבודקות ישירות את ממשק HAL של מצלמה
- חבילה לבדיקת תאימות (CTS): Android רגיל, אוטומטי כדי להבטיח את התאימות של המכשיר. פרטים נוספים זמינים במאמר חבילה לבדיקת תאימות וגם איחוד הסחר סקירה כללית.
- Image Test Suite (ITS): הפעלה ידנית כדי להבטיח את תקינות התמונה. פרטים נוספים זמינים במאמר מצלמה שלה.
- בדיקות ידניות של TestCam:
הרצה מהמקור ב-
pdk/apps/TestingCamera/
- Manual TestingCam2.1
בדיקות: הרצה מהמקור ב-
pdk/apps/TestingCamera2/
כל סוגי הבדיקות האלה מתוארים בפירוט בהמשך. הבדיקות האלה מוצגות בסדר כרונולוגי שבו מצופה מיצרני ציוד מקורי לבצע פעולות אותם.
לדוגמה, אם מכשיר נכשל בבדיקות המקוריות, הוא ייכשל בהחלט את הבדיקות הבאות של הכלי לבדיקת תאימות (CTS). ואם מכשיר נכשל ב-CTS, השימוש בכלי לבדיקת תמונות (ITS) מועט. ההמלצות שלנו טיפול בכשלים בכל סוג בדיקה לפני ההמשך לקבוצה הבאה של בדיקות.
בדיקות של חבילת הבדיקה של הספק (VTS)
חבילת Android Vendor Test Suite (VTS) היא חבילת בדיקות שפועלת רמת ממשק HIDL. לקבלת מידע נוסף על השימוש ב-VTS, אפשר לעיין במאמר חבילת בדיקה של ספקים.
בדיקות של הכלי לבדיקת תאימות (CTS)
הכלי לבדיקת תאימות ל-Android למצלמה (CTS) בודק את המיקוד במכשיר בתאימות מלאה. למידע על הגדרת סביבת בדיקה, ראו הגדרת CTS.
נתיב ההתחלה לבדיקות CTS של מצלמה הוא: platform/cts
.
כשמפעילים CTS של מצלמה עבור מכשירים שתומכים במצלמות חיצוניות (כמו מצלמות אינטרנט בחיבור USB), נדרש מכשיר מחובר לחשמל בזמן הרצת CTS או הבדיקות תיכשל באופן אוטומטי. דוגמאות למצלמות חיצוניות: 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 Verifier
בדיקות המצלמה הבאות נמצאות במקומות הבאים:
cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
בדיקות של הכלי לבדיקת תמונות (ITS)
הכלי לבדיקת תמונות המצלמה (ITS) בודק את שיפור נכונות התמונה. כדי לבצע את הבדיקות, מריצים את הסקריפטים של Python בתחנת עבודה עם מכשיר Android מחובר באמצעות USB.
התשתית והבדיקות של המצלמה נמצאות באזור
cts/apps/CameraITS
.
כל בחינה נמצאת בספריית משנה tests/scene#
.
מידע נוסף על הגדרה והרצה של הבדיקות זמין בכתובת מצלמה שלה.
למידע על תיאורים של הסצנות והבדיקות, ראו בדיקות ITS של המצלמה.
בדיקות ITS עוברות בהצלחה או נכשלות. כל הבדיקות שנדרשות לכל תיקיית סצנות חייבות לעבור בהצלחה.
בדיקות ללא הרשאה עלולות להיכשל ועדיין להיכשל
CtsVerifier
ה-ITS בודקות תרחישי בדיקה שלא נבדקו ב-CTS ויש להם תפקיד חשוב רכיב של תוכנית הבדיקה HAL 3.2.
בדיקות של Media Framework
עברו את כל בדיקות המדיה שקשורות למצלמה ב-MediaFrameworkTest. נשמח אם תוכלו לסמן בכוכב
הערה: הבדיקות האלה מחייבות את ההתקנה של mediaframeworktest.APK ב-Android
במכשיר. צריך make mediaframeworktest
ואז להשתמש ב-adb
כדי להתקין את קובץ ה-APK הרצוי. בהמשך מופיעות פקודות לדוגמה.
נתיב ההתחלה לבדיקות 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
כדי להפעיל רק שיטה אחת בכיתת בדיקה, הוסף את הסימן פאונד (#)
שם ה-method (במקרה הזה, 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 איטרציות, תמונת המצב של שרת המדיה של PS יתועד והוא ישווה את השימוש בזיכרון שונה לאחר 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
כל הבדיקות צריכות לעבור בהצלחה.
בדיקות ידניות של TestCam
צריך להפעיל את אפליקציית TestingCam באופן ידני ולבצע את הבדיקות הבאות.
המקור של TestingCam נמצא כאן: pdk/apps/TestingCamera/
פוקוס אינסופי עם הטיית המצלמה
מפעילים את TestingCam, מפעילים תצוגה מקדימה ומוודאים שמצב המיקוד האוטומטי מוגדר אינסוף. באמצעות הלחצן צילום תמונה, מצלמים תמונות של אובייקטים רחוקים (במרחק של 10 מטר לפחות) כשהמצלמה מופנית לרוחב, למעלה (קרוב לאנכי) ולמטה (קרוב לאנכי); דוגמה ל הצילום כלפי מעלה יכול להיות עלים/ענפים גבוהים של עץ מלמטה דוגמה לצילומים כלפי מטה יכולה להיות הרחוב כפי שנראה מהגג של בנייה. בכל המקרים, נושא הצילום המרוחק צריך להיות חד וממוקד. שמירה וצפו בצילומים בתצוגת הגלריה כדי שתוכלו להתקרב ולבחון את חדות קלה יותר.
הערה: כדי שמצלמה עם מפעיל VCM תעבור את הבדיקה הזו, יידרשו למערכת בקרת AF עם לולאה סגורה, או שהיא דורשת סוג כלשהו של SW לתיקון שמבוסס על נתוני מד התאוצה כדי לקבוע את כיוון המצלמה. יהיה צורך גם בכיול אמין של העדשה על סמך מיקום האינסוף של העדשה.
בדיקות ידניות של TestingCam2
צריך להפעיל את אפליקציית TestingCam2 באופן ידני, ולבצע את הבדיקות הבאות
שבוצעו. המקור של TestingCam2 הוא כאן: pdk/apps/TestingCamera2/
צילום JPEG
מפעילים את TestingCam2 ולוחצים על הלחצן JPEG. התמונה שמופיעה מימין לתמונת העינית אמורה להופיע בעינית, כולל באותו כיוון.