Funkcje i interfejsy API – przegląd

Android 13 wprowadza nowe 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 o różnicach w interfejsach API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsu API Androida. Nowe interfejsy API są wyróżnione, aby były lepiej widoczne. Aby dowiedzieć się więcej o obszarach, w których zmiany na platformie mogą wpłynąć na Twoje aplikacje, zapoznaj się ze zmianami w Androidzie 13 dotyczącymi aplikacji kierowanych na Androida 13wszystkich aplikacji.

Wydajność i narzędzia dla programistów

Ikony aplikacji zgodne z wybranym motywem

Użytkownik włącza ikony aplikacji zgodne z wybranym motywem
Włączanie ikony aplikacji z motywem w Androidzie 13

Od Androida 13 możesz włączyć ikony aplikacji z motywem. Dzięki tej funkcji ikony aplikacji w obsługiwanych programach uruchamiających na Androida są przyciemniane, aby przejąć kolor wybranej przez użytkownika tapety i innych motywów.

Aby obsługiwać tę funkcję, aplikacja musi zawierać ikonę adaptacyjną i monochromatyczną ikonę aplikacji, a w elemencie <adaptive-icon> w manifeście musi być wskazana monochromatyczna ikona aplikacji. Jeśli użytkownik włączył ikony aplikacji z motywem (czyli włączył przełącznik Ikony z motywem w ustawieniach systemu) i launcher 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.

W żadnym z tych przypadków ekran główny NIE wyświetla ikony aplikacji z motywem, tylko adaptacyjną lub standardową ikonę aplikacji:

  • Jeśli użytkownik nie włączył ikon aplikacji z motywem
  • Jeśli aplikacja nie ma monochromatycznej ikony
  • Jeśli program uruchamiający nie obsługuje ikon aplikacji z motywem

Więcej informacji i instrukcje znajdziesz w artykule Ikony adaptacyjne.

Wybór języka według aplikacji

Wybór języka według aplikacji w ustawieniach systemu

Wielu użytkowników posługujących się kilkoma językami ustawia język systemu na jeden z nich, np. angielski, ale w przypadku konkretnych aplikacji, takich jak holenderski, chiński czy hindi, chcą wybrać inne języki. 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 systemu: centralne miejsce, w którym użytkownicy mogą wybrać preferowany język dla każdej aplikacji.

    Aplikacja musi zadeklarować atrybut android:localeConfig w 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() i getApplicationLocales()LocaleManager, umożliwiają aplikacjom ustawienie w czasie działania języka innego niż język systemu.

    Te interfejsy API automatycznie synchronizują się z ustawieniami systemu, dlatego aplikacje, które ich używają do tworzenia niestandardowych selektorów języka w aplikacji, zapewniają użytkownikom spójne środowisko niezależnie od tego, gdzie wybierają preferencje językowe. Publiczne interfejsy API pomagają też zmniejszyć ilość kodu standardowego, obsługują dzielone pakiety APK i automatyczne tworzenie kopii zapasowych aplikacji, aby przechowywać ustawienia języka użytkownika na poziomie aplikacji.

    Aby zapewnić zgodność wsteczną z poprzednimi wersjami Androida, równoważne interfejsy API są też dostępne w AndroidX. 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 tekstu i języka, które pomogą Ci zapewnić użytkownikom lepsze wrażenia. Opisujemy je w sekcjach poniżej:

Szybsze dzielenie wyrazów

Dzielenie wyrazów ułatwia czytanie zawijanego tekstu i sprawia, że interfejs jest bardziej elastyczny. Od Androida 13 wydajność dzielenia wyrazów jest zoptymalizowana nawet o 200%, dzięki czemu możesz włączyć tę funkcję w TextView bez niemal żadnego wpływu na wydajność renderowania. Aby włączyć szybsze dzielenie wyrazów, użyj częstotliwości fullFast lub normalFastsetHyphenationFrequency().

Interfejsy API konwersji tekstu

Osoby posługujące się językami takimi jak japoński czy chiński używają fonetycznych metod wprowadzania tekstu, które często spowalniają wyszukiwanie i funkcje takie jak automatyczne uzupełnianie. W Androidzie 13 aplikacje mogą wywoływać nowy interfejs API konwersji tekstu, dzięki czemu użytkownicy mogą szybciej i łatwiej znajdować to, czego szukają. Wcześniej na przykład wyszukiwanie wymagało od użytkownika z Japonii wykonania tych czynności:

  1. Wpisz hiraganę jako wymowę fonetyczną wyszukiwanego hasła (np. nazwy miejsca lub aplikacji).
  2. Użyj klawiatury, aby przekonwertować znaki hiragany na znaki kanji.
  3. Ponowne wyszukiwanie przy użyciu znaków kanji
  4. wreszcie otrzymywać wyniki wyszukiwania,

Dzięki nowemu interfejsowi API do konwersji tekstu użytkownicy w Japonii mogą wpisywać tekst w hiraganie i od razu wyświetlać wyniki wyszukiwania w kanji, pomijając kroki 2 i 3.

Poprawiona wysokość wiersza w przypadku alfabetów innych niż łacińskie

Android 13 poprawia 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. Aby skorzystać z tych ulepszeń, wystarczy, że aplikacja będzie kierowana na Androida 13. Pamiętaj, aby przetestować aplikacje z nowym odstępem między wierszami, ponieważ zmiany mogą wpłynąć na interfejs użytkownika w językach niełacińskich.

Wysokości wierszy, które były przycinane w Androidzie 12 (u góry), są teraz lepiej rozmieszczone i nie są przycinane w Androidzie 13 (u dołu).

Ulepszone zawijanie tekstu w języku japońskim

Od Androida 13 widoki TextView mogą zawijać tekst według bunsetsu (najmniejszej jednostki słów, która brzmi naturalnie) lub fraz, a nie według znaków, co sprawia, że aplikacje w języku japońskim są bardziej dopracowane i czytelne. Możesz skorzystać z tego zawijania, używając android:lineBreakWordStyle="phrase" w przypadku elementów TextView.

Zawijanie tekstu w języku japońskim z włączonym stylem frazy (poniżej) i bez niego (powyżej).

Aktualizacje biblioteki Unicode

Android 13 zawiera najnowsze ulepszenia, poprawki i zmiany, które są uwzględnione w Unicode ICU 70, Unicode CLDR 40Unicode 14.0.

Oto kilka ważnych zmian:

  • Angielski (Kanada) en‑CA i angielski (Filipiny) en‑PH korzystają z zasobów tłumaczeniowych dla języka angielskiego (Stany Zjednoczone) en, gdy nie są dostępne zasoby tłumaczeniowe dla języka angielskiego (Wielka Brytania) en‑GB.
  • Wprowadziliśmy kategorię liczby mnogiej many dla języka hiszpańskiego es, włoskiego it, portugalskiego pt i portugalskiego (Portugalia) pt‑PT. Podobnie jak w przypadku języka francuskiego wprowadzonego w CLDR w wersji 38, ten format jest używany w przypadku dużych liczb.

Kolorowe czcionki wektorowe

Emotikon wektorowy COLRv1 (po lewej) i emotikon bitmapowy (po prawej)

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 szybko i wyraźnie renderuje się w dowolnym rozmiarze.

W przypadku większości aplikacji system obsługuje wszystko, a format COLRv1 po prostu działa. Jeśli jednak aplikacja implementuje własne renderowanie tekstu i używa czcionek systemowych, zalecamy przetestowanie renderowania emoji.

Więcej informacji o COLRv1 znajdziesz w tych materiałach:

Interfejs API umieszczania szybkich ustawień

Szybkie ustawienia na pasku powiadomień to wygodny sposób na zmianę ustawień lub wykonanie szybkich działań bez opuszczania aplikacji. W przypadku aplikacji, które udostępniają niestandardowe kafelki, ułatwiamy użytkownikom znajdowanie i dodawanie tych kafelków do Szybkich ustawień. Dzięki nowemu interfejsowi API umieszczania kafelków aplikacja może teraz prosić 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 1 kroku bez opuszczania aplikacji. Nie musi on już przechodzić do Szybkich ustawień, aby dodać kafelek.

Okno z pytaniem, czy użytkownik chce dodać kafelek do Szybkich ustawień.

Podgląd schowka

Od Androida 13 system wyświetla standardowe potwierdzenie wizualne, gdy zawartość jest dodawana do schowka. Nowe potwierdzenie:

  • Potwierdza, że zawartość 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 Kopiowanie i wklejanie.

Widżet Kopiuj/wklej
Nowy interfejs wyświetlany, gdy zawartość trafia do schowka.

Gest przewidywanego przejścia wstecz

Android 13 wprowadza predykcyjny gest cofania na urządzeniach z Androidem, takich jak telefony, urządzenia z dużym ekranem i urządzenia składane. Obsługa tej funkcji wymaga zaktualizowania aplikacji.

Szczegółową dokumentację znajdziesz w artykule Aktualizowanie aplikacji w celu obsługi gestu powrotu predykcyjnego. Możesz też wypróbować nasze ćwiczenie z programowania.

Bluetooth LE Audio

Low Energy (LE) Audio to bezprzewodowy protokół audio, który ma zastąpić klasyczny Bluetooth i umożliwić określone przypadki użycia oraz topologie połączeń. Umożliwia użytkownikom udostępnianie i przesyłanie dźwięku znajomym i rodzinie oraz subskrybowanie publicznych transmisji w celu uzyskiwania informacji, rozrywki lub ułatwień dostępu. Został zaprojektowany tak, aby użytkownicy mogli cieszyć się dźwiękiem o wysokiej jakości bez poświęcania czasu pracy na baterii i płynnie przełączać się między różnymi zastosowaniami, które nie są możliwe w przypadku Bluetootha Classic. Od Androida 13 system ma wbudowaną obsługę LE Audio, więc deweloperzy otrzymują te funkcje bezpłatnie na zgodnych urządzeniach.

MIDI 2.0

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ść kontrolerów, lepsza obsługa intonacji nieeuropejskich i bardziej ekspresyjne wykonanie dzięki kontrolerom poszczególnych nut.

Ulepszenia 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 elementu AnimatedVectorDrawable. Przed Androidem 13 konieczne było bezpośrednie ustawienie parametru windowSplashScreenAnimationDuration.

  • Użyj nowego atrybutu windowSplashScreenBehavior, aby mieć większą kontrolę nad tym, czy aplikacja zawsze wyświetla ikonę na ekranie powitalnym na urządzeniach z Androidem 13 lub nowszym.

Szczegółową dokumentację znajdziesz w artykule Ekrany powitalne.

Optymalizacje ART

W Androidzie 13 (API na poziomie 33) i nowszym ART znacznie przyspiesza przełączanie się między kodem natywnym, a wywołania JNI są teraz nawet 2, 5 razy szybsze. Przetwarzanie odwołań w czasie działania zostało również zmodyfikowane, aby w większości przypadków nie blokowało innych procesów, co dodatkowo zmniejsza zacinanie się. Dodatkowo możesz użyć publicznego interfejsu API Reference.refersTo(), aby szybciej odzyskiwać niedostępne obiekty. Zauważysz też, że interpreter działa teraz szybciej dzięki zoptymalizowanemu wyszukiwaniu klas i metod. ART przeprowadza też dokładniejszą weryfikację kodu bajtowego podczas instalacji, co pozwala uniknąć kosztów weryfikacji w czasie działania i skraca czas uruchamiania aplikacji.

Prywatność i bezpieczeństwo

Bezpieczniejsze eksportowanie odbiorców zarejestrowanych w kontekście

Aby zwiększyć bezpieczeństwo odbiorników czasu działania, Android 13 wprowadza możliwość określania przez aplikację, czy zarejestrowany odbiornik ma 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 transmisje do dynamicznie zarejestrowanego odbiorcy, chyba że odbiorca był chroniony przez uprawnienie sygnatury.

Ta konfiguracja eksportowania jest dostępna w aplikacjach, które wykonują co najmniej jedną z tych czynności:

Selektor zdjęć

Android 13 (poziom 33 interfejsu API) i nowszy zawiera selektor zdjęć. Gdy aplikacja uruchomi selektor zdjęć, użytkownicy wybierają konkretne obrazy i filmy do udostępnienia 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 użytkownikom większą prywatność, ponieważ aplikacja nie musi deklarować żadnych uprawnień w czasie działania. Selektor zdjęć zapewnia też wbudowany, standardowy interfejs aplikacji, co zwiększa spójność wrażeń użytkowników.

Nowe uprawnienie w czasie działania aplikacji dotyczące urządzeń Wi-Fi w pobliżu

Android 13 (API na poziomie 33) wprowadza nowe uprawnienia w czasie działaniaNEARBY_DEVICES grupie uprawnień 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ą kilka różnych interfejsów Wi-Fi API. Oprócz tego, o ile aplikacje nie uzyskują fizycznej lokalizacji z 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 dotyczących 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ć uprawnień USE_EXACT_ALARM , które są automatycznie przyznawane Twojej aplikacji. Aby jednak aplikacja mogła używać tych uprawnień, musi spełniać co najmniej jedno z tych kryteriów:

  • Aplikacja jest budzikiem lub minutnikiem.
  • 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 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 cofać dostęp do nieużywanych uprawnień. Ten interfejs API umożliwia aplikacji wykonywanie zadań zwiększających prywatność, takich jak:

  • Usuń nieużywane uprawnienia.
  • Stosuj sprawdzone metody dotyczące uprawnień, co zwiększa zaufanie użytkowników. Możesz wyświetlić użytkownikom okno z informacją o uprawnieniach, które zostały przez Ciebie proaktywnie cofnięte.

Schemat podpisywania plików APK w wersji 3.1

W Androidzie 13 dodano obsługę schematu podpisu plików APK w wersji 3.1, który jest ulepszoną wersją schematu podpisu plików APK w wersji 3. Ten schemat rozwiązuje niektóre znane problemy ze schematem podpisu plików APK w wersji 3 dotyczące rotacji. W szczególności schemat podpisu 3.1 obsługuje kierowanie na wersję SDK, co umożliwia rotację w celu kierowania na późniejszą wersję platformy.

Schemat podpisywania w wersji 3.1 używa identyfikatora bloku, który nie jest rozpoznawany w przypadku Androida 12L lub starszego. Dlatego platforma stosuje następujące zachowanie sygnującego:

  • Urządzenia z Androidem 13 lub nowszym używają obróconego sygnującego w bloku 3.1.
  • Urządzenia z Androidem w starszych wersjach ignorują zmienionego sygnatariusza i zamiast niego używają oryginalnego sygnatariusza w bloku 3.0.

Aplikacje, w których nie przeprowadzono jeszcze rotacji klucza podpisywania, nie wymagają żadnych dodatkowych działań. Gdy te aplikacje zdecydują się na rotację, system domyślnie zastosuje schemat podpisu w wersji 3.1.

Aplikacje, które przeprowadziły już rotację i chcą nadal używać obróconego 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 udostępniają teraz bardziej szczegółowe i dokładne wskaźniki błędów. Dodaliśmy hierarchię klas wyjątków w sekcji java.security.ProviderException, z wyjątkami specyficznymi dla 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ć Ci informacji potrzebnych do ponowienia próby generowania kluczy.

Obsługa tabletów i dużych ekranów

Android 13 wykorzystuje optymalizacje dla tabletów wprowadzone w Androidzie 12 i pakiecie funkcji 12L, w tym optymalizacje interfejsu systemu, lepszą wielozadaniowość i ulepszone tryby 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 elementach do przetestowania znajdziesz na stronie Obsługa tabletów i urządzeń z dużym ekranem.

Grafika

Programowalne cieniowanie

Animowany program do cieniowania AGSL, zaadaptowany z tego programu do cieniowania GLSL.

Od Androida 13 system obsługuje programowalne obiekty RuntimeShader, których działanie jest zdefiniowane za pomocą języka cieniowania grafiki Androida (AGSL). AGSL ma podobną składnię do GLSL, ale działa w silniku renderowania Androida, aby dostosowywać malowanie na płótnie Androida, a także filtrować zawartość widoku. Android używa wewnętrznie tych shaderów do implementowania efektów falowania, rozmyciarozciągania przewijania. Android 13 i nowsze wersje umożliwiają tworzenie podobnych zaawansowanych efektów w aplikacji.

Ulepszenia Choreographer

Android 13 wprowadza publiczne metody interfejsu API dla ChoreographerASurfaceControl, 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ą wysyłać wywołanie zwrotne do Choreographer i otrzymywać informacje o osi czasu klatek. W Androidzie 13 (poziom 33 interfejsu API) funkcja Choreographer zwraca wiele możliwych czasów prezentacji i odpowiadających im terminów renderowania klatek. Aplikacje mogą wybrać czas prezentacji, a następnie powiadomić SurfaceFlinger o dokonanym wyborze. SurfaceFlinger nie próbuje zastosować transakcji ani buforów zatrzaskowych przed żądanym czasem prezentacji.

Jeśli Twoja aplikacja korzysta z nowych metod Choreographer i SurfaceControl, możesz wyświetlić cykl życia klatki aplikacji w śladzie Perfetto.

Aparat

Nagrywanie filmów HDR

Od Androida 13 interfejsy Camera2 API 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 szerszą gamę kolorów i zwiększa zakres dynamiki komponentu luminancji (z obecnych 100 cd/m² do tysięcy cd/m²). Dzięki temu jakość wideo 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 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 podczas odtwarzania multimediów. Szczegółowe informacje o tym, jak zintegrować tę funkcję, znajdziesz w dokumentacji dźwięku przestrzennego.

Przewidywane kierowanie dźwięku

Aby pomóc aplikacjom multimedialnym określić, jak będzie kierowany dźwięk, w Androidzie 13 wprowadziliśmy interfejsy API ścieżki audio w klasie AudioManager. Interfejs getAudioDevicesForAttributes() umożliwia pobranie listy urządzeń, na których można odtwarzać określony dźwięk, a interfejs getDirectProfilesForAttributes() pomaga określić, czy strumień audio można odtwarzać bezpośrednio. Użyj tych interfejsów API, aby określić najlepszy AudioFormat do użycia w ścieżce audio.

Ułatwienia dostępu

Audiodeskrypcja

Android 13 (API na poziomie 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, w której lektor opowiada o prezentacji, opisując, co dzieje się na ekranie podczas naturalnych przerw w dźwięku. Aplikacje mogą uwzględniać preferencje użytkownika dotyczące ścieżek z opisem dźwiękowym, 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 odbiornik 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 odświeżanie podstawowych bibliotek Androida, aby dostosować je do wersji OpenJDK 11 LTS. Obejmuje to aktualizacje bibliotek 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 w ramach aktualizacji systemowej Google Play modułu głównego ART.

Android 13 wprowadza w bibliotekach podstawowych te zmiany:

  • Obsługa słowa kluczowego var w przypadku zmiennych lokalnych i wyrażeń lambda jako parametrów.
  • Nowe metody w klasie String:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • Obsługa Collection.toArray(IntFunction), która ułatwia dostosowywanie kolekcji do tablicy.

  • Obsługa ifPresentOrElse(), isEmpty(), orElseThrow() i stream() w klasach java.util Optional, OptionalDouble, OptionalInt i OptionalLong.

  • Rozszerzona obsługa SocketOptions, w tym ponowne wykorzystywanie gniazd.

  • NullReader, NullWriter, InputStream, OutputStream i transferTo() Reader, które przenoszą odczytane znaki do Writer.

  • Dodano funkcję kodowania i dekodowania adresów URL za pomocą Charsets.

  • Charset w przypadku FileReader, FileWriter, PrintStreamPrintWriter.

  • Nowe funkcje transferTo(), readNBytes(), readAllBytes()writeBytes() dla ByteArrayInput lub OutputStream oraz Input lub OutputStream.

  • Obsługa środowiska wykonawczego i kompilatora w przypadku języka java.lang.invoke.VarHandle.

  • Aktualizuje java.util.concurrent do interfejsu OpenJDK 11 API przy użyciu VarHandle.

Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Oracle lub jej podmiotów stowarzyszonych.