Dodawanie funkcji 5G do aplikacji

Android 11 dodaje funkcje obsługi sieci 5G w aplikacjach. W tym artykule opisujemy funkcje i wyjaśniamy, jak dodanie do aplikacji funkcji związanych z 5G może poprawić komfort użytkowników.

Stworzone z myślą o 5G

Zastanów się, jakie rodzaje usług chcesz tworzyć, aby zdecydować, jak wykorzystać 5G. Oto kilka sposobów, w jakie 5G może ulepszyć Twoją aplikację:

  • Automatycznie przyspieszaj i ulepszaj obecne rozwiązania dzięki większej szybkości i mniejszym opóźnieniom w przypadku 5G.
  • Podnieś jakość obsługi, np. wyświetlaj filmy w rozdzielczości 4K lub pobieraj zasoby gier w wyższej rozdzielczości.
  • Po potwierdzeniu, że zwiększone wykorzystanie danych nie będzie wiązać się z dodatkowymi kosztami dla użytkownika, udostępnij funkcje zwykle dostępne tylko przez Wi-Fi, np. proaktywnie pobieraj treści zwykle zarezerwowane dla nielimitowanej sieci Wi-Fi.
  • Zapewniaj wyjątkowe funkcje 5G, które działają tylko przy dużej szybkości i małym opóźnieniu.

Funkcja 5G

Android 11 wprowadza te zmiany i ulepszenia w zakresie funkcjonalności:

Sprawdzanie pomiaru

NET_CAPABILITY_TEMPORARILY_NOT_METERED to funkcja dodana w Androidzie 11, która na podstawie informacji dostarczonych przez operatorów komórkowych informuje, czy sieć, z której korzystasz, jest nielimitowana.

Nowy znacznik jest używany razem ze znacznikiem NET_CAPABILITY_NOT_METERED. Obecna flaga wskazuje, czy sieć jest zawsze nielimitowana, i dotyczy zarówno połączeń Wi-Fi, jak i komórkowych.

Różnica między tymi 2 rodzajami flagi może się zmieniać bez zmiany typu sieci.NET_CAPABILITY_TEMPORARILY_NOT_METERED Aplikacje kierowane na Androida 11 mogą używać flagi NET_CAPABILITY_TEMPORARILY_NOT_METERED. Na urządzeniach z Androidem 9 i starszymi wersjami system operacyjny nie będzie zgłaszać tego flagi. W przypadku aplikacji działających na Androidzie 10 ta flaga może być dostępna w zależności od urządzenia, na którym jest uruchomiona.

Gdy stwierdzisz, że bieżąca sieć jest tymczasowo lub na stałe nielimitowana, możesz wyświetlać treści w wyższej rozdzielczości (np. filmy w 4K), przesyłać logi, tworzyć kopie zapasowe plików i proaktywnie pobierać treści.

W kolejnych sekcjach znajdziesz instrukcje dodawania do aplikacji sprawdzania, czy połączenie jest taryfowane.

Rejestrowanie wywołania zwrotnego sieci

Zarejestruj wywołanie zwrotne sieci za pomocą ConnectivityManager.registerDefaultNetworkCallback() aby otrzymywać powiadomienia o zmianach w NetworkCapabilities. Możesz wykrywać zmiany w NetworkCapabilities, zastępując metodę onCapabilitiesChanged()NetworkCallback.

registerDefaultNetworkCallback() powoduje natychmiastowe wywołanie zarejestrowanej funkcji zwrotnej po jej zarejestrowaniu, co umożliwia przekazanie aplikacji informacji o bieżącym stanie. Wywołania zwrotne Future są kluczowe, aby aplikacje mogły podejmować odpowiednie działania, gdy stan zmienia się z nieograniczonego na limitowany lub odwrotnie.

Sprawdzanie pomiaru

Użyj obiektu NetworkCapabilites, który otrzymujesz w wywołaniu zwrotnym sieci, aby sprawdzić wynik działania 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 prawda, możesz traktować sieć jako nielimitowaną.

Inne rzeczy, które warto wziąć pod uwagę

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

  • Użycie flagi NET_CAPABILITY_TEMPORARILY_NOT_METERED wymaga skompilowania aplikacji z użyciem pakietu SDK Androida 11.

  • Funkcja NET_CAPABILITY_NOT_METERED jest trwale dostępna w sieci. Sieć z tą funkcją zostanie automatycznie odłączona, jeśli ją utraci (zostanie objęta pomiarem).

  • Natomiast NET_CAPABILITY_TEMPORARILY_NOT_METERED może się zmienić w sieci bez odłączania. Dlatego aplikacje muszą nasłuchiwać wywołania zwrotnego onCapabilitiesChanged(), aby obsługiwać sytuacje, w których sieć wraca do stanu limitowanego (traci możliwość NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Sieć nie może mieć jednocześnie wartości NET_CAPABILITY_NOT_METEREDNET_CAPABILITY_TEMPORARILY_NOT_METERED.

Wykrywanie sieci 5G

Od Androida 11 możesz wykrywać, czy urządzenie jest połączone z siecią 5G, za pomocą wywołania interfejsu API opartego na wywołaniu zwrotnym. Możesz sprawdzić, czy połączenie jest siecią 5G NR (samodzielną) czy NSA (niesamodzielną).

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

Aby przetestować wykrywanie sieci 5G bez urządzenia obsługującego tę technologię, możesz użyć funkcji dodanych do emulatora pakietu Android SDK.

Wykrywanie sieci 5G

Call TelephonyManager.listen(), passing in LISTEN_DISPLAY_INFO_CHANGED, to determine if the user has a 5G network connection. Zastąp metodę onDisplayInfoChanged() określania typu sieci używanej do wyświetlania. Wyjątkiem jest sytuacja, w której operator zdecyduje się wyświetlać 5G jako RAT w przypadku sieci mmWave. W takim przypadku zwracana jest wartość OVERRIDE_NETWORK_TYPE_NR_NSA.

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

Typ zwracanej wartości Sieć
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced pro LTE (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA NR (5G) w przypadku sieci 5G Sub-6
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE (5G+/5G UW) w przypadku sieci 5G mmWave;

Szacowanie przepustowości

Szacowanie przepustowości korzysta z obiektu NetworkCapabilities, z którym pracujesz podczas określania limitu danych. Za pomocą tego obiektu możesz uzyskać szacunkowe wartości przepustowości.

Niezawodność i dokładność metod szacowania przepustowości getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() w Androidzie 11 ulegają poprawie dzięki ulepszeniom obsługi w ramach platformy i poprawkom błędów platformy/modemu, które uwzględniają 5G.

Domyślne wartości przepustowości zawierają wskazówki tylko dotyczące uruchamiania aplikacji. Powinno to pomóc w przypadku scenariusza „uruchamianie w trybie bezczynności”. Aplikacja powinna mierzyć to, co widzi, gdy użytkownicy zaczną z niej korzystać, i dynamicznie dostosowywać sposób przesyłania strumieniowego. Możesz na przykład wybrać rozdzielczość filmu na podstawie szacowanej przepustowości podczas uruchamiania. Stale sprawdzaj szacunki, gdy użytkownicy korzystają z aplikacji. Dostosowuj działanie aplikacji do zmian typu i siły połączenia.