ב-Android 11 נוספה פונקציונליות לתמיכה ב-5G באפליקציות. במאמר הזה מוסבר על הפונקציונליות של 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), להעלות יומנים, לגבות קבצים ולהוריד תוכן באופן יזום.
בקטעים הבאים מוסבר איך להוסיף לאפליקציה בדיקה של שימוש לפי נפח נתונים.
רישום של קריאה חוזרת (callback) ברשת
נרשמים לקבלת התקשרות חוזרת ברשת באמצעות
ConnectivityManager.registerDefaultNetworkCallback()
כדי לשמוע מתי NetworkCapabilities
משתנה. כדי לזהות שינויים ב-NetworkCapabilities
, צריך לבטל את השיטה onCapabilitiesChanged()
ב-NetworkCallback
.
registerDefaultNetworkCallback()
גורם להפעלת הקריאה החוזרת הרשומה מיד כשנרשמים, וכך האפליקציה מקבלת מידע על המצב הנוכחי. התקשרות חזרה (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
יכול להשתנות ברשת בלי להתנתק. לכן, האפליקציות צריכות להאזין לקריאה החוזרתonCapabilitiesChanged()
כדי לטפל במצב שבו הרשת חוזרת למצב המדוד שלה (מאבדת את היכולתNET_CAPABILITY_TEMPORARILY_NOT_METERED
).אי אפשר להגדיר לרשת גם את
NET_CAPABILITY_NOT_METERED
וגם אתNET_CAPABILITY_TEMPORARILY_NOT_METERED
בו-זמנית.
זיהוי 5G
החל מ-Android 11, אפשר לזהות אם המכשיר מחובר לרשת 5G באמצעות קריאה ל-API מבוססת קריאה חוזרת. אפשר לבדוק אם החיבור הוא לרשת 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.
ערכי ברירת המחדל של רוחב הפס מספקים הנחיות רק לגבי הפעלת האפליקציה. ההגדרה הזו אמורה לעזור לכם בתרחיש של הפעלה בזמן שהמחשב לא פעיל. האפליקציה צריכה למדוד את מה שהיא רואה ברגע שהמשתמשים מתחילים ליצור אינטראקציה עם האפליקציה, ולשנות את התנהגות הסטרימינג שלה באופן דינמי. לדוגמה, יכול להיות שתבחרו את הרזולוציה של הסרטון שיוצג על סמך הערכת רוחב הפס בזמן ההפעלה. כדאי להמשיך לבדוק את האומדנים בזמן שהמשתמשים משתמשים באפליקציה. אם סוג החיבור והעוצמה שלו משתנים, צריך להתאים את אופן הפעולה של האפליקציה בהתאם.