افزودن قابلیت‌های نسل پنجم به برنامه

Android 11 عملکردی را برای پشتیبانی از 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 نسخه ۹ و پایین‌تر را اجرا می‌کنند، سیستم‌عامل پرچم را گزارش نمی‌کند. برای برنامه‌هایی که در Android 10 اجرا می‌شوند، این پرچم ممکن است دردسترس باشد، بسته به دستگاهی که در آن اجرا می‌شود.

وقتی تشخیص دادید که شبکه فعلی به‌طور موقت یا دائم نامحدود است، می‌توانید محتوای با وضوح بالاتر (مثل ویدیو 4k) نمایش دهید، گزارش‌ها را بارگذاری کنید، از فایل‌ها پشتیبان‌گیری کنید، و محتوا را به‌طور فعال بارگیری کنید.

بخش‌های زیر مراحل افزودن بررسی محدودیت مصرف به برنامه را پوشش می‌دهد.

ثبت کردن پاسخ تماس شبکه

برای ثبت‌نام در فراخوانی شبکه، از ConnectivityManager.registerDefaultNetworkCallback() استفاده کنید تا وقتی NetworkCapabilities تغییر کرد مطلع شوید. با لغو کردن روش onCapabilitiesChanged() در NetworkCallback، می‌توانید تغییرات NetworkCapabilities را شناسایی کنید.

registerDefaultNetworkCallback() باعث می‌شود که فراخوانی برگشتی ثبت‌شده بلافاصله پس‌از ثبت شدن فعال شود و اطلاعاتی درباره وضعیت فعلی به برنامه بدهد. فراخوانی‌های برگشتی آینده برای برنامه‌ها بسیار مهم هستند تا وقتی وضعیت از نامحدود به محدود یا برعکس تغییر می‌کند، اقدام مناسب را انجام دهند.

بررسی محدود بودن

از شیء NetworkCapabilites که در فراخوانی برگشتی شبکه دریافت می‌کنید استفاده کنید تا برونداد کد زیر را بررسی کنید:

کاتلین

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

جاوا

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

اگر مقدار درست باشد، می‌توانید شبکه را به‌عنوان نامحدود درنظر بگیرید.

سایر ملاحظات

هنگام کار با این عملکرد، موارد زیر را به‌خاطر داشته باشید:

  • استفاده از پرچم NET_CAPABILITY_TEMPORARILY_NOT_METERED مستلزم این است که برنامه‌تان را با کیت توسعه نرم‌افزار Android 11 کامپایل کرده باشید.

  • قابلیت NET_CAPABILITY_NOT_METERED در شبکه دائمی است. شبکه‌ای با این قابلیت اگر قابلیت را ازدست بدهد (محدود شود)، به‌طور خودکار قطع خواهد شد.

  • درمقابل، NET_CAPABILITY_TEMPORARILY_NOT_METERED ممکن است در شبکه بدون قطع اتصال تغییر کند. بنابراین، برنامه‌ها باید برای onCapabilitiesChanged() callback گوش دهند تا وقتی شبکه به وضعیت محدودشده خود برمی‌گردد (قابلیت NET_CAPABILITY_TEMPORARILY_NOT_METERED را ازدست می‌دهد) آن را مدیریت کنند.

  • شبکه نمی‌تواند هم‌زمان هم NET_CAPABILITY_NOT_METERED و هم NET_CAPABILITY_TEMPORARILY_NOT_METERED داشته باشد.

تشخیص 5G

از Android 11 به‌بعد، می‌توانید بااستفاده از فراخوانی میانای برنامه‌سازی کاربردی مبتنی بر فراخوانی برگشتی، تشخیص دهید که دستگاه به شبکه 5G متصل است یا نه. می‌توانید بررسی کنید که آیا اتصال از نوع شبکه 5G NR (خودکفا) یا NSA (غیرخودکفا) است یا نه.

برخی‌از موارد استفاده از این فراخوانی میانای برنامه‌سازی کاربردی می‌تواند شامل موارد زیر باشد:

  • نمایش نمانام 5G در برنامه‌تان برای برجسته کردن اینکه تجربه 5G منحصربه‌فردی ارائه می‌دهید.

  • فعال کردن تجربه منحصربه‌فرد نسل پنجم در برنامه فقط هنگام اتصال به شبکه نسل پنجم. باید این بررسی وضعیت را با بررسی محدود بودن جفت کنید.

  • پیگیری اتصالات نسل پنجم برای اهداف تجزیه‌وتحلیل.

برای آزمایش تشخیص 5G بدون دستگاه 5G، می‌توانید از ویژگی‌های اضافه‌شده به شبیه‌ساز کیت توسعه نرم‌افزار Android استفاده کنید.

تشخیص 5G

با ارسال LISTEN_DISPLAY_INFO_CHANGED، TelephonyManager.listen() را فراخوانی کنید تا مشخص شود کاربر اتصال شبکه 5G دارد یا نه. روش 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 از نوع موج میلی‌متری

تخمین پهنای باند

تخمین پهنای باند از شیء NetworkCapabilities استفاده می‌کند که هنگام تعیین سنجش‌پذیری با آن کار می‌کنید. بااستفاده از آن شیء می‌توانید تخمین پهنای باند را دریافت کنید.

قابلیت اطمینان و دقت روش‌های تخمین پهنای باند getLinkDownstreamBandwidthKbps() و getLinkUpstreamBandwidthKbps() در Android 11 به‌دلیل ارتقای پشتیبانی چارچوب و رفع اشکال‌های پلاتفرم/مودم برای سازگاری با 5G بهبود یافته است.

پیش‌فرض‌های پهنای باند فقط برای راه‌اندازی برنامه راهنمایی ارائه می‌دهند. این کار به شما در سناریو «راه‌اندازی در حالت بیکار» کمک می‌کند. برنامه شما باید آنچه را می‌بیند اندازه‌گیری کند وقتی کاربرانتان شروع به تعامل با برنامه کردند و رفتار جاری‌سازی آن را به‌طور پویا تنظیم کنید. برای مثال، می‌توانید وضوح ویدیو را برای ارائه براساس تخمین پهنای باند در زمان راه‌اندازی انتخاب کنید. همچنان که کاربرانتان از برنامه استفاده می‌کنند، به بررسی تخمین‌ها ادامه دهید؛ با تغییر نوع و قدرت اتصال آن‌ها، رفتار برنامه‌تان را به‌طور مقتضی تنظیم کنید.