מצלמות ומכשירים מתקפלים

הערה: הדף הזה מתייחס לחבילה Camera2. אם האפליקציה שלכם לא דורשת תכונות ספציפיות ברמה נמוכה מ-Camera2, מומלץ להשתמש ב-CameraX. גם CameraX וגם Camera2 תומכים ב-Android מגרסה 5.0 (רמת API‏ 21) ואילך.

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

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

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

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

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

איך מצב המכשיר משפיע על המצלמות

מכשירים מתקפלים יכולים לכלול:

  • שני צגים פיזיים או יותר
  • כמה מצלמות פיזיות

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

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

לדוגמה, נניח שיש מכשיר מתקפל עם שני מסכים:

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

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

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

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

מתגים פיזיים במכשיר המצלמה

ממשק המכשיר הלוגי של המצלמה מספק את ממשקי ה-API הנדרשים לטיפול במתגי מצלמה פיזיים. המפתחים צריכים לעקוב אחרי הערך של active physical id.

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

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

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

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

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

הנחות נוספות לא חוקיות

לא מומלץ לשמור במטמון ערכים של מאפייני מצלמה.

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

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