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