ב-Android 11 נוספה פונקציונליות לתמיכה ב-5G באפליקציות. במאמר הזה נסביר על הפונקציונליות ונספק סקירה כללית על האופן שבו הוספת פונקציונליות ספציפית ל-5G לאפליקציה יכולה לשפר את חוויית המשתמש.
פיתוח ל-5G
כשאתם מחליטים איך להשתמש ב-5G, כדאי לחשוב על סוגי החוויות שאתם מנסים ליצור. הנה כמה דרכים שבהן 5G יכול לשפר את האפליקציה שלכם:
- לשפר באופן אוטומטי את חוויית השימוש הנוכחית בזכות השיפורים במהירות ובזמן האחזור של 5G.
- שיפור חוויית המשתמש, למשל על ידי הצגת סרטון באיכות 4K או הורדה של נכסי משחק ברזולוציה גבוהה יותר.
- אחרי שמוודאים שהשימוש המוגבר בחבילת הגלישה לא יגרור עלויות למשתמש, אפשר לכלול חוויות שמוצעות בדרך כלל רק ב-Wi-Fi, כמו הורדה יזומה של תוכן ששמור בדרך כלל ל-Wi-Fi ללא הגבלה.
- לספק חוויות ייחודיות ל-5G שפועלות רק במהירויות גבוהות ובזמן אחזור נמוך.
פונקציונליות של 5G
Android 11 כוללת את השינויים והשיפורים הבאים בפונקציונליות:
בדיקה של חיבורים לפי נפח
NET_CAPABILITY_TEMPORARILY_NOT_METERED היא תכונה שנוספה ב-Android 11, שמאפשרת לדעת אם הרשת שבה אתם משתמשים היא ללא הגבלה, על סמך מידע שסופק על ידי ספקי סלולר.
הדגל החדש משמש לצד NET_CAPABILITY_NOT_METERED.
הדגל הקיים מציין אם רשת מסוימת היא תמיד ללא הגבלת נפח, והוא חל על חיבורי Wi-Fi ועל חיבורים סלולריים.
ההבדל בין שני הדגלים הוא
NET_CAPABILITY_TEMPORARILY_NOT_METERED עשוי להשתנות בלי שסוג הרשת
ישתנה. אפליקציות שמטרגטות את Android 11 יכולות להשתמש בדגל NET_CAPABILITY_TEMPORARILY_NOT_METERED. במכשירים שפועלת בהם מערכת Android מגרסה 9 ומטה, מערכת ההפעלה לא תדווח על הדגל. יכול להיות שהדגל הזה יהיה זמין באפליקציות שפועלות ב-Android 10, בהתאם למכשיר שבו הן פועלות.
אחרי שקובעים שהרשת הנוכחית לא מוגבלת זמנית או באופן קבוע, אפשר להציג תוכן ברזולוציה גבוהה יותר (כמו סרטון באיכות 4K), להעלות יומנים, לגבות קבצים ולהוריד תוכן באופן יזום.
בקטעים הבאים מפורטים השלבים להוספת בדיקה של שימוש לפי נפח נתונים לאפליקציה.
רישום של התקשרות חזרה ברשת
להירשם לקבלת שיחה חוזרת מהרשת באמצעות
ConnectivityManager.registerDefaultNetworkCallback()
כדי לשמוע מתי NetworkCapabilities משתנה. כדי לזהות שינויים ב-NetworkCapabilities, אפשר לבטל את השיטה onCapabilitiesChanged() ב-NetworkCallback.
registerDefaultNetworkCallback() גורם להפעלת הקריאה החוזרת (callback) הרשומה מיד לאחר הרישום, וכך האפליקציה מקבלת מידע על המצב הנוכחי. התקשרות חוזרת (callback) בעתיד היא קריטית כדי שהאפליקציות יבצעו את הפעולה המתאימה כשהמצב משתנה מחיבור לא מוגבל לחיבור מוגבל או להיפך.
בדיקה של שימוש לפי נפח
משתמשים באובייקט NetworkCapabilites שמתקבל בקריאה חוזרת (callback) ברשת כדי לבדוק את הפלט של הקוד הבא:
Kotlin
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
Java
NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) || NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)
אם הערך הוא true, אפשר להתייחס לרשת כאל רשת ללא הגבלת נפח.
שיקולים נוספים
כשעובדים עם הפונקציונליות הזו, חשוב לזכור את הדברים הבאים:
כדי להשתמש בדגל
NET_CAPABILITY_TEMPORARILY_NOT_METERED, צריך לקמפל את האפליקציה מול Android 11 SDK.היכולת
NET_CAPABILITY_NOT_METEREDהיא קבועה ברשת. אם רשת עם היכולת הזו תאבד את היכולת (תתחיל לחייב לפי נפח הנתונים), היא תתנתק אוטומטית.לעומת זאת,
NET_CAPABILITY_TEMPORARILY_NOT_METEREDיכול להשתנות ברשת בלי להתנתק. לכן, האפליקציות צריכות להאזין לקריאה החוזרת (callback)onCapabilitiesChanged()כדי לטפל במצב שבו הרשת חוזרת למצב המדוד שלה (מאבדת את היכולתNET_CAPABILITY_TEMPORARILY_NOT_METERED).רשת לא יכולה לכלול גם את
NET_CAPABILITY_NOT_METEREDוגם אתNET_CAPABILITY_TEMPORARILY_NOT_METEREDבו-זמנית.
זיהוי של רשת 5G
החל מ-Android 11, אפשר לזהות אם המכשיר מחובר לרשת 5G באמצעות קריאה ל-API מבוססת-callback. אפשר לבדוק אם החיבור הוא לרשת 5G NR (עצמאית) או לרשת NSA (לא עצמאית).
דוגמאות לשימוש בקריאה הזו ל-API:
הצגת מיתוג של 5G באפליקציה כדי להדגיש שאתם מציעים חוויית 5G ייחודית.
הפעלת חוויית 5G ייחודית באפליקציה רק כשמחוברים לרשת 5G. מומלץ לבדוק את הסטטוס הזה יחד עם בדיקה של תשלום לפי שימוש.
מעקב אחרי חיבורים ל-5G למטרות ניתוח נתונים.
כדי לבדוק את זיהוי ה-5G בלי מכשיר 5G, אפשר להשתמש בתכונות שנוספו לאמולטור של Android SDK.
זיהוי רשת 5G
מתקשרים אל
TelephonyManager.listen(),
מעבירים את
LISTEN_DISPLAY_INFO_CHANGED,
כדי לקבוע אם למשתמש יש חיבור לרשת 5G. משנים את ברירת המחדל של method onDisplayInfoChanged() כדי לקבוע את סוג הרשת שמשמשת למטרות הצגה. יוצא מן הכלל אחד הוא שאם הספק בוחר להציג את 5G כ-RAT עבור רשת mmWave שלו, מוחזר OVERRIDE_NETWORK_TYPE_NR_NSA.
בטבלה הבאה מוצגים הרשתות שתואמות לערכים:
| סוג ההחזרה | רשת |
|---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
Advanced pro LTE (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) לרשתות 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) לרשתות 5G mmWave |
הערכת רוחב הפס
הערכת רוחב הפס מתבצעת באמצעות האובייקט NetworkCapabilities שעובדים איתו כשקובעים את השימוש לפי נפח. אפשר להשתמש באובייקט הזה כדי לקבל הערכות רוחב פס.
המהימנות והדיוק של שיטות ההערכה של רוחב הפס getLinkDownstreamBandwidthKbps() ו-getLinkUpstreamBandwidthKbps() משתפרים ב-Android 11 בעקבות שדרוגים לתמיכה במסגרת ותיקוני באגים בפלטפורמה או במודם, כדי להתאים ל-5G.
הגדרות ברירת המחדל של רוחב הפס מספקות הנחיות רק לגבי הפעלת האפליקציה. הפעולה הזו תעזור לכם בתרחיש של הפעלה במצב המתנה. האפליקציה צריכה למדוד את מה שהיא רואה ברגע שהמשתמשים מתחילים ליצור אינטראקציה עם האפליקציה, ולשנות את התנהגות הסטרימינג שלה באופן דינמי. לדוגמה, יכול להיות שתבחרו את הרזולוציה של הסרטון שיוצג על סמך הערכת רוחב הפס בזמן ההפעלה. כדאי להמשיך לבדוק את האומדנים בזמן שהמשתמשים משתמשים באפליקציה. אם סוג החיבור והעוצמה שלו משתנים, צריך להתאים את אופן הפעולה של האפליקציה בהתאם.