תכנון תמיכה בסוגים שונים של משקפי שמע ומשקפי תצוגה

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

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

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

הסבר על מחזור החיים של פעילויות מתוכננות

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

איור 1. האירועים המרכזיים במחזור החיים של פעילויות מתוכננות.

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

  • onCreate()
    • מופעלת כשהפעילות המשוערת נוצרת.
    • כאן מאתחלים את ממשק המשתמש של Jetpack Compose Glimmer ואת הרכיבים האחרים של האפליקציה.
  • onStart()
    • הפונקציה נקראת כשהפעילות המתוכננת מתחילה והמשתמש מודע לאפליקציה.
  • onResume()
    • מופעלת כשהפעילות המוקרנת חוזרת למוקד. בזמן שהפעילות נמצאת במוקד ההתעניינות, אפשר ליצור איתה אינטראקציה והיא יכולה לצרוך קלט של משטח מגע או כפתור.
    • הפונקציה מופעלת כשמרכיבים את המשקפיים בחזרה (donned), אחרי שהם הוסרו מהראש (doffed).
  • onPause()
    • הפונקציה נקראת כשהפעילות המוקרנת מאבדת את המיקוד, אבל המשתמש עדיין מודע לאפליקציה. בזמן שהפעילות לא ממוקדת, היא לא אינטראקטיבית ומפסיקה לצרוך קלט.
  • onStop()
    • הפונקציה נקראת כשהמערכת סבורה שהמשתמש כבר לא מודע לאפליקציה שלכם.
    • הפונקציה מופעלת כשהמשקפיים מוסרים מהראש (מוסרים).
  • onDestroy()
    • הפונקציה נקראת כשהפעילות המוקרנת עומדת להימחק. כשקוראים לפונקציה הזו, המערכת משחררת את כל המשאבים שקשורים לפעילות.

איך מצב התצוגה משפיע על מחזור החיים של הפעילות המוקרנת

ב-Activity רגיל, מצב מחזור החיים משתנה כשהמסך של המכשיר נכבה, ובדרך כלל עובר למצב onPause() או onStop(). לעומת זאת, מחזור החיים של הפעילות המוקרנת לא משתנה כשמסך המשקפיים מופעל או מושבת. המשמעות של ההתנהגות הזו היא שהפעילות המוקרנת ממשיכה לפעול במצב Started או Resumed גם כשהמסך מושבת, וכך אפשר להמשיך ליהנות מחוויות האודיו של האפליקציה ללא הפרעה.

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

הסבר על ההשפעה של המודעות של המשתמשים על הפעילות הצפויה

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

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

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

  • הסטטוס onStart() בפעילויות מתוכננות מציין שהפעילות פעילה.
  • הסטטוס onResume() מציין שהפעילות אינטראקטיבית ויכולה לקבל קלט מלוח המגע, או שהיא מקבלת שיגור קלט ראשי.

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

הסבר על פעילויות חזויות והקשרים חזויים

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

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

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

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

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

הסבר על ממשקי API שמודעים למכשיר

חלק מממשקי ה-API הרגילים של Android משנים את החומרה של המכשיר שאליהם יש להם גישה, בהתאם לContext של הפעילות שקוראת להם. כשממשקי ה-API האלה מקבלים הקשר מוקרן, הם ניגשים לחומרה של המשקפיים במקום לחומרה במכשיר הטלפון המארח:

  • CameraManager: גישה למצלמה במשקפיים.
  • SensorManager: אחזור נתוני חיישנים (לדוגמה, נתונים של ג'ירוסקופ או מד תאוצה) מהמשקפיים.
  • AudioManager: ניהול של זרמי אודיו, עוצמת הקול וניתוב במשקפיים.
  • AudioRecord: הקלטת אודיו באמצעות המיקרופון של המשקפיים.