Android 11 dodaje funkcje obsługi sieci 5G w aplikacjach. W tym artykule opisujemy te funkcje i przedstawiamy, jak dodanie do aplikacji funkcji specyficznych dla sieci 5G może poprawić komfort użytkowników.
Tworzenie aplikacji pod kątem sieci 5G
Zastanów się, jakie typy aplikacji chcesz tworzyć, i na tej podstawie zdecyduj, jak wykorzystać sieć 5G. Oto kilka sposobów, w jakie sieć 5G może ulepszyć Twoją aplikację:
- Dzięki większej szybkości i mniejszym opóźnieniom w sieci 5G obecne aplikacje będą działać szybciej i lepiej.
- Zwiększenie komfortu użytkowników, 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 zużycie danych nie będzie kosztować użytkownika, możesz udostępnić funkcje, które są zwykle dostępne tylko w sieci Wi-Fi, np. proaktywnie pobierać treści zwykle zarezerwowane dla sieci Wi-Fi bez limitu danych.
- Udostępnianie funkcji unikalnych dla sieci 5G, które działają tylko przy dużej szybkości i małych opóźnieniach.
Funkcje sieci 5G
Android 11 wprowadza te zmiany i ulepszenia funkcji:
Sprawdzanie mierzalności
NET_CAPABILITY_TEMPORARILY_NOT_METERED to funkcja dodana w Androidzie 11, która informuje, czy używana sieć jest bez limitu danych na podstawie informacji dostarczonych przez operatorów komórkowych.
Nowa flaga jest używana razem z
NET_CAPABILITY_NOT_METERED.
Istniejąca flaga wskazuje, czy sieć jest zawsze bez limitu danych, 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 przeznaczone na urządzenia z Androidem 11 mogą używać flagi NET_CAPABILITY_TEMPORARILY_NOT_METERED. Na urządzeniach z Androidem 9 i starszym system operacyjny nie będzie zgłaszać tej flagi. W przypadku aplikacji działających na Androidzie 10 ta flaga może być dostępna w zależności od urządzenia.
Gdy stwierdzisz, że bieżąca sieć jest tymczasowo lub na stałe bez limitu danych, możesz wyświetlać treści w wyższej rozdzielczości (np. filmy w rozdzielczoś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 mierzalności.
Rejestrowanie wywołania zwrotnego sieci
Zarejestruj wywołanie zwrotne sieci za pomocą
ConnectivityManager.registerDefaultNetworkCallback()
, aby otrzymywać powiadomienia o zmianach NetworkCapabilities. Zmiany
NetworkCapabilities możesz wykrywać, zastępując metodę
onCapabilitiesChanged()
w NetworkCallback.
registerDefaultNetworkCallback() powoduje, że zarejestrowane wywołanie zwrotne jest wywoływane natychmiast po zarejestrowaniu, co daje aplikacji informacje o bieżącym stanie. Przyszłe wywołania zwrotne są niezbędne, aby aplikacje mogły podejmować odpowiednie działania, gdy stan zmienia się z „bez pomiaru” na „z pomiarem użycia danych” lub odwrotnie.
Sprawdzanie mierzalności
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 „true”, możesz traktować sieć jako bez limitu danych.
Uwagi dodatkowe
Podczas pracy z tą funkcją pamiętaj o tych kwestiach:
Aby używać flagi
NET_CAPABILITY_TEMPORARILY_NOT_METERED, musisz skompilować aplikację za pomocą pakietu Android 11 SDK.Funkcja
NET_CAPABILITY_NOT_METEREDjest trwale przypisana do sieci. Sieć z tą funkcją rozłączy się automatycznie, jeśli ją utraci (zostanie objęta limitem danych).Natomiast
NET_CAPABILITY_TEMPORARILY_NOT_METEREDmoże się zmienić w sieci bez rozłączania. Dlatego aplikacje muszą nasłuchiwać wywołania zwrotnegoonCapabilitiesChanged(), aby obsługiwać sytuacje, w których sieć wraca do stanu z limitem danych (traci funkcjęNET_CAPABILITY_TEMPORARILY_NOT_METERED).Sieć nie może mieć jednocześnie funkcji
NET_CAPABILITY_NOT_METEREDiNET_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 kilka zastosowań tego wywołania interfejsu API:
Wyświetlanie w aplikacji logo 5G, aby podkreślić, że oferujesz unikalne wrażenia w sieci 5G.
Aktywowanie w aplikacji unikalnych funkcji 5G tylko wtedy, gdy jest ona połączona z siecią 5G. Sprawdzanie tego stanu należy połączyć ze sprawdzaniem mierzalności.
Śledzenie połączeń 5G na potrzeby analizy.
Aby przetestować wykrywanie sieci 5G bez urządzenia 5G, możesz użyć funkcji dodanych do emulatora pakietu Android SDK.
Wykrywanie sieci 5G
Aby sprawdzić, czy użytkownik ma połączenie z siecią 5G, wywołaj
TelephonyManager.listen(),
przekazując
LISTEN_DISPLAY_INFO_CHANGED. 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. 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 |
LTE Advanced Pro (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) dla sieci 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) dla sieci 5G mmWave |
Szacowanie przepustowości
Szacowanie przepustowości wykorzystuje obiekt NetworkCapabilities, z którym pracujesz podczas określania mierzalności. Za pomocą tego obiektu możesz uzyskać szacunki przepustowości.
Niezawodność i dokładność metod szacowania przepustowości
getLinkDownstreamBandwidthKbps()
i
getLinkUpstreamBandwidthKbps()
w Androidzie 11 są większe dzięki ulepszeniom obsługi w frameworku oraz
poprawkom błędów platformy i modemu, które uwzględniają sieć 5G.
Domyślne wartości przepustowości zawierają wskazówki tylko dotyczące uruchamiania aplikacji. Powinno to pomóc w scenariuszu „uruchamianie w stanie bezczynności”. Aplikacja powinna mierzyć to, co widzi, gdy użytkownicy zaczną z niej korzystać, i dynamicznie dostosowywać swoje zachowanie podczas przesyłania strumieniowego. Możesz na przykład wybrać rozdzielczość filmu na podstawie szacowanej przepustowości podczas uruchamiania. Gdy użytkownicy korzystają z aplikacji, nadal sprawdzaj szacunki. W miarę jak zmienia się typ i siła połączenia, dostosowuj zachowanie aplikacji.