Dodawanie funkcji 5G do aplikacji

Android 11 dodaje funkcje obsługujące 5G w aplikacjach. W tym temacie opisujemy funkcje i przedstawiamy ogólne informacje o tym, jak dodanie do aplikacji funkcji związanych z 5G może poprawić wrażenia użytkowników.

Tworzenie aplikacji na potrzeby 5G

Zastanawiając się, jak wykorzystać 5G, pomyśl o tym, jakie wrażenia chcesz zapewnić użytkownikom. Oto kilka sposobów, w jakie 5G może ulepszyć Twoją aplikację:

  • Automatycznie przyspieszaj i ulepszaj obecne funkcje dzięki większej szybkości i mniejszym opóźnieniom w sieci 5G.
  • Poprawić wrażenia użytkownika, np. przez wyświetlanie filmów w rozdzielczości 4K lub pobieranie zasobów gry w wyższej rozdzielczości.
  • Po potwierdzeniu, że zwiększone wykorzystanie danych nie będzie kosztować użytkownika, uwzględnij funkcje, które zwykle są dostępne tylko przez Wi-Fi, takie jak proaktywne pobieranie treści, które zwykle są zarezerwowane dla nielimitowanego Wi-Fi.
  • Zapewnij unikalne funkcje 5G, które działają tylko przy wysokich prędkościach i małych opóźnieniach.

Funkcje 5G

Android 11 wprowadza te zmiany i ulepszenia funkcji:

Sprawdzanie, czy połączenie jest taryfowe

NET_CAPABILITY_TEMPORARILY_NOT_METERED to funkcja dodana w Androidzie 11, która na podstawie informacji od operatorów komórkowych informuje, czy sieć, z której korzystasz, jest siecią bez pomiaru transmisji danych.

Nowy znacznik jest używany razem z NET_CAPABILITY_NOT_METERED. Istniejąca flaga wskazuje, czy sieć jest zawsze bezpłatna, 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ę 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 i starszym system operacyjny nie będzie raportować 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 działa aplikacja.

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

W sekcjach poniżej znajdziesz instrukcje dodawania do aplikacji sprawdzania, czy połączenie jest taryfowe.

Rejestrowanie wywołania zwrotnego sieci

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

registerDefaultNetworkCallback() powoduje, że zarejestrowane wywołanie zwrotne jest aktywowane natychmiast po zarejestrowaniu, co dostarcza aplikacji informacji o bieżącym stanie. Przyszłe wywołania zwrotne są kluczowe dla aplikacji, aby mogły podjąć odpowiednie działania, gdy stan zmienia się z połączenia bez pomiaru na połączenie z pomiarem lub odwrotnie.

Sprawdzanie, czy połączenie jest taryfowe

Użyj obiektu NetworkCapabilites, który otrzymasz 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”, 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 pakietem SDK Androida 11.

  • Funkcja NET_CAPABILITY_NOT_METERED jest na stałe przypisana do sieci. Sieć z tą funkcją rozłączy się automatycznie, jeśli utraci tę funkcję (stanie się siecią taryfową).

  • Z kolei NET_CAPABILITY_TEMPORARILY_NOT_METERED może się zmienić w sieci bez rozłączania. Dlatego aplikacje muszą nasłuchiwać wywołania zwrotnego onCapabilitiesChanged(), aby obsłużyć sytuację, gdy sieć powróci do stanu taryfowego (utraci funkcję NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Sieć nie może mieć jednocześnie NET_CAPABILITY_NOT_METERED i NET_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 unikalnych funkcji 5G w aplikacji tylko wtedy, gdy użytkownik jest w zasięgu sieci 5G; Warto połączyć to sprawdzanie stanu ze sprawdzaniem, czy połączenie jest taryfowe.

  • śledzenie połączeń 5G na potrzeby analizy.

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

Wykrywanie 5G

Wywołaj metodę TelephonyManager.listen(), przekazując LISTEN_DISPLAY_INFO_CHANGED, aby określić, czy użytkownik ma połączenie sieciowe 5G. Zastąp metodę onDisplayInfoChanged(), aby określić typ sieci używanej do wyświetlania. Wyjątkiem jest sytuacja, gdy operator zdecyduje się wyświetlać 5G jako RAT dla swojej sieci mmWave. Wtedy 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,

Oszacowanie przepustowości

Szacowanie przepustowości wykorzystuje obiekt NetworkCapabilities, z którym pracujesz podczas określania, czy połączenie jest taryfowe. Za pomocą tego obiektu możesz uzyskać szacunkowe dane o przepustowości.

Niezawodność i dokładność metod szacowania przepustowości getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() zostały ulepszone w Androidzie 11 dzięki uaktualnieniu obsługi platformy i poprawkom błędów platformy/modemu, które umożliwiają obsługę 5G.

Domyślne ustawienia przepustowości zawierają wskazówki tylko dotyczące uruchamiania aplikacji. Powinno to pomóc w scenariuszu „uruchamiania w trybie bezczynności”. Aplikacja powinna mierzyć to, co widzi, gdy użytkownicy zaczną z niej korzystać, i dynamicznie dostosowywać sposób strumieniowania. Możesz na przykład wybrać rozdzielczość filmu, która będzie wyświetlana na podstawie szacowanej przepustowości podczas uruchamiania. Sprawdzaj szacunki, gdy użytkownicy korzystają z aplikacji. Gdy zmienia się typ i siła połączenia, odpowiednio dostosowuj działanie aplikacji.