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 interfejsów 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ć bardziej spersonalizowane i atrakcyjne aplikacje. Aby wprowadzić do aplikacji wszystkie najnowsze aktualizacje Material Design 3, wypróbuj wersję alfa komponentów Material Design.

Ulepszenia widżetów
Android 12 wprowadza zmiany w dotychczasowym 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 sekcji Ulepszenia widżetów w Androidzie 12.
Wstawianie szczegółowych treści
W Androidzie 12 wprowadziliśmy 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
Android 12 wprowadza RoundedCorner i WindowInsets.getRoundedCorner(int
position), które określają 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 niskie tyknięcie, które wykorzystują szersze pasmo częstotliwości najnowszych aktuatorów. Deweloperzy gier mogą teraz niezależnie uzyskiwać dostęp do wielu różnych aktuatorów w kontrolerach do gier, aby synchronicznie uzyskiwać ten sam efekt 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 naszymi partnerami produkującymi urządzenia, aby udostępniać najnowsze funkcje haptyczne użytkownikom w całym ekosystemie.
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 zapewnić bardziej wciągające wrażenia z gry i lepsze wrażenia dźwiękowe. 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, czyli 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.
AppSearch jest dostępny w 2 wersjach: lokalnego indeksu dla aplikacji, który jest zgodny ze starszymi wersjami Androida, lub centralnego indeksu dla całego systemu w Androidzie 12. Dzięki centralnemu indeksowi aplikacja może zezwolić na wyświetlanie swoich danych na powierzchniach interfejsu 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 AppSearch Jetpack, 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 artykule Tryb gry.
Rekomendacje i ulepszenia dotyczące obrazu w obrazie (PiP)
W Androidzie 12 wprowadziliśmy te ulepszenia trybu obrazu w obrazie:
Obsługa nowych gestów w trybie obrazu w obrazie
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ć.
Zalecane nowe funkcje, które ułatwiają przejście do trybu obrazu w obrazie
W Androidzie 12 wprowadzono znaczne ulepszenia wizualne animowanych przejść między oknami pełnoekranowymi a oknami obrazu w obrazie. Zdecydowanie zalecamy wdrożenie wszystkich odpowiednich zmian. Po ich wprowadzeniu będą one automatycznie skalowane na duże ekrany, takie jak urządzenia składane i tablety, bez konieczności wykonywania dodatkowych czynności.
Są to:
-
Użyj flagi
setAutoEnterEnabled, aby zapewnić płynniejsze przejścia do trybu obrazu w obrazie podczas przesuwania palcem w górę do ekranu głównego w trybie nawigacji przy użyciu gestów. Wcześniej Android czekał na zakończenie animacji przesunięcia palcem w górę, aby przejść do ekranu głównego, zanim okno obrazu w obrazie zostało wyświetlone. Płynniejsze animacje podczas wchodzenia w tryb obrazu w obrazie i wychodzenia z niego
Flaga
SourceRectHintjest teraz używana do płynniejszej animacji podczas wchodzenia w tryb obrazu w obrazie i wychodzenia z niego.Nowa flaga interfejsu API do wyłączania płynnej zmiany rozmiaru w przypadku treści innych niż wideo
Flaga
SeamlessResizeEnabledzapewnia znacznie płynniejszą animację przenikania podczas zmiany rozmiaru treści innych niż wideo w oknie obrazu w obrazie. Wcześniej zmiana rozmiaru treści innych niż wideo w oknie obrazu w obrazie mogła powodować powstawanie nieprzyjemnych dla oka artefaktów wizualnych.
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 obszaru powiadomień. Dzięki temu rankingowi system może też przekazywać te połączenia o wyższym priorytecie na inne urządzenia.
Zaimplementuj ten 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 wzbogaconych obrazów w powiadomieniach
W Androidzie 12 możesz teraz wzbogacić powiadomienia aplikacji, dodając animowane obrazy w powiadomieniach MessagingStyle() i BigPictureStyle(). Teraz aplikacja może też 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. Ponadto 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
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 uzyskuje dostęp do informacji o lokalizacji, aparacie lub mikrofonie. To uzasadnienie może pojawić się na nowym ekranie panelu prywatności, na ekranie uprawnień aplikacji lub w obu tych miejscach.
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.
Aktualizowanie deklaracji uprawnień aplikacji dotyczących Bluetootha
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ń:
- Aby określić grupę uprawnień, do której system przypisał uprawnienie zdefiniowane przez platformę, wywołaj
getGroupOfPlatformPermission(). - Aby określić uprawnienia zdefiniowane przez platformę, które system umieścił w określonej grupie uprawnień, wywołaj
getPlatformPermissionsForGroup().
Ukrywanie okien nakładek aplikacji
Aby zapewnić deweloperom większą kontrolę nad tym, co widzą użytkownicy podczas korzystania z aplikacji, 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ć, gdy wyświetlają ekrany z danymi wrażliwymi, np. procesy 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, takie jak obraz w obrazie lub dymki.
Flaga ochrony uprawnień znanych sygnatariuszy
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 atestu. Począwszy od Androida 12, każda aplikacja kierowana na Androida 12 (API na poziomie 31) lub nowszego może przeprowadzić tę weryfikację za pomocą metody setDevicePropertiesAttestationIncluded().
Wygenerowane właściwości urządzenia zawierają te pola Build:
BRANDDEVICEMANUFACTURERMODELPRODUCT
Działania związane z powiadomieniami na bezpiecznym ekranie blokady
Od Androida 12 klasa Notification.Action.Builder obsługuje metodę setAuthenticationRequired(), która umożliwia aplikacji wymaganie odblokowania urządzenia przed wywołaniem danego działania 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 ulepszyć uwierzytelnianie biometryczne 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
Począwszy 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. Dzięki temu można 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 dźwiękiem 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:
- Utwórz
MediaDrm. - Otwórz sesję, aby uzyskać identyfikator sesji.
- Utwórz
MediaCrypto, używając identyfikatora sesji. - 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 są producentami urządzeń, stworzyło niestandardowe rozszerzenia aparatu, takie jak 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 dostawców. 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 filtrem 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 tombstone
Od Androida 12 możesz uzyskać dostęp do nagrobka 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 nagrobków.
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 zawartość zakodowaną wewnątrz klatek z kompresji wideo. Znacznie poprawia to jakość obrazu przy tym samym rozmiarze pliku w porównaniu ze starszymi formatami plików graficznych, takimi jak JPEG. Szczegółowe informacje o zaletach tego formatu znajdziesz w poście na blogu Jake'a Archibalda.
łatwiejsze rozmycia, filtry kolorów i inne efekty;
Android 12 wprowadza 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 API NDK ImageDecoder został rozszerzony, aby dekodować wszystkie klatki i dane o czasie 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 i zarządzanie 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
Aplikacje partnerów na Androidzie 12 (poziom interfejsu API 31) i nowszym mogą używać profili urządzeń towarzyszących podczas łączenia się z zegarkiem. Korzystanie z profilu upraszcza proces rejestracji, ponieważ łączy w jednym kroku przyznawanie zestawu uprawnień właściwych dla danego typu urządzenia.
Uprawnienia pakietu 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 oszacowania 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 w całym okresie dla danego operatora lub identyfikatora SSID sieci Wi-Fi, typu sieci i poziomu 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 pewne ulepszenia 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ć alerty, 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ć responder (serwer) tak, aby akceptował dowolnego peera, czyli nie musi on znać informacji o inicjatorze z wyprzedzeniem. 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 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ą:
- Obsługa
MediaDocumentsProviderprzez MediaStore, gdy aplikacja pobiera identyfikator URI multimediów, który jest odpowiednikiem identyfikatora URI dostawcy dokumentów. - Katalog z nagraniami głosowymi.
- Uprawnienie
MANAGE_MEDIA, które umożliwia aplikacji wykonywanie operacji zarządzania multimediami bez wyświetlania użytkownikowi okna z prośbą o potwierdzenie każdej operacji. - Aplikacje, które mają uprawnienia
MANAGE_EXTERNAL_STORAGEiQUERY_ALL_PACKAGES(np. aplikacje do zarządzania plikami), mogą wywoływać aktywność niestandardową do zarządzania miejscem na dane innej aplikacji, pod warunkiem że ta aplikacja tworzy aktywność niestandardową.
Główna funkcja
Automatyczne aktualizacje aplikacji
W Androidzie 12 wprowadzono metodę setRequireUserAction() dla aplikacji, które używają 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 ujawniają 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
|