דף זה מפרט את כל הבדיקות הזמינות להערכת שכבת ההפשטה של מצלמות אנדרואיד (HAL). הוא מיועד ליצרני ציוד מקורי (OEM) ולספקי מעבדי יישומים (AP), כך שהם עשויים להבטיח יישום נכון של המצלמה HAL עם מינימום פגמים. למרות שזוהי תוספת מרצון לחבילת בדיקת התאימות של אנדרואיד (CTS), היא מגדילה מאוד את כיסוי בדיקת המצלמה ובהחלט תזהה באגים פוטנציאליים.
על ידי עמידה במבחנים אלה, יצרני OEM מוודאים אם הם שילבו כראוי את ממשקי ההפשטה של מצלמות אנדרואיד (HAL) 3. כאשר תואמים לכל הפריטים ברשימת הבדיקה, יישום מכשיר עשוי להיחשב מלא ביחס לממשקי HAL של מצלמת אנדרואיד. זה בתורו יאפשר למכשיר לתמוך כראוי בחבילת android.hardware.camera2
שעליה בונות אפליקציות מצלמה.
מפרט מצלמה HAL3
מפרט ה- Android Camera 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
סוגי בדיקות מצלמה
להלן סוגי הבדיקות העיקריים הזמינים עבור מצלמת אנדרואיד העדכנית ביותר יחד עם הפניות להוראות המשויכות להלן:
- Vendor Test Suite (VTS) : בדיקות הבודקות ישירות את ממשק HAL המצלמה
- חבילת בדיקת תאימות (CTS) : בדיקות אנדרואיד סטנדרטיות ואוטומטיות כדי להבטיח תאימות למכשיר. לפרטים נוספים, ראה חבילת בדיקת תאימות וסקירה כללית של פדרציית המסחר .
- חבילת בדיקות תמונה (ITS) : הפעל בדיקות באופן ידני כדי להבטיח את נכונות התמונה. לפרטים נוספים, ראה מצלמה ITS .
- בדיקות TestingCam ידניות : הפעל מהמקור ב-
pdk/apps/TestingCamera/
- בדיקות ידניות TestingCam2.1 : הפעל מהמקור ב-
pdk/apps/TestingCamera2/
כל סוגי הבדיקות הללו מתוארים בפירוט להלן. בדיקות אלו מוצגות בסדר הכרונולוגי שבו צפויים יצרני OEM לבצע אותם.
לדוגמה, אם מכשיר נכשל במבחנים המקוריים, הוא בוודאי ייכשל במבחני בדיקת התאימות (CTS) הבאים. ואם מכשיר נכשל ב-CTS, אין תועלת רבה להמשיך ל-Image Test Suite (ITS). אנו ממליצים לטפל בכשלים בכל סוג בדיקה לפני שתמשיך לקבוצת הבדיקות הבאה.
בדיקות חבילת בדיקות ספקים (VTS).
ה-Android Vendor Test Suite (VTS) היא חבילת בדיקות שפועלת ברמת ממשק HIDL. למידע נוסף על שימוש ב-VTS, ראה ספק בדיקות חבילת .
בדיקות חבילת בדיקת תאימות (CTS).
מבחני ה-CTS (Camera Android Compatibility Test Suite) מתמקדים בתאימות המכשיר. למידע על הגדרת סביבת בדיקה, ראה הגדרת CTS .
נתיב ההתחלה עבור מבחני CTS של מצלמה הוא: platform/cts
.
בעת הפעלת מצלמה CTS עבור מכשירים התומכים במצלמות חיצוניות (כגון מצלמות רשת USB), עליך להיות מחובר למכשיר בעת הפעלת CTS או שהבדיקות ייכשלו אוטומטית. דוגמאות למצלמות חיצוניות כוללות: Logitech HD Pro Webcam 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 עבור ה-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/*
מבחני Image Test Suite (ITS).
מבחני ה-Camera Image Test Suite (ITS) מתמקדים בנכונות התמונה. כדי לבצע את הבדיקות, הפעל את הסקריפטים של Python בתחנת עבודה עם מכשיר האנדרואיד מחובר דרך USB.
התשתית והבדיקות של Camera ITS ממוקמות בספריית cts/apps/CameraITS
. כל בדיקה נמצאת בספריית משנה tests/scene #
.
למידע נוסף כיצד להגדיר ולהפעיל את הבדיקות, ראה מצלמה ITS .
לתיאורי סצנה ומבחן, ראה בדיקות ITS של מצלמה .
מבחני ITS עוברים או נכשלים. כל מבחני החובה בכל תיקיית סצנה חייבים לעבור. מבחנים שאינם חובה יכולים להיכשל ועדיין להיחשב כמעבר ב- CtsVerifier
.
בדיקות ITS בדיקות תרחישים שאינם נבדקים ב-CTS ומהווים מרכיב חשוב בתוכנית הבדיקה HAL 3.2.
מבחני Media Framework
עברו את כל מבחני המדיה הקשורים למצלמה ב-MediaFrameworkTest. שימו לב, בדיקות אלו מחייבות את התקנת mediaframeworktest.apk במכשיר האנדרואיד. יהיה עליך 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
שימו לב, בעוד שנתיב המחלקה הוא חבילת Java + שם המחלקה, חבילת המכשור אינה בהכרח זהה לחבילת Java. ודא שאתה משתמש בחבילת AndroidManifest.xml בעת שרשור שם הרכיב, לא בחבילת Java שבה נמצאת מחלקת הרץ של הבדיקה.
כדי להריץ מחלקה אחת של מבחנים, עבר את המחלקה -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 איטרציות, תמונת המצב של 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 . התמונה המופיעה מימין לתמונת העינית צריכה להופיע זהה לעינית, כולל אותה כיוון.