Funkcje i interfejsy API – przegląd

Android 12 wprowadza świetne nowe funkcje i interfejsy API dla deweloperów. 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 porównawczym interfejsów API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsu API Androida – nowe interfejsy API są wyróżnione. Aby dowiedzieć się więcej o tym, w jakich obszarach zmiany na platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami zachowania Androida 12 w przypadku aplikacji kierowanych na Androida 12wszystkich 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 swoich aplikacjach wszystkie najnowsze aktualizacje dotyczące Material Design 3, wypróbuj wersję alfa Material Design Components.

Material You

Ulepszenia widżetów

Android 12 odświeża interfejs Widgetów API, aby poprawić wrażenia użytkowników i deweloperów na platformie oraz w wyrzutniach. Opracowaliśmy przewodnik, który pomoże Ci sprawdzić, czy widżet jest zgodny z Androidem 12, i aby odświeżyć go o nowe funkcje.

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

Wstawianie szczegółowych treści

Android 12 wprowadza nowy, ujednolicony interfejs API, który umożliwia aplikacji otrzymywanie 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 Odbieranie treści multimedialnych.

Interfejs API ekranów powitalnych aplikacji

Android 12 wprowadza nową animację uruchamiania aplikacji, która obejmuje ruch w kierunku aplikacji od momentu jej uruchomienia, ekran powitalny z ikoną aplikacji oraz przejście do samej aplikacji. Więcej informacji znajdziesz w przewodniku dla programistów dotyczącym ekranów powitalnych.

Interfejsy API zaokrąglonych narożników

Android 12 wprowadza atrybuty RoundedCorner i WindowInsets.getRoundedCorner(int position), które określają promień i środek zaokrąglonych narożników.

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

bogate wrażenia haptyczne;

Android 12 udostępnia narzędzia do tworzenia informujących wibracji w reakcji na zdarzenia w interfejsie, wciągające i przyjemne efekty w grach oraz wibracje z uwzględnieniem uwagi użytkownika na potrzeby zwiększenia produktywności.

Efekty działania

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. Deweloperom zalecamy używanie konstantelementów podstawowych jako elementów składowych bogatych efektów haptycznych – pierwsze służą do wzbogacania zdarzeń interfejsu użytkownika, a kompozytor haptyczny do sekwencyjności elementów podstawowych w celu tworzenia bardziej złożonych efektów. Interfejsy API są dostępne do wypróbowania na urządzeniach Pixel 4. Wciąż współpracujemy z partnerami będącymi producentami urządzeń, aby zapewnić użytkownikom najnowsze funkcje haptyczne w całym ekosystemie.

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 zapewnić jeszcze bardziej wciągające wrażenia z gier i dźwięków. Na przykład dzwonki z wibracją mogą pomagać w rozpoznawaniu rozmówców, a gra wyścigowa może symulować jazdę po nierównym terenie.

Więcej informacji znajdziesz w dokumentacji HapticGenerator.

AppSearch

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. Ponadto AppSearch obsługuje funkcje wyszukiwania natywnego, takie jak bardzo wydajne indeksowanie i pobieranie, obsługę wielu języków oraz ranking trafności.

Diagram przedstawiający indeksowanie i wyszukiwanie w AppSearch

AppSearch występuje w 2 wersjach: indeksu lokalnego, który aplikacja może używać i który jest zgodny ze starszymi wersjami Androida, oraz indeksu centralnego, który jest utrzymywany 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, jakie dane będą wyświetlane w interfejsie systemu, zależy od producenta OEM. Dodatkowo aplikacja może bezpiecznie udostępniać dane innym aplikacjom, aby mogły one również wyszukiwać te dane.

Więcej informacji o AppSearch znajdziesz w przewodniku dla deweloperów. Możesz zacząć z niego korzystać za pomocą biblioteki AppSearch Jetpack, która zapewnia interfejs API przyjazny dla deweloperów, a także obsługę procesora adnotacji.

Tryb gry

Interfejs Game Mode APIinterwencje w trybie gry umożliwiają optymalizację rozgrywki przez nadawanie priorytetów cechom takim jak wydajność czy czas pracy na baterii na podstawie ustawień użytkownika lub konfiguracji gry.

Więcej informacji znajdziesz w artykule Tryb gry.

Zalecenia i ulepszenia 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 ukrywania i powiększania w oknie PiP:

  • Aby schować okno, użytkownik może przeciągnąć je 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 zmienić rozmiar okna PiP za pomocą funkcji powiększania.

Android 12 wprowadził znaczne ulepszenia kosmetyczne animowanych przejść między oknami pełnoekranowymi a oknami w trybie PiP. Zdecydowanie zalecamy wdrożenie wszystkich odpowiednich zmian. Gdy to zrobisz, zmiany zostaną automatycznie dopasowane do dużych ekranów, takich jak składane urządzenia i tablety, bez konieczności wykonywania dodatkowych czynności.

Dotyczy to tych funkcji:

nowe powiadomienia o połączeniach telefonicznych, które umożliwiają ustalanie ważności poszczególnych połączeń;

Android 12 wprowadza nowy styl powiadomieńNotification.CallStyledotyczących połączeń telefonicznych. Dzięki temu szablonowi aplikacja może wskazywać wagę bieżących połączeń, wyświetlając na pasku stanu widoczny element, który pokazuje czas trwania połączenia. Użytkownik może go dotknąć, aby powrócić do połączenia.

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

W przypadku wszystkich typów połączeń zastosuj ten kod.

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 forOngoingCall(), aby utworzyć powiadomienie w stylu rozmowy 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 elementu forScreeningCall(), aby utworzyć powiadomienie w stylu połączenia do odfiltrowania 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 powiadomień z użyciem obrazów wzbogaconych

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

Ulepszenia trybu pełnoekranowego w przypadku nawigacji za pomocą gestów

Android 12 konsoliduje dotychczasowe zachowanie, aby ułatwić użytkownikom wykonywanie poleceń nawigacji za pomocą gestów w trybie pełnoekranowym. Ponadto Android 12 zapewnia zachowanie zgodności wstecznej w przypadku trybu przylegającego i trybu pełnoekranowego.

Udostępnianie adresów URL ostatnio używanych aplikacji (tylko Pixel)

Na urządzeniach Pixel użytkownicy mogą teraz udostępniać linki do ostatnio przeglądanych treści internetowych bezpośrednio z ekranu Ostatnie. 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 linia czasu pokazuje różne aplikacje, które uzyskały dostęp do informacji o lokalizacji, oraz czas, w którym dostępy te miały miejsce
Rysunek 1. Ekran „Użycie lokalizacji” w panelu Prywatność.

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. Każdy ekran zawiera osi czasu z informacjami o tym, kiedy różne aplikacje uzyskiwały dostęp do określonego typu danych. Ilustracja 1 przedstawia oś czasu dostępu do danych o lokalizacji.

Aplikacja może wyjaśniać użytkownikom, dlaczego ma dostęp do informacji o lokalizacji, aparacie lub mikrofonie. Uzasadnienie może się wyświetlać na nowym ekranie ustawień prywatności lub na ekranie uprawnień aplikacji.

Uprawnienia Bluetooth

Android 12 wprowadza uprawnienia BLUETOOTH_SCAN, BLUETOOTH_ADVERTISEBLUETOOTH_CONNECT. Te uprawnienia ułatwiają aplikacjom przeznaczonym 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ń Bluetooth w aplikacji

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

Wyszukiwanie grupy uprawnień

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

  • Aby określić grupę uprawnień, do której system przypisał uprawnienie zdefiniowane przez platformę, wywołaj funkcję getGroupOfPlatformPermission().
  • Aby określić uprawnienia zdefiniowane przez platformę, które system umieścił w konkretnej grupie uprawnień, wywołaj funkcję getPlatformPermissionsForGroup().

Ukrywanie okien nakładek aplikacji

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

Po zadeklarowaniu uprawnienia HIDE_OVERLAY_WINDOWS aplikacja może wywołać funkcję 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, takich jak przepływy potwierdzenia transakcji.

Aplikacje, które wyświetlają okna typu TYPE_APPLICATION_OVERLAY, powinny rozważyć alternatywne rozwiązania, które mogą być bardziej odpowiednie do ich przypadku użycia, takie jak obraz w obrazie lub bąbelki.

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.

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 ich produkcji i wysyłki.

Weryfikacja właściwości urządzenia

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

Od Androida 9 (poziom interfejsu API 28) właściciele zasad dotyczących urządzeń (IOD) korzystający z systemu Keymaster w wersji 4.0 lub nowszej 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ć tę weryfikację za pomocą metody setDevicePropertiesAttestationIncluded().

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

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Bezpieczne działania dotyczące powiadomień na ekranie blokady

Od Androida 12 klasa Notification.Action.Builder obsługuje metodę setAuthenticationRequired(), która pozwala aplikacji wymagać odblokowania urządzenia, zanim wykona ona daną czynność powiadomienia. Ta metoda pozwala dodać 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 ułatwiają poprawę wrażeń użytkowników aplikacji w zakresie uwierzytelniania biometrycznego. 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. Używaj tych etykiet, aby tworzyć bardziej precyzyjne instrukcje dla użytkowników dotyczące konkretnych metod uwierzytelniania biometrycznego, np. „Użyj rozpoznawania twarzy” lub „Użyj odcisku palca, aby kontynuować”.

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

Gdy wykryjemy podejrzaną wiadomość, użytkownik zobaczy taki komunikat.

Na obsługiwanych urządzeniach Pixel Android 12 uruchamia wykrywanie phishingu w przypadku wiadomości odebranych w popularnych komunikatorach. Do wykrywania podejrzanych działań system wykorzystuje uczenie maszynowe działające na urządzeniu. Gdy wykryje takie treści, wyświetla nakładkę bezpieczeństwa na interfejsie aplikacji do przesyłania wiadomości, aby ostrzec 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 lub podobnych informacji;
  • Niesprawdzone adresy URL
  • złośliwe załączniki,
  • linki do złośliwych aplikacji;

Oprócz ostrzeżenia użytkownik może też zgłosić podejrzaną wiadomość i przekazać opinię na temat ostrzeżeń wydanych przez system.

Deweloperzy mogą zrezygnować z tej funkcji, dodając nowy tag metadanych zawierający ciąg znaków 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

Zgodne transkodowanie 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. Dzięki temu można korzystać z nowoczesnych kodeków, gdy są one dostępne, bez utraty zgodności ze starszymi aplikacjami.

Aby dowiedzieć się więcej, zapoznaj się z artykułem Transkodowanie 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 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 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ąć kodu specyficznego dla danego 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 odczują bardzo niskiej jakości kodowania filmów o dużej złożoności scen.

Aktywność audio

Od Androida 12 (poziom API 31) w przypadku, gdy aplikacja poprosi o skupienie się na dźwięku, gdy inna aplikacja ma skupienie i odtwarza dźwięk, system powoduje zniknięcie aplikacji odtwarzającej.

Więcej informacji znajdziesz w artykule Tryb dźwiękowy w Androidzie 12 i wyższych.

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, używając 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 będących producentami urządzeń stworzyło niestandardowe rozszerzenia aparatu (takie jak bokeh, HDR, tryb nocny itp.), których chcą używać w aplikacjach, aby zapewnić użytkownikom odmienne wrażenia na ich urządzeniach. Biblioteka CameraX obsługuje już te niestandardowe rozszerzenia dostawców. W Androidzie 12 te rozszerzenia dostawców są dostępne bezpośrednio na platformie.

To rozszerzenie ułatwia aplikacjom o złożonej implementacji korzystanie z rozszerzeń dostawców bez konieczności wprowadzania znaczących zmian w starym kodzie.Camera2 Interfejsy API rozszerzeń Camera2 udostępniają dokładnie ten sam zestaw rozszerzeń co CameraX, a są one 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 Quad Bayer

Obecnie wiele urządzeń z Androidem jest wyposażonych w czujniki aparatu o bardzo wysokiej rozdzielczości, zazwyczaj z wzorcem Quad lub Nona Bayera, które zapewniają dużą elastyczność w zakresie jakości obrazu i działania przy słabym oświetleniu. Android 12 wprowadza nowe interfejsy API platformy, które umożliwiają aplikacjom innych firm pełne korzystanie z tych wszechstronnych czujników. Nowe interfejsy API obsługują unikalne działanie tych czujników i biorą pod uwagę, ż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 grafika

Dawanie aplikacjom bezpośredniego dostępu do śladów usunięcia

Od Androida 12 możesz uzyskać dostęp do natywnego nagrobka błędu aplikacji jako bufora protokołu za pomocą metody ApplicationExitInfo.getTraceInputStream(). Bufor protokołu jest serializowany 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 Udzielanie aplikacjom bezpośredniego dostępu do śladów usunięcia.

Obsługa obrazów AVIF

Android 12 obsługuje obrazy w formacie pliku obrazu AV1 (AVIF). AVIF to format kontenera dla obrazów i sekwencji obrazów zakodowanych za pomocą AV1. AVIF wykorzystuje kodowanie intraramkowe z kompresji wideo. Dzięki temu znacznie poprawia się jakość obrazu przy tym samym rozmiarze pliku w porównaniu ze starszymi formatami obrazów, takimi jak JPEG. Szczegółowe omówienie zalet tego formatu znajdziesz w poście na blogu Jake'a Archibalda.

Łatwiejsze rozmycia, filtry kolorów i inne efekty

Android 12 wprowadza nowy format RenderEffect, który umożliwia stosowanie typowych efektów graficznych, takich jak rozmycie, filtry kolorów czy efekty shadera Androida, do View i hierarchii renderowania. Efekty można łączyć w postaci efektów łańcuchowych (które składają się z efektu wewnętrznego i zewnętrznego) lub efektów mieszanych. Różne urządzenia z Androidem mogą obsługiwać tę funkcję, ale mogą też nie obsługiwać z powodu ograniczonej mocy obliczeniowej.

Efekty można też stosować do RenderNodeView, wywołując funkcję View.setRenderEffect(RenderEffect).

Aby wdrożyć RenderEffect:

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

Dekodowanie natywnego obrazu animowanego

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. Gdy ten interfejs API został wprowadzony w Androidzie 11, dekodował tylko pierwsze zdjęcie z animacji w tych formatach.

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

Więcej informacji o tym interfejsie API znajdziesz w dokumentacji APIprzykładach na GitHubie.

Łączność

Utrzymywanie aplikacji towarzyszących w stanie czuwania

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

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

Aby korzystać z interfejsów API, musisz połączyć urządzenia za pomocą Menedżera urządzeń towarzyszących. Więcej informacji znajdziesz w sekcji CompanionDeviceManager.startObservingDevicePresence()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 partnerskie na Androidzie 12 (poziom interfejsu API 31) lub nowszym mogą korzystać z profili urządzeń towarzyszących podczas łączenia z zegarkiem. Korzystanie z profilu upraszcza proces rejestracji, ponieważ pozwala połączyć udzielenie zestawu uprawnień do konkretnego typu urządzenia w jednym kroku.

Połączone uprawnienia są przyznawane aplikacji towarzyszącej po połączeniu urządzenia i trwają tylko przez czas jego powiązania. Usunięcie aplikacji lub usunięcie powiązania powoduje usunięcie uprawnień.

Więcej informacji znajdziesz w sekcji AssociationRequest.Builder.setDeviceProfile().

Ulepszenia szacowania przepustowości

W Androidzie 12 funkcje szacowania przepustowości udostępniane przez getLinkDownstreamBandwidthKbps()getLinkUpstreamBandwidthKbps() zostały ulepszone zarówno w przypadku Wi-Fi, jak i łączności komórkowej. Wartości zwracane teraz reprezentują średnią ważoną przepustowość użytkownika na podstawie SSID operatora lub sieci Wi-Fi, typu sieci i poziomu sygnału we wszystkich aplikacjach na urządzeniu. Może to zwrócić dokładniejsze i bardziej realistyczne oszacowanie oczekiwanej przepustowości, a także zapewnić oszacowania dotyczące zimnego uruchamiania aplikacji. Wymaga też mniejszej liczby cykli w porównaniu z innymi metodami oszacowania przepustowości.

Ulepszenia Wi-Fi Aware (NAN)

Android 12 wprowadza kilka ulepszeń funkcji 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 wyjścia poza 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 użytkownik odpowiadający (serwer) może zostać skonfigurowany tak, aby akceptował dowolny element równorzędny, czyli nie musi 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 framework próśb o wyszukiwanie lub połączenie z powodu braku zasobów, na urządzeniach z Androidem 12 lub nowszym możesz wywołać funkcję 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 i internetowe

Gdy urządzenia kierowane na Androida 12 (poziom interfejsu API 31) i nowsze działają na urządzeniach z obsługą sprzętową, korzystanie z połączeń typu peer-to-peer nie powoduje 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 kierowanych na Androida 12 lub nowszego możesz włączyć płatności 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 Otwieranie ekranu i zablokowywanie ekranu.

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. Ta metoda umożliwia aplikacjom instalacyjnym aktualizowanie aplikacji bez konieczności potwierdzenia działania przez użytkownika.

Informacje o chipsetach 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. Te informacje możesz uzyskać, dzwoniąc pod numery Build.SOC_MANUFACTURERBuild.SOC_MODEL.

Aktualizacje podstawowych interfejsów API Java

Na podstawie żądań i współpracy z deweloperami 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