רשימת בדיקת HAL למצלמה

דף זה מפרט את כל הבדיקות הזמינות להערכת שכבת ההפשטה של ​​מצלמות אנדרואיד (HAL). הוא מיועד ליצרני ציוד מקורי (OEM) ולספקי מעבדי יישומים (AP), כך שהם עשויים להבטיח יישום נכון של המצלמה HAL עם מינימום פגמים. למרות שזוהי תוספת מרצון לחבילת בדיקת התאימות של אנדרואיד (CTS), היא מגדילה מאוד את כיסוי בדיקת המצלמה ובהחלט תזהה באגים פוטנציאליים.

על ידי עמידה במבחנים אלה, יצרני OEM מוודאים אם הם שילבו כראוי את ממשקי ההפשטה של ​​מצלמות אנדרואיד (HAL) 3. כאשר תואמים לכל הפריטים ברשימת הבדיקה, יישום מכשיר עשוי להיחשב מלא ביחס לממשקי HAL של מצלמת אנדרואיד. זה בתורו יאפשר למכשיר לתמוך כראוי בחבילת android.hardware.camera2 שעליה בונות אפליקציות מצלמה.

מפרט מצלמה HAL3

מפרט ה- Android Camera HAL3 הוא המקור הסמכותי למידע על מה שהמכשירים חייבים לספק; דף זה מספק סיכום של כל המבחנים שיכולים לשמש כרשימה. מיישמי מצלמה HAL (למשל ספקי AP) צריכים לעבור על מפרט המצלמה HAL3 שורה אחר שורה ולוודא שהמכשירים שלהם תואמים לו.

מפרט ה-HAL הנוכחי מוגדר בקבצים אלה בערכת הפיתוח הגנרית של Android 5.0 ואילך (PDK):

סוגי בדיקות מצלמה

להלן סוגי הבדיקות העיקריים הזמינים עבור מצלמת אנדרואיד העדכנית ביותר יחד עם הפניות להוראות המשויכות להלן:

כל סוגי הבדיקות הללו מתוארים בפירוט להלן. בדיקות אלו מוצגות בסדר הכרונולוגי שבו צפויים יצרני 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 . התמונה המופיעה מימין לתמונת העינית צריכה להופיע זהה לעינית, כולל אותה כיוון.