Android 12 wprowadza programistów – świetne nowe funkcje i interfejsy API. W sekcjach poniżej znajdziesz informacje o funkcjach dostępnych w Twoich aplikacjach i dowiesz się, jak zacząć z nich korzystać z odpowiednimi interfejsami API.
Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w artykule Różnice między interfejsami API . Szczegóły dotyczące nowych interfejsów API znajdziesz w artykule Android Dokumentacja API – nowe interfejsy API zostały wyróżnione, aby zwiększyć ich widoczność. Dodatkowo, aby obszarów, w których zmiany na platformie mogą wpłynąć na Twoje aplikacje, zmian w działaniu Androida 12 w przypadku aplikacji kierowanych Android 12 i dla wszystkich aplikacji.
Interfejs użytkownika
Material You
W Androidzie 12 wprowadziliśmy nowy język projektowania o nazwie Material Ty, która pomaga w tworzeniu bardziej spersonalizowane, atrakcyjniejsze aplikacje. Połączenie najnowszych technologii Material Design 3 aktualizacji aplikacji, wypróbuj wersję alfa Material Design Komponenty.
Ulepszenia widżetów
Android 12 ulepsza dotychczasowy interfejs Widgets API, aby zwiększyć wygodę użytkowników i deweloperów platformy i programów uruchamiających. Opracowaliśmy przewodnik, który pomoże Ci upewnij się, że widżet jest zgodny z Androidem 12, i odśwież go funkcje zabezpieczeń.
Zobacz ulepszenia widżetów w Androidzie 12 – znajdziesz więcej informacji.
Wstawianie treści multimedialnych
Android 12 wprowadza nowy, ujednolicony interfejs API, który umożliwia aplikacjom otrzymywać szczegółowe treści z dowolnego dostępnego źródła: schowka, klawiatury lub funkcji przeciągania spadek.
Więcej informacji znajdziesz w artykule Otrzymywanie szczegółowych informacji treści.
Interfejs API ekranów powitalnych aplikacji
Android 12 wprowadza nową animację uruchamiania aplikacji w przypadku wszystkich aplikacji, która zawiera ruch w aplikacji od momentu jej uruchomienia, ekran powitalny z ikoną i przejście do samej aplikacji. Zapoznaj się z informacjami o programistach ekranów powitalnych .
Interfejsy API z zaokrąglonym rogiem
Android 12: RoundedCorner
i WindowInsets.getRoundedCorner(int
position)
,
który określa promień i punkt środkowy zaokrąglonych narożników.
Więcej informacji znajdziesz w artykule Zaokrąglone rogi.
Bogate możliwości reakcji haptycznych
Android 12 to rozszerzenie narzędzi do tworzenia wartościowych reakcji haptycznych w interfejsie wydarzeń, wciągających i zachwycających efektów w grach oraz charakterystycznych reakcji haptycznych i zwiększać produktywność.
Efekty uruchamiające
Android 12 dodaje ekspresywne efekty, takie jak niska jakość zaznacz wykorzystują szersze pasma częstotliwości dostępne w najnowszych urządzeniach wykonawczych. Gra programiści mają teraz dostęp do wielu, różnych urządzenia uruchamiające niezależnie w grze kontrolerów, aby synchronicznie lub z różnymi efektami haptycznymi. na kilku urządzeniach uruchamiających. Deweloperom zalecamy korzystanie z stałe elementy podstawowe jako elementy składowe zapewniające zaawansowane efekty haptyczne – stałe, ulepszające zdarzenia w interfejsie kompozytor haptyczny do sekwencji w przypadku bardziej złożonych efektów. Te interfejsy API można wypróbować na Pixelu 4 i nadal pracujemy z naszymi partnerami, którzy są z nami producentami urządzeń, dzięki najnowszym rozwiązaniom haptycznym użytkownikom w całym ekosystemie.
Efekty haptyczne sprzężone z dźwiękiem
Aplikacje na Androida 12 mogą generować reakcję haptyczną na podstawie sesji audio przy użyciu: dzięki wibracjom w telefonie. Daje to szansę na bardziej wciągającą grę odczucia audio. Na przykład dzwonki z reakcją haptyczną mogą pomóc w identyfikacji rozmówców lub gry samochodowej mogą symulować wrażenie nierównego terenu.
Zobacz HapticGenerator
w dokumentacji referencyjnej.
Wyszukiwanie aplikacji
W Androidzie 12 wprowadzamy AppSearch – wysoką wydajną wyszukiwarkę działającą na urządzeniu. jako usługa systemowa. AppSearch umożliwia aplikacjom indeksowanie uporządkowanych danych. i przeszukiwać go za pomocą funkcji wyszukiwania pełnotekstowego. Ponadto AppSearch obsługuje natywne funkcje wyszukiwania, takie jak bardzo skuteczne indeksowanie pobieranie danych, obsługa wielu języków i ranking trafności.
AppSearch ma dwie odmiany: lokalny indeks wykorzystywany przez aplikację. kompatybilnych ze starszymi wersjami Androida lub centralnym indeksem, dla całego systemu w Androidzie 12. Za pomocą centralnego indeksu aplikacji może zezwalać na wyświetlanie jej danych na zainstalowany fabrycznie w systemie komponent analityczny. Dokładne dane, które zostaną wyświetlane na interfejsach systemu zależą od producenta OEM. Dodatkowo aplikacja może bezpiecznie udostępniać dane innym aplikacjom, aby mogły które pozwalają przeszukiwać też te dane.
Więcej informacji o AppSearch znajdziesz w przewodnika dla programistów i zacznij z niego korzystać bibliotekę AppSearch Jetpack, która zapewnia łatwy w obsłudze interfejs API oraz procesor adnotacji, .
Tryb gry
Interfejs Game Mode API i tryb gry i interwencji pozwalają optymalizować rozgrywkę, priorytetowo traktując takie cechy jak wydajność czy czas pracy na baterii na podstawie ustawień użytkownika lub konfiguracji gry.
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 składanie i powiększanie przez ściąganie palców gestów w obrazie w obrazie okno:
Aby umieścić okno w skrypcie, użytkownik może przeciągnąć je w lewo lub w prawo krawędzi. Aby przywrócić okno ze schowka, użytkownik może kliknąć widoczną część okna lub przeciągnąć je do kosza.
Użytkownik może teraz zmieniać rozmiar okna PIP za pomocą ściągnięcia palcami.
Polecane nowe funkcje, które wspierają dopracowaną zmianę obrazu w obrazie
W Androidzie 12 dodano znaczne poprawki kosmetyczne do animacji przejścia między oknami trybu pełnoekranowego i PIP. Zdecydowanie zalecamy wprowadzenie wszystkich obowiązujących zmian; zmiany te automatycznie skalują się do dużych ekranów, np. urządzeń składanych i tabletów, wykonanie dodatkowych czynności.
Te funkcje to:
-
Korzystanie z
setAutoEnterEnabled
flagę, która zapewnia płynniejsze przejście do trybu obrazu w obrazie podczas przesuwania w górę do strony głównej tryb nawigacji przy użyciu gestów. Wcześniej Android czekał na przejście do ekranu głównego. do zakończenia animacji, zanim zniknie. Płynniejsze animacje po przejściu w tryb obrazu w obrazie i wyjściu z niego
SourceRectHint
jest teraz ponownie wykorzystywana do zapewnienia płynniejszej animacji przy wchodzeniu i kończeniu Tryb PIP.Nowa flaga interfejsu API wyłączająca płynną zmianę rozmiaru w przypadku treści innych niż filmy
SeamlessResizeEnabled
zapewnia znacznie płynniejszą animację przenikania przy zmianie rozmiaru elementów innych niż wideo. treści w oknie obrazu w obrazie. Wcześniej zmiana rozmiaru treści innych niż filmy w obrazie PIP może spowodować utworzenie drażniących elementów wizualnych.
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
do połączeń telefonicznych. Użycie tego szablonu pozwala aplikacji określić znaczenie
aktywnych połączeń przez wyświetlanie dobrze widocznego elementu, który pokazuje godzinę połączenia
pasek stanu; użytkownik może kliknąć ten element, aby wrócić do rozmowy.
Ze względu na to, że połączenia przychodzące i trwające są kluczowe dla użytkowników, powiadomienia mają najwyższą pozycję w obszarze powiadomień. Ten ranking pozwala też by potencjalnie przekazać te 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 formatu 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 formatu 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 formatu 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ć skuteczność powiadomień w aplikacji przez
dostarczanie animowanych obrazów w języku: MessagingStyle()
i BigPictureStyle()
powiadomienia. Aplikacja może też pozwalać 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 konsoliduje dotychczasowe zachowania, aby ułatwić użytkownikom wykonuj polecenia nawigacyjne przy użyciu gestów w trybie pełnoekranowym . W Android 12 zapewnia zgodność wsteczną w przypadku aplikacji przyklejonych wciągający .
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 na ekranie Ostatnie. Po otwarciu treści w aplikacji użytkownik przesuń palcem do ekranu Ostatnie i znajdź aplikację, w której wyświetliła treść. a potem kliknij przycisk linku, aby skopiować lub udostępnić URL.
Aby uzyskać więcej informacji, zobacz Włączanie adresów URL ostatnich udostępnianie.
Prywatność i bezpieczeństwo
Panel prywatności
Na obsługiwanych urządzeniach z Androidem 12 lub nowszym ustawienie Prywatność W ustawieniach systemowych pojawi się ekran panelu. Na tym ekranie użytkownicy mają dostęp do oddzielne ekrany, które wyświetlają się, gdy aplikacje korzystają z lokalizacji, aparatu i mikrofonu i informacjami o nich. Na każdym ekranie widać oś czasu z danymi aplikacjami, które korzystały z określonego typu danych. Rysunek 1 przedstawia oś czasu dostępu do danych o lokalizacji i informacjami o nich.
Aplikacja może podać uzasadnienie użytkownicy pomóc im zrozumieć, dlaczego aplikacja korzysta z lokalizacji, aparatu lub mikrofonu. i informacjami o nich. Uzasadnienie może się pojawić na nowym ekranie Panelu prywatności, na ekranie uprawnień aplikacji lub na obu.
Uprawnienia Bluetooth
Android 12 wprowadza
BLUETOOTH_SCAN
BLUETOOTH_ADVERTISE
,
oraz
BLUETOOTH_CONNECT
uprawnień. Uprawnienia te ułatwiają korzystanie z aplikacji kierowanych
Android 12 obsługuje Bluetootha
urządzeń, zwłaszcza w przypadku aplikacji, które nie korzystają
wymagają dostępu do lokalizacji urządzenia.
Zaktualizuj deklaracje uprawnień aplikacji Bluetooth
Aby przygotować urządzenie do kierowania na Androida 12 lub nowszego, zaktualizuj do zasad Twojej aplikacji. Zamiast deklarować starszy zestaw Bluetootha uprawnienia, zadeklaruj nowocześniejszy zestaw Bluetooth uprawnienia.
Wyszukiwanie grup uprawnień
Na urządzeniu z Androidem 12 lub nowszym możesz wysyłać zapytania o porządek w systemie uprawnienia udostępniane przez platformę grupy uprawnień:
- Aby określić grupę uprawnień, w której system umieścił
uprawnienie zdefiniowane przez platformę, wywołanie
getGroupOfPlatformPermission()
- Aby określić uprawnienia zdefiniowane na platformie, które zostały umieszczone przez system
określoną grupę uprawnień, wywołaj
getPlatformPermissionsForGroup()
Ukryj okna nakładki aplikacji
Aby dać deweloperom większą kontrolę nad tym, co widzą użytkownicy korzystający z aplikacji
dewelopera, Android 12 wprowadza możliwość ukrywania funkcji
okna nakładane generowane przez aplikacje, które używają
SYSTEM_ALERT_WINDOW
uprawnienia.
Po zadeklarowaniu
HIDE_OVERLAY_WINDOWS
aplikacji, aplikacja może wywołać
setHideOverlayWindows()
aby wskazać, że wszystkie okna typu
TYPE_APPLICATION_OVERLAY
powinna być ukryta, gdy widoczne jest własne okno aplikacji. Aplikacje, które mogą podjąć działania
w przypadku wyświetlania poufnych ekranów, np. procesu potwierdzania transakcji.
Aplikacje wyświetlające okna typu TYPE_APPLICATION_OVERLAY
, które warto wziąć pod uwagę
alternatywne rozwiązania, które mogą być lepiej dostosowane do danego zastosowania, takie jak
obraz w obrazie lub
bąbelki.
Flaga ochrony uprawnień znanych sygnatariuszy
Począwszy od Androida 12
Atrybut knownCerts
dla
uprawnienia na poziomie podpisu
umożliwia odwoływanie się do skrótów znanych podpisów
certyfikaty w deklaracji
obecnie się znajdujesz.
Aplikacja może zadeklarować ten atrybut i używać flagi knownSigner
, aby zezwolić
urządzeń i aplikacji, aby udzielać uprawnień do podpisu innym
aplikacji, bez
podpisywanie aplikacji podczas 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, które są objęte atestem certyfikat gdy te aplikacje wygenerują nowy klucz.
Od Androida 9 (poziom interfejsu API 28) zasady dotyczące urządzeń
właścicieli witryn (IOD), którzy korzystają z:
Keymaster w wersji 4.0 lub nowszej
sprawdzić właściwości urządzenia w tych certyfikatach atestu. Zaczyna się za
Android 12 i każda aplikacja kierowana na Androida 12 (poziom interfejsu API 31) lub nowszego może osiągnąć lepsze wyniki
tę weryfikację za pomocą
setDevicePropertiesAttestationIncluded()
.
Wygenerowane właściwości urządzenia obejmują:
Build
pól:
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
setAuthenticationRequired()
.
która pozwala aplikacji wymagać, aby urządzenie
Bez blokady
zanim aplikacja wywoła określone działanie związane z powiadomieniem. Pomaga to dodać atrybut
– dodatkowa warstwa zabezpieczeń powiadomień na zablokowanych urządzeniach.
Możliwe do lokalizowania ciągi znaków BiometricPrompt
Android 12 wprowadza nowe interfejsy API, które pomagają ulepszyć dane biometryczne aplikacji
uwierzytelnianie użytkownika. Nowa funkcja BiometricManager.Strings
klasa zagnieżdżona zawiera getButtonLabel()
,
getPromptMessage()
,
oraz getSettingName()
które pozwalają aplikacji pobrać czytelną i zlokalizowaną etykietę przycisku,
lub nazwę ustawienia aplikacji. Użyj tych etykiet, aby zwiększyć dokładność
instrukcji dla użytkownika dotyczących uwierzytelniania biometrycznego;
używane metody, takie jak „Używaj rozpoznawania twarzy” lub „Aby kontynuować, użyj odcisku palca”.
Wykrywanie phishingu w aplikacjach do obsługi wiadomości (tylko Pixel)
Na obsługiwanych urządzeniach Pixel Android 12 uruchamia wykrywanie phishingu w wiadomościach otrzymywane w popularnych komunikatorach. System wykorzystuje systemy uczące się działające na urządzeniu do wykrywania podejrzanych działań. Po wykryciu bezpieczeństwa system wyświetla nałożone na UI aplikacji do obsługi wiadomości, aby ostrzegać użytkowników. Na przykład: wyłudzanie informacji może ostrzegać użytkowników o następujących 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,
Oprócz ostrzeżenia użytkownika nakładka umożliwia też zgłoszenie podejrzany komunikat i przekazać opinię na temat ostrzeżeń wystawionych przez system.
Deweloperzy mogą zrezygnować z tej funkcji, dodając nowy tag metadanych zawierający tag:
ciąg znaków com.google.android.ALLOW_PHISHING_DETECTION
w manifeście 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
Od Androida 12 (poziom interfejsu API 31) system może automatycznie transkodować HEVC(H.265) i HDR (HDR10 i HDR10+). filmów nagrywanych na urządzeniu do formatu AVC (H.264), który jest powszechnie stosowany. zgodne ze standardowymi odtwarzaczami. Wykorzystuje to nowoczesne kodeki, gdy: są dostępne bez negatywnego wpływu na zgodność 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. O klasa wydajności określa możliwości sprzętowe wykraczające poza podstawową wersję Androida . Każde urządzenie z Androidem deklaruje klasę wydajności, obsługuje. Programiści mogą sprawdzić klasę wydajności urządzenia w czasie działania oraz dostarczać ulepszone rozwiązania, które w pełni wykorzystują możliwości urządzenia, funkcje zabezpieczeń.
Zobacz Klasa skuteczności .
Ulepszenia kodowania wideo
Android 12 definiuje standardowy zestaw kluczy do sterowania wartość parametru kwantyzacji (QP) do kodowania wideo, co pozwala programistom i unikanie kodu danego dostawcy.
Nowe klucze są dostępne w
Interfejs API MediaFormat
oraz
Biblioteka multimediów NDK.
Począwszy od Androida 12 kodery wideo wymuszają minimalną jakość i konkretnego progu. Dzięki temu użytkownicy nie zobaczą treści o bardzo niskiej jakości. w przypadku kodowania filmów o dużej złożoności scen.
Aktywność audio
Od Androida 12 (poziom interfejsu API 31), gdy aplikacja prosi o aktywowanie dźwięku podczas inna aplikacja jest ustawiona na pierwszym planie i w trakcie odtwarzania jest przyciemniona.
Zobacz Aktywność audio w Androidzie 12 i nowszych .
Aktualizacje MediaDrm
Aby określić, czy w parze klucz-wartość
obecnie używanych interfejsów API usługi MediaDrm
, wykonaj te czynności:
- Utwórz
MediaDrm
. - Otwórz sesję, aby uzyskać identyfikator sesji.
- Utwórz
MediaCrypto
, korzystając z identyfikatora sesji. - Będziesz dzwonić pod numer
MediaCrypto.requiresSecureDecoderComponent(mimeType)
.
Z nowymi metodami requiresSecureDecoder(@NonNull String mime)
i
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
możesz to sprawdzić, gdy tylko utworzysz MediaDrm
.
Aparat
Rozszerzenia dostawcy Camera2
Wielu naszych partnerów, producentów urządzeń, ma własne rozszerzenia do aparatów, takie jak np. Bokeh, HDR, Tryb nocny i inne. zróżnicowanych treści na różnych urządzeniach. AparatX biblioteka już obsługuje tych niestandardowych rozszerzeń dostawców. W Androidzie 12 i rozszerzenia dostawców są teraz dostępne bezpośrednio na platformie.
Ułatwia to działanie aplikacji, które zawierają złożone
Camera2
wykorzystują rozszerzenia
dostawców bez konieczności
istotne zmiany w starszym kodzie. Interfejsy API rozszerzenia Camera2 prezentują dokładnie
ten sam zestaw
w Aparacie X, które są już obsługiwane w wielu różnych
urządzeń, dzięki czemu możesz z nich korzystać 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 wzorów Quad lub Nona Bayer. Zapewniają one dużą elastyczność pod kątem jakości obrazu i wydajności przy słabym oświetleniu. Android 12 wprowadza nowe interfejsy API platformy, które pozwalają aplikacjom innych firm w pełni wykorzystać i czujników. Nowe interfejsy API obsługują wyjątkowe działanie tych czujników i uwzględniają może obsługiwać różne konfiguracje i kombinacje strumieni tryb pełnej rozdzielczości lub „maksymalna rozdzielczość” w porównaniu z trybem „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 natywnego pliku tombstone w aplikacji jako
bufor protokołu przez funkcję
ApplicationExitInfo.getTraceInputStream()
.
. Bufor protokołu jest zserializowany za pomocą tego schematu.
Wcześniej jedynym sposobem na uzyskanie dostępu do takich informacji było
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 pliku graficznego AV1 (AVIF). AVIF to format kontenera dla obrazów i sekwencji obrazów zakodowanych za pomocą AV1. AVIF wykorzystuje kodowane w ramce treści wideo kompresję. Dzięki temu znacząco poprawia się jakość obrazu przy tym samym rozmiarze pliku w porównaniu ze starszymi formatami obrazów, np. JPEG. Więcej informacji na temat z zalet tego formatu można znaleźć na blogu Jake'a Archibalda post.
Łatwiejsze rozmycie, filtry kolorów i inne efekty
W Androidzie 12 dodaliśmy nową wersję RenderEffect
z zastosowaniem typowych efektów graficznych, takich jak rozmycie, filtry kolorów, cieniowanie Androida
efekty i inne funkcje View
i hierarchie renderowania. Efekty można łączyć w dowolny sposób
(które tworzą efekt wewnętrzny i zewnętrzny) lub mieszane. Inny Android
urządzenia mogą nie obsługiwać tej funkcji ze względu na ograniczoną moc obliczeniową.
Efekty można też stosować do tła RenderNode
dla View
, dzwoniąc pod numer View.setRenderEffect(RenderEffect)
.
Aby zaimplementować RenderEffect
:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
Natywne dekodowanie animowanego obrazu
Na Androidzie 12 pakiet NDK
Interfejs ImageDecoder
API został rozszerzony
do dekodowania wszystkich klatek i danych o czasie ze zdjęć
które używają animowanych GIF-ów
animowane pliki w formacie WebP. Kiedy to
wprowadzonego w Androidzie 11, ten interfejs API dekodował tylko pierwszy obraz
animacje w tych formatach.
Aby jeszcze bardziej zmniejszyć rozmiar pliku APK, używaj ImageDecoder
zamiast bibliotek innych firm
rozmiar
i czerpać korzyści z przyszłych aktualizacji związanych z bezpieczeństwem i wydajnością.
Więcej informacji o interfejsie API znajdziesz w dokumentacji API oraz w przykładzie na GitHubie.
Łączność
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.
- Zagwarantuj, że proces będzie kontynuowany, gdy urządzenie pozostanie w obrębie urządzenia. zakres dat.
Aby można było korzystać z interfejsów API, urządzenia muszą być połączone za pomocą urządzenia towarzyszącego
Menedżer. Więcej
Więcej informacji zawiera
CompanionDeviceManager.startObservingDevicePresence()
oraz
CompanionDeviceService.onDeviceAppeared()
Profile Menedżera urządzeń towarzyszących
Aplikacje partnerów na Androidzie 12 (poziom interfejsu API 31) lub nowszym mogą używać urządzenia towarzyszącego profile przy połączeniu z zegarkiem. Użycie profilu upraszcza rejestrację przez łączenie w pakiecie zestawu uprawnień dla danego typu urządzenia. z poziomu jednego kroku.
Uprawnienia zawarte w pakiecie są przyznawane aplikacji towarzyszącej, gdy urządzenie nawiązuje połączenie i działa tylko wtedy, gdy urządzenie jest powiązane. usunięcie aplikacji lub usunięcie powiązania powoduje też usunięcie uprawnień.
Więcej informacji:
AssociationRequest.Builder.setDeviceProfile()
Ulepszenia szacowania przepustowości
W Androidzie 12 funkcja szacowania przepustowości zapewniana przez
getLinkDownstreamBandwidthKbps()
oraz
getLinkUpstreamBandwidthKbps()
są lepsze zarówno pod kątem łączności Wi-Fi, jak i komórkowej. Wartości zwrócone teraz
reprezentują średnią ważoną przepustowość użytkownika w danym okresie na operatora lub sieć Wi-Fi
identyfikator SSID, typ sieci i poziom sygnału we wszystkich aplikacjach na urządzeniu;
Pozwala to uzyskać dokładniejsze i bardziej realistyczne oszacowanie oczekiwanej przepustowości,
dostarcza prognoz przy uruchomieniu aplikacji „na zimno” i wymaga 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ć funkcji
Wywołanie zwrotne
onServiceLost()
, które ma być powiadamiane, gdy aplikacja utraci wykrytą usługę z powodu usługa zatrzymuje się lub znajduje się poza zasięgiem. - Sposób konfigurowania wielu ścieżek danych (ścieżki danych NAN) zmienia się co pozwoli Ci zwiększyć efektywność. Wcześniejsze wersje używały wiadomości L2 do wymiany połączeń równorzędnych i przekazywaniu informacji o inicjatorach, co spowodowało opóźnienie. Na uruchomionych urządzeniach w Androidzie 12 lub nowszym, można skonfigurować respondenta (serwer) zaakceptować dowolnego partnera – to znaczy, że nie musi znać inicjatora, informacje z całego świata. Przyspiesza to otwieranie ścieżki danych i umożliwia bezpośrednio z jednego żądania sieciowego.
- Aby zapobiec odrzucaniu przez platformę kolejnych żądań wykrywania lub połączenia
do wyczerpania zasobów na urządzeniach z Androidem 12
wyżej, możesz zadzwonić
WifiAwareManager.getAvailableAwareResources()
Wartość zwrócona przez tę metodę pozwala uzyskać liczbę dostępnych danych ścieżek, liczbę dostępnych sesji publikacji oraz liczbę dostępnych sesji 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 z atrybutem
obsługę sprzętu przez połączenie peer-to-peer
połączenia nie rozłączą
istniejące połączenie Wi-Fi podczas tworzenia połączenia z urządzeniem równorzędnym. Do
aby sprawdzić wsparcie dla tej funkcji, użyj
WifiManager.isMultiStaConcurrencySupported()
Włącz wyłączenie ekranu w przypadku płatności NFC
W aplikacjach kierowanych na Androida 12 i nowsze wersje można włączyć komunikację NFC
płatności bez włączonego ekranu urządzenia przez ustawienie
requireDeviceScreenOn
do
false
Więcej informacji o płatnościach NFC przy wyłączonym lub zablokowanym ekranie znajdziesz na stronie
Wyłącz ekran i ekran blokady
i ich działaniu.
Miejsce na dane
Android 12 wprowadza opisane poniżej funkcje zarządzania miejscem na dane: funkcje:
- Obsługa
MediaDocumentsProvider
przez Media Store, gdy aplikacja pobiera identyfikator URI multimediów odpowiadający danemu dostawcy dokumentów Identyfikator URI. - Katalog usług głosowych nagrania.
MANAGE_MEDIA
uprawnienia, które umożliwia aplikacji zarządzanie multimediami operacje bez wyświetlania użytkownikowi okna z potwierdzeniem.- Aplikacje, które zawierają
MANAGE_EXTERNAL_STORAGE
uprawnienia iQUERY_ALL_PACKAGES
uprawnień (takich jak aplikacje do zarządzania plikami) może wywołać niestandardowe aktywność do zarządzania miejscem do przechowywania innej aplikacji, pod warunkiem że to ona utworzy niestandardową aktywność.
Główna funkcja
Automatyczne aktualizacje aplikacji
Android 12 wprowadza
setRequireUserAction()
w przypadku aplikacji, które korzystają z
Interfejs API PackageInstaller
.
Ta metoda pozwala aplikacjom instalacyjnym aktualizować aplikacje bez konieczności
użytkownik musi potwierdzić tę czynność.
Informacje o chipsetu urządzenia
Android 12 dodaje do android.os.Build
2 stałe, które zapewniają widoczność
informacje o dostawcy i modelu chipsetu SoC za pomocą pakietu SDK. Możesz pobrać
informacje, dzwoniąc pod numer Build.SOC_MANUFACTURER
i Build.SOC_MODEL
.
Aktualizacje podstawowych interfejsów API Java
Na podstawie próśb i współpracy z deweloperami dodaliśmy te elementy: biblioteki podstawowe w Androidzie 12:
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
|