לסוגים שונים של משקפיים עם ממשק קולי ומשקפיים עם תצוגה פנימית יש יכולות שונות. לדוגמה, בכל המשקפיים עם ממשק קולי והמשקפיים עם תצוגה פנימית יש חוויות אודיו באמצעות קול, אבל רק במשקפיים עם תצוגה פנימית יש מסך שבו האפליקציה יכולה להציג ממשקי משתמש שנוצרו באמצעות Jetpack Compose Glimmer.
כדי ליצור חוויית משתמש חלקה במגוון מכשירים, כדאי לתכנן את Activity למשקפיים כך שיבדקו את היכולות השונות של המכשיר. הגישה הזו מפשטת את הפיתוח כי היא מאפשרת לכם ליצור פעילות אחת שמתאימה את ההתנהגות שלה, במקום כמה פעילויות שמטרגטות מכשירים ספציפיים.
הסבר על מחזור החיים של פעילויות חזויות
הפעילות שאתם יוצרים למשקפיים עם ממשק קולי ולמשקפיים עם תצוגה פנימית לא פועלת ישירות במכשיר, אלא מוקרנת למכשיר ממכשיר מארח (כמו הטלפון של המשתמש). פעילויות ייעודיות שאתם יוצרים למטרה הזו נקראות פעילויות מתוכננות. מחזור החיים של פעילויות מוצגות מבוסס על מחזור החיים הרגיל של פעילות, אבל יש גם כמה הבדלים חשובים שתומכים ביכולות של סוגים שונים של משקפיים עם ממשק קולי ומשקפיים עם תצוגה פנימית.
הנה פירוט של האירועים המרכזיים, עם הסברים על אינטראקציות שספציפיות לפעילויות שמוצגות במשקפיים עם ממשק קולי ובמשקפיים עם תצוגה פנימית:
onCreate()- מופעלת כשהפעילות המתוכננת נוצרת.
- כאן מאתחלים את ממשק המשתמש של Jetpack Compose Glimmer ורכיבים אחרים של האפליקציה.
onStart()- הפונקציה מופעלת כשהפעילות המוקרנת מתחילה והמשתמש מודע לאפליקציה.
onResume()- מופעלת כשהפעילות החזויה חוזרת למוקד. כשהפעילות נמצאת במיקוד, אפשר לבצע בה אינטראקציה והיא יכולה לקבל קלט מלוח המגע או מהלחצנים.
- הפונקציה מופעלת כשמרכיבים את המשקפיים אחרי שהם הוסרו מהראש.
onPause()- הפונקציה מופעלת כשהפעילות המוצגת מאבדת את המיקוד, אבל המשתמש עדיין מודע לאפליקציה. כשהפעילות לא במיקוד, אי אפשר לבצע בה פעולות והיא מפסיקה לקבל קלט.
onStop()- הפונקציה נקראת כשהמערכת מזהה שהמשתמש כבר לא מודע לאפליקציה.
- מופעלת כשמסירים את המשקפיים מהראש.
onDestroy()- מופעלת כשהפעילות המוקרנת עומדת להיהרס. כשהשיטה הזו נקראת, המערכת משחררת את כל המשאבים שקשורים לפעילות.
איך מצב התצוגה משפיע על מחזור החיים של הפעילות שמוצגת
ב-Activity רגיל, מצב מחזור החיים משתנה כשהמסך של המכשיר נכבה, בדרך כלל ל-onPause() או ל-onStop(). לעומת זאת, מחזור החיים של הפעילות המוקרנת לא משתנה כשהתצוגה של המשקפיים מופעלת או מושבתת. המשמעות של ההתנהגות הזו היא שהפעילות המוקרנת ממשיכה לפעול במצב "התחלה" או "המשך" גם כשהתצוגה מושבתת, וכך חוויית האודיו של האפליקציה ממשיכה בלי הפרעות.
שינויים אחרים במצב הפעילות שמופעלים על ידי אירועים שונים של המערכת והמשתמש מתנהגים כרגיל.
איך המודעות של המשתמשים משפיעה על הפעילות הצפויה
משתמש יכול להיות מודע לפעילות המוקרנת שלכם גם אם היא לא גלויה. מוּדעוּת מתייחסת לכל הדרכים שבהן המשתמש יכול לחוש את החוויות באפליקציה ולקיים איתן אינטראקציה, כולל:
- האזנה לאודיו, למשוב קולי או לצלילי חיווי אחרים.
- פעולות באפליקציה שמפעילות נורת LED שגלויה למשתמשים, כמו אינדיקטור בנושא פרטיות אם האפליקציה ניגשת למצלמה או למיקרופון.
במצבים כאלה, המשתמשים מודעים לכך שהמשקפיים עם הממשק הקולי או המשקפיים עם התצוגה הפנימית פעילים ומגיבים, גם אם הם לא מסתכלים על המסך:
- הסטטוס
onStart()של פעילויות מתוכננות מציין שהפעילות פעילה. - המצב
onResume()מציין שהפעילות ניתנת לאינטראקציה ויכולה לקבל קלט מלוח המגע, או שהיא מקבלת הקצאת קלט ראשית.
כל עוד המשתמש מודע לאפליקציה, הפעילות נשארת פעילה ומוצגת בחזית. אם המערכת לא מזהה אותות של מודעות במשך פרק זמן קצר, היא מסירה את הפעילות מהחזית ובסופו של דבר מפעילה את onStop().
הסבר על פעילויות חזויות והקשרים חזויים
משקפיים עם ממשק קולי ומשקפיים עם תצוגה פנימית נחשבים למכשיר מחובר שמרחיב את היכולות של הטלפון של המשתמש. הקשר מוקרן הוא Context שמזהה מכשירים ומאפשר לאפליקציות לתקשר עם החומרה של משקפיים מחוברים (למשל, החיישנים או המצלמה) במקום עם החומרה של הטלפון. כשמפתחים חוויות למשקפיים עם ממשק קולי ולמשקפיים עם תצוגה פנימית, האפליקציה צריכה להשתמש בהקשר מושלך כדי לגשת לחומרה של המשקפיים.
יכול להיות שהאפליקציה תקבל באופן אוטומטי הקשר מוקרן, בהתאם להקשר של הפעילות שמתבצעת:
לפעילויות מוצגות: אם הקוד של האפליקציה פועל מתוך הפעילות המוצגת, ההקשר של הפעילות עצמה הוא כבר הקשר מוצג. בתרחיש הזה, שיחות שמתבצעות במסגרת הפעילות הזו כבר יכולות לגשת לחומרה של המשקפיים.
לאפליקציות או לשירותים בטלפון: אם חלק מהאפליקציה שלא קשור לפעילות המוקרנת (כמו פעילות בטלפון או שירות) צריך לגשת לחומרה של המשקפיים, הוא חייב לקבל באופן מפורש הקשר מוקרן. כדי לעשות את זה, משתמשים ב-method
createProjectedDeviceContext().
מידע נוסף זמין במאמר שימוש בהקשר מושלך כדי לגשת לחומרה במשקפיים עם ממשק קולי ובמשקפיים עם תצוגה פנימית.
הסבר על ממשקי API שמותאמים למכשירים
ממשקי API רגילים מסוימים של Android משנים את החומרה של המכשיר שאליו הם ניגשים בהתאם ל-Context של הפעילות שקוראת להם. כשהממשקים האלה מקבלים הקשר מוקרן, הם ניגשים לחומרה של המשקפיים במקום לחומרה של הטלפון המארח:
-
CameraManager: גישה למצלמה במשקפיים. -
SensorManager: מאחזר נתוני חיישנים (לדוגמה, נתוני ג'ירוסקופ או מד תאוצה) מהמשקפיים. -
AudioManager: מנהל את שידורי האודיו, עוצמת הקול והניתוב במשקפיים.