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 zwrotnegoonCapabilitiesChanged()
, 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
iNET_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.