Android 13 wprowadza nowe funkcje i interfejsy API dla deweloperów. W sekcjach poniżej znajdziesz informacje o funkcjach aplikacji i powiązanych z nimi interfejsach 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 obszarach, w których zmiany w platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami zachowania Androida 13 w przypadku aplikacji kierowanych na Androida 13 i wszystkich aplikacji.
Narzędzia i produktywność programistów
Ikony aplikacji zgodne z wybranym motywem
Od Androida 13 możesz włączyć motywy ikon aplikacji. Dzięki tej funkcji ikony aplikacji w obsługiwanych programach uruchamiania Androida są zabarwione, aby przejąć kolorystykę wybranej przez użytkownika tapety i innych motywów.
Aby obsługiwać tę funkcję, aplikacja musi zawierać ikonę dostosowaną i monochromatyczną ikonę aplikacji oraz wskazywać na monochromatyczną ikonę aplikacji w elemencie <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.
Ekran główny NIE wyświetla ikony aplikacji w motywie, a zamiast niej wyświetla ikonę aplikacji standardowej lub dostosowaną do urządzenia w jednym z tych scenariuszy:
- Jeśli użytkownik nie włączył ikon z motywem
- Jeśli Twoja 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 język, np. angielski, ale chcą wybrać inne języki w przypadku niektórych aplikacji, np. holenderski, chiński lub 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 deklarować atrybut
android:localeConfig
w swoim pliku manifestu, aby poinformować system, że obsługuje 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 innego języka niż język systemu w czasie wykonywania.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ą preferencje językowe. 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 funkcji i ulepszeń dotyczących języka, które pomogą Ci zapewnić lepsze wrażenia użytkownika. W następnych sekcjach opisaliśmy:
Szybsze dzielenie wyrazów
Przecinekowanie ułatwia czytanie tekstu po 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 wyrazów, użyj częstotliwości fullFast
lub normalFast
w setHyphenationFrequency()
.
Interfejsy API konwersji tekstu
Użytkownicy, którzy mówią w językach takich jak japoński czy chiński, używają metod wprowadzania pisma fonetycznego, co często spowalnia wyszukiwanie i funkcje takie jak autouzupełnianie. W Androidzie 13 aplikacje mogą wywoływać nowy interfejs API do konwertowania tekstu, 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 znaki hiragana jako wymowę fonetyczną wyszukiwanego hasła (np. nazwy miejsca lub aplikacji).
- Użyj klawiatury, aby przekonwertować znaki hiragany na znaki kanji.
- Ponownie wyszukaj przy użyciu znaków kanji
- W końcu otrzymują wyniki wyszukiwania.
Dzięki nowemu interfejsowi API do konwertowania 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ą przycinaniu i poprawiają pozycjonowanie znaków. Twoja aplikacja może korzystać z tych ulepszeń, jeśli jest kierowana na Androida 13. Pamiętaj, aby przetestować swoje aplikacje przy użyciu nowego odstępu między wierszami, ponieważ zmiany mogą mieć wpływ na interfejs w językach niełacińskich.
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"
w elementach 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 istotnych zmian:
- Gdy nie ma dostępnych zasobów tłumaczenia, zarówno angielski (Kanada)
en‑CA
, jak i angielski (Filipiny)en‑PH
korzystają z zasobów tłumaczenia angielskiego (Stany Zjednoczone)en
, a nie z angielskiego (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 wersji CLDR 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 zajmuje się wszystkim, 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
Szybkie ustawienia API
Szybkie ustawienia w panelu powiadomień to wygodny sposób na zmianę ustawień lub wykonanie szybkich działań bez opuszczania kontekstu aplikacji. W przypadku aplikacji, które oferują niestandardowe kafelki, ułatwiamy użytkownikom odkrywanie 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 dialogowe systemu umożliwia użytkownikowi dodanie karty w jednym kroku bez konieczności opuszczania aplikacji. Nie trzeba już przechodzić do Szybkich ustawień, aby dodać kartę.
Podgląd schowka
Od Androida 13 system wyświetla standardowe wizualne potwierdzenie, gdy treści są dodawane do schowka. Nowa weryfikacja:
- Potwierdza, że treści zostały skopiowane.
- Wyświetla podgląd skopiowanych treści.
Ta funkcja standaryzuje różne powiadomienia wyświetlane przez aplikacje po skopiowaniu i daje użytkownikom większą kontrolę nad ich schowka. 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, duże ekrany 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 ćwiczenie z programowania.
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. Został zaprojektowany tak, aby użytkownicy mogli uzyskać dźwięk o wysokiej jakości bez poświęcania czasu pracy baterii, a także bezproblemowo przełączać się między różnymi zastosowaniami, co nie jest możliwe w przypadku klasycznego Bluetootha. Od Androida 13 system zawiera wbudowane wsparcie dla 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 wyraziste wykonanie dzięki kontrolerom na poszczególne nuty.
Poprawki dotyczące wydajności ekranu powitalnego
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 ustawićwindowSplashScreenAnimationDuration
bezpośrednio.Użyj nowego atrybutu
windowSplashScreenBehavior
, aby mieć większą kontrolę nad tym, czy aplikacja zawsze wyświetla ikonę na ekranie powitalnym w Androidzie 13 i nowszych.
Szczegółową dokumentację znajdziesz w sekcji Ekrany powitalne.
Optymalizacja ART
W Androidzie 13 (API na poziomie 33) i nowszych ART znacznie przyspiesza przełączanie się między natywną implementacją kodu a interpretowanym kodem.Dzięki temu wywołania JNI są teraz nawet 2,5 raza szybsze. Przetwarzanie referencji w czasie wykonywania zostało również zmienione, aby było w większości niezablokowane, co dodatkowo zmniejsza zacięcia. 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 utrzymać 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. - kierować aplikację na Androida 13 lub nowszego,
Selektor zdjęć
Android 13 (poziom API 33) lub 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. Dodatkowo selektor zdjęć zapewnia wbudowane, standardowe interfejsy użytkownika w aplikacjach, co zapewnia bardziej spójne wrażenia.
Nowe uprawnienia w czasie działania dla urządzeń Wi-Fi w pobliżu
Android 13 (poziom API 33) wprowadza nowe uprawnienie w czasie wykonywania 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 API Wi-Fi.
Oprócz tego, jeśli aplikacje nie określają fizycznej lokalizacji na podstawie interfejsów API Wi-Fi, nie muszą deklarować uprawnień ACCESS_FINE_LOCATION
, jeśli są kierowane na Androida 13 lub nowszą wersję.
Dowiedz się więcej o uprawnieniach urządzeń Wi-Fi w pobliżu.
Nowe uprawnienie dostępu do precyzyjnych alarmów
Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, możesz używać uprawnienia USE_EXACT_ALARM
, które jest automatycznie przyznawane Twojej aplikacji. Aby jednak mogła ona korzystać z tego uprawnienia, musi spełniać co najmniej 1 z tych kryteriów:
- Aplikacja to budzik lub minutnik.
- Twoja 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 wypadków opisanych na poprzedniej liście, nadal deklaruj uprawnienie SCHEDULE_EXACT_ALARM
i bądź przygotowany na sytuację, w której użytkownik odmówi przyznania dostępu do aplikacji.
Deweloperska opcja obniżania uprawnień
Od Androida 13 aplikacja może odwołać uprawnienia do nieużywanych uprawnień w czasie działania. Ten interfejs API pozwala aplikacji wykonywać działania zwiększające prywatność, takie jak:
- Usuń nieużywane uprawnienia.
- Stosuj sprawdzone metody dotyczące uprawnień, aby zwiększyć zaufanie użytkowników. Możesz rozważyć wyświetlenie użytkownikom okna z informacją o odebranych uprawnieniach.
Schemat podpisu plików APK w wersji 3.1
Android 13 obsługuje schemat podpisu pliku APK w wersji 3.1, który stanowi ulepszenie dotychczasowego schematu podpisu pliku APK w wersji 3. Ten schemat rozwiązuje niektóre znane problemy ze schematem podpisu plików APK w wersji 3 dotyczące 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 używa identyfikatora bloku, który nie jest rozpoznawany w wersji 12L lub starszej. Dlatego platforma stosuje takie zachowanie:
- Urządzenia z Androidem 13 lub nowszym korzystają z podpisującego obraconego w ramach blokady wersji 3.1.
- Urządzenia z starszymi wersjami Androida ignorują rotowany podpisujący i zamiast tego używają oryginalnego podpisującego w bloku 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
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
to 32 lub mniej.
Ulepszone raportowanie błędów w Keystore i KeyMint
W przypadku aplikacji, które generują klucze, Keystore i KeyMint zapewniają teraz bardziej szczegółowe i dokładniejsze 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. Ulepszone zgłaszanie błędów nie jest ograniczone do generowania kluczy i powinno zawierać informacje potrzebne do ponownego wygenerowania klucza.
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 aplikacje wyglądają jak najlepiej na tabletach i innych urządzeniach z dużym ekranem.
Więcej informacji o nowościach i testach znajdziesz na stronie Obsługa tabletów i dużych ekranów.
Grafika
Programowalne shadery
Począwszy od Androida 13 system obsługuje programowalne obiekty RuntimeShader
, których zachowanie jest definiowane za pomocą języka cieniowania grafiki Androida (AGSL). AGSL ma podobną składnię do GLSL, ale działa w ramach silnika renderowania Androida, aby dostosowywać rysowanie na płótnie Androida oraz filtrować zawartość widoku.
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
cyklu życia klatek.Choreographer
ASurfaceControl
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ą wybrać czas prezentacji i następnie powiadomić SurfaceFlinger
o swoim wyborze. SurfaceFlinger
nie próbuje wtedy stosować transakcji ani buforów blokady przed żądanym czasem prezentacji.
Aparat
Nagrywanie filmów HDR
Począwszy od Androida 13 interfejsy Camera2 API obsługują przechwytywanie filmów w High Dynamic Range (HDR), co umożliwia wyświetlanie podglądu i nagrywanie treści wideo HDR za pomocą aparatu. W porównaniu ze standardowym zakresem dynamiki (SDR) HDR zapewnia szerszy zakres kolorów i zwiększa zakres dynamiczny komponentu jasności (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 nagrywaniu filmów HDR znajdziesz w dokumentacji dotyczącej nagrywania filmów HDR.
Multimedia
Dźwięk przestrzenny
Dźwięk przestrzenny to niezwykłe doznania dźwiękowe, które przenoszą użytkowników w sam środek akcji i zapewniają większy realizm. Szczegółowe informacje o integracji z tą funkcją znajdziesz w dokumentacji dotyczącej dźwięku przestrzennego.
Wyprzedzające kierowanie dźwięku
Aby ułatwić aplikacjom multimedialnym identyfikowanie sposobu kierowania dźwięku, Android 13 wprowadza interfejsy API kierowania dźwięku w klasie AudioManager
. Interfejs API getAudioDevicesForAttributes()
umożliwia pobranie listy urządzeń, które mogą być używane 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 API 33) wprowadza nowe ustawienie ułatwień dostępu w całym systemie, które umożliwia użytkownikom włączanie audiodeskrypcji we wszystkich aplikacjach. Audiodeskrypcja to dodatkowy lektor, który opowiada o prezentacji, opisując to, 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ą funkcji 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 proces odświeżania podstawowych bibliotek Androida, aby dostosować je do wersji OpenJDK 11 LTS, która zawiera aktualizacje bibliotek oraz obsługę 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żywania gniazd.NullReader
,NullWriter
,InputStream
,OutputStream
itransferTo()
Reader
funkcja, która przenosi odczytane znaki doWriter
.Dodano funkcję kodowania i dekoodowania adresów URL za pomocą
Charsets
.Funkcje
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
java.util.concurrent
do interfejsu OpenJDK 11 API, używając wewnętrznie interfejsuVarHandle
.
Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle lub jej podmiotów stowarzyszonych.