Android 13 wprowadza nowe, świetne funkcje i interfejsy API dla deweloperów. W sekcjach poniżej znajdziesz informacje o funkcjach aplikacji i dowiesz się, jak zacząć korzystać z powiązanych interfejsów API.
Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie różnic w interfejsie API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji API Androida – 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 dla programistów
Ikony aplikacji zgodne z wybranym motywem
Od Androida 13 możesz wyrazić zgodę na używanie ikon aplikacji z motywem. Dzięki tej funkcji ikony aplikacji w obsługiwanych programach uruchamiających na Androidzie są zabarwione, aby odzwierciedlać kolorystykę wybranej przez użytkownika tapety i innych motywów.
Aby obsługiwać tę funkcję, aplikacja musi mieć zarówno ikonę adaptacyjną, jak i monochromatyczną ikonę aplikacji, oraz wskazywać na monochromatyczną ikonę aplikacji z elementu <adaptive-icon> w pliku manifestu. Jeśli użytkownik włączył ikony aplikacji z motywem (czyli włączył przełącznik Ikony z motywem w ustawieniach systemu), a program uruchamiający obsługuje tę funkcję, system używa kolorystyki wybranej przez użytkownika tapety i motywu, aby określić kolor odcienia, który następnie stosuje do monochromatycznej ikony aplikacji.
Ekran główny NIE wyświetla ikony aplikacji z motywem, ale wyświetla ikonę adaptacyjną lub standardową w tych sytuacjach:
- Jeśli użytkownik nie włączył ikon aplikacji z motywem
- Jeśli aplikacja nie ma ikony monochromatycznej
- Jeśli program uruchamiający nie obsługuje ikon aplikacji z motywem
Więcej informacji i instrukcji 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 dla konkretnych aplikacji, np. niderlandzki, chiński lub hindi. Aby ułatwić aplikacjom zapewnianie lepszych wrażeń tym użytkownikom, Android 13 wprowadza te funkcje w aplikacjach obsługujących wiele języków:
Ustawienia systemowe: scentralizowane miejsce, w którym użytkownicy mogą wybrać preferowany język dla każdej aplikacji.
Aplikacja musi zadeklarować atrybut
android:localeConfigw pliku manifestu, aby poinformować system, że obsługuje wiele języków. Więcej informacji znajdziesz w instrukcjach tworzenia pliku zasobów i deklarowania go w pliku manifestu aplikacji.Dodatkowe interfejsy API: te publiczne interfejsy API, takie jak metody
setApplicationLocales()igetApplicationLocales()wLocaleManager, umożliwiają aplikacjom ustawianie w czasie działania języka innego niż język systemu.Te interfejsy API automatycznie synchronizują się z ustawieniami systemowymi, dzięki czemu aplikacje, które używają tych interfejsów do tworzenia niestandardowych selektorów języka w aplikacji, zapewniają użytkownikom spójne działanie niezależnie od tego, gdzie wybierają ustawienia języka. Publiczne interfejsy API pomagają też zmniejszyć ilość powtarzalnego kodu, obsługują dzielone pakiety APK i automatyczne kopie zapasowe aplikacji, aby przechowywać ustawienia 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 mają wpływu na aplikacje, które nie obsługują wielu języków.
Ulepszona obsługa tekstu i języków
Android 13 zawiera kilka ulepszeń dotyczących tekstu i języka, które pomagają zapewnić lepsze wrażenia użytkownikom. Opisujemy je w tych sekcjach:
Szybsze dzielenie wyrazów
Przenoszenie wyrazów ułatwia czytanie zawijanego tekstu i sprawia, że interfejs jest bardziej elastyczny. Począwszy od Androida 13, wydajność przenoszenia wyrazów została zoptymalizowana nawet o 200%, dzięki czemu możesz włączyć tę funkcję w TextView, nie wpływając prawie wcale na wydajność renderowania. Aby przyspieszyć przenoszenie wyrazów, użyj częstotliwości fullFast lub normalFast w setHyphenationFrequency().
Interfejsy API do konwersji tekstu
Osoby posługujące się językami takimi jak japoński i chiński używają metod wprowadzania znaków fonetycznych, co często spowalnia wyszukiwanie i funkcje takie jak autouzupełnianie. W Androidzie 13 aplikacje mogą wywoływać nowy interfejs API do konwersji tekstu, dzięki czemu użytkownicy mogą szybciej i łatwiej znaleźć to, czego szukają. Wcześniej, aby wyszukać na przykład „pociąg z Tokio do Kioto”,
- wpisują hiraganę jako wymowę fonetyczną wyszukiwanego hasła (np. nazwy miejsca lub aplikacji),
- Używanie klawiatury do konwertowania znaków hiragany na kanji
- Wyszukaj ponownie, używając znaków kanji.
- wyświetlić wyniki wyszukiwania.
Dzięki nowemu interfejsowi API do konwersji tekstu japońscy użytkownicy mogą wpisywać tekst w hiraganie i od razu widzieć wyniki wyszukiwania w kanji, pomijając kroki 2 i 3.
Ulepszone wysokości wierszy w przypadku skryptów innych niż łacińskie
Android 13 ulepsza wyświetlanie skryptów innych niż łacińskie (takich jak tamilski, birmański, telugu i tybetański) dzięki zastosowaniu wysokości wiersza 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ą wpłynąć na interfejs w językach innych niż łacińskie.
Ulepszone zawijanie tekstu w języku japońskim
Począwszy od Androida 13, TextViews mogą zawijać tekst według Bunsetsu (najmniejszej jednostki słów, która brzmi naturalnie) lub fraz, a nie według znaków, co pozwala na tworzenie bardziej dopracowanych i czytelnych aplikacji w języku japońskim. Możesz skorzystać z tego zawijania, używając android:lineBreakWordStyle="phrase" z TextViews.
Aktualizacje biblioteki Unicode
Android 13 zawiera najnowsze ulepszenia, poprawki i zmiany, które są częścią Unicode ICU 70, Unicode CLDR 40 i Unicode 14.0.
Oto kilka istotnych zmian:
- Jeśli nie ma dostępnych zasobów tłumaczeniowych, w przypadku języka angielskiego (Kanada)
en‑CAi angielskiego (Filipiny)en‑PHużywane są zasoby tłumaczeniowe języka angielskiego (Stany Zjednoczone)en, a nie angielskiego (Wielka Brytania)en‑GB. manyWprowadzono kategorię liczby mnogiej dla języków: hiszpańskies, włoskiit, portugalskipti portugalski (Portugalia)pt‑PT. Podobnie jak w przypadku języka francuskiego wprowadzonego w CLDR w wersji 38, jest on używany w przypadku dużych liczb.
Kolorowe czcionki wektorowe
Od Androida 13 system obsługuje renderowanie czcionek COLR w wersji 1 (COLRv1) i aktualizuje emotikony systemowe do formatu COLRv1. COLRv1 to bardzo kompaktowy format czcionki, który szybko i wyraźnie renderuje się w każdym rozmiarze.
W przypadku większości aplikacji system obsługuje wszystko, a COLRv1 po prostu działa. Jeśli jednak aplikacja implementuje własne renderowanie tekstu i używa czcionek systemowych, zalecamy przetestowanie renderowania emotikonów.
Więcej informacji o COLRv1 znajdziesz w tych materiałach:
- Ogłoszenie na blogu Chrome Developers
- Wprowadzanie wektorowych czcionek kolorowych COLRv1 w Chrome (film)
- Specyfikacja tabeli COLR
Interfejs API do umieszczania w Szybkich ustawieniach
Szybkie ustawienia w obszarze powiadomień to wygodny sposób na zmianę ustawień lub wykonywanie szybkich działań bez opuszczania aplikacji. W przypadku aplikacji, które udostępniają 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 systemowe umożliwia użytkownikowi dodanie kafelka w jednym kroku, bez opuszczania aplikacji, zamiast przechodzenia do Szybkich ustawień w celu dodania kafelka.

Podgląd schowka
Począwszy od Androida 13, system wyświetla standardowe wizualne potwierdzenie, gdy treść zostanie dodana do schowka. Nowe potwierdzenie:
- Potwierdza, że treść została skopiowana.
- Wyświetla podgląd skopiowanych treści.
Ta funkcja ujednolica 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 gest przewidywanego przejścia wstecz na urządzeniach z Androidem, takich jak telefony, urządzenia z dużym ekranem i urządzenia składane. Aby obsługiwać tę funkcję, musisz zaktualizować aplikację.
Szczegółowe informacje znajdziesz w artykule Aktualizowanie aplikacji, aby obsługiwała gest przewidywanego przejścia wstecz. Możesz też wypróbować nasze ćwiczenia z programowania.
Bluetooth LE Audio
Low Energy (LE) Audio to bezprzewodowy protokół audio, który ma zastąpić klasyczny Bluetooth i umożliwić korzystanie z określonych przypadków użycia i topologii połączeń. Umożliwia użytkownikom udostępnianie i transmitowanie dźwięku znajomym i rodzinie oraz subskrybowanie publicznych transmisji w celach informacyjnych, rozrywkowych lub związanych z ułatwieniami dostępu. Został zaprojektowany tak, aby użytkownicy mogli odbierać dźwięk o wysokiej jakości bez skracania czasu pracy na baterii i płynnie przełączać się między różnymi przypadkami użycia, które nie są możliwe w przypadku klasycznego Bluetooth. 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 spoza kręgu zachodniego i bardziej ekspresyjne wykonanie dzięki kontrolerom dla poszczególnych nut.
Ulepszenia wydajności ekranu powitalnego
Android 13 zwiększa wydajność animowanych ekranów powitalnych w interfejsie Splash Screen API:
System określa czas trwania animacji bezpośrednio na podstawie
AnimatedVectorDrawable. W wersjach starszych niż Android 13 konieczne było bezpośrednie ustawieniewindowSplashScreenAnimationDuration.Użyj nowego atrybutu
windowSplashScreenBehavior, aby mieć większą kontrolę nad tym, czy aplikacja zawsze wyświetla ikonę na ekranie powitalnym w Androidzie 13 lub nowszym.
Szczegółowe informacje znajdziesz w artykule Ekrany powitalne.
Optymalizacje ART
W Androidzie 13 (API na poziomie 33) i nowszych ART znacznie przyspiesza przełączanie się na kod natywny i z powrotem, dzięki czemu wywołania JNI są teraz nawet 2, 5 razy szybsze. Przetwarzanie odwołań do środowiska wykonawczego również zostało zmienione, aby było w większości nieblokujące, co dodatkowo zmniejsza zacinanie się. Możesz też używać publicznego interfejsu API Reference.refersTo(), aby szybciej odzyskiwać nieosiągalne obiekty. Zauważysz też, że interpreter działa teraz szybciej dzięki zoptymalizowanemu wyszukiwaniu klas i metod. ART przeprowadza też więcej weryfikacji kodu bajtowego podczas instalacji, co pozwala uniknąć kosztów weryfikacji w czasie działania i zapewnia szybkie uruchamianie aplikacji.
Prywatność i bezpieczeństwo
Bezpieczniejsze eksportowanie odbiorców zarejestrowanych w kontekście
Aby zwiększyć bezpieczeństwo odbiorników w czasie działania, Android 13 wprowadza możliwość określenia przez aplikację, czy zarejestrowany odbiornik 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ć niechronione komunikaty do dynamicznie zarejestrowanego odbiorcy, chyba że był on chroniony przez uprawnienie do podpisu.
Ta konfiguracja eksportowania jest dostępna w aplikacjach, które wykonują co najmniej jedną z tych czynności:
- Użyj klasy
ContextCompatz biblioteki AndroidX Core w wersji 1.9.0 lub nowszej. - Kieruj na Androida 13 lub nowszego.
Selektor zdjęć
Android 13 (poziom API 33) i nowsze wersje zawierają selektor zdjęć. Gdy aplikacja uruchamia selektor zdjęć, użytkownicy wybierają konkretne obrazy i filmy, które chcą udostępnić aplikacji, np. zdjęcia profilowe, zamiast przyznawać jej 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 użytkownikom większą prywatność, ponieważ aplikacja nie musi deklarować żadnych uprawnień w czasie działania. Ponadto selektor zdjęć zapewnia wbudowany, ustandaryzowany interfejs aplikacji, który zapewnia użytkownikom bardziej spójne wrażenia.
Nowe uprawnienia w czasie działania aplikacji dotyczące urządzeń Wi-Fi w pobliżu
Android 13 (poziom API 33) wprowadza nowe uprawnienia w czasie działania w grupie uprawnień NEARBY_DEVICES dla aplikacji, które zarządzają połączeniami urządzenia z punktami dostępu w pobliżu przez Wi-Fi. Te aplikacje muszą zadeklarować nowe uprawnienie NEARBY_WIFI_DEVICES, gdy wywołują kilka różnych interfejsów API Wi-Fi.
Oprócz tego, jeśli aplikacje nie określają fizycznej lokalizacji na podstawie interfejsów API Wi-Fi, nie muszą deklarować uprawnienia ACCESS_FINE_LOCATION, gdy są kierowane na Androida 13 lub nowszego.
Dowiedz się więcej o uprawnieniach do urządzeń Wi-Fi w pobliżu.
Nowe uprawnienie dotyczące alarmów precyzyjnych
Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, możesz używać uprawnienia USE_EXACT_ALARM, które jest automatycznie przyznawane aplikacji. Aby jednak aplikacja mogła korzystać z tego uprawnienia, musi spełniać co najmniej jedno z tych kryteriów:
- Aplikacja jest budzikiem lub minutnikiem.
- Twoja aplikacja to kalendarz, który wyświetla powiadomienia o nadchodzących wydarzeniach.
Jeśli aplikacja ustawia alarmy precyzyjne, ale nie spełnia żadnego z warunków wymienionych na poprzedniej liście, nadal deklaruj uprawnienie SCHEDULE_EXACT_ALARM i przygotuj się na sytuację, w której użytkownik odmówi dostępu do aplikacji.
Deweloperska opcja obniżania uprawnień
Od Androida 13 aplikacja może unieważniać dostęp do nieużywanych uprawnień w czasie działania. Ten interfejs API umożliwia aplikacji wykonywanie zadań zwiększających ochronę prywatności, takich jak:
- Usuń nieużywane uprawnienia.
- Przestrzegaj sprawdzonych metod dotyczących uprawnień, aby zwiększyć zaufanie użytkowników. Możesz rozważyć wyświetlenie użytkownikom okna z uprawnieniami, które zostały przez Ciebie proaktywnie unieważnione.
Schemat podpisywania plików APK w wersji 3.1
Android 13 obsługuje schemat podpisu plików APK w wersji 3.1, który ulepsza dotychczasowy schemat podpisu plików APK w wersji 3. Ten schemat rozwiązuje niektóre znane problemy ze schematem podpisywania plików APK w wersji 3 dotyczące rotacji. W szczególności schemat podpisu w wersji 3.1 obsługuje kierowanie na wersję pakietu SDK, co umożliwia rotację w celu kierowania na późniejszą wersję platformy.
Schemat podpisu w wersji 3.1 używa identyfikatora bloku, który nie jest rozpoznawany w systemie 12L ani starszym. Dlatego platforma stosuje następujące zachowanie podpisu:
- Urządzenia z Androidem 13 lub nowszym używają obróconego podpisu w bloku v3.1.
- Urządzenia ze starszymi wersjami Androida ignorują zmieniony podpis i używają oryginalnego podpisu w bloku 3.0.
W przypadku aplikacji, które nie przeszły jeszcze rotacji klucza podpisywania, nie trzeba podejmować żadnych dodatkowych działań. Gdy te aplikacje zdecydują się na rotację, system domyślnie zastosuje schemat podpisu w wersji 3.1.
Aplikacje, które już przeszły rotację i chcą nadal używać zmienionego 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 Magazynie kluczy i KeyMint
W przypadku aplikacji, które generują klucze, Keystore i KeyMint podają teraz bardziej szczegółowe i dokładne wskaźniki błędów. Dodaliśmy hierarchię klas wyjątków w java.security.ProviderException z wyjątkami dotyczącymi Androida, które obejmują kody błędów Keystore/KeyMint i informacje o tym, czy błąd można ponowić. Możesz też zmodyfikować metody generowania i używania kluczy (podpisywanie, szyfrowanie), aby zgłaszać nowe wyjątki. Ulepszone raportowanie błędów nie ogranicza się do generowania kluczy i powinno teraz dostarczać informacji potrzebnych do ponownego wygenerowania klucza.
Obsługa tabletów i dużych ekranów
Android 13 bazuje na optymalizacjach pod kątem tabletów wprowadzonych w Androidzie 12 i w pakiecie nowych funkcji 12L, w tym na optymalizacjach interfejsu systemu, lepszej wielozadaniowości i ulepszonych trybach zgodności. W ramach testów upewnij się, że aplikacje wyglądają dobrze na tabletach i innych urządzeniach z dużym ekranem.
Więcej informacji o nowościach i funkcjach do przetestowania 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 Android Graphics Shading Language (AGSL). AGSL ma wiele wspólnego ze składnią GLSL, ale działa w ramach mechanizmu renderowania Androida, aby dostosowywać renderowanie w ramach obszaru roboczego Androida oraz filtrowanie zawartości widoku.
Android wewnętrznie używa tych cieniowania do implementacji efektów fali, rozmycia i rozciągania przy przewijaniu.
Android 13 i nowsze wersje umożliwiają tworzenie podobnych zaawansowanych efektów w aplikacji.
Ulepszenia Choreographera
Android 13 wprowadza publiczne metody interfejsu API do Choreographer i ASurfaceControl, które dostarczają aplikacjom więcej informacji o możliwych osiach czasu klatek i dodają więcej kontekstu do SurfaceFlinger dotyczącego cyklu życia klatki. Podobnie jak wcześniej aplikacje mogą opublikować wywołanie zwrotne w Choreographer i otrzymać informacje o osi czasu klatek. W Androidzie 13 (poziom interfejsu API 33) Choreographer zwraca wiele możliwych czasów prezentacji i odpowiadające im terminy klatek. Aplikacje mogą wybrać czas prezentacji, a następnie powiadomić o tym SurfaceFlinger. SurfaceFlinger nie próbuje wtedy zastosować transakcji ani buforów zatrzaskowych przed żądanym czasem prezentacji.
Aparat
Nagrywanie filmów HDR
Od Androida 13 interfejsy API Camera2 obsługują nagrywanie filmów w technologii High Dynamic Range (HDR), co umożliwia podgląd i nagrywanie treści wideo HDR za pomocą aparatu. W porównaniu ze standardowym zakresem dynamiki (SDR) HDR oferuje szerszy zakres kolorów i zwiększa zakres dynamiki luminancji (z obecnych 100 cd/m2 do tysięcy cd/m2). Dzięki temu jakość filmu jest bardziej zbliżona do rzeczywistości, z bogatszymi kolorami, jaśniejszymi światłami i ciemniejszymi cieniami.
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 zapewniają użytkownikom większy realizm. Szczegółowe informacje o integracji z tą funkcją znajdziesz w naszej dokumentacji dotyczącej dźwięku przestrzennego.
Przewidujące kierowanie dźwięku
Aby ułatwić aplikacjom do multimediów określanie, jak będzie kierowany dźwięk, w Androidzie 13 wprowadziliśmy interfejsy API ścieżki audio 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 sprawdzić, czy strumień audio może być odtwarzany bezpośrednio. Użyj tych interfejsów API, aby określić najlepszy AudioFormat dla ścieżki audio.
Ułatwienia dostępu
Audiodeskrypcja
W Androidzie 13 (poziom API 33) wprowadziliśmy 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, na której lektor opisuje, co dzieje się na ekranie, podczas naturalnych przerw w dźwięku.
Aplikacje mogą dostosowywać się do preferencji użytkownika dotyczących ścieżek 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ć zmiany preferencji użytkownika, dodając detektor 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
W Androidzie 13 zaczynamy odświeżać podstawowe biblioteki Androida, aby dostosować je do wersji OpenJDK 11 LTS. Obejmuje to zarówno aktualizacje bibliotek, jak i 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 dzięki aktualizacji systemowej Google Play modułu ART Mainline.
W Androidzie 13 wprowadzono te zmiany w bibliotekach podstawowych:
- Obsługa słowa kluczowego
varw przypadku zmiennych lokalnych i jako parametrów wyrażeń lambda. Nowe metody w klasie String:
isBlank()lines()repeat()strip()stripLeading()stripTrailing()
Obsługa
Collection.toArray(IntFunction), aby ułatwić dostosowanie kolekcji do tablicy.Obsługa
ifPresentOrElse(),isEmpty(),orElseThrow()istream()w klasachjava.utilOptional,OptionalDouble,OptionalIntiOptionalLong.Rozszerzona obsługa
SocketOptions, w tym ponowne używanie gniazd.NullReader,NullWriter,InputStream,OutputStreamitransferTo()FunkcjaReader, która przesyła odczytane znaki doWriter.Dodano funkcję kodowania i dekodowania adresów URL za pomocą
Charsets.CharsetdlaFileReader,FileWriter,PrintStreamiPrintWriter.Nowe funkcje
transferTo(),readNBytes(),readAllBytes()iwriteBytes()dlaByteArrayInputlubOutputStreamiInputlubOutputStream.Obsługa środowiska wykonawczego i kompilatora dla
java.lang.invoke.VarHandle.Aktualizuje
java.util.concurrentdo interfejsu OpenJDK 11 API, używając wewnętrznieVarHandle.
Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.