Dodaj funkcje 5G do swojej aplikacji

Android 11 dodaje funkcje obsługujące 5G w Twoich aplikacjach. W tym artykule omawiamy ich funkcje i pokazujemy, jak dodanie do aplikacji funkcji związanych z 5G może poprawić wrażenia użytkowników.

Dla 5G

Decydując się na korzystanie z sieci 5G, zastanów się, jakie wrażenia chcesz tworzyć. Oto kilka sposobów, w jakie 5G może ulepszyć aplikację:

  • Dzięki zmniejszeniu szybkości i opóźnień sieci 5G automatycznie zwiększasz szybkość i jakość obsługi.
  • poprawić wrażenia użytkowników, np. wyświetlając filmy w rozdzielczości 4K lub pobierając zasoby gry w wyższej rozdzielczości;
  • Gdy potwierdzisz, że zwiększone użycie danych nie będzie kosztować użytkownika, uwzględnij funkcje normalnie udostępniane tylko przez Wi-Fi, np. proaktywnie pobieraj treści zwykle zarezerwowane dla Wi-Fi bez pomiaru.
  • Zapewniają wyjątkowe funkcje 5G, które działają tylko przy dużej szybkości i małym opóźnieniu.

Funkcjonalność 5G

Android 11 wprowadza te zmiany i ulepszenia funkcji:

Sprawdź pomiar wykorzystania limitu

NET_CAPABILITY_TEMPORARILY_NOT_METERED to funkcja dodana w Androidzie 11, która informuje, czy używana sieć nie jest mierzona na podstawie informacji dostarczanych przez operatorów komórkowych.

Nowa flaga będzie używana razem z NET_CAPABILITY_NOT_METERED. Istniejąca flaga wskazuje, czy sieć zawsze jest bez pomiaru użycia danych i dotyczy zarówno połączeń Wi-Fi, jak i komórkowych.

Różnica między tymi dwoma flagami jest taka, że NET_CAPABILITY_TEMPORARILY_NOT_METERED może się zmienić bez zmiany typu sieci. Aplikacje kierowane na Androida 11 mogą używać flagi NET_CAPABILITY_TEMPORARILY_NOT_METERED. Na urządzeniach z Androidem 9 lub starszym system operacyjny nie zgłasza tej flagi. W przypadku aplikacji na Androida 10 ta flaga może być dostępna w zależności od urządzenia.

Gdy ustalisz, że w bieżącej sieci nie ma pomiaru użycia danych tymczasowo lub na stałe, możesz wyświetlać treści w wyższej rozdzielczości (np. filmy w jakości 4K), przesyłać dzienniki, tworzyć kopie zapasowe plików i aktywnie pobierać treści.

Poniżej znajdziesz instrukcje dodawania do aplikacji sprawdzania pomiaru wykorzystania limitu.

Rejestrowanie wywołania zwrotnego sieci

Zarejestruj wywołanie zwrotne sieci za pomocą polecenia ConnectivityManager.registerDefaultNetworkCallback(), aby usłyszeć informację o zmianie parametru NetworkCapabilities. Możesz wykryć zmiany w NetworkCapabilities, zastępując metodę onCapabilitiesChanged() w NetworkCallback.

registerDefaultNetworkCallback() powoduje, że zarejestrowane wywołanie zwrotne uruchamia się natychmiast po zarejestrowaniu, dostarczając aplikacji informacje o bieżącym stanie. Przyszłe wywołania zwrotne mają kluczowe znaczenie dla podejmowania przez aplikacje odpowiednich działań, gdy stan zmienia się z bez pomiaru na sieć z pomiarem użycia danych lub na odwrót.

Sprawdź pomiar wykorzystania limitu

Użyj obiektu NetworkCapabilites otrzymanego w wywołaniu zwrotnym sieci, aby sprawdzić dane wyjściowe tego kodu:

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)

Jeśli wartość to true (prawda), możesz traktować sieć jako bez pomiaru.

Dodatkowe uwarunkowania

Podczas korzystania z tej funkcji pamiętaj o tych kwestiach:

  • Użycie flagi NET_CAPABILITY_TEMPORARILY_NOT_METERED wymaga skompilowania aplikacji pod kątem pakietu SDK Androida 11.

  • Możliwość NET_CAPABILITY_NOT_METERED jest stała w sieci. Sieć, która obsługuje tę funkcję, zostanie rozłączona automatycznie, jeśli straci możliwość korzystania (z pomiarem użycia danych).

  • Z kolei NET_CAPABILITY_TEMPORARILY_NOT_METERED może się zmienić w sieci bez jej odłączenia. Dlatego aplikacje muszą nasłuchiwać wywołania zwrotnego onCapabilitiesChanged(), gdy sieć powróci do stanu z pomiarem użycia danych (czyli straci możliwość NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • W sieci nie mogą znajdować się jednocześnie NET_CAPABILITY_NOT_METERED i NET_CAPABILITY_TEMPORARILY_NOT_METERED.

Wykrywanie 5G

Od Androida 11 możesz sprawdzać, czy urządzenie jest połączone z siecią 5G, korzystając z wywołania interfejsu API opartego na wywołaniach zwrotnych. Możesz sprawdzić, czy połączenie jest siecią 5G NR (samodzielną) czy NSA (niesamodzielną).

Oto niektóre zastosowania tego wywołania interfejsu API:

  • Wyświetlanie marki 5G w aplikacji, aby podkreślić, że oferujesz wyjątkowe funkcje 5G.

  • Aktywowanie wyjątkowej funkcji 5G w aplikacji tylko w przypadku sieci 5G. Łączenie tej funkcji z kontrolą stanu należy połączyć ze sprawdzaniem wykorzystania limitu.

  • Śledzenie połączeń 5G na potrzeby analiz.

Aby przetestować wykrywanie sieci 5G bez urządzenia 5G, możesz użyć funkcji dodanych do emulatora pakietu Android SDK.

Wykrywanie sieci 5G

Wywołaj TelephonyManager.listen() i przekaż LISTEN_DISPLAY_INFO_CHANGED, by określić, czy użytkownik ma połączenie z siecią 5G. Zastąp metodę onDisplayInfoChanged(), by określić typ sieci używanej do wyświetlania. Wyjątkiem jest sytuacja, w której operator wyświetla 5G jako RAT w swojej sieci mmWave, zwracana jest wartość OVERRIDE_NETWORK_TYPE_NR_NSA.

W tabeli poniżej znajdziesz sieci odpowiadające wartościom:

Typ zwrotu Sieć
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced Pro LTE (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA NR (5G) w sieciach 5G Sub-6
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE (5G+/5G UW) w sieciach 5G mmWave

Szacowana przepustowość

Oszacowanie przepustowości używa obiektu NetworkCapabilities, z którym pracujesz, do określania pomiaru wykorzystania. Za pomocą tego obiektu możesz uzyskać szacunkową przepustowość.

Niezawodność i dokładność metod szacowania przepustowości getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() poprawiają się w Androidzie 11 dzięki uaktualnieniom obsługi platformy oraz poprawkom błędów związanych z platformą/modem tak, aby spełniały wymagania 5G.

Wartości domyślne przepustowości podają tylko wskazówki dotyczące uruchamiania aplikacji. Pomoże Ci to w scenariuszu „uruchamiania w przypadku bezczynności”. Aplikacja powinna mierzyć to, co widzi, gdy użytkownicy zaczną z niej korzystać, i dynamicznie dostosowywać sposób jej przesyłania. Możesz na przykład wybrać rozdzielczość wideo na podstawie szacowanej przepustowości podczas uruchamiania. Sprawdzaj szacunkowe wartości, gdy użytkownicy korzystają z aplikacji. Gdy typ i siła połączenia się zmieni, odpowiednio dostosuj działanie aplikacji.