Dodaj funkcje 5G do swojej aplikacji

Android 11 ma dodatkowe funkcje umożliwiające obsługę sieci 5G w aplikacjach. W tym temacie opisujemy ich funkcje i podpowiadamy, jak dodanie do aplikacji funkcji związanych z 5G może poprawić wygodę użytkowników.

Z myślą o 5G

Podejmując decyzję o tym, jak zacząć korzystać z 5G, zastanów się, jakiego typu wrażenia chcesz oferować. Oto kilka sposobów na ulepszenie aplikacji 5G:

  • Automatycznie przyspieszaj i ulepszaj bieżące działanie dzięki ulepszonej szybkości i opóźnieniu w sieci 5G.
  • Zadbaj o wrażenia użytkowników, wyświetlając filmy w rozdzielczości 4K lub pobierając gry w wyższej rozdzielczości.
  • Gdy potwierdzisz, że zwiększone użycie danych nie wiąże się z kosztami użytkownika, uwzględnij rozwiązania, które zwykle są dostępne tylko przez Wi-Fi, np. proaktywne pobieranie treści zwykle zarezerwowanych dla sieci Wi-Fi bez pomiaru.
  • Zapewnij użytkownikom wyjątkowe możliwości w zakresie sieci 5G, które działają tylko z dużą szybkością i małym opóźnieniem.

Obsługa 5G

W Androidzie 11 wprowadziliśmy te zmiany i ulepszenia:

Sprawdź pomiar użycia danych

NET_CAPABILITY_TEMPORARILY_NOT_METERED to dodana w Androidzie 11 funkcja, która na podstawie informacji dostarczonych przez operatorów komórkowych informuje, czy używana sieć jest bez pomiaru użycia danych.

Nowa flaga jest używana razem z tagiem NET_CAPABILITY_NOT_METERED. Istniejąca flaga wskazuje, że w sieci zawsze ma pomiar bez pomiaru, i dotyczy zarówno połączeń Wi-Fi, jak i komórkowych.

Różnica między tymi 2 flagami polega na tym, że 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 lub starszym system nie zgłasza tego oznaczenia. 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 bez pomiaru użycia danych, możesz wyświetlać treści w wyższej rozdzielczości (np. 4K), przesyłać dzienniki, tworzyć kopie zapasowe plików i aktywnie pobierać treści.

W sekcjach poniżej dowiesz się, jak dodać do aplikacji funkcję sprawdzania wykorzystania limitu.

Rejestrowanie wywołania zwrotnego sieci

Zarejestruj się na wywołanie zwrotne sieci, używając parametru 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 aktywuje się natychmiast po zarejestrowaniu, udostępniając aplikacji informacje o bieżącym stanie. Przyszłe wywołania zwrotne mają kluczowe znaczenie dla podejmowania przez aplikacje odpowiednich działań, gdy stan zmieni się z bez pomiaru na wartość 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 prawda, sieć można traktować jako sieć bez pomiaru.

Dodatkowe uwagi

Podczas pracy nad tą funkcją 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ści NET_CAPABILITY_NOT_METERED w sieci są stałe. Sieć z tą funkcją zostanie automatycznie odłączona, jeśli jej utracisz (czyli stanie się z pomiarem użycia danych).

  • Natomiast NET_CAPABILITY_TEMPORARILY_NOT_METERED może zmienić się w sieci bez rozłączania. Dlatego aplikacje muszą nasłuchiwać wywołania zwrotnego onCapabilitiesChanged(), gdy sieć wraca do stanu z pomiarem użycia danych (traci możliwość NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Sieć nie może zawierać jednocześnie elementów NET_CAPABILITY_NOT_METERED i NET_CAPABILITY_TEMPORARILY_NOT_METERED.

Wykrywanie 5G

Począwszy od Androida 11 możesz wykryć, czy urządzenie jest połączone z siecią 5G, korzystając z wywołania interfejsu API z wywołaniem zwrotnym. Możesz sprawdzić, czy połączenie to sieć 5G NR (samodzielna) czy NSA (niesamodzielna).

Przykładowe zastosowania tego wywołania interfejsu API mogą obejmować:

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

  • Aktywowanie unikalnych funkcji 5G w aplikacji tylko w sieci 5G. Ten stan należy połączyć ze sprawdzaniem pomiaru użycia danych.

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

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

Wykrywanie 5G

Wywołaj metodę TelephonyManager.listen(), przekazywanej w drodze LISTEN_DISPLAY_INFO_CHANGED, aby określić, czy użytkownik ma połączenie z siecią 5G. Aby określić typ sieci używanej do wyświetlania, zastąp metodę onDisplayInfoChanged(). Jedynym wyjątkiem jest to, że jeśli operator zdecyduje się wyświetlać 5G jako interfejs RAT dla swojej sieci mmWave, zwracany jest parametr OVERRIDE_NETWORK_TYPE_NR_NSA.

Tabela poniżej zawiera sieci odpowiadające wartościom:

Typ zwracania 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órego korzystasz podczas określania pomiaru wykorzystania. Możesz uzyskać szacunkową przepustowość, używając tego obiektu.

W Androidzie 11 poprawiają się niezawodność i dokładność metod szacowania przepustowości getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() ze względu na ulepszenia w zakresie obsługi platformy i poprawki błędów dotyczących platformy/modemu umożliwiające obsługę 5G.

Domyślne ustawienia przepustowości dotyczą tylko uruchamiania aplikacji. Powinno to pomóc Ci w scenariuszu „uruchamiania w przypadku bezczynności”. Aplikacja powinna mierzyć to, co widzi, gdy użytkownicy zaczęli z niej korzystać, i dynamicznie dostosowywać jej zachowanie w przypadku strumieniowania. Możesz na przykład wybrać rozdzielczość wideo, którą chcesz udostępnić na podstawie szacowanej przepustowości podczas uruchamiania. Sprawdzaj szacunki, gdy użytkownicy korzystają z aplikacji. W miarę zmiany typu i siły połączenia możesz odpowiednio dostosowywać działanie aplikacji.