Android 13 wprowadza nowe, przydatne funkcje i interfejsy API dla deweloperów. W sekcjach poniżej poznasz funkcje aplikacji i rozpoczniesz korzystanie z powiązanych z nimi interfejsów 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 interfejsów API Androida. Nowe interfejsy API są wyróżniane pod względem widoczności. Aby dowiedzieć się też, w jakich obszarach zmiany na platformie mogą wpływać 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
Na Androidzie 13 możesz włączyć tematyczne ikony aplikacji. Dzięki tej funkcji ikony aplikacji w obsługiwanych launcherach Androida są przystosowane do kolorystyki wybranej przez użytkownika tapety i innych motywów.
Aby obsługiwać tę funkcję, Twoja aplikacja musi zawierać zarówno ikonę adaptacyjną, jak i monochromatyczną, a także wskazywać monochromatyczną ikonę aplikacji znajdującą się 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 określa kolor na podstawie wybranej przez niego tapety i motywu, który następnie zostaje zastosowany do monochromatycznej ikony aplikacji.
W każdym z tych scenariuszy na ekranie głównym NIE jest wyświetlana ikona aplikacji z motywem. Zamiast niej pojawia się ikona aplikacji adaptacyjnej lub standardowej:
- Jeśli użytkownik nie włączył tematycznych ikon aplikacji
- Jeśli aplikacja nie ma monochromatycznej ikony
- Jeśli launcher nie obsługuje tematycznych ikon aplikacji
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ą w swoim systemie język na jeden język, np. angielski, ale chcą wybrać inne języki dla poszczególnych aplikacji, np. niderlandzki, chiński czy hindi. Aby zapewnić użytkownikom lepsze wrażenia podczas korzystania z aplikacji, Android 13 wprowadza te funkcje w aplikacjach, które obsługują wiele języków:
Ustawienia systemu: centralne miejsce, w którym użytkownicy mogą wybrać preferowany język dla każdej aplikacji.
Aplikacja musi zadeklarować atrybut
android:localeConfig
w jej pliku manifestu, aby poinformować system, że obsługuje ona 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
, pozwalają aplikacjom na ustawienie innego języka niż język systemu w czasie działania.Te interfejsy API automatycznie synchronizują się z ustawieniami systemu. Dlatego aplikacje korzystające z tych interfejsów API do tworzenia niestandardowych selektora języka zapewniają spójne wrażenia użytkowników niezależnie od tego, gdzie wybiorą ustawienia językowe. Publiczne interfejsy API pomagają też zmniejszyć ilość powtarzającego się kodu. Obsługują dzielone pakiety APK i obsługują Automatyczną kopię zapasową aplikacji, która pozwala na przechowywanie ustawień języka użytkownika na poziomie aplikacji.
Aby zapewnić zgodność wsteczną z poprzednimi wersjami Androida, odpowiedniki interfejsów API są też dostępne w AndroidzieX. Zalecamy korzystanie z interfejsów API dodanych w Appcompat w wersji 1.6.0-beta01 lub nowszej.
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 funkcji usprawniających obsługę tekstu i języka, które zwiększają jego wygodę. Opisaliśmy je w tych sekcjach:
Szybsze łączenie
Dzięki myślnikom zawinięty tekst jest czytelniejszy i bardziej adaptacyjny. Począwszy od Androida 13 wydajność łączników jest optymalizowana nawet o 200%, więc możesz włączyć ją w TextView
bez wpływu na wydajność renderowania. Aby umożliwić szybsze łączenie, użyj częstotliwości fullFast
lub normalFast
w setHyphenationFrequency()
.
Interfejsy API konwersji tekstu
Osoby posługujące się językami takimi jak japoński i chiński używają fonetycznych metod wprowadzania tekstu, co często spowalnia wyszukiwanie i takie funkcje 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 na przykład wyszukiwanie wymagało wykonania tych czynności przez użytkownika z Japonii:
- Wpisz hiragana jako fonetyczną wymowę wyszukiwanego hasła (np. nazwy miejsca lub aplikacji)
- Używaj klawiatury do konwertowania znaków hiragana na znaki kanji
- Przeprowadź wyszukiwanie przy użyciu znaków kanji
- Zobacz też swoje wyniki wyszukiwania
Dzięki nowemu interfejsowi API konwersji tekstu japońscy użytkownicy mogą pisać w języku Hiragana i od razu zobaczyć wyniki wyszukiwania w języku kanji, pomijając kroki 2 i 3.
Zwiększono wysokość wierszy w przypadku skryptów w językach innych niż łacińskie
Android 13 poprawia wyświetlanie alfabetu innego niż łaciński (np. tamilski, birmański, telugu i tybetański) przez zastosowanie wysokości wiersza dostosowanej do każdego języka. Nowe wysokości wierszy zapobiegają przycinaniu i poprawiają położenie znaków. Aby Twoja aplikacja mogła korzystać z tych ulepszeń, wystarczy, że będzie ona kierowana na Androida 13. Pamiętaj, aby przetestować swoje aplikacje z zastosowaniem nowych odstępów między wierszami, ponieważ te zmiany mogą mieć wpływ na interfejs użytkownika w językach opartych na alfabecie innym niż łaciński.
Ulepszone zawijanie tekstu w języku japońskim
Począwszy od Androida 13 obiekty TextView mogą zawijać tekst za pomocą obiektów Bunsetsu (najmniejszych jednostek słów, które brzmią naturalnie) lub wyrażeń, zamiast ich znaków, aby zwiększyć czytelność i dopracowanie tekstu w japońskich aplikacjach. Możesz skorzystać z tego pakowania, używając android:lineBreakWordStyle="phrase"
z obiektami TextView.
Aktualizacje biblioteki Unicode
Android 13 zawiera najnowsze ulepszenia, poprawki i zmiany wprowadzone w Unicode ICU 70, Unicode CLDR 40 i Unicode 14.0.
Oto kilka ważnych zmian:
- Angielski (Kanada)
en‑CA
i angielski (Republika Filipin)en‑PH
korzystają z zasobów tłumaczeniowych w języku angielskim (Stany Zjednoczone)en
, jeśli nie są dostępne żadne zasoby tłumaczenia zamiast języka angielskiego (Wielka Brytania)en‑GB
. many
Kategoria mnoga została wprowadzona w językach hiszpańskimes
, włoskimit
, portugalskimpt
i portugalskim (Portugalia)pt‑PT
. Podobnie jak w języku francuskim wprowadzonym w CLDR w wersji 38, dyrektywa ta służy do obsługi dużych liczb.
Kolorowe czcionki wektorowe
Począwszy od Androida 13 system obejmuje obsługę renderowania 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 dowolnym rozmiarze.
W przypadku większości aplikacji system obsługuje wszystko, a COLRv1 po prostu działa. Jeśli jednak Twoja aplikacja ma własne renderowanie tekstu i używa czcionek systemowych, zalecamy przetestowanie renderowania emotikonów.
Więcej informacji na temat COLRv1 znajdziesz w tych materiałach:
- Ogłoszenie na blogu dla deweloperów Chrome
- Dostawa kolorowych czcionek wektorowych COLRv1 w Chrome (film)
- Specyfikacja tabeli COLR
Interfejs API miejsc docelowych Szybkich ustawień
Szybkie ustawienia w obszarze powiadomień to wygodny sposób na zmianę ustawień i podejmowanie szybkich działań bez wychodzenia z kontekstu aplikacji. W przypadku aplikacji mających niestandardowe kafelki ułatwiamy użytkownikom ich znajdowanie i dodawanie do Szybkich ustawień. Dzięki nowemu interfejsowi API rozmieszczania kafelków aplikacja może prosić użytkownika o bezpośrednie dodanie kafelka niestandardowego do zestawu aktywnych kafelków Szybkich ustawień. Nowe okno systemowe pozwala użytkownikowi dodać kafelek w jednym kroku bez wychodzenia z aplikacji. Nie trzeba już będzie dodawać kafelka w Szybkich ustawieniach.
Podgląd schowka
Od Androida 13 po dodaniu treści do schowka system wyświetla standardowe potwierdzenie wizualne. Nowe potwierdzenie ma następujące funkcje:
- Potwierdza, że treść została skopiowana.
- Wyświetla podgląd skopiowanej treści.
Ta funkcja ustandaryzuje różne powiadomienia wyświetlane po skopiowaniu przez aplikacje i zapewnia użytkownikom większą kontrolę nad schowkiem. Więcej informacji znajdziesz na stronie funkcji Kopiuj i wklej.
Gest przewidywanego przejścia wstecz
W Androidzie 13 można korzystać z funkcji przewidywania gestu wstecznego na urządzeniach z Androidem, takich jak telefony, duże ekrany czy urządzenia składane. Obsługa tej funkcji wymaga aktualizacji aplikacji.
Szczegółową dokumentację znajdziesz w artykule Aktualizowanie aplikacji na potrzeby obsługi przewidywanego gestu wstecz. Możesz też wypróbować nasze ćwiczenia z programowania.
Bluetooth LE Audio
Low Energy (LE) Audio to technologia bezprzewodowa, która zastępuje klasyczny Bluetooth i obsługuje określone przypadki użycia oraz topologie połączeń. Umożliwia udostępnianie i nagrywanie dźwięku znajomym i rodzinie. Może też subskrybować publiczne transmisje informacyjne, rozrywkowe i związane z ułatwieniami dostępu. Została zaprojektowana z myślą o otrzymywaniu wysokiej jakości dźwięku bez poświęcania czasu pracy na baterii oraz płynnego przełączania się między różnymi zastosowaniami, które nie są możliwe w przypadku Bluetootha Classic. Począwszy od Androida 13, system zawiera wbudowaną obsługę LE Audio, więc deweloperzy otrzymują ją bezpłatnie na zgodnych urządzeniach.
MIDI 2.0
Począwszy od Androida 13, system obsługuje standard MIDI 2.0 w tym możliwość podłączenia sprzętu MIDI 2.0 przez USB. Ten standard oferuje takie funkcje jak zwiększona rozdzielczość kontrolera, lepsza obsługa intonacji niezachodniej i bardziej ekspresywna wydajność dzięki kontrolerom do poszczególnych nut.
Ulepszona wydajność 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 parametru
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 zawsze wyświetla ikonę na ekranie powitalnym w Androidzie 13 i nowszych.
Szczegółową dokumentację znajdziesz w sekcji Ekrany powitalne.
Optymalizacje ART
Na Androidzie 13 (poziom interfejsu API 33) i nowszych ART znacznie szybciej przyspiesza przechodzenie do kodu natywnego i z kodu natywnego, a wywołania JNI są teraz nawet 2, 5 razy szybsze. Przeredagowaliśmy również przetwarzanie odwołań w środowisku wykonawczym, aby nie powodowało blokowania, co pozwoliło ograniczyć ilość zacięć. Dodatkowo możesz użyć publicznego interfejsu API Reference.refersTo()
, aby wcześniej odzyskać nieosiągalne obiekty. Jak przekonasz się, dzięki zoptymalizowanym wyszukiwaniu klas i metod tłumaczenie działa teraz szybciej. ART przeprowadza też weryfikację przy użyciu kodu bajtowego podczas instalacji, co pozwala uniknąć kosztów weryfikacji w trakcie działania aplikacji i skraca czas uruchamiania aplikacji.
Prywatność i bezpieczeństwo
Bezpieczniejszy eksport odbiorców zarejestrowanych na podstawie kontekstu
Aby zwiększyć bezpieczeństwo odbiorników w czasie działania aplikacji, Android 13 umożliwia aplikacji określenie, czy zarejestrowany odbiornik powinien zostać wyeksportowany i widoczny dla innych aplikacji na urządzeniu. W poprzednich wersjach Androida każda aplikacja na urządzeniu mogła wysłać niechronioną transmisję do zarejestrowanego dynamicznie odbiorcy, chyba że był on chroniony za pomocą uprawnień do podpisu.
Ta konfiguracja eksportowania jest dostępna w aplikacjach, które spełniają co najmniej jeden z tych warunków:
- użyj klasy
ContextCompat
z wersji 1.9.0 lub nowszej biblioteki Android X Core, - Kieruj na Androida w wersji 13 lub nowszej.
Selektor zdjęć
Android 13 (poziom interfejsu API 33) i nowsze wersje obejmują selektor zdjęć. Po uruchomieniu selektora zdjęć użytkownicy wybierają określone obrazy i filmy, które mają być udostępnione aplikacji, np. zdjęcia profilowe, zamiast przyznawać jej dostęp do całej biblioteki multimediów. To zalecany sposób dostępu do zdjęć i filmów użytkownika.
Selektor zdjęć zapewnia użytkownikom większą prywatność, ponieważ aplikacja nie musi deklarować żadnych uprawnień czasu działania. Ponadto selektor zdjęć ma wbudowany, ustandaryzowany interfejs aplikacji, co zapewnia bardziej spójną obsługę.
Nowe uprawnienia w czasie działania dla urządzeń Wi-Fi w pobliżu
Android 13 (poziom interfejsu API 33) wprowadza nowe uprawnienia dotyczące środowiska wykonawczego w grupie uprawnień NEARBY_DEVICES
dla aplikacji, które zarządzają połączeniami urządzeń z pobliskimi punktami dostępu przez Wi-Fi. Takie aplikacje muszą zadeklarować nowe uprawnienia NEARBY_WIFI_DEVICES
, gdy wywołują kilka różnych interfejsów Wi-Fi API.
Jeśli aplikacje nie określają lokalizacji fizycznej za pomocą interfejsów Wi-Fi API, nie muszą deklarować uprawnienia ACCESS_FINE_LOCATION
, gdy są kierowane na Androida 13 lub nowszego.
Dowiedz się więcej o uprawnieniach dotyczących 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ć uprawnienia USE_EXACT_ALARM
, które jest automatycznie przyznawane aplikacji. Aby aplikacja mogła korzystać z tego uprawnienia, musi jednak spełniać co najmniej jedno z tych kryteriów:
- Aplikacja to budzik lub minutnik.
- Aplikacja to kalendarz, który pokazuje powiadomienia o nadchodzących wydarzeniach.
Jeśli Twoja aplikacja ustawia alarmy precyzyjne, ale nie spełnia żadnego z poniższych przypadków z poprzedniej listy, zadeklaruj uprawnienie SCHEDULE_EXACT_ALARM
. Przygotuj się na sytuację, w której użytkownik odmówi dostępu aplikacji.
Uprawnienia dewelopera, które można zmienić na niższe
Od Androida 13 aplikacja może unieważnić dostęp do nieużywanych uprawnień czasu działania. Umożliwia on aplikacji wykonywanie takich zadań związanych z ochroną prywatności, jak:
- Usuń nieużywane uprawnienia.
- Postępuj zgodnie ze sprawdzonymi metodami dotyczącymi uprawnień, aby zwiększyć zaufanie użytkowników. Warto wyświetlić użytkownikom okno z proaktywnie unieważnionymi uprawnieniami.
Schemat podpisu pliku APK w wersji 3.1
Android 13 dodaje obsługę schematu podpisu plików APK w wersji 3.1, która jest ulepszona względem dotychczasowego schematu podpisywania plików APK w wersji 3. Ten schemat rozwiązuje niektóre znane problemy ze schematem podpisu plików APK w wersji 3 dotyczącym rotacji. Schemat podpisu w wersji 3.1 obsługuje w szczególności kierowanie na wersję pakietu SDK, co umożliwia rotację kierowania na późniejsze wersje platformy.
Schemat podpisu w wersji 3.1 korzysta z identyfikatora bloku, który nie jest rozpoznawany w wersji 12L lub starszej. Dlatego platforma stosuje następujące zachowanie sygnatariuszy:
- Urządzenia z Androidem 13 lub nowszym używają obróconego podpisującego z bloku wersji 3.1.
- Urządzenia ze starszymi wersjami Androida ignorują sygnatariuszy obróconych i używają zamiast niego oryginalnej osoby podpisującej z bloku wersji 3.0.
W przypadku aplikacji, w których jeszcze nie nastąpiła rotacja 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, w przypadku których wykonano już rotację, i które nadal chcą używać rotowanego klucza podpisywania w bloku podpisywania w wersji 3.0, muszą zaktualizować swoje 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.
Lepsze raportowanie błędów w magazynach kluczy i KeyMint
W przypadku aplikacji generujących klucze magazyny kluczy i KeyMint udostępniają teraz bardziej szczegółowe i dokładne wskaźniki błędów. W sekcji java.security.ProviderException
dodaliśmy hierarchię klas wyjątków z wyjątkami specyficznymi dla Androida, takimi jak kody błędów magazynu kluczy/KeyMint oraz to, czy błąd można ponawiać. Możesz też zmodyfikować metody generowania kluczy i ich używać (podpisywanie, szyfrowanie), aby zgłaszać nowe wyjątki. Ulepszone raportowanie błędów nie ogranicza się do generowania kluczy i powinno Ci teraz umożliwiać ponowienie próby wygenerowania klucza.
Obsługa tabletów i dużych ekranów
Android 13 wykorzystuje optymalizacje dla tabletów wprowadzone w Androidzie 12 i dodanej wersji 12L. Są to między innymi optymalizacje interfejsu systemu, lepsza wielozadaniowość i ulepszone tryby zgodności. W ramach testów zadbaj o to, aby Twoje aplikacje wyglądały najlepiej na tabletach i innych urządzeniach z dużym ekranem.
Więcej informacji o nowych funkcjach i testach znajdziesz w artykule 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 działanie definiuje się za pomocą języka AGSL. AGSL udostępnia znaczną część swojej składni za pomocą GLSL, ale działa w ramach mechanizmu renderowania Androida, aby dostosowywać malowanie w obszarze roboczym Androida oraz filtrowanie zawartości widoku.
Android wewnętrznie używa tych cieniowania do implementowania efektów fali, rozmycia i rozciągania sygnalizowania końca przewijania.
W Androidzie 13 i nowszych możesz tworzyć w aplikacji podobne zaawansowane efekty.
Ulepszenia choreografa
Android 13 wprowadza publiczne metody interfejsu API w Choreographer
i ASurfaceControl
, które dostarczają aplikacjom więcej informacji o możliwych osiach czasu klatek i dodają do SurfaceFlinger
więcej kontekstu na temat cyklu życia ramki. Podobnie jak wcześniej aplikacje mogą wysyłać wywołanie zwrotne do Choreographer
i otrzymywać 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 renderowania klatek. Aplikacje mogą wybrać godzinę prezentacji, a następnie powiadomić o niej SurfaceFlinger
. SurfaceFlinger
nie próbuje wtedy zastosować transakcji ani buforów opóźnionych przed żądanym czasem prezentacji.
Aparat
Nagrywanie filmów HDR
Począwszy od Androida 13 interfejsy API Camera2 obsługują nagrywanie filmów w trybie High Dynamic Range (HDR), dzięki czemu możesz wyświetlać podgląd filmów w trybie HDR i nagrywać je za pomocą aparatu. W porównaniu ze standardowym zakresem dynamiki (SDR) HDR obejmuje szerszy zakres kolorów i zwiększa zakres dynamiczny komponentu luminancji (od 100 cd/m2 do 1000 s pojemności cd/m2). W rezultacie obraz jest w jakości bardziej zbliżonej do rzeczywistego, czyli ma głębsze kolory, jaśniejsze podświetlenia i ciemniejsze cienie.
Więcej informacji o nagrywaniu filmów w trybie HDR znajdziesz w dokumentacji dotyczącej nagrywania filmów w trybie HDR.
Multimedia
Dźwięk przestrzenny
Dźwięk przestrzenny to niezwykłe wrażenia dźwiękowe, dzięki którym treści multimedialne brzmią bardziej realistycznie. Szczegółowe informacje o integracji z tą funkcją znajdziesz w dokumentacji dźwięku przestrzennego.
Przewidujące kierowanie dźwięku
Aby ułatwić aplikacjom multimedialnym identyfikowanie sposobu kierowania dźwięku, Android 13 wprowadza w klasie AudioManager
interfejsy API routingu audio. 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()
pozwala określić, czy strumienie audio można odtwarzać bezpośrednio. Za pomocą tych interfejsów API określ, który z elementów AudioFormat
najlepiej nadaje się do użycia w Twojej ścieżce audio.
Ułatwienia dostępu
Audiodeskrypcja
Android 13 (poziom interfejsu API 33) wprowadza nowe, obowiązujące w całym systemie ustawienia ułatwień dostępu, które umożliwiają użytkownikom włączanie audiodeskrypcji we wszystkich aplikacjach. Audiodeskrypcja to dodatkowa narracja, w której narrator opowiada w trakcie prezentacji, opisuje, co dzieje się na ekranie podczas naturalnych przerw w dźwięku.
Aplikacje mogą korzystać z ustawień ścieżek audiodeskrypcji użytkownika, wysyłając do nich 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 przez dodanie odbiornika 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 prace nad odświeżeniem podstawowych bibliotek Androida w celu dostosowania do wersji OpenJDK 11 LTS zarówno w przypadku aktualizacji bibliotek, jak i obsługi języka Java 11 dla deweloperów aplikacji i platform. Zmiany w podstawowej bibliotece wprowadzone w Androidzie 13 będą też dostępne na urządzeniach z Androidem 12 w ramach aktualizacji systemu Google Play do modułu ART Mainline.
W Androidzie 13 w bibliotekach podstawowych wprowadzono te zmiany:
- 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 dostosowywanie kolekcji do tablicy.Pomoc dotycząca
ifPresentOrElse()
,isEmpty()
,orElseThrow()
istream()
wjava.util
zajęciachOptional
,OptionalDouble
,OptionalInt
iOptionalLong
.Rozszerzona obsługa
SocketOptions
, w tym ponowne wykorzystanie gniazd.NullReader
,NullWriter
,InputStream
,OutputStream
itransferTo()
Reader
, które przekazują odczytane znaki naWriter
.Dodaliśmy funkcje kodowania i dekodowania adresów URL za pomocą
Charsets
.Charset
w zakresieFileReader
,FileWriter
,PrintStream
iPrintWriter
.Nowe funkcje
transferTo()
,readNBytes()
,readAllBytes()
iwriteBytes()
na platformachByteArrayInput
,OutputStream
iInput
orazOutputStream
.Obsługa środowiska wykonawczego i kompilatora dla języka
java.lang.invoke.VarHandle
.Aktualizuje interfejs
java.util.concurrent
do interfejsu OpenJDK 11 API przy użyciu wewnętrznieVarHandle
.
Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle lub jej podmiotów stowarzyszonych.