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ę, 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.
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 włączył tematyczne ikony aplikacji (czyli włączył przełącznik Ikony z motywem w ustawieniach systemu), a program uruchamiający obsługuje tę funkcję, system używa koloru wybranej tapety i motywu, aby określić kolor odcienia, który zostanie zastosowany 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 launcher 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 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 ustawienie 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ą preferowany język. Publiczne interfejsy API pomagają też zmniejszyć ilość powtarzalnego kodu. Obsługują też dzielone pakiety APK i obsługują funkcję Automatycznej kopii zapasowej aplikacji, która umożliwia przechowywanie 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.
Te zmiany nie dotyczą aplikacji, które nie obsługują wielu języków.
Ulepszona obsługa tekstu i języka
Android 13 zawiera kilka funkcji i ulepszeń językowych, 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 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 szybciej dzielić wyrazy, 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. 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 znaki hiragana jako wymowę fonetyczną wyszukiwanego hasła (np. nazwy miejsca lub aplikacji).
- Użyj klawiatury, aby przekonwertować znaki hiragany na znaki kanji.
- Wyszukiwanie przy użyciu znaków kanji
- Na koniec sprawdź 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ą przycinaniu i poprawiają pozycjonowanie 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 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
. - Kategoria liczby mnoga
many
została wprowadzona dla języka hiszpańskiegoes
, włoskiit
, portugalskiegopt
i portugalskiego (Portugalia)pt‑PT
. Podobnie jak we francuskim w CLDR w wersji 38, służy on do zapisywania dużych liczb.
Czcionki kolorów wektorowych
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, który szybko i wyraźnie wyświetla się niezależnie od rozmiaru.
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
- Dostawa 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 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 potwierdzenie wizualne, gdy treści są dodawane do schowka. Nowe potwierdzenie wygląda tak:
- Potwierdza, że treść została skopiowana.
- 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 przewidywania
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 pod kątem obsługi przewidywanego gestu zwrotnego. 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ń. Umożliwia użytkownikom udostępnianie i przesyłanie dźwięku znajomym i rodzinie, a także subskrybowanie publicznych transmisji w celach informacyjnych, rozrywkowych lub ułatwień dostępu. 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 ekspresyjne wykonanie dzięki kontrolerom na poszczególne nuty.
Poprawki dotyczące wydajności ekranu powitalnego
Android 13 poprawia wydajność animowanych ekranów powitalnych w interfejsie Splash Screen 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 uzyskać większą kontrolę nad tym, czy aplikacja zawsze wyświetla ikonę na ekranie powitalnym w Androidzie 13 i nowszych wersjach.
Szczegółowe informacje 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 odwołań 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 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. - 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. 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 API 33) wprowadza nowe uprawnienia 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 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 do 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 aplikacja kalendarza, która 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 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 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 wykorzystuje identyfikator bloku, który nie jest rozpoznawany w wersji 12L lub niższej. W związku z tym platforma stosuje to działanie sygnatariuszy:
- 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 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.
Ulepszone raportowanie błędów w Keystore i KeyMint
W przypadku aplikacji generujących klucze Magazyn kluczy i KeyMint podają teraz bardziej szczegółowe i dokładniejsze wskaźniki błędu. 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 zapewnić Ci wszystko, czego potrzebujesz 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ą 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 cieniowanie
Począwszy od Androida 13 system obsługuje programowalne obiekty RuntimeShader
, których zachowanie jest definiowane za pomocą języka cieniowania grafiki Android (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
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ą wybrać czas prezentacji i następnie powiadomić SurfaceFlinger
o swoim wyborze. 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 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 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 przenoszą użytkowników w sam środek akcji i zapewniają większy realizm. Szczegółowe informacje o integracji z tą funkcją znajdziesz w dokumentacji dźwięku przestrzennego.
Przewidywane 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 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ą korzystać z preferencji użytkownika w zakresie ścieżki audiodeskrypcji, wysyłając zapytanie za pomocą 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ć zmianę preferencji użytkownika, dodając do AccessbilityManager
detektor:
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()
wjava.util
klasachOptional
,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 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.