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.

Tworzenie aplikacji pod kątem sieci 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 przyspieszać i ulepszać obecne usługi dzięki większej szybkości i mniejszym opóźnieniom w przypadku 5G.
  • Podnieś jakość obsługi, np. wyświetlając filmy w rozdzielczości 4K lub pobierając zasoby gier w wyższej rozdzielczości.
  • Po potwierdzeniu, że zwiększone zużycie danych nie będzie wiązać się z dodatkowymi kosztami dla użytkownika, udostępnij mu funkcje, które zwykle są dostępne tylko w sieci Wi-Fi, np. proaktywne pobieranie treści zwykle zarezerwowanych dla sieci Wi-Fi bez limitu danych.
  • Zapewnij użytkownikom wyjątkowe możliwości, które są dostępne tylko w sieci 5G i wymagają dużej szybkości i małych opóźnień.

Funkcje 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 używana sieć jest nielimitowana.

Nowy flag jest używany razem z parametrem 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 NET_CAPABILITY_TEMPORARILY_NOT_METERED może się zmieniać bez zmiany typu sieci. 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 sygnału. 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 sekcjach poniżej znajdziesz instrukcje dodawania do aplikacji sprawdzania połączenia z siecią komórkową.

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 zarejestrowanego wywołania zwrotnego po zarejestrowaniu, co zapewnia aplikacji informacje o bieżącym stanie. Przyszłe wywołania zwrotne są kluczowe, aby aplikacje mogły podejmować odpowiednie działania, gdy stan zmienia się z bez pomiaru na z pomiarem użycia danych lub odwrotnie.

Sprawdzanie pomiaru

Użyj obiektu NetworkCapabilites, który otrzymujesz w wywołaniu zwrotnym sieci, aby sprawdzić wynik 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ą.

Uwagi dodatkowe

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 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:

  • Wyświetlanie w aplikacji logo 5G, aby podkreślić, że oferujesz wyjątkowe wrażenia związane z 5G.

  • Aktywowanie w aplikacji unikalnych funkcji 5G tylko wtedy, gdy urządzenie jest połączone z siecią 5G. Ten stan należy sprawdzić w połączeniu ze sprawdzaniem, czy połączenie jest rozliczane.

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

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 funkcję TelephonyManager.listen(), przekazując do niej LISTEN_DISPLAY_INFO_CHANGED, aby sprawdzić, czy użytkownik ma połączenie z siecią 5G. Zastąp metodę onDisplayInfoChanged() określającą typ sieci używanej do wyświetlania. Wyjątkiem jest sytuacja, w której operator zdecyduje się wyświetlać 5G jako typ sieci 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:

Zwracany typ 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 wykorzystuje obiekt NetworkCapabilities, z którym pracujesz podczas określania pomiaru. 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 platformy i poprawkom błędów platformy/modemu, które uwzględniają 5G.

Domyślne wartości przepustowości są podawane tylko w przypadku 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 jej działanie do zmian typu i siły połączenia.