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

בדף הזה מפורטות כל הבדיקות שזמינות להערכת מצלמת 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:

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

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

כל סוגי הבדיקות האלה מתוארים בפירוט בהמשך. הבדיקות האלה מוצגות בסדר כרונולוגי שבו מצופה מיצרני ציוד מקורי לבצע פעולות אותם.

לדוגמה, אם מכשיר נכשל בבדיקות המקוריות, הוא ייכשל בהחלט את הבדיקות הבאות של הכלי לבדיקת תאימות (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) ושם הניסוי (MediaFrameworkTestRunner).

לדוגמה:

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. התמונה שמופיעה מימין לתמונת העינית אמורה להופיע בעינית, כולל באותו כיוון.