Omówienie funkcji i interfejsów API

Android 12 wprowadza programistów – świetne nowe funkcje i interfejsy API. Poniższe sekcje pomogą Ci poznać funkcje Twoich aplikacji i rozpocząć korzystanie z powiązanych interfejsów API.

Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie różnic między interfejsami API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsu Android API. Nowe interfejsy API są wyróżnione w celu zapewnienia widoczności. 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 oraz wszystkich aplikacji.

Z perspektywy użytkownika

Material You

Android 12 wprowadza nowy język projektowania o nazwie Material You, który pomaga tworzyć bardziej spersonalizowane, piękne aplikacje. Aby zastosować w swoich aplikacjach wszystkie najnowsze aktualizacje Material Design 3, wypróbuj wersję alfa Material Design Komponenty.

Material You

Ulepszenia widżetów

Android 12 ulepsza dotychczasowy interfejs Widgets API, aby zapewnić użytkownikom i programistom większą wygodę korzystania z platformy i programów uruchamiających. Opracowaliśmy przewodnik, który pomoże Ci sprawdzić, czy widżet jest zgodny z Androidem 12, i jak odświeżyć go o nowe funkcje.

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

Wstawianie treści multimedialnych

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 oraz funkcji przeciągania i upuszczania.

Więcej informacji znajdziesz w artykule Otrzymywanie treści sformatowanych.

Interfejs API ekranów powitalnych aplikacji

Android 12 wprowadza nową animację uruchamiania aplikacji w przypadku wszystkich aplikacji. Obejmuje ona ruch w aplikacji od momentu wprowadzenia, ekran powitalny z ikoną aplikacji oraz przejście do samej aplikacji. Więcej informacji znajdziesz w przewodniku dla programistów ekranów powitalnych.

Interfejsy API z zaokrąglonym rogiem

W Androidzie 12 wprowadziliśmy RoundedCorner i WindowInsets.getRoundedCorner(int position), które określają promień i punkt środkowy zaokrąglonych rogów.

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

Bogate możliwości reakcji haptycznych

Android 12 obejmuje narzędzia do generowania informacji haptycznych w przypadku zdarzeń interfejsu, wciągające i zachwycające efekty dla graczy oraz czujne reakcje haptyczne zwiększające produktywność.

Efekty uruchamiające

Android 12 udostępnia wyraziste efekty, takie jak niskie skoki, które wykorzystują większą przepustowość częstotliwości najnowocześniejszych urządzeń wykonawczych. Twórcy gier mają teraz dostęp do wielu różnych elementów wykonawczych niezależnie w kontrolerach gry, aby zapewnić synchronicznie ten sam efekt lub różne efekty haptyczne na wielu urządzeniach uruchamiających. Programistom zalecamy korzystanie ze stałych i elementów podstawowych jako elementów konstrukcyjnych zapewniających bogate efekty haptyczne – stałe do udoskonalania zdarzeń interfejsu oraz mechanizm haptyczny 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. Nieustannie współpracujemy z producentami urządzeń, aby zapewnić użytkownikom w całym ekosystemie możliwość korzystania z najnowszych funkcji haptycznych.

Efekty haptyczne sprzężone z dźwiękiem

Aplikacje na Androida 12 mogą generować reakcje haptyczne po sesji dźwiękowej, używając wibracji w telefonie. Dzięki temu możemy bardziej wciągające odczucia związane z grami i dźwiękiem. Na przykład dzwonki z reakcją haptyczną mogą pomagać w rozpoznawaniu rozmówcy, a gra symulacyjna może symulować wrażenie nierównego terenu.

Więcej informacji znajdziesz w dokumentacji referencyjnej HapticGenerator.

Wyszukiwanie aplikacji

Android 12 wprowadza jako usługę systemową AppSearch – bardzo wydajną wyszukiwarkę działającą na urządzeniu. AppSearch umożliwia aplikacjom indeksowanie uporządkowanych danych i przeszukiwanie ich przy użyciu wbudowanych funkcji wyszukiwania pełnotekstowego. Dodatkowo AppSearch obsługuje natywne funkcje wyszukiwania, takie jak bardzo skuteczne indeksowanie i pobieranie danych, obsługa wielu języków czy ranking trafności.

Diagram przedstawiający indeksowanie i wyszukiwanie w AppSearch

AppSearch ma 2 rodzaje: lokalny indeks, którego możesz używać przez aplikację, zgodny ze starszymi wersjami Androida, lub indeks centralny dla całego systemu w Androidzie 12. Korzystając z centralnego indeksu, aplikacja może zezwolić na wyświetlanie swoich danych na platformach interfejsu systemu przez wstępnie zainstalowany w systemie komponent analityczny. To, które dane są wyświetlane na interfejsach systemu, zależy od producenta OEM. Aplikacja może też bezpiecznie udostępniać dane innym aplikacjom, aby mogły one przeszukiwać również te dane.

Więcej informacji o usłudze AppSearch znajdziesz w przewodniku dla programistów. Zacznij używać jej z biblioteką AppSearch Jetpack, która zapewnia łatwy w obsłudze interfejs API oraz obsługuje procesor adnotacji.

Tryb gry

Interfejs Game Mode API i interwencje w trybie gry pozwalają zoptymalizować rozgrywkę przez nadanie priorytetów takich cechom jak wydajność czy czas pracy na baterii na podstawie ustawień użytkownika i konfiguracji gier.

Więcej informacji znajdziesz w artykule Tryb gry.

Rekomendacje i ulepszenia dotyczące funkcji obraz w obrazie (PIP)

Android 12 wprowadza te ulepszenia trybu obraz w obrazie:

Obsługa nowych gestów obrazu w obrazie

Android 12 obsługuje teraz gesty powiększania i powiększania za pomocą ściągnięcia palców w oknie PIP:

  • Aby umieścić okno w skrypcie, użytkownik może je przeciągnąć w lewo lub w prawo. Aby przywrócić okno ze schowka, użytkownik może kliknąć widoczną część okna ze schowka lub ją przeciągnąć.

  • Użytkownik może teraz zmieniać rozmiar okna PIP za pomocą ściągnięcia palcami.

W Androidzie 12 wprowadzono znaczne ulepszenia kosmetyczne w animowanych przejściach między oknami pełnoekranowymi a oknami PIP. Zdecydowanie zalecamy wprowadzenie wszystkich odpowiednich zmian. Gdy to zrobisz, zostaną one automatycznie skalowane na duże ekrany, takie jak urządzenia składane i tablety, bez konieczności wykonywania dodatkowych czynności.

Te funkcje to:

Powiadomienia o nowych połączeniach telefonicznych pozwalające na określenie ważności połączeń przychodzących

Android 12 dodaje nowy styl powiadomień Notification.CallStyle w przypadku połączeń telefonicznych. Użycie tego szablonu pozwala aplikacji sygnalizować znaczenie aktywnych połączeń za pomocą dobrze widocznego elementu, który na pasku stanu pokazuje godzinę połączenia. Użytkownik może kliknąć ten element, aby wrócić do połączenia.

Połączenia przychodzące i trwające są najważniejsze dla użytkowników, więc te powiadomienia są wyświetlane w pierwszej kolejności w cieniu. Dzięki temu system może też potencjalnie przekazywać priorytetowe połączenia na inne urządzenia.

Wdróż poniższy 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 narzędzia forIncomingCall(), aby utworzyć powiadomienie o stylu połączenia dla połączenia przychodzącego.

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 narzędzia forOngoingCall(), aby utworzyć powiadomienie o 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 narzędzia forScreeningCall(), aby utworzyć powiadomienie o stylu połączenia na potrzeby filtrowania połączenia.

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 zwiększyć jakość powiadomień w aplikacji, dodając animowane obrazy w powiadomieniach MessagingStyle() i BigPictureStyle(). Aplikacja może też teraz zezwalać użytkownikom na wysyłanie wiadomości graficznych, gdy odpowiadają na wiadomości w obszarze powiadomień.

Ulepszenia trybu pojemnego dotyczącego nawigacji przy użyciu gestów

Android 12 scala dotychczasowe zachowania, aby ułatwić użytkownikom wykonywanie poleceń nawigacyjnych przy użyciu gestów w trybie pojemnym. Android 12 zapewnia też zgodność wsteczną w trybie pojemnym.

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

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

Więcej informacji znajdziesz w sekcji Włączanie udostępniania najnowszych adresów URL.

Prywatność i bezpieczeństwo

Panel prywatności

Pionowa oś czasu przedstawia różne aplikacje, które miały dostęp do informacji o lokalizacji, wraz z czasem uzyskania dostępu
Rysunek 1. Ekran używania lokalizacji w panelu prywatności.

Na obsługiwanych urządzeniach z Androidem 12 lub nowszym w ustawieniach systemowych pojawi się ekran Panel prywatności. Na tym ekranie użytkownicy mają dostęp do osobnych ekranów, które pokazują, kiedy aplikacja uzyskuje dostęp do informacji o lokalizacji, aparacie i mikrofonie. Na każdym ekranie widać oś czasu z danymi konkretnego typu. Rysunek 1 przedstawia oś czasu dostępu do informacji o lokalizacji.

Aplikacja może uzasadnić użytkownikom 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 na obu tych ekranach.

Uprawnienia Bluetooth

Android 12 wprowadza uprawnienia BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE i BLUETOOTH_CONNECT. Te uprawnienia ułatwiają aplikacjom na Androida 12 interakcję z urządzeniami Bluetooth, zwłaszcza tym, które nie wymagają dostępu do lokalizacji urządzenia.

Zaktualizuj deklaracje uprawnień aplikacji Bluetooth

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

Wyszukiwanie grup uprawnień

W Androidzie 12 lub nowszym możesz zapytać, jak system porządkuje uprawnienia udostępniane na platformie w grupy uprawnień:

Ukryj okna nakładki aplikacji

Aby dać deweloperom większą kontrolę nad tym, co widzą użytkownicy podczas interakcji z ich aplikacją, w Androidzie 12 wprowadziliśmy możliwość ukrywania okien nakładanych wyświetlanych przez aplikacje z uprawnieniami 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 własne okno aplikacji. Aplikacje mogą korzystać z tej opcji w przypadku wyświetlania poufnych ekranów, np. procesu potwierdzania transakcji.

Aplikacje z oknami typu TYPE_APPLICATION_OVERLAY powinny uwzględniać alternatywne rozwiązania, takie jak obraz w obrazie czy bąbelki.

Flaga ochrony uprawnień znanych sygnatariuszy

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

Aplikacja może zadeklarować ten atrybut i użyć flagi knownSigner, aby umożliwić urządzeniom i aplikacjom udzielanie uprawnień do podpisu innym aplikacjom bez konieczności podpisywania aplikacji podczas produkcji i dostawy urządzenia.

Atestacja właściwości urządzenia

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

Od Androida 9 (poziom interfejsu API 28) właściciele zasad dotyczących urządzeń (IOD) korzystający z Keymaster w wersji 4.0 lub nowszej mogą weryfikować właściwości urządzenia w tych certyfikatach atestu. Od Androida 12 wszystkie aplikacje kierowane na Androida 12 (poziom interfejsu API 31) lub nowszego mogą przeprowadzić tę weryfikację za pomocą metody setDevicePropertiesAttestationIncluded().

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

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Bezpieczne działania związane z powiadomieniami na ekranie blokady

Począwszy od Androida 12 klasa Notification.Action.Builder obsługuje metodę setAuthenticationRequired(), która pozwala aplikacji wymagać odblokowania urządzenia, zanim wywoła określone działanie powiadomienia. Metoda ta stanowi dodatkową warstwę zabezpieczeń do powiadomień na zablokowanych urządzeniach.

Możliwe do lokalizowania ciągi znaków BiometricPrompt

Android 12 wprowadza nowe interfejsy API, które pomagają poprawić wrażenia użytkowników korzystających z uwierzytelniania biometrycznego w aplikacjach. Nowa zagnieżdżona klasa BiometricManager.Strings zawiera metody getButtonLabel(), getPromptMessage() i getSettingName(), dzięki którym aplikacja może pobrać czytelną i zlokalizowaną etykietę przycisku, komunikat z promptem lub nazwę ustawienia aplikacji. Dzięki tym etykietom możesz tworzyć bardziej precyzyjne instrukcje dla użytkownika, dostosowane do używanych metod uwierzytelniania biometrycznego, np. „Używaj rozpoznawania twarzy” lub „Aby kontynuować, użyj odcisku palca”.

Wykrywanie phishingu w aplikacjach do obsługi wiadomości (tylko Pixel)

Użytkownik widzi taką wiadomość po wykryciu podejrzanej wiadomości.

Na obsługiwanych urządzeniach Pixel Android 12 uruchamia wykrywanie phishingu w przypadku wiadomości otrzymywanych w popularnych komunikatorach. Do wykrywania podejrzanych działań system wykorzystuje uczenie maszynowe działające na urządzeniu. Po wykryciu błędu system wyświetla nad interfejsem aplikacji do obsługi wiadomości nakładkę bezpieczeństwa, aby ostrzegać użytkowników. Wykrywanie phishingu może na przykład ostrzegać użytkowników o tych potencjalnych zagrożeniach:

  • Podejrzane prośby, np. o wysłanie kodu, pieniędzy itp.
  • Niezaufane adresy URL
  • Złośliwe załączniki
  • linki do szkodliwych aplikacji,

Poza ostrzeżeniem użytkownika nakładka umożliwia też zgłoszenie podejrzanej wiadomości i przekazanie opinii o ostrzeżeniach wystawionych przez system.

Deweloperzy mogą zrezygnować z tej funkcji, dodając nowy tag metadanych zawierający ciąg com.google.android.ALLOW_PHISHING_DETECTION w plikach manifestu aplikacji. 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

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

Więcej informacji znajdziesz w artykule na temat transkodowania zgodnych multimediów.

Klasa wydajności

Android 12 wprowadza standard nazywany klasą 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 klasę wydajności, którą obsługuje. Deweloperzy mogą sprawdzać klasę wydajności urządzenia w czasie działania i udostępniać ulepszone funkcje, które w pełni wykorzystują możliwości urządzenia.

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

Ulepszenia kodowania wideo

Android 12 definiuje standardowy zestaw kluczy do kontrolowania wartości parametru kwantyzacji (QP) przy kodowaniu wideo, co pozwala programistom uniknąć kodu konkretnego dostawcy.

Nowe klucze są dostępne w interfejsie API MediaFormat oraz w bibliotece NDK Media.

Począwszy od Androida 12 kodery wideo wymuszają minimalny próg jakości. Dzięki temu użytkownicy nie odczują bardzo niskiej jakości kodowania filmów o dużej złożoności scen.

Aktywność audio

Począwszy od Androida 12 (poziom interfejsu API 31), gdy aplikacja poprosi o fokus, podczas gdy inna aplikacja będzie zaznaczana i odtwarza, system zaciemnia odtwarzaną aplikację.

Więcej informacji znajdziesz w artykule Tryb audio w Androidzie 12 i nowszych.

Aktualizacje MediaDrm

Aby określić, czy bieżące interfejsy API MediaDrm wymagają bezpiecznego dekodera, wykonaj te czynności:

  1. Utwórz MediaDrm.
  2. Otwórz sesję, aby uzyskać identyfikator sesji.
  3. Utwórz MediaCrypto, korzystając z identyfikatora sesji.
  4. Będziesz dzwonić pod numer 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, producentów urządzeń, stworzyło niestandardowe rozszerzenia do aparatów (takie jak Bokeh, HDR czy tryb nocny), aby aplikacje mogły korzystać z różnych funkcji na swoich urządzeniach. Biblioteka CameraX obsługuje już te niestandardowe rozszerzenia dostawców. W Androidzie 12 rozszerzenia od dostawców 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 Camera2 Extension API udostępniają dokładnie ten sam zestaw rozszerzeń co w Aparacie X. Są one już obsługiwane na wielu różnych urządzeniach, więc można 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 w modelach Quad lub Nona Bayer. Zapewniają one dużą elastyczność pod względem jakości obrazu i wydajności przy słabym oświetleniu. Android 12 wprowadza nowe interfejsy API platform, które pozwalają aplikacjom innych firm w pełni wykorzystać te uniwersalne czujniki. Nowe interfejsy API obsługują wyjątkowe działanie tych czujników i uwzględniają, że mogą obsługiwać różne konfiguracje i kombinacje strumieni w trybie pełnej rozdzielczości lub w trybie „maksymalnej rozdzielczości” lub w trybie „domyślnym”.

Grafika i grafika

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

Począwszy od Androida 12 możesz uzyskać dostęp do macierzystej awarii Twojej aplikacji jako bufora protokołu za pomocą metody ApplicationExitInfo.getTraceInputStream(). Bufor protokołu jest zserializowany za pomocą tego schematu. Wcześniej jedynym sposobem uzyskania 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 zrzutów tombstone.

Obsługa obrazów AVIF

Android 12 obsługuje obrazy 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 treści kodowane w ramce pochodzące z kompresji wideo. Pozwala to znacznie poprawić jakość obrazu przy tym samym rozmiarze pliku w porównaniu z starszymi formatami obrazów, takimi jak JPEG. Omówienie zalet tego formatu znajdziesz w poście na blogu Jake'a Archibalda.

Łatwiejsze rozmycie, filtry kolorów i inne efekty

W Androidzie 12 dodaliśmy nową wersję RenderEffect, która stosuje popularne efekty graficzne, takie jak rozmycie, filtry kolorów czy efekty cieniowania w Androidzie, do elementów View i hierarchii renderowania. Efekty można łączyć albo jako efekty łańcuchowe (tworzące efekt wewnętrzny i zewnętrzny), albo efekty mieszane. Różne urządzenia z Androidem mogą nie obsługiwać tej funkcji ze względu na ograniczoną moc obliczeniową.

Efekty można również zastosować do bazowego elementu RenderNode w elementach View, wywołując metodę View.setRenderEffect(RenderEffect).

Aby zaimplementować RenderEffect:

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

Natywne dekodowanie animowanego obrazu

W Androidzie 12 rozszerzono interfejs API NDK ImageDecoder, aby dekodować wszystkie klatki i dane o czasie z obrazów, które używają animowanych plików GIF i plików w formacie WebP. Po wprowadzeniu na Androida 11 interfejs API odkodował tylko pierwsze zdjęcie z animacji w tych formatach.

Aby jeszcze bardziej zmniejszyć rozmiar pliku APK i korzystać z przyszłych aktualizacji dotyczących bezpieczeństwa i wydajności, używaj ImageDecoder zamiast bibliotek innych firm.

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

Połączenia

Nie usypiaj aplikacji towarzyszących

Aby zaspokoić potrzebę zarządzania urządzeniem przez aplikacje towarzyszące, Android 12 wprowadza interfejsy API, które:

  • Umożliwia wybudzanie aplikacji, gdy urządzenie towarzyszące będzie w zasięgu.
  • Zapewnij, że proces będzie kontynuowany, gdy urządzenie będzie w zasięgu.

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

Profile Menedżera urządzeń towarzyszących

Okno uprawnień, które korzysta z profilu urządzenia towarzyszącego, aby poprosić o wiele uprawnień w jednym żądaniu.

Aplikacje partnerów na Androidzie 12 (poziom interfejsu API 31) i nowszym mogą korzystać z profili urządzenia towarzyszącego podczas łączenia się z zegarkiem. Korzystanie z profilu upraszcza proces rejestracji, łącząc w jednym kroku przyznawanie zestawu uprawnień określonego typu urządzenia.

Uprawnienia zawarte w pakiecie są przyznawane aplikacji towarzyszącej po nawiązaniu połączenia z urządzeniem i tylko w czasie, 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 funkcje szacowania przepustowości oferowane przez getLinkDownstreamBandwidthKbps() i getLinkUpstreamBandwidthKbps() zostały ulepszone zarówno w przypadku połączeń Wi-Fi, jak i komórkowych. Zwracane wartości reprezentują teraz średnią ważoną przez użytkownika w danym okresie średnią przepustowość na operatora lub sieci Wi-Fi, typ sieci i poziom sygnału we wszystkich aplikacjach na urządzeniu. Pozwala to uzyskać dokładniejsze i bardziej realistyczne oszacowanie oczekiwanej przepustowości, podać oszacowania przy uruchamianiu aplikacji „na zimno” oraz wymagają mniejszej liczby cykli w porównaniu z innymi metodami szacowania przepustowości.

Ulepszenia Wi-Fi Aware (NAN)

Android 12 dodaje kilka ulepszeń do Wi-Fi Aware:

  • Na urządzeniach z Androidem 12 (poziom interfejsu API 31) lub nowszym możesz używać wywołania zwrotnego onServiceLost(), aby otrzymywać alerty, gdy aplikacja utraci wykrytą usługę w związku z jej zatrzymaniem lub wykroczeniem poza jej zasięg.
  • Zmienia się sposób konfigurowania wielu ścieżek danych (ścieżki danych NAN). Wcześniejsze wersje wykorzystywały wiadomości L2 do wymiany informacji porównawczych o inicjatorach, co spowodowało opóźnienie. Na urządzeniach z Androidem 12 lub nowszym respondent (serwer) można skonfigurować tak, aby akceptował dowolny element równorzędny – nie musi więc z góry znać informacji o inicjucie. Przyspiesza to otwieranie ścieżki danych i umożliwia korzystanie z wielu połączeń punkt-punkt za pomocą jednego żądania sieciowego.
  • Aby zapobiec odrzucaniu przez platformę żądań odkrywania lub połączenia z powodu wyczerpania zasobów, na urządzeniach z Androidem 12 lub nowszym możesz wywołać metodę WifiAwareManager.getAvailableAwareResources(). Wartość zwrócona 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 + połączenie z internetem

Gdy urządzenia kierowane na Androida 12 (poziom interfejsu API 31) lub nowszego działają na urządzeniach obsługujących sprzęt, użycie połączenia P2P nie spowoduje odłą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 adresu WifiManager.isMultiStaConcurrencySupported().

Włącz wyłączenie ekranu w przypadku płatności NFC

W aplikacjach kierowanych na Androida 12 lub nowszego możesz włączyć płatności z użyciem NFC bez włączonego ekranu urządzenia. W tym celu ustaw requireDeviceScreenOn na false. Więcej informacji o płatnościach NFC przy wyłączonym lub zablokowanym ekranie znajdziesz w artykule Wyłączanie ekranu i działanie przy zablokowanym ekranie.

Miejsce na dane

Android 12 wprowadza te funkcje zarządzania miejscem na dane:

Główna funkcja

Automatyczne aktualizacje aplikacji

Android 12 wprowadza metodę setRequireUserAction() w przypadku aplikacji, które korzystają z interfejsu API PackageInstaller. Dzięki tej metodzie instalatory mogą aktualizować aplikacje bez konieczności potwierdzenia działania przez użytkownika.

Informacje o chipsetu urządzenia

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

Aktualizacje podstawowych interfejsów API Java

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

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