בדיקת תמונות מהמצלמה במכשירים מתקפלים

מגרסה Android 13, ‏ Camera ITS כולל תמיכה בבדיקות למכשירים מתקפלים. במכשירים מתקפלים יש מצלמות שזמינות או לא זמינות, בהתאם למצב המכשיר (מקופל או לא מקופל).

מזהי המצלמות משתנים בהתאם לסוג המכשיר, לדגם ולמותג, והזמינות של מצלמות קדמיות פיזיות משתנה בהתאם למצב. לכן, מערכת Camera ITS קובעת באופן דינמי את השילובים של הסצנה והמצלמה שבהם צריך להשתמש לבדיקה. מכיוון שצריך לבדוק את המצלמות גם כשהמכשיר מקופל וגם כשהוא פתוח, כדי לבדוק מכשירים מתקפלים צריך להסיר את ה-DUT ולהרכיב אותו מחדש במהלך תהליך הבדיקה.

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

החיישנים של המצלמה שזמינים במכשיר מתקפל משתנים בהתאם למצב המכשיר – מקופל או פתוח. בטלפונים מתקפלים, הזמינות של המצלמה הקדמית משתנה בהתאם למצב. לדוגמה, המצלמה הקדמית לא זמינה כשהמכשיר מקופל. בגלל השינוי הזה בזמינות של המצלמה הקדמית, צריך לבדוק את המצלמות הקדמיות גם כשהמכשיר מקופל וגם כשהוא פתוח. מערכת Camera ITS מניחה שהזמינות של המצלמה האחורית נשארת זהה בין אם המכשיר מקופל או לא, ולכן צריך לבדוק את המצלמות האחוריות רק פעם אחת.

בהתאם למצב המכשיר, מערכת Camera ITS מסננת את מכשירי המצלמה שלא זמינים, והם לא מופיעים ברשימת השילובים של המצלמה והסצנה.

בטבלה הבאה מתוארת ההתנהגות של בדיקת Camera ITS לכל כיוון של המצלמה.

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

הליך הבדיקה

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

הגדרת מכשיר

למידע על ההגדרה, אפשר לעיין במאמר הגדרה.

הענקת גישה ל-API לצורך בדיקה

כדי שמערכת Camera ITS תוכל לקבוע אם המכשיר מתקפל או לא, צריך לתת גישה ל-API של הבדיקה לפני שמפעילים את הבדיקות. אם הגישה לא ניתנת, האפליקציה קורסת כשמריצים את בדיקות ה-ITS של המצלמה.

כדי לתת גישה, מריצים את פקודת ה-ADB הבאה. צריך להריץ את הפקודה הזו פעם אחת לכל מכשיר. אם מתקינים מחדש את CTS Verifier עם גרסה אחרת, צריך להריץ את הפקודה שוב.

adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier

קובץ תצורה

כדי לציין שהמכשיר הוא מכשיר מתקפל, מוסיפים את הפרמטר foldable_device בסביבות הבדיקה tablet ו-sensor_fusion בקובץ config.yml. מערכת Camera ITS משתמשת בפרמטר הזה כדי לקבוע את השילובים של camera_id והסצנה במצבים מקופל ופתוח.

הדוגמה הבאה היא של קובץ config.yml למכשיר מתקפל.

TestBeds:
  - Name: TABLET_SCENES
    # Test configuration for scenes[0:4, 6]
    Controllers:
        AndroidDevice:
          - serial: 8A9X0NS5Z
            label: dut
          - serial: 5B16001229
            label: tablet

    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"     # "quotes" needed
      chart_loc_arg: ""
      camera: 0
      scene: scene2_a
  lighting_cntl: arduino    # can be "arduino" or "None"
  lighting_ch: 1
  foldable_device: "True"     # "False" for non-foldable DUTs

הרצת בדיקות

כדי להריץ את בדיקות ה-ITS במכשיר מתקפל, מריצים את הפקודה run_all_tests.py. פרטים נוספים זמינים במאמר בנושא הפעלת בדיקות.

כשמריצים את Camera ITS במכשיר מתקפל, המצלמה הקדמית הראשית נבדקת בשני המצבים: מקופל ופתוח. אם המכשיר מקופל, התוצאות מוצגות באפשרות camera1_SCENE_NAME_folded באפליקציית CTS Verifier. בהתאם למצב המכשיר, מזהים פיזיים מסוימים של מצלמה קדמית לא זמינים ולא נבדקים. צריך לבדוק את המצלמה האחורית רק במצב אחד, רצוי במצב מקופל, והתוצאות של המצלמה האחורית לא כוללות את הסיומת _folded.

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

adb shell cmd device_state state

כשמריצים בדיקות במצב מקופל, מערכת Camera ITS מציגה הודעה במסוף שמבקשת מהמשתמש להגדיר את המכשיר בצורה נכונה בתיבת ITS. כדי להמשיך בהרצת הבדיקה אחרי ההנחיה, מקישים על Enter.

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

בנוסף, מערכת Camera ITS מוסיפה את הסיומת folded לספרייה tmp שנוצרה עבור סצנות במצב מקופל.

פקודות לדוגמה

אלה פקודות לדוגמה להרצת בדיקות במכשירים מתקפלים.

פקודה תיאור
python tools/run_all_tests.py מפעיל את כל הסצנות.
python tools/run_all_tests.py scenes=scene0 מריץ את scene0. אם המכשיר מקופל והמשתמש בודק את המצלמה הקדמית הראשית, התסריט קובע את מצב המכשיר ומוסיף את הסיומת _folded לשם הסצנה. המשתמשים לא צריכים להוסיף את הסיומת כדי להפעיל את הסצנות המקופלות.
python tests/scene0/ -c config.yml מריץ בדיקה ספציפית.