Funkcje i interfejsy API – przegląd

Android 12 wprowadza nowe, świetne funkcje i interfejsy API dla deweloperów. W sekcjach poniżej znajdziesz informacje o funkcjach aplikacji i dowiesz się, jak zacząć korzystać z powiązanych interfejsów API.

Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie o różnicach w interfejsach API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji API Androida – nowe interfejsy API są wyróżnione, aby były lepiej widoczne. Aby dowiedzieć się, w jakich obszarach zmiany na platformie mogą wpłynąć na Twoje aplikacje, zapoznaj się ze zmianami w działaniu Androida 12 w przypadku aplikacji kierowanych na Androida 12 i wszystkich aplikacji.

Interfejs użytkownika

Material You

W Androidzie 12 wprowadziliśmy nowy język projektowania o nazwie Material You, który pomaga tworzyć piękniejsze i bardziej spersonalizowane aplikacje. Aby wprowadzić do swoich aplikacji wszystkie najnowsze aktualizacje Material Design 3, wypróbuj wersję alfa komponentów Material Design.

Material You

Ulepszenia widżetów

Android 12 wprowadza zmiany w istniejącym interfejsie Widgets API, aby poprawić wrażenia użytkowników i deweloperów na platformie i w programach uruchamiających. Opracowaliśmy przewodnik, który pomoże Ci zapewnić zgodność widżetu z Androidem 12 i odświeżyć go za pomocą nowych funkcji.

Więcej informacji znajdziesz w artykule Ulepszenia widżetów w Androidzie 12.

Wstawianie szczegółowych treści

Android 12 wprowadza nowy ujednolicony interfejs API, który umożliwia aplikacji odbieranie szczegółowych treści z dowolnego dostępnego źródła: schowka, klawiatury lub funkcji przeciągnij i upuść.

Więcej informacji znajdziesz w artykule Odbieranie szczegółowych treści.

App splash screens API

W Androidzie 12 wprowadziliśmy nową animację uruchamiania aplikacji, która obejmuje ruch w kierunku aplikacji od momentu jej uruchomienia, ekran powitalny z ikoną aplikacji i przejście do samej aplikacji. Więcej informacji znajdziesz w przewodniku dla deweloperów dotyczącym ekranów powitalnych.

Interfejsy API zaokrąglonych rogów

W Androidzie 12 wprowadzono metody RoundedCorner i WindowInsets.getRoundedCorner(int position), które podają promień i punkt środkowy zaokrąglonych rogów.

Więcej informacji znajdziesz w sekcji Zaokrąglone rogi.

Rozbudowane funkcje haptyczne

Android 12 rozszerza narzędzia do tworzenia przydatnych reakcji haptycznych na zdarzenia w interfejsie, efektów immersyjnych i atrakcyjnych w grach oraz reakcji haptycznych przyciągających uwagę w celu zwiększenia produktywności.

Efekty siłownika

Android 12 dodaje ekspresyjne efekty, takie jak ciche tykanie, które wykorzystują szersze pasmo częstotliwości najnowszych siłowników. Deweloperzy gier mogą teraz uzyskać dostęp do wielu różnych aktuatorów niezależnie od kontrolerów do gier, aby zapewnić ten sam efekt synchronicznie lub różne efekty haptyczne na wielu aktuatorach. Deweloperom zalecamy używanie stałych i elementów podstawowych jako elementów składowych rozbudowanych efektów haptycznych – stałych do ulepszania zdarzeń interfejsu i kompozytora haptycznego do sekwencjonowania elementów podstawowych w celu uzyskania bardziej złożonych efektów. Te interfejsy API można wypróbować na urządzeniach Pixel 4. Nadal współpracujemy z producentami urządzeń, aby zapewnić użytkownikom w całym ekosystemie najnowsze rozwiązania w zakresie haptyki.

Efekty haptyczne powiązane z dźwiękiem

Aplikacje na Androida 12 mogą generować reakcję haptyczną na podstawie sesji audio, używając wibracji telefonu. Dzięki temu możesz cieszyć się bardziej realistycznymi wrażeniami z gry i lepszym dźwiękiem. Na przykład dzwonki z ulepszonymi efektami haptycznymi mogą pomóc w identyfikacji dzwoniących, a gra wyścigowa może symulować wrażenie jazdy po nierównym terenie.

Więcej informacji znajdziesz w dokumentacji referencyjnej HapticGenerator.

AppSearch

Android 12 wprowadza AppSearch, wydajną wyszukiwarkę na urządzeniu, jako usługę systemową. AppSearch umożliwia aplikacjom indeksowanie uporządkowanych danych i przeszukiwanie ich za pomocą wbudowanych funkcji wyszukiwania pełnotekstowego. Ponadto AppSearch obsługuje natywne funkcje wyszukiwania, takie jak bardzo wydajne indeksowanie i pobieranie, obsługa wielu języków i ranking trafności.

Diagram przedstawiający indeksowanie i wyszukiwanie w AppSearch

AppSearch jest dostępny w 2 wersjach: jako lokalny indeks dla aplikacji, który jest zgodny ze starszymi wersjami Androida, lub jako centralny indeks dla całego systemu w Androidzie 12. Dzięki centralnemu indeksowi aplikacja może zezwolić na wyświetlanie swoich danych w interfejsie systemu przez fabrycznie zainstalowany komponent inteligentny systemu. To, jakie dane są wyświetlane w interfejsie systemu, zależy od producenta OEM. Dodatkowo aplikacja może bezpiecznie udostępniać dane innym aplikacjom, aby umożliwić im wyszukiwanie w tych danych.

Więcej informacji o AppSearch znajdziesz w przewodniku dla programistów. Możesz zacząć korzystać z tej usługi, używając biblioteki Jetpack AppSearch, która zapewnia przyjazny dla programistów interfejs API oraz obsługę procesora adnotacji.

Tryb gry

Interfejs Game Mode API i interwencje trybu gry pozwalają zoptymalizować rozgrywkę przez nadanie priorytetu takim cechom jak wydajność czy czas pracy na baterii na podstawie ustawień użytkownika lub konfiguracji konkretnej gry.

Więcej informacji znajdziesz w sekcji Tryb gry.

Rekomendacje i ulepszenia dotyczące obrazu w obrazie

W Androidzie 12 wprowadziliśmy te ulepszenia trybu obrazu w obrazie:

Obsługa nowych gestów PiP

Android 12 obsługuje teraz gesty ukrywania i powiększania przez rozciąganie w oknie obrazu w obrazie:

  • Aby schować okno, użytkownik może przeciągnąć je do lewej lub prawej krawędzi. Aby przywrócić okno, użytkownik może kliknąć widoczną część ukrytego okna lub je przeciągnąć.

  • Użytkownik może teraz zmienić rozmiar okna obrazu w obrazie, używając gestu uszczypnięcia, aby powiększyć.

W Androidzie 12 wprowadziliśmy znaczne ulepszenia wizualne animowanych przejść między oknami pełnoekranowymi a oknami obrazu w obrazie. Zdecydowanie zalecamy wprowadzenie wszystkich odpowiednich zmian. Gdy to zrobisz, zmiany te zostaną automatycznie przeskalowane na duże ekrany, takie jak urządzenia składane i tablety, bez konieczności wykonywania dodatkowych czynności.

Są to:

nowe powiadomienia o połączeniach telefonicznych, które umożliwiają określanie ważności połączeń przychodzących;

W Androidzie 12 dodano nowy styl powiadomień Notification.CallStyle dotyczących połączeń telefonicznych. Dzięki temu szablonowi aplikacja może wskazywać znaczenie aktywnych połączeń, wyświetlając na pasku stanu widoczny element z czasem trwania połączenia. Użytkownik może kliknąć ten element, aby wrócić do połączenia.

Ponieważ połączenia przychodzące i trwające są dla użytkowników najważniejsze, te powiadomienia są wyświetlane na samej górze panelu. Dzięki temu rankingowi system może też przekazywać te połączenia o wyższym priorytecie na inne urządzenia.

Zaimplementuj podany niżej kod w przypadku wszystkich typów połączeń.

Kotlin

// Create a new call with the user as caller.
val incoming_caller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as caller.
Person incoming_caller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

Użyj forIncomingCall(), aby utworzyć powiadomienie o połączeniu przychodzącym w stylu połączenia.

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller);

Użyj forOngoingCall(), aby utworzyć powiadomienie w stylu połączenia dla trwającej rozmowy.

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller);

Użyj forScreeningCall(), aby utworzyć powiadomienie w stylu połączenia na potrzeby filtrowania połączeń.

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

Obsługa obrazów wzbogaconych w powiadomieniach

W Androidzie 12 możesz teraz wzbogacić powiadomienia aplikacji, dodając animowane obrazy w powiadomieniach MessagingStyle() i BigPictureStyle(). Aplikacja może teraz umożliwiać użytkownikom wysyłanie wiadomości o obrazie, gdy odpowiadają na wiadomości z obszaru powiadomień.

Ulepszenia trybu imersji w nawigacji przy użyciu gestów

Android 12 konsoliduje dotychczasowe zachowanie, aby ułatwić użytkownikom wykonywanie poleceń nawigacji przy użyciu gestów w trybie pojemnym. Dodatkowo Android 12 zapewnia zgodność wsteczną w przypadku trybu imersji.

Udostępnianie adresów URL z ostatnich aplikacji (tylko Pixel)

Na urządzeniach Pixel użytkownicy mogą teraz udostępniać linki do ostatnio wyświetlanych treści z internetu bezpośrednio z ekranu Ostatnie. Po wyświetleniu treści w aplikacji użytkownik może przesunąć palcem do ekranu Ostatnie i znaleźć aplikację, w której wyświetlił treści, a następnie kliknąć przycisk linku, aby skopiować lub udostępnić adres URL.

Więcej informacji znajdziesz w artykule Włączanie udostępniania adresów URL z ostatnich stron.

Prywatność i bezpieczeństwo

Panel prywatności

Pionowa oś czasu pokazuje różne aplikacje, które uzyskały dostęp do informacji o lokalizacji, oraz czas, kiedy to nastąpiło.
Rysunek 1. Ekran wykorzystania lokalizacji, który jest częścią panelu prywatności.

Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemu pojawia się ekran Panelu prywatności. Na tym ekranie użytkownicy mogą uzyskać dostęp do osobnych ekranów, które pokazują, kiedy aplikacje korzystają z informacji o lokalizacji, aparacie i mikrofonie. Na każdym ekranie widać oś czasu, na której zaznaczono, kiedy różne aplikacje miały dostęp do określonego typu danych. Rysunek 1 przedstawia oś czasu dostępu do danych o lokalizacji.

Aplikacja może wyświetlać użytkownikom uzasadnienie, aby pomóc im zrozumieć, dlaczego potrzebuje dostępu do lokalizacji, aparatu lub mikrofonu. To uzasadnienie może pojawić się na nowym ekranie panelu prywatności, na ekranie uprawnień aplikacji lub na obu tych ekranach.

Uprawnienia Bluetooth

W Androidzie 12 wprowadzono uprawnienia BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE i BLUETOOTH_CONNECT. Te uprawnienia ułatwiają aplikacjom kierowanym na Androida 12 interakcję z urządzeniami Bluetooth, zwłaszcza w przypadku aplikacji, które nie wymagają dostępu do lokalizacji urządzenia.

Zaktualizuj deklaracje uprawnień Bluetooth w aplikacji

Aby przygotować urządzenie do kierowania na Androida 12 lub nowszego, zaktualizuj logikę aplikacji. Zamiast deklarować starszy zestaw uprawnień Bluetooth, zadeklaruj nowocześniejszy zestaw uprawnień Bluetooth.

Wyszukiwanie grupy uprawnień

Na Androidzie 12 lub nowszym możesz sprawdzić, jak system organizuje uprawnienia udostępniane przez platformę w grupy uprawnień:

Ukryj okna nakładek aplikacji

Aby zapewnić deweloperom większą kontrolę nad tym, co widzą użytkownicy podczas interakcji z aplikacją, w Androidzie 12 wprowadziliśmy możliwość ukrywania okien nakładek, które są wyświetlane przez aplikacje z uprawnieniem SYSTEM_ALERT_WINDOW.

Po zadeklarowaniu uprawnienia HIDE_OVERLAY_WINDOWS aplikacja może wywołać setHideOverlayWindows(), aby wskazać, że wszystkie okna typu TYPE_APPLICATION_OVERLAY powinny być ukryte, gdy okno aplikacji jest widoczne. Aplikacje mogą to robić podczas wyświetlania ekranów z danymi wrażliwymi, np. procesów potwierdzania transakcji.

Aplikacje, które wyświetlają okna typu TYPE_APPLICATION_OVERLAY, powinny rozważyć alternatywne rozwiązania, które mogą być bardziej odpowiednie w ich przypadku, np. obraz w obrazie lub dymki.

Flaga ochrony uprawnień znanych sygnatariuszy

Począwszy od Androida 12 atrybut knownCerts dla uprawnień na poziomie podpisu umożliwia odwoływanie się do skrótów znanych certyfikatów podpisywania w momencie deklaracji.

Twoja aplikacja może zadeklarować ten atrybut i użyć flagi knownSigner, aby umożliwić urządzeniom i aplikacjom przyznawanie uprawnień do podpisu innym aplikacjom bez konieczności podpisywania aplikacji w momencie produkcji i wysyłki urządzenia.

Atestacja właściwości urządzenia

Android 12 rozszerza zestaw aplikacji, które mogą weryfikować właściwości urządzenia zawarte w certyfikacie atestu, gdy te aplikacje generują nowy klucz.

Od Androida 9 (poziom interfejsu API 28) właściciele zasad dotyczących urządzeń, którzy używają Keymastera 4.0 lub nowszego, mogą weryfikować właściwości urządzeń w tych certyfikatach atestacji. Począwszy od Androida 12, każda aplikacja kierowana na Androida 12 (poziom API 31) lub nowszego może przeprowadzić tę weryfikację za pomocą metody setDevicePropertiesAttestationIncluded().

Wygenerowane właściwości urządzenia zawierają te pola Build:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Działania związane z powiadomieniami na bezpiecznym ekranie blokady

Od Androida 12 klasa Notification.Action.Builder obsługuje metodę setAuthenticationRequired(), która pozwala aplikacji wymagać odblokowania urządzenia, zanim aplikacja wywoła dane działanie powiadomienia. Ta metoda pomaga dodać dodatkową warstwę zabezpieczeń do powiadomień na zablokowanych urządzeniach.

Ciągi znaków do zlokalizowania dla BiometricPrompt

Android 12 wprowadza nowe interfejsy API, które pomogą Ci poprawić wrażenia użytkowników związane z uwierzytelnianiem biometrycznym w aplikacji. Nowa klasa zagnieżdżona BiometricManager.Strings zawiera metody getButtonLabel(), getPromptMessage() i getSettingName(), które umożliwiają aplikacji pobieranie czytelnej dla użytkownika i zlokalizowanej etykiety przycisku, komunikatu z prośbą lub nazwy ustawienia aplikacji. Używaj tych etykiet, aby tworzyć bardziej precyzyjne instrukcje dla użytkowników, które są dostosowane do używanych metod uwierzytelniania biometrycznego, np. „Użyj rozpoznawania twarzy” lub „Aby kontynuować, użyj odcisku palca”.

Multimedia

Transkodowanie zgodnych multimediów

Od Androida 12 (API na poziomie 31) system może automatycznie transkodować filmy HEVC(H.265) i HDR (HDR10 i HDR10+) nagrane na urządzeniu do formatu AVC (H.264), który jest powszechnie zgodny ze standardowymi odtwarzaczami. Pozwala to korzystać z nowoczesnych kodeków, gdy są dostępne, bez utraty zgodności ze starszymi aplikacjami.

Więcej informacji znajdziesz w artykule o transkodowaniu zgodnych multimediów.

Klasa wydajności

Android 12 wprowadza standard o nazwie klasa wydajności. Klasa wydajności określa możliwości sprzętowe wykraczające poza podstawowe wymagania Androida. Każde urządzenie z Androidem deklaruje obsługiwaną klasę wydajności. Deweloperzy mogą sprawdzać klasę wydajności urządzenia w czasie działania i zapewniać ulepszone funkcje, które w pełni wykorzystują możliwości urządzenia.

Więcej informacji znajdziesz w sekcji Klasa wydajności.

Ulepszenia kodowania filmów

Android 12 definiuje standardowy zestaw kluczy do kontrolowania wartości parametru kwantyzacji (QP) na potrzeby kodowania wideo, co pozwala deweloperom uniknąć kodu specyficznego dla dostawcy.

Nowe klucze są dostępne w interfejsie API MediaFormat, a także w bibliotece multimediów NDK.

Począwszy od Androida 12, kodery wideo wymuszają minimalny próg jakości. Dzięki temu użytkownicy nie będą oglądać filmów o bardzo niskiej jakości, gdy kodowane są filmy o wysokiej złożoności scen.

Aktywność audio

Począwszy od Androida 12 (API na poziomie 31), gdy aplikacja prosi o fokus audio, podczas gdy inna aplikacja ma fokus i odtwarza dźwięk, system wycisza odtwarzającą aplikację.

Więcej informacji znajdziesz w artykule Zarządzanie fokusem audio w Androidzie 12 i nowszych.

Aktualizacje MediaDrm

Aby określić, czy w przypadku bieżących interfejsów API MediaDrm wymagany jest bezpieczny komponent dekodera, wykonaj te czynności:

  1. Utwórz MediaDrm.
  2. Otwórz sesję, aby uzyskać jej identyfikator.
  3. Utwórz MediaCrypto, używając identyfikatora sesji.
  4. Zadzwoń: MediaCrypto.requiresSecureDecoderComponent(mimeType)

Dzięki nowym metodom requiresSecureDecoder(@NonNull String mime) i requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) możesz to określić, gdy tylko utworzysz MediaDrm.

Aparat

Rozszerzenia dostawcy Camera2

Wielu naszych partnerów, którzy produkują urządzenia, stworzyło niestandardowe rozszerzenia aparatu, takie jak efekt bokeh, HDR, tryb nocny i inne, które chcą, aby aplikacje wykorzystywały do tworzenia zróżnicowanych wrażeń na ich urządzeniach. Biblioteka CameraX obsługuje już te niestandardowe rozszerzenia dostawcy. W Androidzie 12 te rozszerzenia dostawcy są teraz dostępne bezpośrednio na platformie.

Dzięki temu aplikacje ze złożonymi implementacjami Camera2 mogą korzystać z rozszerzeń dostawców bez konieczności wprowadzania znaczących zmian w starszym kodzie. Interfejsy API rozszerzeń Camera2 udostępniają dokładnie ten sam zestaw rozszerzeń co CameraX, które są już obsługiwane na wielu różnych urządzeniach, więc możesz ich używać bez dodatkowej konfiguracji.

Więcej informacji: CameraExtensionCharacteristics.

Obsługa czujnika aparatu Quad Bayer

Wiele urządzeń z Androidem jest obecnie wyposażonych w czujniki aparatu o bardzo wysokiej rozdzielczości, zwykle z filtrami Quad lub Nona Bayer, które zapewniają dużą elastyczność pod względem jakości obrazu i wydajności przy słabym oświetleniu. Android 12 wprowadza nowe interfejsy API platformy, które umożliwiają aplikacjom innych firm pełne wykorzystanie tych wszechstronnych czujników. Nowe interfejsy API obsługują unikalne zachowanie tych czujników i uwzględniają, że mogą one obsługiwać różne konfiguracje i kombinacje strumieni podczas działania w trybie pełnej rozdzielczości lub „maksymalnej rozdzielczości” w porównaniu z trybem „domyślnym”.

Grafika i obrazy

Zapewnij aplikacjom bezpośredni dostęp do śladów nagrobków

Od Androida 12 możesz uzyskać dostęp do pliku tombstone awarii systemowej aplikacji jako bufora protokołu za pomocą metody ApplicationExitInfo.getTraceInputStream(). Bufor protokołu jest serializowany przy użyciu tego schematu. Wcześniej jedynym sposobem na uzyskanie dostępu do tych informacji było użycie narzędzia Android Debug Bridge (adb).

Więcej informacji znajdziesz w artykule Zapewnianie aplikacjom bezpośredniego dostępu do śladów tombstone.

Obsługa obrazów AVIF

Android 12 wprowadza obsługę obrazów w formacie AV1 Image File Format (AVIF). AVIF to format kontenera dla obrazów i sekwencji obrazów zakodowanych przy użyciu AV1. AVIF wykorzystuje treści zakodowane wewnątrz klatek z kompresji wideo. W porównaniu ze starszymi formatami plików graficznych, takimi jak JPEG, znacznie poprawia to jakość obrazu przy tym samym rozmiarze pliku. Szczegółowe informacje o zaletach tego formatu znajdziesz w poście na blogu Jake'a Archibalda.

Łatwiejsze rozmycia, filtry kolorów i inne efekty

W Androidzie 12 dodaliśmy nową klasę RenderEffect, która stosuje typowe efekty graficzne, takie jak rozmycie, filtry kolorów, efekty cieniowania Androida i inne, do obiektów View i hierarchii renderowania. Efekty można łączyć jako efekty łańcuchowe (które składają się z efektu wewnętrznego i zewnętrznego) lub efekty mieszane. Różne urządzenia z Androidem mogą nie obsługiwać tej funkcji ze względu na ograniczoną moc obliczeniową.

Efekty można też stosować do bazowego elementu RenderNode dla View, wywołując View.setRenderEffect(RenderEffect).

Aby wdrożyć RenderEffect:

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

Natywne dekodowanie animowanych obrazów

W Androidzie 12 interfejs NDK ImageDecoder API został rozszerzony o możliwość dekodowania wszystkich klatek i danych czasowych z obrazów w formatach plików animowanych GIF i animowanych WebP. Gdy interfejs API został wprowadzony w Androidzie 11, dekodował tylko pierwszy obraz z animacji w tych formatach.

Używaj ImageDecoder zamiast bibliotek innych firm, aby jeszcze bardziej zmniejszyć rozmiar pliku APK i korzystać z przyszłych aktualizacji związanych z bezpieczeństwem i wydajnością.

Więcej informacji o interfejsie API znajdziesz w dokumentacji API i przykładzie na GitHubie.

Połączenia

Utrzymywanie aktywności aplikacji towarzyszących

Aby umożliwić aplikacjom towarzyszącym działanie w tle w celu zarządzania urządzeniem, Android 12 wprowadza interfejsy API, które:

  • umożliwiać wybudzanie aplikacji, gdy urządzenie towarzyszące jest w zasięgu;
  • Gwarantuje, że proces będzie kontynuowany, dopóki urządzenie pozostanie w zasięgu.

Aby korzystać z interfejsów API, urządzenia muszą być połączone za pomocą Menedżera urządzeń towarzyszących. Więcej informacji znajdziesz w artykułach CompanionDeviceManager.startObservingDevicePresence() i CompanionDeviceService.onDeviceAppeared().

Profile Menedżera urządzeń towarzyszących

Okno uprawnień, które używa profilu urządzenia towarzyszącego, aby poprosić o wiele uprawnień w ramach jednej prośby.

Aplikacje partnerów na Androidzie 12 (poziom interfejsu API 31) lub nowszym mogą używać profili urządzeń towarzyszących podczas łączenia się z zegarkiem. Użycie profilu upraszcza proces rejestracji, ponieważ umożliwia przyznanie zestawu uprawnień dla danego typu urządzenia w jednym kroku.

Połączone uprawnienia są przyznawane aplikacji towarzyszącej po połączeniu urządzenia i obowiązują tylko wtedy, gdy urządzenie jest powiązane. Usunięcie aplikacji lub powiązania spowoduje usunięcie uprawnień.

Więcej informacji: AssociationRequest.Builder.setDeviceProfile().

Ulepszenia szacowania przepustowości

W Androidzie 12 ulepszono funkcje szacowania przepustowości udostępniane przez getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() zarówno w przypadku Wi-Fi, jak i połączenia komórkowego. Zwracane wartości reprezentują teraz średnią ważoną przepustowość użytkownika od początku korzystania z usługi na operatora lub identyfikator SSID sieci Wi-Fi, typ sieci i poziom sygnału we wszystkich aplikacjach na urządzeniu. Może to zapewnić dokładniejsze i bardziej realistyczne oszacowanie oczekiwanej przepustowości, oszacowanie zimnego startu aplikacji i wymaga mniejszej liczby cykli w porównaniu z innymi metodami szacowania przepustowości.

Ulepszenia Wi-Fi Aware (NAN)

Android 12 wprowadza kilka ulepszeń Wi-Fi Aware:

  • Na urządzeniach z Androidem 12 (poziom interfejsu API 31) lub nowszym możesz użyć wywołania zwrotnego onServiceLost(), aby otrzymywać powiadomienia, gdy aplikacja utraci wykrytą usługę z powodu jej zatrzymania lub znalezienia się poza zasięgiem.
  • Sposób konfigurowania wielu ścieżek danych (ścieżek danych NAN) zmienia się, aby był bardziej wydajny. Wcześniejsze wersje używały wiadomości L2 do wymiany informacji o urządzeniach inicjujących, co powodowało opóźnienia. Na urządzeniach z Androidem 12 lub nowszym można skonfigurować urządzenie odpowiadające (serwer) tak, aby akceptowało dowolne urządzenie równorzędne, czyli nie musi ono wcześniej znać informacji o urządzeniu inicjującym. Przyspiesza to uruchamianie ścieżki danych i umożliwia tworzenie wielu połączeń punkt-punkt za pomocą tylko jednego żądania sieciowego.
  • Aby zapobiec odrzucaniu przez platformę żądań wykrywania lub połączenia z powodu braku zasobów, na urządzeniach z Androidem 12 lub nowszym możesz wywołać metodę WifiAwareManager.getAvailableAwareResources(). Wartość zwracana przez tę metodę pozwala uzyskać liczbę dostępnych ścieżek danych, liczbę dostępnych sesji publikowania i liczbę dostępnych sesji subskrypcji.

Jednoczesne połączenie peer-to-peer i połączenie z internetem

Gdy aplikacje kierowane na Androida 12 (poziom interfejsu API 31) lub nowszego są uruchamiane na urządzeniach z obsługą sprzętową, użycie połączeń peer-to-peer nie spowoduje rozłączenia istniejącego połączenia Wi-Fi podczas tworzenia połączenia z urządzeniem równorzędnym. Aby sprawdzić, czy ta funkcja jest obsługiwana, użyj WifiManager.isMultiStaConcurrencySupported().

Włączanie płatności NFC przy wyłączonym ekranie

W aplikacjach przeznaczonych na Androida 12 lub nowszego możesz włączyć płatności NFC bez włączania ekranu urządzenia, ustawiając requireDeviceScreenOn na false. Więcej informacji o płatnościach NFC przy wyłączonym lub zablokowanym ekranie znajdziesz w artykule Działanie przy wyłączonym i zablokowanym ekranie.

Miejsce na dane

Android 12 wprowadza te funkcje zarządzania pamięcią:

Główna funkcja

Automatyczne aktualizacje aplikacji

W Androidzie 12 wprowadziliśmy metodę setRequireUserAction() dla aplikacji, które korzystają z interfejsu API PackageInstaller. Ta metoda umożliwia aplikacjom instalacyjnym przeprowadzanie aktualizacji aplikacji bez konieczności potwierdzania działania przez użytkownika.

Informacje o chipsecie urządzenia

Android 12 dodaje do android.os.Build 2 stałe, które udostępniają informacje o dostawcy i modelu chipsetu SoC za pomocą pakietu SDK. Te informacje możesz pobrać, wywołując odpowiednio Build.SOC_MANUFACTURER i Build.SOC_MODEL.

Aktualizacje podstawowych interfejsów API Javy

Na podstawie próśb i współpracy z deweloperami dodaliśmy w Androidzie 12 te biblioteki podstawowe:

Zajęcia Interfejsy API
java.lang.Deprecated
java.lang.Byte
java.lang.Short
java.lang.Math
java.lang.StrictMath
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration
java.time.LocalTime