Android 13 wprowadza nowe funkcje i interfejsy API dla deweloperów. W sekcjach poniżej znajdziesz informacje o funkcjach Twoich aplikacji i pierwsze kroki z powiązanymi interfejsami API.
Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie Różnice między interfejsami API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsu Android API, gdzie nowe interfejsy API są wyróżnione, aby były lepiej widoczne. Aby dowiedzieć się, w jakich obszarach zmiany na platformie mogą wpłynąć na Twoje aplikacje, zapoznaj się ze zmianami w działaniu Androida 13 w przypadku aplikacji kierowanych na Androida 13 i wszystkich aplikacji.
Produktywność i narzędzia programistów
Ikony aplikacji zgodne z wybranym motywem
Od Androida 13 możesz włączyć motywy ikon aplikacji. W przypadku tej funkcji ikony aplikacji w obsługiwanych programach uruchamiających Androida są podświetlone, by dziedziczyć kolor wybranej tapety i innych motywów użytkownika.
Aby aplikacja obsługiwała tę funkcję, musi zawierać zarówno ikonę adaptacyjną, jak i monochromatyczną, a także wskazać monochromatyczną ikonę aplikacji z elementu <adaptive-icon>
w pliku manifestu. Jeśli użytkownik ma włączone ikony tematyczne (czyli włączył przełącznik Ikony tematyczne w ustawieniach systemu), a launcher obsługuje tę funkcję, system używa koloru tapety i motywu wybranego przez użytkownika, aby określić kolor zabarwienia, który następnie stosuje do monochromatycznej ikony aplikacji.
Na ekranie głównym NIE wyświetla się ikona aplikacji z motywem. Zamiast tego pojawia się ikona aplikacji adaptacyjnej lub standardowej w tych sytuacjach:
- Jeśli użytkownik nie włączył ikon z motywem
- Jeśli aplikacja nie ma monochromatycznej ikony
- Jeśli program uruchamiający nie obsługuje ikon aplikacji z motywem
Więcej informacji i instrukcje znajdziesz w artykule Ikony adaptacyjne.
Wybór języka według aplikacji
W wielu przypadkach użytkownicy wielojęzyczni ustawiają język systemu na jeden (np. angielski), ale chcą wybrać inny język w poszczególnych aplikacjach, np. niderlandzki, chiński czy hindi. Aby ułatwić aplikacjom zapewnianie lepszych wrażeń użytkownikom, Android 13 wprowadza te funkcje dla aplikacji obsługujących wiele języków:
Ustawienia systemowe: centralne miejsce, w którym użytkownicy mogą wybrać preferowany język dla każdej aplikacji.
Aplikacja musi zadeklarować w manifeście atrybut
android:localeConfig
, aby poinformować system, że obsługuje ona wiele języków. Więcej informacji znajdziesz w instrukcjach dotyczących tworzenia pliku zasobu i deklarowania go w pliku manifestu aplikacji.Dodatkowe interfejsy API: te publiczne interfejsy API, takie jak metody
setApplicationLocales()
igetApplicationLocales()
wLocaleManager
, umożliwiają aplikacjom ustawianie języka innego niż język systemu w czasie działania.Te interfejsy API są automatycznie synchronizowane z ustawieniami systemu, dlatego aplikacje, które korzystają z tych interfejsów API do tworzenia niestandardowych selektorów języka w aplikacji, zapewnią użytkownikom spójne środowisko niezależnie od tego, gdzie wybiorą preferowany język. Publiczne interfejsy API pomagają też zmniejszyć ilość kodu stałego, obsługują dzielone pakiety APK i umożliwiają korzystanie z automatycznego tworzenia kopii zapasowych aplikacji na potrzeby przechowywania ustawień języka użytkownika na poziomie aplikacji.
Aby zapewnić zgodność wsteczną z poprzednimi wersjami Androida, w AndroidX dostępne są też równoważne interfejsy API. Zalecamy używanie interfejsów API dodanych w Appcompat 1.6.0-beta01 lub nowszej wersji.
Zmiany te nie mają wpływu na aplikacje, które nie obsługują wielu języków.
Ulepszona obsługa tekstu i języka
Android 13 zawiera kilka ulepszeń tekstu i języka, które zapewniają bardziej dopracowany interfejs. Opisaliśmy to w tych sekcjach:
Szybsze dzielenie wyrazów
Przecinekowanie ułatwia czytanie tekstu po jego przewinięciu i czyni interfejs bardziej elastycznym. Od Androida 13 wydajność dzielenia wyrazów jest optymalizowana nawet o 200%, więc możesz włączyć tę funkcję w swojej aplikacji TextView
bez większego wpływu na wydajność renderowania. Aby włączyć szybsze dzielenie, użyj częstotliwości fullFast
lub normalFast
w setHyphenationFrequency()
.
Interfejsy API konwersji tekstu
Osoby posługujące się takimi językami jak japoński i chiński używają fonetycznych metod wprowadzania liter, co często spowalnia wyszukiwanie i spowalnia działanie takich funkcji jak autouzupełnianie. Na Androidzie 13 aplikacje mogą wywoływać nowy interfejs API konwersji tekstowych, aby użytkownicy mogli szybciej i łatwiej znaleźć to, czego szukają. Wcześniej, aby przeprowadzić wyszukiwanie, użytkownik z Japonii musiał wykonać te czynności:
- Wpisz alfabet hiragana jako fonetyczną wymowę wyszukiwanego hasła (np. miejsca lub nazwy aplikacji).
- Za pomocą klawiatury możesz przekonwertować znaki hiragana na kanji
- Ponownie wyszukaj za pomocą znaków kanji
- W końcu otrzymują wyniki wyszukiwania.
Dzięki nowemu interfejsowi API do konwersji tekstu użytkownicy z Japonii mogą wpisywać znaki w hiragana i natychmiast wyświetlać wyniki wyszukiwania w kanji, pomijając kroki 2 i 3.
Ulepszona wysokość wierszy w przypadku alfabetów innych niż łaciński
Android 13 poprawia wyświetlanie pism niełacińskich (takich jak tamilski, birmański, telugu czy tybetański) dzięki zastosowaniu wysokości linii dostosowanej do każdego języka. Nowe wysokości wierszy zapobiegają obcinaniu tekstu i poprawiają rozmieszczenie znaków. Twoja aplikacja może korzystać z tych ulepszeń, jeśli jest kierowana na Androida 13. Przetestuj swoje aplikacje z nowymi odstępami między wierszami, ponieważ zmiany mogą mieć wpływ na interfejs w językach opartych na alfabecie innym niż łaciński.
Ulepszone zawijanie tekstu w języku japońskim
Od Androida 13 komponenty TextView mogą łamać tekst na podstawie bunsetsu (najmniejszej jednostki wyrazu, która brzmi naturalnie) lub wyrażeń zamiast znaków, aby aplikacje w języku japońskim były bardziej dopracowane i czytelne. Możesz skorzystać z tego opakowania, używając android:lineBreakWordStyle="phrase"
z elementami TextView.
Aktualizacje biblioteki Unicode
Android 13 zawiera najnowsze ulepszenia, poprawki i zmiany zawarte w Unicode ICU 70, Unicode CLDR 40 i Unicode 14.0.
Oto kilka ważnych zmian:
- Angielski (Kanada)
en‑CA
i angielski (Filipiny)en‑PH
korzystają z zasobów tłumaczeniowych w języku angielskim (Stany Zjednoczone)en
, gdy nie są dostępne zasoby tłumaczeniowe, a nie w języku angielskim (Wielka Brytania)en‑GB
. - Wprowadziliśmy kategorię liczby mnogiej
many
w przypadku języków: hiszpańskies
, włoskiit
, portugalskipt
i portugalski (Portugalia)pt‑PT
. Podobnie jak we francuskim w CLDR w wersji 38, służy on do zapisywania dużych liczb.
Kolorowe czcionki wektorowe
Od Androida 13 system obsługuje renderowanie czcionek COLR w wersji 1 (COLRv1) i aktualizuje emoji systemowe do formatu COLRv1. COLRv1 to bardzo kompaktowy format czcionki, który renderuje się szybko i ostre w dowolnym rozmiarze.
W przypadku większości aplikacji system obsługuje wszystko, a COLRv1 po prostu działa. Jeśli jednak Twoja aplikacja implementuje własne renderowanie tekstu i korzysta z czcionek systemowych, zalecamy przetestowanie renderowania emotikonów.
Więcej informacji o COLRv1 znajdziesz w tych materiałach:
- Ogłoszenie na blogu Chrome Developers
- Wprowadzanie kolorowych czcionek wektorowych COLRv1 w Chrome (film)
- Specyfikacja tabeli COLR
Interfejs API rozmieszczania Szybkich ustawień
Szybkie ustawienia w obszarze powiadomień to wygodny sposób na zmianę ustawień i podjęcie szybkich działań bez wychodzenia z aplikacji. W przypadku aplikacji z niestandardowymi kafelkami ułatwiamy użytkownikom znajdowanie i dodawanie kafelków do Szybkich ustawień. Dzięki nowemu interfejsowi API do umieszczania kafelków aplikacja może teraz poprosić użytkownika o bezpośrednie dodanie niestandardowego kafelka do zestawu aktywnych kafelków Szybkich ustawień. Nowe okno systemowe pozwala użytkownikowi dodać kafelek w jednym kroku, bez wychodzenia z aplikacji, bez konieczności przechodzenia do Szybkich ustawień w celu dodania kafelka.
Podgląd schowka
Od Androida 13 system wyświetla standardowe potwierdzenie wizualne, gdy treści są dodawane do schowka. Nowa weryfikacja:
- Potwierdza, że treści zostały skopiowane.
- Udostępnia podgląd skopiowanej treści.
Ta funkcja ustandaryzuje różne powiadomienia wyświetlane przez aplikacje po skopiowaniu i zapewnia użytkownikom większą kontrolę nad schowkiem. Więcej informacji znajdziesz na stronie funkcji Kopiuj i wklej.
Gest przewidywanego przejścia wstecz
Android 13 wprowadza przewidujący gest cofania na urządzeniach z Androidem, takich jak telefony, tablety i urządzenia składane. Aby obsługiwać tę funkcję, musisz zaktualizować aplikację.
Szczegółową dokumentację znajdziesz w artykule Aktualizowanie aplikacji w celu obsługi przewidującego gestu wstecz. Możesz też wypróbować nasze ćwiczenia.
Bluetooth LE Audio
Technologia Bluetooth Low Energy (LE) Audio to bezprzewodowa technologia dźwiękowa zaprojektowana z myślą o zastąpieniu klasycznego Bluetooth i umożliwiająca określone zastosowania i topologie połączeń. Aplikacja umożliwia użytkownikom udostępnianie i nadawanie dźwięku znajomym i rodzinie oraz subskrybowanie publicznych transmisji w celu uzyskania informacji, rozrywki lub dostępności. Ma to zapewnić użytkownikom możliwość odbierania dźwięku wysokiej jakości bez obniżania czasu pracy na baterii, a także bezproblemowe przełączanie się między różnymi zastosowaniami niedostępnymi w przypadku Bluetooth Classic. Począwszy od Androida 13 system zawiera wbudowaną obsługę LE Audio, dzięki czemu deweloperzy mogą bezpłatnie korzystać z tych funkcji na zgodnych urządzeniach.
MIDI 2.0
Od Androida 13 system obsługuje standard MIDI 2.0, w tym możliwość podłączania sprzętu MIDI 2.0 przez USB. Ten standard oferuje takie funkcje jak zwiększona rozdzielczość kontrolerów, lepsza obsługa intonacji niezachodniej oraz bardziej ekspresyjne wykonanie dzięki kontrolerom na poszczególne nuty.
Ulepszony ekran powitalny
Android 13 zwiększa wydajność animowanych ekranów powitalnych w interfejsie SplashScreen API:
System określa czas trwania animacji bezpośrednio na podstawie
AnimatedVectorDrawable
. Przed Androidem 13 trzeba było bezpośrednio skonfigurowaćwindowSplashScreenAnimationDuration
.Użyj nowego atrybutu
windowSplashScreenBehavior
, aby mieć większą kontrolę nad tym, czy aplikacja ma zawsze wyświetlać ikonę na ekranie powitalnym na Androidzie 13 i nowszych.
Szczegółowe informacje znajdziesz w sekcji Ekrany powitalne.
Optymalizacja reklam ART
W Androidzie 13 (poziom interfejsu API 33) i nowszych ART znacznie szybsze przechodzenie do kodu natywnego i z niego
z wywołaniami JNI nawet 2,5 raza szybciej. Przerobiliśmy też przetwarzanie odniesień do środowiska wykonawczego, tak aby w większości nie blokowało, co jeszcze bardziej ograniczało bałagan. Możesz też użyć publicznego interfejsu API Reference.refersTo()
, aby szybciej odzyskiwać niedostępne obiekty. Dzięki zoptymalizowanym wyszukiwaniom klas i metod zauważysz, że interpreter działa teraz szybciej. ART przeprowadza też więcej weryfikacji kodu bajtowego w momencie instalacji, co pozwala uniknąć kosztów weryfikacji w czasie działania i utrzymuje krótki czas uruchamiania aplikacji.
Prywatność i bezpieczeństwo
Bezpieczniejsze eksportowanie odbiorników zarejestrowanych w kontekście
Aby zwiększyć bezpieczeństwo odbiorników w czasie działania, Android 13 umożliwia aplikacji określenie, czy zarejestrowany odbiornik wiadomości powinien być eksportowany i widoczny dla innych aplikacji na urządzeniu. W poprzednich wersjach Androida każda aplikacja na urządzeniu mogła wysyłać niezabezpieczony transmisję do dynamicznie zarejestrowanego odbiornika, chyba że odbiornik był chroniony przez uprawnienie dostępu z weryfikacją.
Ta konfiguracja eksportowania jest dostępna w aplikacjach, które wykonują co najmniej 1 z tych czynności:
- Użyj klasy
ContextCompat
z wersji 1.9.0 lub nowszej biblioteki AndroidX Core. - Kieruj reklamy na Androida 13 lub nowszego.
Selektor zdjęć
Android 13 (poziom API 33) i nowszy zawiera selektor zdjęć. Gdy aplikacja uruchamia selektor zdjęć, użytkownicy wybierają określone obrazy i filmy do udostępnienia w aplikacji, np. zdjęcia profilowe, zamiast przyznawać aplikacji dostęp do całej biblioteki multimediów. Jest to zalecany sposób uzyskiwania dostępu do zdjęć i filmów użytkownika.
Selektor zdjęć zapewnia większą prywatność użytkowników, ponieważ Twoja aplikacja nie musi deklarować żadnych uprawnień w czasie działania. Selektor zdjęć ma też wbudowany, ustandaryzowany interfejs aplikacji, dzięki któremu korzystanie z aplikacji jest bardziej spójne.
Nowe uprawnienia w czasie działania dla urządzeń Wi-Fi w pobliżu
Android 13 (poziom interfejsu API 33) wprowadza nowe uprawnienie środowiska wykonawczego w grupie uprawnień NEARBY_DEVICES
dla aplikacji, które zarządzają połączeniami urządzenia z pobliskimi punktami dostępu przez Wi-Fi. Aplikacje te muszą deklarować nowe uprawnienie NEARBY_WIFI_DEVICES
, gdy wywołują różne interfejsy Wi-Fi API.
Ponadto aplikacje kierowane na Androida 13 lub nowszego nie muszą deklarować uprawnień ACCESS_FINE_LOCATION
, o ile nie uzyskują fizycznej lokalizacji z interfejsów Wi-Fi API.
Dowiedz się więcej o uprawnieniach urządzeń Wi-Fi w pobliżu.
Nowe uprawnienia do używania alarmów precyzyjnych
Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, możesz użyć uprawnień USE_EXACT_ALARM
, które jest przyznawane jej automatycznie. Aby aplikacja mogła korzystać z tych uprawnień, musi jednak spełniać co najmniej 1 z tych kryteriów:
- Aplikacja to budzik lub minutnik.
- Aplikacja to kalendarz, który wyświetla powiadomienia o nadchodzących wydarzeniach.
Jeśli Twoja aplikacja ustawia alarmy precyzyjne, ale nie spełnia żadnego z sytuacji wymienionych na poprzedniej liście, kontynuuj zadeklarowanie uprawnień SCHEDULE_EXACT_ALARM
i przygotuj się na sytuację, w której użytkownik odmówi dostępu aplikacji.
Uprawnienia dewelopera, które można zmniejszyć
Od Androida 13 aplikacja może unieważniać dostęp do nieużywanych uprawnień środowiska wykonawczego. Ten interfejs API umożliwia aplikacji wykonywanie zadań związanych z zapewnianiem prywatności, takich jak:
- Usuń nieużywane uprawnienia.
- Stosuj sprawdzone metody dotyczące uprawnień, aby zwiększyć zaufanie użytkowników. Warto rozważyć wyświetlanie użytkownikom okna z informacją o odwołaniu uprawnień.
Schemat podpisu plików APK w wersji 3.1
Android 13 obsługuje schemat podpisu plików APK w wersji 3.1, co stanowi ulepszenie w stosunku do istniejącego schematu podpisu plików APK w wersji 3. Ten schemat rozwiązuje niektóre znane problemy ze schematem podpisu plików APK w wersji 3, które dotyczą rotacji. W szczególności schemat podpisu v3.1 obsługuje kierowanie na wersję SDK, co umożliwia rotacji kierowanie na nowszą wersję platformy.
Schemat podpisu w wersji 3.1 wykorzystuje identyfikator bloku, który nie jest rozpoznawany w wersji 12L lub niższej. Dlatego platforma stosuje takie zachowanie:
- Urządzenia z Androidem 13 lub nowszym korzystają z obróconego sygnatariusza w bloku wersji 3.1.
- Urządzenia ze starszymi wersjami Androida ignorują obróconego sygnatariusza i zamiast tego używają oryginalnego sygnatariusza w bloku w wersji 3.0.
Aplikacje, których klucz podpisywania nie został jeszcze rotowany, nie wymagają żadnych dodatkowych działań. Gdy te aplikacje zdecydują się na rotację, system domyślnie zastosuje schemat podpisu v3.1.
Aplikacje, które zostały już poddane rotacji i nadal chcą używać rotowanego klucza podpisywania w bloku podpisywania w wersji 3.0, muszą zaktualizować wywołanie:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...gdzie API_LEVEL
wynosi 32 lub mniej.
Dokładniejsze raportowanie błędów w magazynie kluczy i Mint
W przypadku aplikacji, które generują klucze, Keystore i KeyMint zapewniają teraz bardziej szczegółowe i dokładne wskaźniki błędów. Dodaliśmy hierarchię klas wyjątków w sekcji java.security.ProviderException
, w tym wyjątki dotyczące Androida, które obejmują kody błędów Keystore/KeyMint oraz informację, czy można ponownie próbować naprawić błąd. Możesz też zmodyfikować metody generowania i używania kluczy (podpisywanie, szyfrowanie), aby zgłaszać nowe wyjątki. Udoskonalone raportowanie błędów nie ogranicza się do generowania kluczy – teraz powinno ono zawierać informacje potrzebne do ponownego wygenerowania kluczy.
Obsługa tabletów i dużych ekranów
Android 13 opiera się na optymalizacji dla tabletów wprowadzonej w Androidzie 12 i pakiecie funkcji 12L, w tym optymalizacji interfejsu użytkownika systemu, ulepszonej wielozadaniowości i ulepszonych trybów zgodności. W ramach testów sprawdź, czy Twoje aplikacje jak najlepiej wyglądają na tabletach i innych urządzeniach z dużym ekranem.
Więcej informacji o nowościach i elementach do testowania znajdziesz na stronie Obsługa tabletów i dużych ekranów.
Grafika
Programowalne cieniowanie
Począwszy od Androida 13 system obsługuje programowalne obiekty RuntimeShader
o zachowaniu zdefiniowanym za pomocą języka cieniowania grafiki Androida (AGSL). AGSL ma znaczną część swojej składni co GLSL, ale działa w silniku renderowania Androida, aby dostosowywać obrazy w obszarze roboczym Androida oraz filtrować wyświetlane treści.
Android używa tych shaderów wewnętrznie do implementowania efektów falowania, rozmycia i rozciągania przy przewijaniu.
Android 13 i nowsze umożliwiają tworzenie podobnych zaawansowanych efektów w aplikacji.
Ulepszenia choreografa
Android 13 wprowadza publiczne metody interfejsu API, które umożliwiają aplikacjom uzyskanie dodatkowych informacji o możliwych harmonogramach klatek oraz dodają więcej kontekstu do SurfaceFlinger
trybutu dotyczącego cyklu życia klatek. Podobnie jak wcześniej, aplikacje mogą wysyłać wywołania zwrotne do Choreographer
i otrzymywać informacje o osi czasu klatki. W Androidzie 13 (poziom interfejsu API 33) funkcja Choreographer
zwraca wiele możliwych czasów wyświetlania i odpowiednich terminów wyświetlania klatek. Aplikacje mogą ustawić czas prezentacji, a następnie poinformować użytkownika SurfaceFlinger
o wybranej opcji. SurfaceFlinger
nie próbuje wtedy zastosować transakcji ani buforów zatrzasku przed żądanym czasem prezentacji.
Aparat
Nagrywanie filmów HDR
Począwszy od Androida 13 interfejsy API Camera2 obsługują nagrywanie filmów HDR (High Dynamic Range), co umożliwia wyświetlanie podglądu i nagrywanie filmów HDR za pomocą kamery. W porównaniu ze standardowym zakresem dynamiki (SDR) HDR zapewnia szerszy zakres kolorów i zwiększa zakres dynamiki komponentu luminancji (z obecnych 100 cd/m2 do 1000 cd/m2). Dzięki temu jakość filmów jest bardziej zbliżona do rzeczywistości, a kolory są bardziej nasycone, a światła i cienie bardziej wyraziste.
Więcej informacji o rejestrowaniu filmów HDR znajdziesz w dokumentacji nagrywania filmów HDR.
Multimedia
Dźwięk przestrzenny
Dźwięk przestrzenny to niezwykłe doznania dźwiękowe, które sprawiają, że treści multimedialne brzmią bardziej realistycznie. Szczegółowe informacje o integracji z tą funkcją znajdziesz w dokumentacji dotyczącej dźwięku przestrzennego.
Przewidywane kierowanie dźwięku
Aby pomóc aplikacjom do multimediów w określaniu sposobu kierowania dźwięku, Android 13 wprowadza w klasie AudioManager
interfejsy API tras audio. Interfejs API
getAudioDevicesForAttributes()
umożliwia pobranie listy urządzeń, które mogą być użyte do odtwarzania określonego dźwięku, a interfejs API
getDirectProfilesForAttributes()
pomaga określić, czy strumień audio można odtwarzać bezpośrednio. Korzystając z tych interfejsów API, określ, który z nich AudioFormat
najlepiej nadaje się do Twojego ścieżki audio.
Ułatwienia dostępu
Audiodeskrypcja
Android 13 (poziom interfejsu API 33) wprowadza nowe ustawienie ułatwień dostępu w całym systemie, które umożliwia użytkownikom włączenie audiodeskrypcji we wszystkich aplikacjach. Audiodeskrypcja to dodatkowa ścieżka narracji polegająca na tym, że lektor mówi w trakcie prezentacji, opisując, co dzieje się na ekranie podczas naturalnych przerw w dźwięku.
Aplikacje mogą stosować ustawienia użytkownika dotyczące ścieżek audiodeskrypcji, wysyłając zapytanie za pomocą parametru isAudioDescriptionRequested()
, jak pokazano w tym fragmencie kodu:
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
Aplikacje mogą monitorować zmiany preferencji użytkownika, dodając listenera do AccessbilityManager
:
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
Główna funkcja
Aktualizacje OpenJDK 11
Android 13 rozpoczyna pracę nad odświeżaniem podstawowych bibliotek Androida, aby zapewnić zgodność z wersją OpenJDK 11 LTS w zakresie aktualizacji bibliotek i obsługi języka Java 11 dla deweloperów aplikacji i platform. Zmiany w bibliotece podstawowej wprowadzone w Androidzie 13 będą też dostępne na urządzeniach z Androidem 12 w ramach aktualizacji systemu Google Play do modułu głównego ART.
Android 13 wprowadza następujące zmiany w bibliotekach podstawowych:
- Obsługa słowa kluczowego
var
w przypadku zmiennych lokalnych i parametrów lambda. Nowe metody w klasie String:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
Obsługa
Collection.toArray(IntFunction)
, która ułatwia dostosowanie kolekcji do tablicy.Obsługa
ifPresentOrElse()
,isEmpty()
,orElseThrow()
istream()
w klasachjava.util
Optional
,OptionalDouble
,OptionalInt
iOptionalLong
.Rozszerzona obsługa
SocketOptions
, w tym możliwość ponownego użycia gniazd.NullReader
,NullWriter
,InputStream
,OutputStream
itransferTo()
Reader
funkcja, która przenosi odczytane znaki doWriter
.Dodano funkcję kodowania i dekodowania adresów URL za pomocą
Charsets
.Funkcja
Charset
w usługachFileReader
,FileWriter
,PrintStream
iPrintWriter
.Nowe funkcje
transferTo()
,readNBytes()
,readAllBytes()
iwriteBytes()
dlaByteArrayInput
lubOutputStream
orazInput
lubOutputStream
.Obsługa środowiska wykonawczego i kompilatora dla
java.lang.invoke.VarHandle
.Aktualizuje interfejs
java.util.concurrent
do interfejsu OpenJDK 11 API za pomocą wewnętrznego interfejsuVarHandle
.
Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle lub jej podmiotów stowarzyszonych.