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 powiązanych z nimi interfejsach API.

Szczegółową listę nowych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w raporcie porównawczym interfejsów API. Szczegółowe informacje o nowych interfejsach API znajdziesz w dokumentacji interfejsu API Androida – nowe interfejsy API są wyróżnione. Aby dowiedzieć się więcej o obszarach, w których zmiany w platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami zachowania Androida 13 w przypadku aplikacji kierowanych na Androida 13wszystkich aplikacji.

Narzędzia i produktywność programistów

Ikony aplikacji zgodne z wybranym motywem

Użytkownik decyduje się na ikony aplikacji z motywem
Włączanie motywów ikon aplikacji w Androidzie 13

Od Androida 13 możesz włączyć motywy ikon aplikacji. Dzięki tej funkcji ikony aplikacji w obsługiwanych programach uruchamiania Androida są zabarwione, aby przejąć kolorystykę wybranej przez użytkownika tapety i innych motywów.

Aby obsługiwać tę funkcję, aplikacja musi zawierać ikonę dostosowaną i monochromatyczną ikonę aplikacji oraz wskazywać na monochromatyczną ikonę aplikacji w elemencie <adaptive-icon> w pliku manifestu. Jeśli użytkownik ma włączone ikony tematyczne (czyli włączył przełącznik Ikony tematyczne w ustawieniach systemu), a launcher obsługuje tę funkcję, system używa koloru tapety i motywu wybranego przez użytkownika, aby określić kolor zabarwienia, który następnie stosuje do monochromatycznej ikony aplikacji.

Ekran główny NIE wyświetla ikony aplikacji w motywie, a zamiast niej wyświetla ikonę aplikacji standardowej lub dostosowaną do urządzenia w jednym z tych scenariuszy:

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

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

Wybór języka według aplikacji

Języki według aplikacji w ustawieniach systemu

W wielu przypadkach użytkownicy wielojęzyczni ustawiają język systemu na jeden język, np. angielski, ale chcą wybrać inne języki w przypadku niektórych aplikacji, np. holenderski, chiński lub hindi. Aby ułatwić aplikacjom zapewnianie lepszych wrażeń użytkownikom, Android 13 wprowadza te funkcje dla aplikacji obsługujących wiele języków:

  • Ustawienia systemowe: centralne miejsce, w którym użytkownicy mogą wybrać preferowany język dla każdej aplikacji.

    Aplikacja musi deklarować atrybut android:localeConfig w swoim pliku manifestu, aby poinformować system, że obsługuje wiele języków. Więcej informacji znajdziesz w instrukcjach dotyczących tworzenia pliku zasobu i deklarowania go w pliku manifestu aplikacji.

  • Dodatkowe interfejsy API: te publiczne interfejsy API, takie jak metody setApplicationLocales() i getApplicationLocales() w LocaleManager, umożliwiają aplikacjom ustawianie innego języka niż język systemu w czasie wykonywania.

    Te interfejsy API są automatycznie synchronizowane z ustawieniami systemu, dlatego aplikacje, które korzystają z tych interfejsów API do tworzenia niestandardowych selektorów języka w aplikacji, zapewnią użytkownikom spójne środowisko niezależnie od tego, gdzie wybiorą preferencje językowe. Publiczne interfejsy API pomagają też zmniejszyć ilość kodu stałego, obsługują dzielone pakiety APK i umożliwiają korzystanie z automatycznego tworzenia kopii zapasowych aplikacji na potrzeby przechowywania ustawień języka użytkownika na poziomie aplikacji.

    Aby zapewnić zgodność wsteczną z poprzednimi wersjami Androida, w AndroidX dostępne są też równoważne interfejsy API. Zalecamy używanie interfejsów API dodanych w Appcompat 1.6.0-beta01 lub nowszej wersji.

Zmiany te nie mają wpływu na aplikacje, które nie obsługują wielu języków.

Ulepszona obsługa tekstu i języka

Android 13 zawiera kilka funkcji i ulepszeń dotyczących języka, które pomogą Ci zapewnić lepsze wrażenia użytkownika. W następnych sekcjach opisaliśmy:

Szybsze dzielenie wyrazów

Przecinekowanie ułatwia czytanie tekstu po przewinięciu i czyni interfejs bardziej elastycznym. Od Androida 13 wydajność dzielenia wyrazów jest optymalizowana nawet o 200%, więc możesz włączyć tę funkcję w swojej aplikacji TextView bez większego wpływu na wydajność renderowania. Aby włączyć szybsze dzielenie wyrazów, użyj częstotliwości fullFast lub normalFast w setHyphenationFrequency().

Interfejsy API konwersji tekstu

Użytkownicy, którzy mówią w językach takich jak japoński czy chiński, używają metod wprowadzania pisma fonetycznego, co często spowalnia wyszukiwanie i funkcje takie jak autouzupełnianie. W Androidzie 13 aplikacje mogą wywoływać nowy interfejs API do konwertowania tekstu, aby użytkownicy mogli szybciej i łatwiej znaleźć to, czego szukają. Wcześniej, aby przeprowadzić wyszukiwanie, użytkownik z Japonii musiał wykonać te czynności:

  1. Wpisz znaki hiragana jako wymowę fonetyczną wyszukiwanego hasła (np. nazwy miejsca lub aplikacji).
  2. Użyj klawiatury, aby przekonwertować znaki hiragany na znaki kanji.
  3. Ponownie wyszukaj przy użyciu znaków kanji
  4. W końcu otrzymują wyniki wyszukiwania.

Dzięki nowemu interfejsowi API do konwertowania tekstu użytkownicy z Japonii mogą wpisywać znaki w hiragana i natychmiast wyświetlać wyniki wyszukiwania w kanji, pomijając kroki 2 i 3.

Ulepszona wysokość wierszy w przypadku alfabetów innych niż łaciński

Android 13 poprawia wyświetlanie pism niełacińskich (takich jak tamilski, birmański, telugu czy tybetański) dzięki zastosowaniu wysokości linii dostosowanej do każdego języka. Nowe wysokości wierszy zapobiegają przycinaniu i poprawiają pozycjonowanie znaków. Twoja aplikacja może korzystać z tych ulepszeń, jeśli jest kierowana na Androida 13. Pamiętaj, aby przetestować swoje aplikacje przy użyciu nowego odstępu między wierszami, ponieważ zmiany mogą mieć wpływ na interfejs w językach niełacińskich.

Wysokość linii, która została obcięta w Androidzie 12 (na górze), a teraz jest lepiej umieszczona i nie jest obcięta w Androidzie 13 (na dole).

Ulepszone zawijanie tekstu w języku japońskim

Od Androida 13 komponenty TextView mogą łamać tekst na podstawie bunsetsu (najmniejszej jednostki wyrazu, która brzmi naturalnie) lub wyrażeń zamiast znaków, aby aplikacje w języku japońskim były bardziej dopracowane i czytelne. Możesz skorzystać z tego opakowania, używając android:lineBreakWordStyle="phrase" w elementach TextView.

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 zawarte w Unicode ICU 70, Unicode CLDR 40Unicode 14.0.

Oto kilka istotnych zmian:

  • Gdy nie ma dostępnych zasobów tłumaczenia, zarówno angielski (Kanada) en‑CA, jak i angielski (Filipiny) en‑PH korzystają z zasobów tłumaczenia angielskiego (Stany Zjednoczone) en, a nie z angielskiego (Wielka Brytania) en‑GB.
  • Wprowadziliśmy kategorię liczby mnogiej many w przypadku języków: hiszpański es, włoski it, portugalski pt i portugalski (Portugalia) pt‑PT. Podobnie jak we francuskim w wersji CLDR 38, służy on do zapisywania dużych liczb.

Kolorowe czcionki wektorowe

Wektorowy emotikon 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 renderuje się szybko i ostre w dowolnym rozmiarze.

W przypadku większości aplikacji system zajmuje się wszystkim, a COLRv1 po prostu działa. Jeśli jednak Twoja aplikacja implementuje własne renderowanie tekstu i korzysta z czcionek systemowych, zalecamy przetestowanie renderowania emotikonów.

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

Szybkie ustawienia API

Szybkie ustawienia w panelu powiadomień to wygodny sposób na zmianę ustawień lub wykonanie szybkich działań bez opuszczania kontekstu aplikacji. W przypadku aplikacji, które oferują niestandardowe kafelki, ułatwiamy użytkownikom odkrywanie i dodawanie kafelków do Szybkich ustawień. Dzięki nowemu interfejsowi API do umieszczania kafelków aplikacja może teraz poprosić użytkownika o bezpośrednie dodanie niestandardowego kafelka do zestawu aktywnych kafelków Szybkich ustawień. Nowe okno dialogowe systemu umożliwia użytkownikowi dodanie karty w jednym kroku bez konieczności opuszczania aplikacji. Nie trzeba już przechodzić do Szybkich ustawień, aby dodać kartę.

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

Podgląd schowka

Od Androida 13 system wyświetla standardowe wizualne potwierdzenie, gdy treści są dodawane do schowka. Nowa weryfikacja:

  • Potwierdza, że treści zostały skopiowane.
  • Wyświetla podgląd skopiowanych treści.

Ta funkcja standaryzuje różne powiadomienia wyświetlane przez aplikacje po skopiowaniu i daje użytkownikom większą kontrolę nad ich schowka. Więcej informacji znajdziesz na stronie funkcji Kopiuj i wklej.

Widżet Kopiuj/wklej
Nowy interfejs wyświetlany po umieszczeniu treści w schowku.

Gest przewidywanego przejścia wstecz

Android 13 wprowadza przewidujący gest cofania na urządzeniach z Androidem, takich jak telefony, duże ekrany i urządzenia składane. Aby obsługiwać tę funkcję, musisz zaktualizować aplikację.

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

Bluetooth LE Audio

Technologia Bluetooth Low Energy (LE) Audio to bezprzewodowa technologia dźwiękowa zaprojektowana z myślą o zastąpieniu klasycznego Bluetooth i umożliwiająca określone zastosowania i topologie połączeń. Aplikacja umożliwia użytkownikom udostępnianie i nadawanie dźwięku znajomym i rodzinie oraz subskrybowanie publicznych transmisji w celu uzyskania informacji, rozrywki lub dostępności. Został zaprojektowany tak, aby użytkownicy mogli uzyskać dźwięk o wysokiej jakości bez poświęcania czasu pracy baterii, a także bezproblemowo przełączać się między różnymi zastosowaniami, co nie jest możliwe w przypadku klasycznego Bluetootha. Od Androida 13 system zawiera wbudowane wsparcie dla LE Audio, dzięki czemu deweloperzy mogą bezpłatnie korzystać z tych funkcji na zgodnych urządzeniach.

MIDI 2.0

Od Androida 13 system obsługuje standard MIDI 2.0, w tym możliwość podłączania sprzętu MIDI 2.0 przez USB. Ten standard oferuje takie funkcje jak zwiększona rozdzielczość kontrolerów, lepsza obsługa intonacji niezachodniej oraz bardziej wyraziste wykonanie dzięki kontrolerom na poszczególne nuty.

Poprawki dotyczące wydajności ekranu powitalnego

Android 13 zwiększa wydajność animowanych ekranów powitalnych w interfejsie SplashScreen API:

  • System określa czas trwania animacji bezpośrednio na podstawie AnimatedVectorDrawable. Przed Androidem 13 trzeba było ustawić windowSplashScreenAnimationDuration bezpośrednio.

  • Użyj nowego atrybutu windowSplashScreenBehavior, aby mieć większą kontrolę nad tym, czy aplikacja zawsze wyświetla ikonę na ekranie powitalnym w Androidzie 13 i nowszych.

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

Optymalizacja ART

W Androidzie 13 (API na poziomie 33) i nowszych ART znacznie przyspiesza przełączanie się między natywną implementacją kodu a interpretowanym kodem.Dzięki temu wywołania JNI są teraz nawet 2,5 raza szybsze. Przetwarzanie referencji w czasie wykonywania zostało również zmienione, aby było w większości niezablokowane, co dodatkowo zmniejsza zacięcia. Możesz też użyć publicznego interfejsu API Reference.refersTo(), aby szybciej odzyskiwać niedostępne obiekty. Dzięki zoptymalizowanym wyszukiwaniom klas i metod zauważysz, że interpreter działa teraz szybciej. ART przeprowadza też więcej weryfikacji kodu bajtowego w momencie instalacji, co pozwala uniknąć kosztów weryfikacji w czasie działania i utrzymać krótki czas uruchamiania aplikacji.

Prywatność i bezpieczeństwo

Bezpieczniejsze eksportowanie odbiorników zarejestrowanych w kontekście

Aby zwiększyć bezpieczeństwo odbiorników w czasie działania, Android 13 umożliwia aplikacji określenie, czy zarejestrowany odbiornik wiadomości powinien być eksportowany i widoczny dla innych aplikacji na urządzeniu. W poprzednich wersjach Androida każda aplikacja na urządzeniu mogła wysyłać niezabezpieczony transmisję do dynamicznie zarejestrowanego odbiornika, chyba że odbiornik był chroniony przez uprawnienie dostępu z weryfikacją.

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

Selektor zdjęć

Android 13 (poziom API 33) lub nowszy zawiera selektor zdjęć. Gdy aplikacja uruchamia selektor zdjęć, użytkownicy wybierają określone obrazy i filmy do udostępnienia w aplikacji, np. zdjęcia profilowe, zamiast przyznawać aplikacji dostęp do całej biblioteki multimediów. Jest to zalecany sposób uzyskiwania dostępu do zdjęć i filmów użytkownika.

Selektor zdjęć zapewnia większą prywatność użytkowników, ponieważ Twoja aplikacja nie musi deklarować żadnych uprawnień w czasie działania. Dodatkowo selektor zdjęć zapewnia wbudowane, standardowe interfejsy użytkownika w aplikacjach, co zapewnia bardziej spójne wrażenia.

Nowe uprawnienia w czasie działania dla urządzeń Wi-Fi w pobliżu

Android 13 (poziom API 33) wprowadza nowe uprawnienie w czasie wykonywania w grupie uprawnień NEARBY_DEVICES dla aplikacji, które zarządzają połączeniami urządzenia z pobliskimi punktami dostępu przez Wi-Fi. Aplikacje te muszą deklarować nowe uprawnienie NEARBY_WIFI_DEVICES, gdy wywołują różne interfejsy API Wi-Fi. Oprócz tego, jeśli aplikacje nie określają fizycznej lokalizacji na podstawie interfejsów API Wi-Fi, nie muszą deklarować uprawnień ACCESS_FINE_LOCATION, jeśli są kierowane na Androida 13 lub nowszą wersję.

Dowiedz się więcej o uprawnieniach urządzeń Wi-Fi w pobliżu.

Nowe uprawnienie dostępu do precyzyjnych alarmów

Jeśli Twoja aplikacja jest kierowana na Androida 13 lub nowszego, możesz używać uprawnienia USE_EXACT_ALARM, które jest automatycznie przyznawane Twojej aplikacji. Aby jednak mogła ona korzystać z tego uprawnienia, musi spełniać co najmniej 1 z tych kryteriów:

  • Aplikacja to budzik lub minutnik.
  • Twoja aplikacja to kalendarz, który wyświetla powiadomienia o nadchodzących wydarzeniach.

Jeśli Twoja aplikacja ustawia alarmy precyzyjne, ale nie spełnia żadnego z wypadków opisanych na poprzedniej liście, nadal deklaruj uprawnienie SCHEDULE_EXACT_ALARM i bądź przygotowany na sytuację, w której użytkownik odmówi przyznania dostępu do aplikacji.

Deweloperska opcja obniżania uprawnień

Od Androida 13 aplikacja może odwołać uprawnienia do nieużywanych uprawnień w czasie działania. Ten interfejs API pozwala aplikacji wykonywać działania zwiększające prywatność, takie jak:

  • Usuń nieużywane uprawnienia.
  • Stosuj sprawdzone metody dotyczące uprawnień, aby zwiększyć zaufanie użytkowników. Możesz rozważyć wyświetlenie użytkownikom okna z informacją o odebranych uprawnieniach.

Schemat podpisu plików APK w wersji 3.1

Android 13 obsługuje schemat podpisu pliku APK w wersji 3.1, który stanowi ulepszenie dotychczasowego schematu podpisu pliku APK w wersji 3. Ten schemat rozwiązuje niektóre znane problemy ze schematem podpisu plików APK w wersji 3 dotyczące rotacji. W szczególności schemat podpisu v3.1 obsługuje kierowanie na wersję SDK, co umożliwia rotacji kierowanie na nowszą wersję platformy.

Schemat podpisu w wersji 3.1 używa identyfikatora bloku, który nie jest rozpoznawany w wersji 12L lub starszej. Dlatego platforma stosuje takie zachowanie:

  • Urządzenia z Androidem 13 lub nowszym korzystają z podpisującego obraconego w ramach blokady wersji 3.1.
  • Urządzenia z starszymi wersjami Androida ignorują rotowany podpisujący i zamiast tego używają oryginalnego podpisującego w bloku 3.0.

Aplikacje, których klucz podpisywania nie został jeszcze rotowany, nie wymagają żadnych dodatkowych działań. Gdy te aplikacje zdecydują się na rotację, system domyślnie zastosuje schemat podpisu v3.1.

Aplikacje, które zostały już poddane rotacji i nadal chcą używać rotowanego klucza podpisywania w bloku podpisywania w wersji 3.0, muszą zaktualizować wywołanie:apksigner

apksigner sign --ks keystore.jks |
  --key key.pk8 --cert cert.x509.pem
  --rotation-min-sdk-version API_LEVEL
  [signer_options] app-name.apk

...gdzie API_LEVEL to 32 lub mniej.

Ulepszone raportowanie błędów w Keystore i KeyMint

W przypadku aplikacji, które generują klucze, Keystore i KeyMint zapewniają teraz bardziej szczegółowe i dokładniejsze wskaźniki błędów. Dodaliśmy hierarchię klas wyjątków w sekcji java.security.ProviderException, w tym wyjątki dotyczące Androida, które obejmują kody błędów Keystore/KeyMint oraz informację, czy można ponownie próbować naprawić błąd. Możesz też zmodyfikować metody generowania i używania kluczy (podpisywanie, szyfrowanie), aby zgłaszać nowe wyjątki. Ulepszone zgłaszanie błędów nie jest ograniczone do generowania kluczy i powinno zawierać informacje potrzebne do ponownego wygenerowania klucza.

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

Android 13 opiera się na optymalizacji dla tabletów wprowadzonej w Androidzie 12 i pakiecie funkcji 12L, w tym optymalizacji interfejsu użytkownika systemu, ulepszonej wielozadaniowości i ulepszonych trybów zgodności. W ramach testów sprawdź, czy aplikacje wyglądają jak najlepiej na tabletach i innych urządzeniach z dużym ekranem.

Więcej informacji o nowościach i testach znajdziesz na stronie Obsługa tabletów i dużych ekranów.

Grafika

Programowalne shadery

Animowany shader AGSL, dostosowany z tego shadera GLSL.

Począwszy od Androida 13 system obsługuje programowalne obiekty RuntimeShader, których zachowanie jest definiowane za pomocą języka cieniowania grafiki Androida (AGSL). AGSL ma podobną składnię do GLSL, ale działa w ramach silnika renderowania Androida, aby dostosowywać rysowanie na płótnie Androida oraz filtrować zawartość widoku. Android używa tych shaderów wewnętrznie do implementowania efektów falowania, rozmyciarozcią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 SurfaceFlingercyklu życia klatek.ChoreographerASurfaceControl 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ć SurfaceFlingero swoim wyborze. SurfaceFlinger nie próbuje wtedy stosować transakcji ani buforów blokady przed żądanym czasem prezentacji.

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

Aparat

Nagrywanie filmów HDR

Począwszy od Androida 13 interfejsy Camera2 API obsługują przechwytywanie filmów w High Dynamic Range (HDR), co umożliwia wyświetlanie podglądu i nagrywanie treści wideo HDR za pomocą aparatu. W porównaniu ze standardowym zakresem dynamiki (SDR) HDR zapewnia szerszy zakres kolorów i zwiększa zakres dynamiczny komponentu jasności (z obecnych 100 cd/m2 do 1000 cd/m2). Dzięki temu jakość filmów jest bardziej zbliżona do rzeczywistości, a kolory są bardziej nasycone, a światła i cienie bardziej wyraziste.

Więcej informacji o nagrywaniu filmów HDR znajdziesz w dokumentacji dotyczącej nagrywania filmów HDR.

Multimedia

Dźwięk przestrzenny

Dźwięk przestrzenny to niezwykłe doznania dźwiękowe, które przenoszą użytkowników w sam środek akcji i zapewniają większy realizm. Szczegółowe informacje o integracji z tą funkcją znajdziesz w dokumentacji dotyczącej dźwięku przestrzennego.

Wyprzedzające kierowanie dźwięku

Aby ułatwić aplikacjom multimedialnym identyfikowanie sposobu kierowania dźwięku, Android 13 wprowadza interfejsy API kierowania dźwięku w klasie AudioManager. Interfejs API getAudioDevicesForAttributes() umożliwia pobranie listy urządzeń, które mogą być używane do odtwarzania określonego dźwięku, a interfejs API getDirectProfilesForAttributes() pomaga określić, czy strumień audio można odtwarzać bezpośrednio. Korzystając z tych interfejsów API, określ, który z nich AudioFormat najlepiej nadaje się do Twojego ścieżki audio.

Ułatwienia dostępu

Audiodeskrypcja

Android 13 (poziom API 33) wprowadza nowe ustawienie ułatwień dostępu w całym systemie, które umożliwia użytkownikom włączanie audiodeskrypcji we wszystkich aplikacjach. Audiodeskrypcja to dodatkowy lektor, który opowiada o prezentacji, opisując to, co dzieje się na ekranie podczas naturalnych przerw w dźwięku. Aplikacje mogą stosować ustawienia użytkownika dotyczące ścieżek audiodeskrypcji, wysyłając zapytanie za pomocą funkcji isAudioDescriptionRequested(), jak pokazano w tym fragmencie kodu:

Kotlin


private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (accessibilityManager.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java


private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

Aplikacje mogą monitorować zmiany preferencji użytkownika, dodając listenera do AccessbilityManager:

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}

Główna funkcja

aktualizacje OpenJDK 11,

Android 13 rozpoczyna proces odświeżania podstawowych bibliotek Androida, aby dostosować je do wersji OpenJDK 11 LTS, która zawiera aktualizacje bibliotek oraz obsługę języka Java 11 dla deweloperów aplikacji i platform. Zmiany w bibliotece podstawowej wprowadzone w Androidzie 13 będą też dostępne na urządzeniach z Androidem 12 w ramach aktualizacji systemu Google Play do modułu głównego ART.

Android 13 wprowadza następujące zmiany w bibliotekach podstawowych:

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

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

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

  • Rozszerzona obsługa SocketOptions, w tym możliwość ponownego używania gniazd.

  • NullReader, NullWriter, InputStream, OutputStreamtransferTo() Reader funkcja, która przenosi odczytane znaki do Writer.

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

  • Funkcje Charset w usługach FileReader, FileWriter, PrintStream i PrintWriter.

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

  • 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 interfejsu VarHandle.

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