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

החל מ-Android 13, Camera ITS כולל תמיכה בבדיקות של מכשירים מתקפלים. במכשירים מתקפלים יש מצלמות שזמינות או לא זמינות בהתאם למצב המכשיר – מקופל או פתוח.

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

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

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

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

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

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

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

adb shell cmd device_state state

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

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

מערכת 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 הרצת בדיקה ספציפית.