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ą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 funkcje zwykle dostępne tylko przez Wi-Fi, np. proaktywnie pobieraj treści zwykle zarezerwowane dla nielimitowanej sieci Wi-Fi.
- Zapewnij wyjątkowe możliwości sieci 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:
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 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 nieograniczona, 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
. Zmiany w NetworkCapabilities
możesz wykrywać, zastępując metodę onCapabilitiesChanged()
w NetworkCallback
.
registerDefaultNetworkCallback()
powoduje natychmiastowe wywołanie zarejestrowanego wywołania zwrotnego po 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 ograniczony lub odwrotnie.
Sprawdzanie połączenia taryfowego
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 zwrotnegoonCapabilitiesChanged()
, 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_METERED
iNET_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:
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. Sprawdzanie stanu należy połączyć ze sprawdzaniem, czy połączenie jest taryfowane.
śledzenie połączeń 5G na potrzeby analityki.
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
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ślania typu 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:
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 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 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 stanie 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. W miarę jak zmienia się typ i siła połączenia, dostosowuj odpowiednio działanie aplikacji.