שימוש בספריית Jetpack Picture-in-Picture

ספריית Jetpack של תמונה בתוך תמונה (PiP) מציעה פתרון יעיל וחזק למפתחי אפליקציות ל-Android להטמעה של פונקציונליות PiP, במיוחד להפעלת מדיה, לאפליקציות של שיחות וידאו ולאפליקציות ניווט. הספרייה מספקת ממשק API מאוחד, ועוזרת למנוע קוד שחוזר על עצמו (boilerplate), באגים נפוצים באפליקציה ולשפר את האיכות הכוללת של חוויית המשתמש בתכונה 'תמונה בתוך תמונה'.

ספריית Jetpack של תמונה בתוך תמונה עוזרת להשתמש בממשקי ה-API הקיימים של תמונה בתוך תמונה, ופותרת כמה בעיות מרכזיות וחוסר עקביות בסביבת Android:

  • פיצול מערכת ההפעלה: הספרייה מטפלת אוטומטית בהבדלים בקריאות ל-PiP API בגרסאות שונות של Android, למשל שימוש ב-enterPictureInPictureMode לפני Android 12 וב-isAutoEnterEnabled אחרי, כך שמפתחים לא צריכים לנהל הבדלים בגרסאות.
  • פרמטרים שגויים של PiP: הוא מספק פתרון אחיד להגדרה נכונה של פרמטרים של PiP, למשל setSourceRectHint, כדי ליצור אנימציות חלקות ואיכותיות במהלך הפעלת המדיה.
  • קריאות חוזרות מאוחדות של מצב תמונה בתוך תמונה (PiP): הממשק מאחד את onPictureInPictureModeChanged ו-onPictureInPictureUiStateChanged לממשק קריאה חוזרת מאוחד יחיד (PictureInPictureDelegate.OnPictureInPictureEventListener) כדי לפשט את ניהול המצב וממשק המשתמש.
  • צמצום של קוד שחוזר על עצמו (boilerplate): הספרייה מצמצמת את כמות הקוד שחוזר על עצמו (boilerplate) החוזר על עצמו, ומציעה קבוצות מוגדרות מראש של RemoteActions לתרחישי שימוש נפוצים, כמו רכיבי UI להפעלה ופעולות בשיחות וידאו.
  • הכנה לעתיד: תכונות נוספות של PiP מסופקות דרך ספריית Jetpack, כך שמשתמשים יכולים לגשת לפונקציונליות נוספת במאמץ מינימלי או ללא מאמץ בכלל.

התחלת השימוש ב-Jetpack

כדי להשתמש בספריית Jetpack, צריך להחליף את ההטמעה הקיימת של תמונה בתוך תמונה (PiP) בהטמעה של ממשקי Jetpack API. מורכבות ההטמעה והעלות שלה משתנות בהתאם להטמעה הנוכחית של האפליקציה.

בקטעים הבאים מתוארים כמה תרחישי שימוש אופייניים של PiP ושלבי ההטמעה הנדרשים:

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

ההבדלים העיקריים:

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

שיחת וידאו

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

ההבדלים העיקריים:

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

הפעלת סרטון

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

התכונות העיקריות:

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