Android 12 wprowadza nowe 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 interfejsu API Androida. Nowe interfejsy API są wyróżnione, aby były lepiej widoczne. Aby dowiedzieć się więcej o obszarach, w których zmiany na platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami w Androidzie 12 w przypadku aplikacji kierowanych na Androida 12 i w przypadku wszystkich aplikacji.
Interfejs użytkownika
Material You
Android 12 wprowadza nowy język projektowania o nazwie Material You, który pomaga tworzyć bardziej spersonalizowane i atrakcyjne aplikacje. Aby wprowadzić w aplikacjach 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 API widżetów, aby zwiększyć wygodę użytkowników i deweloperów na platformie i w launcherach. Przygotowaliśmy przewodnik, który pomoże Ci sprawdzić, czy widżet jest zgodny z Androidem 12, i odświeżyć go o nowe funkcje.
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 otrzymywanie treści z dowolnego dostępnego źródła: schowka, klawiatury lub funkcji przeciągnij i upuść.
Więcej informacji znajdziesz w artykule Odbieranie treści wzbogaconych.
Interfejs API ekranów powitalnych aplikacji
Android 12 wprowadza nową animację uruchamiania aplikacji, która obejmuje ruch w kierunku aplikacji od momentu uruchomienia, ekran powitalny pokazujący ikonę aplikacji i przenoszenie do aplikacji. Więcej informacji znajdziesz w przewodniku dla programistów dotyczącym ekranów powitalnych.
Interfejsy API zaokrąglonych narożników
W Androidzie 12 wprowadzono 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.
Bogate wrażenia haptyczne
Android 12 rozszerza narzędzia do tworzenia informacyjnych wibracji dla zdarzeń interfejsu, wciągających i przyjemnych efektów w grach oraz wibracji przyciągających uwagę w celu zwiększenia produktywności.
Efekty siłownika
Android 12 dodaje ekspresyjne efekty, takie jak niskie wibracje, które wykorzystują szersze pasmo częstotliwości najnowszych siłowników. Deweloperzy gier mogą teraz niezależnie uzyskiwać dostęp do wielu różnych siłowników w kontrolerach gier, aby synchronicznie wywoływać ten sam efekt lub różne efekty haptyczne na wielu siłownikach. Deweloperom zalecamy używanie stałych i typów prostych jako elementów składowych bogatych efektów haptycznych – stałych do wzbogacania zdarzeń interfejsu i kompozytora haptycznego do sekwencjonowania typów prostych w celu uzyskania bardziej złożonych efektów. Te interfejsy API można wypróbować na urządzeniach Pixel 4. Współpracujemy z partnerami, którzy produkują urządzenia, aby udostępniać użytkownikom w całym ekosystemie najnowsze funkcje haptyczne.
Efekty haptyczne powiązane z dźwiękiem
Aplikacje na Androida 12 mogą generować sygnały dotykowe na podstawie sesji audio za pomocą wibratora telefonu. Zapewnia to bardziej wciągające wrażenia podczas grania i słuchania dźwięku. Na przykład dzwonki z wibracjami mogą pomóc w identyfikacji dzwoniących, a gra wyścigowa może symulować odczucia związane z nierównym terenem.
Więcej informacji znajdziesz w HapticGenerator
dokumentacji referencyjnej.
AppSearch
Android 12 wprowadza AppSearch, wydajną wyszukiwarkę na urządzeniu, jako usługę systemową. AppSearch umożliwia aplikacjom indeksowanie danych strukturalnych i wyszukiwanie ich za pomocą wbudowanych funkcji wyszukiwania pełnotekstowego. Dodatkowo AppSearch obsługuje natywne funkcje wyszukiwania, takie jak wysoce wydajne indeksowanie i pobieranie, obsługę wielu języków oraz ranking trafności.

AppSearch występuje w 2 wariantach: lokalny indeks do użytku w aplikacji, który jest zgodny ze starszymi wersjami Androida, oraz centralny indeks utrzymywany w Androidzie 12 dla całego systemu. Korzystając z indeksu centralnego, aplikacja może zezwolić na wyświetlanie swoich danych w interfejsie systemu przez wstępnie zainstalowany komponent inteligentny. To, które 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 również wyszukiwanie tych danych.
Więcej informacji o AppSearch znajdziesz w przewodniku dla deweloperów. Zacznij korzystać z tej usługi za pomocą biblioteki Jetpack AppSearch, która udostępnia przyjazny dla deweloperów interfejs API oraz obsługę procesora adnotacji.
Tryb gry
Interfejs Game Mode API i interwencje w trybie gry umożliwiają optymalizację rozgrywki przez nadawanie priorytetu określonym cechom, takim jak wydajność lub czas pracy na baterii, na podstawie ustawień użytkowników lub konfiguracji specyficznych dla danej gry.
Więcej informacji znajdziesz w sekcji Tryb gry.
Ulepszenia i rekomendacje dotyczące obrazu w obrazie (PiP)
Android 12 wprowadza te ulepszenia trybu obrazu w obrazie:
Obsługa nowych gestów PiP
Android 12 obsługuje teraz gesty chowania i szczypania w celu powiększenia w przypadku okna 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ęść schowanego okna lub przeciągnąć je.
Użytkownik może teraz zmieniać rozmiar okna PiP za pomocą gestu uszczypnięcia.
Zalecane nowe funkcje, które zapewniają płynne przejście do trybu obraz w obrazie
W Androidzie 12 wprowadzono istotne zmiany wizualne animowanych przejść między oknami pełnoekranowymi a oknami w trybie obraz w obrazie. Zdecydowanie zalecamy wprowadzenie wszystkich odpowiednich zmian. Po ich wprowadzeniu będą one automatycznie skalowane na większych ekranach, takich 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 strony głównej w trybie nawigacji gestami. Wcześniej Android czekał na zakończenie animacji przesunięcia w górę do ekranu głównego, zanim okno obrazu w obrazie zaczynało się pojawiać. Płynniejsze animacje podczas włączania i wyłączania trybu obrazu w obrazie
Flaga
SourceRectHint
jest teraz ponownie używana do implementowania płynniejszej animacji podczas włączania i wyłączania trybu obrazu w obrazie.-
Flaga
SeamlessResizeEnabled
zapewnia znacznie płynniejszą animację przenikania podczas zmiany rozmiaru treści innych niż wideo w oknie PIP. Wcześniej zmiana rozmiaru treści innych niż wideo w oknie obrazu w obrazie mogła powodować nieprzyjemne artefakty wizualne.
Nowe powiadomienia o połączeniach telefonicznych, które umożliwiają określanie ważności połączeń przychodzących
W Androidzie 12 dodaliśmy nowy styl powiadomieńNotification.CallStyle
dotyczących połączeń telefonicznych. Ten szablon umożliwia aplikacji wskazanie ważności aktywnych połączeń przez wyświetlanie na pasku stanu widocznego elementu, który pokazuje czas trwania połączenia. Użytkownik może kliknąć ten element, aby wrócić do połączenia.
Powiadomienia o połączeniach przychodzących i trwających są najważniejsze dla użytkowników, dlatego zajmują najwyższe miejsce w panelu. Ta kolejność umożliwia też systemowi przekazywanie tych połączeń o wyższym priorytecie na inne urządzenia.
Wdróż ten kod w przypadku wszystkich rodzajó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 do 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 rozszerzonych obrazów w powiadomieniach
W Androidzie 12 możesz teraz wzbogacić powiadomienia z aplikacji, udostępniając animowane obrazy w powiadomieniach MessagingStyle()
i BigPictureStyle()
. Aplikacja może też teraz umożliwiać użytkownikom wysyłanie wiadomości z obrazami, gdy odpowiadają na wiadomości z panelu powiadomień.
Ulepszenia trybu pełnoekranowego w przypadku nawigacji przy użyciu gestów
Android 12 ujednolica dotychczasowe działanie, aby ułatwić użytkownikom wykonywanie poleceń nawigacji gestami w trybie pełnoekranowym. Dodatkowo Android 12 zapewnia zgodność wsteczną w przypadku trybu pełnoekranowego.
Udostępnianie URL-i z sekcji Ostatnie (tylko Pixel)
Na urządzeniach Pixel użytkownicy mogą teraz udostępniać linki do ostatnio wyświetlanych treści internetowych 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 ostatnio używanych adresów URL.
Prywatność i bezpieczeństwo
Panel prywatności
Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemu pojawia się ekran Panel prywatności. Na tym ekranie użytkownicy mogą otwierać osobne ekrany, na których widać, kiedy aplikacje uzyskują dostęp do informacji o lokalizacji, aparacie i mikrofonie. Na każdym ekranie wyświetlana jest oś czasu, która pokazuje, kiedy różne aplikacje uzyskały dostęp do określonego typu danych. Ilustracja 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. Uzasadnienie może się pojawić 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 przeznaczonym na Androida 12 interakcję z urządzeniami Bluetooth, zwłaszcza tym, które nie wymagają dostępu do lokalizacji urządzenia.
Aktualizowanie deklaracji 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 grup 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ł zdefiniowane przez platformę uprawnienie, wywołaj funkcję
getGroupOfPlatformPermission()
. - Aby określić uprawnienia zdefiniowane przez platformę, które system umieścił w danej grupie uprawnień, wywołaj
getPlatformPermissionsForGroup()
.
Ukrywanie okien nakładek aplikacji
Aby dać deweloperom większą kontrolę nad tym, co użytkownicy widzą, gdy wchodzą w interakcję z aplikacją dewelopera, w Androidzie 12 wprowadziliśmy możliwość ukrywania okien nakładkowych rysowanych przez aplikacje, które mają uprawnienie 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 widoczne jest okno aplikacji. Aplikacje mogą to robić podczas wyświetlania ekranów z danymi wrażliwymi, np. w przypadku przepływó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
W Androidzie 12 i nowszych atrybut
knownCerts
w przypadku uprawnień na poziomie podpisu
umożliwia odwoływanie się do skrótów znanych certyfikatów podpisu w momencie deklaracji.
Aplikacja może zadeklarować ten atrybut i użyć flagi knownSigner
, aby zezwolić urządzeniom i aplikacjom na przyznawanie uprawnień związanych z podpisem innym aplikacjom bez konieczności podpisywania aplikacji w momencie produkcji i wysyłki urządzenia.
Potwierdzenie 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 podczas generowania nowego klucza.
Od Androida 9 (poziom interfejsu API 28) właściciele zasad dotyczących urządzenia (DPO), którzy używają Keymastera 4.0 lub nowszego, mogą weryfikować właściwości urządzenia w tych certyfikatach atestu. Od Androida 12 każda aplikacja kierowana na Androida 12 (poziom API 31) lub nowszego może przeprowadzać weryfikację za pomocą metody setDevicePropertiesAttestationIncluded()
.
Wygenerowane właściwości urządzenia obejmują te pola:Build
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
Bezpieczne działania związane z powiadomieniami na 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 określonej czynności powiadomienia. Ta metoda zapewnia dodatkową warstwę zabezpieczeń powiadomień na zablokowanych urządzeniach.
Ciągi znaków do zlokalizowania w przypadku 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 zagnieżdżona klasa BiometricManager.Strings
zawiera metody getButtonLabel()
, getPromptMessage()
i getSettingName()
, które umożliwiają aplikacji pobieranie czytelnej dla użytkownika i zlokalizowanej etykiety przycisku, komunikatu 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 odblokowywania twarzą” lub „Użyj odcisku palca, aby kontynuować”.
Wykrywanie phishingu w aplikacjach do przesyłania wiadomości (tylko Pixel)

Na obsługiwanych urządzeniach Pixel z Androidem 12 funkcja wykrywania phishingu sprawdza wiadomości otrzymywane w popularnych komunikatorach. System wykorzystuje uczenie maszynowe na urządzeniu do wykrywania podejrzanych działań. Gdy system wykryje takie treści, wyświetli nakładkę bezpieczeństwa na interfejsie aplikacji do przesyłania wiadomości, aby ostrzec użytkowników. Na przykład wykrywanie wyłudzania informacji może ostrzegać użytkowników o tych potencjalnych zagrożeniach:
- podejrzane prośby, np. o wysłanie kodu, pieniędzy lub podobnych informacji;
- Niezaufane adresy URL
- złośliwe załączniki,
- Linki do złośliwych aplikacji
Oprócz ostrzegania użytkownika nakładka umożliwia mu zgłoszenie podejrzanej wiadomości i przesłanie opinii na temat ostrzeżeń wydawanych przez system.
Deweloperzy mogą zrezygnować z tej funkcji, dodając do plików manifestu aplikacji nowy tag metadanych zawierający ciąg znaków com.google.android.ALLOW_PHISHING_DETECTION
. Na przykład:
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
Multimedia
Transkodowanie zgodnych multimediów
Od Androida 12 (API na poziomie 31) system może automatycznie transkodować nagrane na urządzeniu filmy w formatach HEVC(H.265) i HDR (HDR10 i HDR10+) do formatu AVC (H.264), który jest w dużej mierze zgodny ze standardowymi odtwarzaczami. Wykorzystuje nowoczesne kodeki, 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 artykule Klasa wydajności.
Ulepszenia kodowania filmów
Android 12 definiuje standardowy zestaw kluczy do kontrolowania wartości parametru kwantyzacji (QP) w przypadku kodowania wideo, co pozwala deweloperom uniknąć stosowania kodu specyficznego dla dostawcy.
Nowe klucze są dostępne w interfejsie MediaFormat
API oraz w bibliotece multimediów NDK.
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 będą kodować filmy o dużej złożoności scen.
Aktywność audio
Od Androida 12 (API na poziomie 31) system wycisza aplikację, która odtwarza dźwięk, gdy inna aplikacja zażąda fokusu audio.
Więcej informacji znajdziesz w artykule Skupienie dźwięku na Androidzie 12 i nowszych wersjach.
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)
irequiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
możesz to określić od razu po utworzeniu MediaDrm
.
Aparat
Rozszerzenia dostawcy Camera2
Wielu naszych partnerów – producentów urządzeń – opracowało niestandardowe rozszerzenia aparatu, takie jak bokeh, HDR, tryb nocny i inne, których aplikacje mogą używać, aby zapewnić użytkownikom urządzeń wyjątkowe wrażenia. Biblioteka CameraX obsługuje już te niestandardowe rozszerzenia dostawcy. W Androidzie 12 te rozszerzenia dostawców są teraz udostępniane bezpośrednio na platformie.
To ułatwienie pomaga aplikacjom z złożonymi
Camera2
implementacjami korzystać z rozszerzeń dostawców bez konieczności wprowadzania
istotnych zmian w starszym kodzie. Interfejsy Camera2 Extension API udostępniają dokładnie ten sam zestaw rozszerzeń co CameraX, a te są już obsługiwane na wielu różnych urządzeniach, więc możesz ich używać bez dodatkowej konfiguracji.
Więcej informacji znajdziesz w sekcji 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 wzorami 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 działanie tych czujników i uwzględniają fakt, że mogą one obsługiwać różne konfiguracje i kombinacje strumieni w trybie pełnej rozdzielczości lub „maksymalnej rozdzielczości” w porównaniu z trybem „domyślnym”.
Grafika i obrazy
Zapewnianie aplikacjom bezpośredniego dostępu do śladów po zakończeniu działania
Od Androida 12 możesz uzyskać dostęp do natywnego pliku z informacjami o awarii aplikacji w formacie bufora protokołu za pomocą metody ApplicationExitInfo.getTraceInputStream()
. Bufor protokołu jest serializowany przy użyciu tego schematu.
Wcześniej jedynym sposobem uzyskania dostępu do tych informacji było użycie Android Debug Bridge (adb).
Więcej informacji znajdziesz w artykule Udostępnianie aplikacjom bezpośredniego dostępu do śladów po awarii.
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 za pomocą AV1. Format AVIF wykorzystuje zakodowane w ramce treści z kompresji wideo. W porównaniu ze starszymi formatami obrazów, takimi jak JPEG, znacznie poprawia jakość obrazu przy tym samym rozmiarze pliku. Szczegółowe informacje o zaletach tego formatu znajdziesz w poście na blogu Jake'a Archibalda.
łatwiejsze rozmycie, filtry kolorów i inne efekty;
W Androidzie 12 dodaliśmy nowy interfejs API RenderEffect
, który stosuje popularne efekty graficzne, takie jak rozmycie, filtry kolorów, efekty cieniowania Androida i inne, do View
i hierarchii renderowania. Efekty można łączyć jako efekty łańcuchowe (składające się z efektu wewnętrznego i zewnętrznego) lub efekty mieszane. Różne urządzenia z Androidem mogą obsługiwać tę funkcję lub nie ze względu na ograniczoną moc obliczeniową.
Efekty można też stosować do bazowych RenderNode
View
, wywołując View.setRenderEffect(RenderEffect)
.
Aby wdrożyć RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Dekodowanie natywnych animowanych obrazów
W Androidzie 12 rozszerzyliśmy interfejs NDKImageDecoder
, aby dekodował wszystkie klatki i dane o czasie z obrazów, które używają animowanych formatów plików GIF i animowanych WebP. Gdy ten 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 referencyjnej interfejsu API i w przykładzie na GitHubie.
Łączność
Nie pozwala uśpić 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 to, ż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ą Companion Device Manager. Więcej informacji znajdziesz w sekcjach 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ądzenia towarzyszącego podczas łączenia się z zegarkiem. Użycie profilu upraszcza proces rejestracji, ponieważ łączy przyznawanie zestawu uprawnień specyficznych dla typu urządzenia w jednym kroku.
Uprawnienia pakietowe 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 usunięcie powiązania spowoduje usunięcie uprawnień.
Więcej informacji znajdziesz w sekcji AssociationRequest.Builder.setDeviceProfile()
.
Ulepszenia szacowania przepustowości
W Androidzie 12 ulepszyliśmy funkcje szacowania przepustowości udostępniane przez interfejsy API
getLinkDownstreamBandwidthKbps()
i
getLinkUpstreamBandwidthKbps()
zarówno w przypadku połączeń Wi-Fi, jak i komórkowych. Zwracane wartości
reprezentują ważoną średnią przepustowość użytkownika w całym okresie użytkowania urządzenia w przypadku każdego operatora lub identyfikatora SSID sieci Wi-Fi, typu sieci i poziomu sygnału we wszystkich aplikacjach na urządzeniu.
Dzięki temu możesz uzyskać dokładniejsze i bardziej realistyczne szacunki oczekiwanej przepustowości, szacunki dotyczące zimnego startu aplikacji i wymaga to mniejszej liczby cykli w porównaniu z innymi metodami szacowania przepustowości.
Ulepszenia Wi-Fi Aware (NAN)
Android 12 wprowadza kilka ulepszeń dotyczących Wi-Fi Aware:
- Na urządzeniach z Androidem 12 (API na poziomie 31) lub nowszym możesz używać wywołania zwrotnego
onServiceLost()
, aby otrzymywać powiadomienia o utracie wykrytej usługi przez aplikację z powodu zatrzymania usługi lub jej wyjścia poza zasięg. - Sposób konfigurowania wielu ścieżek danych (ścieżek danych NAN) ulega zmianie, aby był bardziej wydajny. W starszych wersjach do wymiany informacji o inicjatorach używano wiadomości L2, co powodowało opóźnienia. Na urządzeniach z Androidem 12 lub nowszym można skonfigurować odpowiadający (serwer) tak, aby akceptował dowolnego klienta, czyli nie musi z góry znać informacji o inicjatorze. Przyspiesza to uruchamianie ścieżki danych i umożliwia tworzenie wielu połączeń punkt-punkt za pomocą tylko 1 żądania sieciowego.
- Aby zapobiec odrzucaniu przez platformę żądań wykrywania lub połączenia z powodu wyczerpania zasobów, na urządzeniach z Androidem 12 lub nowszym możesz wywołać
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.
Równoczesne połączenie peer-to-peer i internetowe
Gdy urządzenia z Androidem 12 (API na poziomie 31) lub nowszym działają na urządzeniach z obsługą sprzętową, korzystanie z połączeń peer-to-peer nie spowoduje rozłączenia istniejącego połączenia Wi-Fi podczas tworzenia połączenia z urządzeniem peer. 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 i nowsze możesz włączyć płatności NFC bez włączania ekranu urządzenia, ustawiając wartość requireDeviceScreenOn
na false
. Więcej informacji o płatnościach NFC przy wyłączonym lub zablokowanym ekranie znajdziesz w sekcji Działanie przy wyłączonym ekranie i na ekranie blokady.
Miejsce na dane
Android 12 wprowadza te funkcje zarządzania pamięcią:
- Obsługa magazynu multimediów w przypadku
MediaDocumentsProvider
, gdy aplikacja pobiera identyfikator URI multimediów, który jest odpowiednikiem identyfikatora URI dostawcy dokumentów. - Katalog nagrań głosowych.
- Uprawnienie
MANAGE_MEDIA
, które pozwala aplikacji zarządzać multimediami bez wyświetlania użytkownikowi okna potwierdzenia dla każdej operacji. - Aplikacje, które mają zarówno uprawnienie
MANAGE_EXTERNAL_STORAGE
, jak i uprawnienieQUERY_ALL_PACKAGES
(np. aplikacje do zarządzania plikami), mogą wywoływać niestandardową aktywność do zarządzania miejscem na dane innej aplikacji, pod warunkiem że ta aplikacja utworzy niestandardową aktywność.
Główna funkcja
Automatyczne aktualizacje aplikacji
W Androidzie 12 wprowadziliśmy metodę
setRequireUserAction()
dla aplikacji, które korzystają z interfejsu
PackageInstaller
API.
Ta metoda umożliwia aplikacjom instalacyjnym przeprowadzanie aktualizacji aplikacji bez konieczności potwierdzania działania przez użytkownika.
Informacje o chipsecie urządzenia
W Androidzie 12 dodaliśmy do klasy android.os.Build
2 stałe, które udostępniają informacje o dostawcy i modelu chipsetu SoC za pomocą pakietu SDK. Możesz uzyskać te informacje, dzwoniąc pod numery 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
|