Omówienie funkcji i interfejsów API

Android 13 wprowadza programistów – świetne nowe funkcje i interfejsy API. W sekcjach poniżej znajdziesz informacje o funkcjach Twoich aplikacji i pierwsze kroki z powiązanymi interfejsami 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 interfejsu Android API, gdzie 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 programistów

Ikony aplikacji zgodne z wybranym motywem

Użytkownik wybierający tematyczne ikony aplikacji
Włączanie motywujących ikon aplikacji na Androidzie 13

Od Androida 13 możesz włączyć ikony aplikacji z motywem. W przypadku tej funkcji ikony aplikacji w obsługiwanych programach uruchamiających Androida są podświetlone, by dziedziczyć kolor wybranej tapety i innych motywów użytkownika.

Aby aplikacja obsługiwała tę funkcję, musi zawierać zarówno ikonę adaptacyjną, jak i monochromatyczną, a także wskazać monochromatyczną ikonę aplikacji z elementu <adaptive-icon> w pliku manifestu. Jeśli użytkownik włączył tematyczne ikony aplikacji (czyli włączył przełącznik Ikony z motywem w ustawieniach systemu), a program uruchamiający obsługuje tę funkcję, system używa koloru wybranej tapety i motywu, aby określić kolor odcienia, który zostanie zastosowany do monochromatycznej ikony aplikacji.

Na ekranie głównym NIE wyświetla się ikona aplikacji z motywem. Zamiast tego pojawia się ikona aplikacji adaptacyjnej lub standardowej w tych sytuacjach:

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

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

Wybór języka według aplikacji

Języki według aplikacji w ustawieniach systemu

W wielu przypadkach użytkownicy wielojęzyczni ustawiają język systemu na jeden (np. angielski), ale chcą wybrać inny język w poszczególnych aplikacjach, np. niderlandzki, chiński czy hindi. Aby zwiększyć komfort korzystania z aplikacji, Android 13 wprowadza te funkcje w aplikacjach obsługujących wiele języków:

  • Ustawienia systemu: scentralizowane miejsce, w którym użytkownicy mogą wybrać preferowany język w poszczególnych aplikacjach.

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

    Te interfejsy API automatycznie synchronizują się z ustawieniami systemowymi, dlatego aplikacje korzystające z tych interfejsów do tworzenia niestandardowych selektorów języka w aplikacji zapewniają spójne wrażenia użytkownika niezależnie od tego, gdzie wybrali ustawienia języka. Publiczne interfejsy API pomagają też ograniczyć ilość powtarzalnego kodu. Obsługują też dzielone pakiety APK i obsługują funkcję Automatycznej kopii zapasowej aplikacji, która umożliwia przechowywanie ustawień języka użytkownika na poziomie aplikacji.

    Aby zapewnić zgodność wsteczną z poprzednimi wersjami Androida, w AndroidzieX są też dostępne odpowiadające im interfejsy API. Zalecamy używanie interfejsów API dodanych w programie Appcompat w wersji 1.6.0-beta01 lub nowszej.

Te zmiany nie dotyczą aplikacji, które nie obsługują wielu języków.

Ulepszona obsługa tekstu i języków

Android 13 zawiera kilka ulepszeń tekstu i języka, które zapewniają bardziej dopracowany interfejs. Opisaliśmy to w tych sekcjach:

Szybsze dzielenie się łącznikami

Dzielenie się łącznikami ułatwia czytanie opakowanego tekstu i ułatwia interfejs. Począwszy od Androida 13 wydajność łączników jest optymalizowana nawet o 200%, więc możesz ją włączyć w TextView niemal bez wpływu na wydajność renderowania. Aby włączyć szybsze dzielenie, użyj częstotliwości fullFast lub normalFast w setHyphenationFrequency().

Interfejsy API konwersji tekstowych

Osoby posługujące się takimi językami jak japoński i chiński używają fonetycznych metod wprowadzania liter, co często spowalnia wyszukiwanie i spowalnia działanie takich funkcji jak autouzupełnianie. Na Androidzie 13 aplikacje mogą wywoływać nowy tekstowy interfejs API konwersji, aby użytkownicy mogli szybciej i łatwiej znaleźć to, czego szukają. Wcześniej użytkownik z Japonii musiał wykonać na przykład te czynności:

  1. Wpisz alfabet hiragana jako fonetyczną wymowę wyszukiwanego hasła (np. miejsca lub nazwy aplikacji).
  2. Za pomocą klawiatury możesz przekonwertować znaki hiragana na kanji
  3. Wyszukiwanie przy użyciu znaków kanji
  4. Na koniec sprawdź wyniki wyszukiwania

Dzięki nowemu interfejsowi API konwersji tekstu użytkownicy w Japonii mogą pisać w języku hiragana i od razu zobaczyć wyniki wyszukiwania kanji, pomijając kroki 2 i 3.

Poprawione wysokości wierszy w alfabetach innych niż łacińskie

Android 13 poprawia wyświetlanie alfabetu innego niż łaciński (np. tamilskiego, birmańskiego, telugu i tybetańskiego) dzięki możliwości dostosowania wysokości wiersza do każdego języka. Nowe wysokości wierszy zapobiegają obcinaniu tekstu i poprawiają rozmieszczenie znaków. Twoja aplikacja może korzystać z tych ulepszeń, jeśli jest kierowana na Androida 13. Przetestuj swoje aplikacje z nowymi odstępami między wierszami, ponieważ zmiany mogą mieć wpływ na interfejs w językach opartych na alfabecie innym niż łaciński.

Wysokość wierszy przyciętych w Androidzie 12 (powyżej), które są teraz lepiej umiejscowione i nie są przycięte w Androidzie 13 (poniżej).

Ulepszone zawijanie tekstu w języku japońskim

Począwszy od Androida 13 obiekty TextView mogą zawijać tekst według bunsetsu (najmniejszej jednostki słów, które brzmią naturalnie) lub wyrażeń zamiast poszczególnych znaków, aby zapewnić bardziej dopracowany i czytelny tekst w japońskich aplikacjach. Aby z niego skorzystać, użyj android:lineBreakWordStyle="phrase" z obiektami TextView.

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

Aktualizacje biblioteki Unicode

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

Oto kilka ważnych zmian:

  • Angielski (Kanada) en‑CA i angielski (Filipiny) en‑PH korzystają z zasobów tłumaczeniowych z języka angielskiego (Stany Zjednoczone) en, gdy nie są dostępne zasoby tłumaczeniowe, a nie na angielski (Wielka Brytania) en‑GB.
  • Kategoria liczby mnoga many została wprowadzona dla języka hiszpańskiego es, włoski it, portugalskiego pt i portugalskiego (Portugalia) pt‑PT. Podobnie jak w przypadku języka francuskiego wprowadzonego w CLDR w wersji 38, jest ono stosowane w przypadku dużych liczb.

Czcionki kolorów wektorowych

Emotikony wektorowe COLRv1 (po lewej) i emotikony z mapą bitową (po prawej)

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 wyświetla się niezależnie od rozmiaru.

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

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

Interfejs API rozmieszczania Szybkich ustawień

Szybkie ustawienia w obszarze powiadomień to wygodny sposób na zmianę ustawień i podjęcie szybkich działań bez wychodzenia z aplikacji. W przypadku aplikacji z niestandardowymi kafelkami ułatwiamy użytkownikom znajdowanie i dodawanie kafelków do Szybkich ustawień. Za pomocą nowego interfejsu API rozmieszczania kafelków aplikacja może prosić użytkownika o bezpośrednie dodanie niestandardowego kafelka do zestawu aktywnych kafelków Szybkich ustawień. Nowe okno systemowe pozwala użytkownikowi dodać kartę w jednym kroku, bez wychodzenia z aplikacji, bez konieczności przechodzenia do Szybkich ustawień w celu dodania kafelka.

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

Podgląd schowka

Od Androida 13 system wyświetla standardowe wizualne potwierdzenie dodania treści do schowka. Nowe potwierdzenie wygląda tak:

  • Potwierdza, że treść została skopiowana.
  • Udostępnia podgląd skopiowanej treści.

Ta funkcja ustandaryzuje 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.

Widżet Kopiuj/wklej
Nowy interfejs wyświetlany, gdy zawartość schowka znajduje się w schowku.

Gest przewidywania

Android 13 wprowadza gest cofania się w tle na urządzeniach z Androidem, takich jak telefony, duże ekrany i urządzenia składane. Obsługa tej funkcji wymaga aktualizacji aplikacji.

Szczegółową dokumentację znajdziesz w artykule Aktualizowanie aplikacji pod kątem obsługi przewidywanego gestu zwrotnego. Możesz też wypróbować nasze ćwiczenia.

Bluetooth LE Audio

Low Energy (LE) Audio to bezprzewodowe rozwiązanie audio stworzone, aby zastąpić klasyczny Bluetooth i umożliwić określone przypadki użycia oraz topologię połączeń. Umożliwia użytkownikom udostępnianie i przesyłanie dźwięku znajomym i rodzinie, a także subskrybowanie publicznych transmisji w celach informacyjnych, rozrywkowych lub ułatwień dostępu. Ma to zapewnić użytkownikom możliwość odbierania dźwięku wysokiej jakości bez konieczności poświęcania czasu pracy na baterii oraz płynne przełączanie się między różnymi zastosowaniami niedostępnymi w przypadku Bluetooth Classic. 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

Począwszy od Androida 13 system obejmuje obsługę standardu MIDI 2.0, w tym możliwość łączenia sprzętu MIDI 2.0 przez USB. Ten standard oferuje takie funkcje, jak większa rozdzielczość kontrolerów, lepsza obsługa intonacji innej niż zachodnia i bardziej wyrazista wydajność z wykorzystaniem kontrolerów poszczególnych notatek.

Ulepszony ekran powitalny

Android 13 poprawia wydajność animowanych ekranów powitalnych w interfejsie Splash Screen API:

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

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

Szczegółowe informacje znajdziesz w sekcji Ekrany powitalne.

Optymalizacja reklam ART

W Androidzie 13 (poziom interfejsu API 33) i nowszych ART znacznie szybsze przechodzenie do kodu natywnego i z niego z wywołaniami JNI nawet 2,5 raza szybciej. Przerobiliśmy też przetwarzanie odwołań do środowiska wykonawczego, aby w większości nie blokować problemów, co jeszcze bardziej ograniczało bałagan. Możesz też użyć publicznego interfejsu API Reference.refersTo(), aby szybciej odzyskać nieosiągalne obiekty. Zauważysz, że interpreter działa teraz szybciej dzięki zoptymalizowanym wyszukiwaniu klas i metod. ART przeprowadza też więcej weryfikacji przy użyciu kodu bajtowego podczas instalacji, co pozwala uniknąć kosztów weryfikacji w czasie działania i przyspiesza uruchamianie aplikacji.

Prywatność i bezpieczeństwo

Bezpieczniejsze eksportowanie odbiorców zarejestrowanych kontekstowo

Aby zwiększyć bezpieczeństwo odbiorników środowiska wykonawczego, Android 13 wprowadza w aplikacji możliwość określenia, 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ć niechronioną transmisję do odbiornika zarejestrowanego dynamicznie, chyba że objęty był uprawnieniami do podpisywania.

Ta konfiguracja eksportowania jest dostępna w aplikacjach, które spełniają co najmniej jeden z tych wymagań:

Selektor zdjęć

Android 13 (poziom API 33) i nowszy zawiera selektor zdjęć. Gdy aplikacja uruchamia selektor zdjęć, użytkownicy wybierają określone obrazy i filmy, które chcą jej udostępnić (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. Selektor zdjęć ma też wbudowany, ustandaryzowany interfejs aplikacji, dzięki któremu korzystanie z aplikacji jest bardziej spójne.

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

Android 13 (poziom interfejsu API 33) wprowadza nowe uprawnienie środowiska wykonawczego w grupie uprawnień NEARBY_DEVICES dla aplikacji, które zarządzają połączeniami urządzenia z pobliskimi punktami dostępu przez Wi-Fi. Te aplikacje muszą zadeklarować nowe uprawnienie NEARBY_WIFI_DEVICES przy wywołaniu kilku różnych interfejsów API Wi-Fi. Ponadto aplikacje kierowane na Androida 13 lub nowszego nie muszą deklarować uprawnień ACCESS_FINE_LOCATION, o ile nie uzyskują fizycznej lokalizacji z interfejsów Wi-Fi API.

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

Nowe uprawnienia do używania alarmów precyzyjnych

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

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

Jeśli Twoja aplikacja ustawia alarmy precyzyjne, ale nie spełnia żadnego z sytuacji wymienionych na poprzedniej liście, kontynuuj zadeklarowanie uprawnień SCHEDULE_EXACT_ALARM i przygotuj się na sytuację, w której użytkownik odmówi dostępu aplikacji.

Uprawnienia dewelopera, które można zmniejszyć

Od Androida 13 aplikacja może unieważniać dostęp do nieużywanych uprawnień środowiska wykonawczego. Pozwala on 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świetlanie użytkownikom okna z informacją o unieważnionych uprawnieniach.

Schemat podpisu APK w wersji 3.1

Android 13 obsługuje schemat podpisu plików APK w wersji 3.1, co stanowi ulepszenie w stosunku do istniejącego 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, które dotyczą rotacji. Schemat podpisywania w wersji 3.1 obsługuje kierowanie na wersję pakietu SDK, co umożliwia rotację w celu kierowania reklam na nowszą wersję platformy.

Schemat podpisu w wersji 3.1 wykorzystuje identyfikator bloku, który nie jest rozpoznawany w wersji 12L lub niższej. W związku z tym platforma stosuje to działanie sygnatariuszy:

  • Urządzenia z Androidem 13 lub nowszym korzystają z obróconego sygnatariusza w bloku wersji 3.1.
  • Urządzenia ze starszymi wersjami Androida ignorują obróconego sygnatariusza i zamiast tego używają oryginalnego sygnatariusza w bloku w wersji 3.0.

Aplikacje, w których nie została jeszcze poddana rotacja klucza podpisywania, nie wymagają żadnych dodatkowych działań. Za każdym razem, gdy takie aplikacje podejmą rotację, system domyślnie stosuje schemat podpisu w wersji 3.1.

Aplikacje, które zostały już poddane rotacji i chcą nadal ich używać 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 wynosi 32 lub mniej.

Dokładniejsze raportowanie błędów w magazynie kluczy i Mint

W przypadku aplikacji generujących klucze Magazyn kluczy i KeyMint podają teraz bardziej szczegółowe i dokładniejsze wskaźniki błędu. W sekcji java.security.ProviderException dodaliśmy hierarchię klas wyjątków z wyjątkami specyficznymi dla Androida, które obejmują kody błędów Keystore/KeyMint oraz 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. Udoskonalone raportowanie błędów nie ogranicza się do generowania kluczy – teraz powinno ono zawierać informacje potrzebne do ponownego wygenerowania kluczy.

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

Android 13 wykorzystuje optymalizacje dla tabletów wprowadzone w Androidzie 12 i pakiet nowych funkcji – w tym optymalizacje interfejsu systemu, lepszą wielozadaniowość oraz ulepszone tryby zgodności. W ramach testów sprawdź, czy Twoje aplikacje jak najlepiej wyglądają na tabletach i innych urządzeniach z dużym ekranem.

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

Grafika

Programowalne cieniowanie

Animowany cieniowanie oparte na języku AGSL na podstawie tego modelu GLSL Shader.

Począwszy od Androida 13 system obsługuje programowalne obiekty RuntimeShader o zachowaniu zdefiniowanym za pomocą języka cieniowania grafiki Androida (AGSL). AGSL ma znaczną część swojej składni co GLSL, ale działa w silniku renderowania Androida, aby dostosowywać obrazy w obszarze roboczym Androida oraz filtrować wyświetlane treści. Android wewnętrznie używa tych cieniowania, aby implementować efekty fali, rozmyć i rozciągać dalekie przewinięcie. Android 13 i nowsze wersje umożliwiają tworzenie podobnych zaawansowanych efektów w przypadku aplikacji.

Ulepszenia dotyczące choreografa

Android 13 wprowadza publiczne metody interfejsów API do Choreographer i ASurfaceControl, które dostarczają aplikacjom więcej informacji o możliwych osiach czasu klatek i dodają szerszy kontekst do SurfaceFlinger cyklu życia klatek. Podobnie jak wcześniej, aplikacje mogą publikować 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 wyświetlania klatek. Aplikacje mogą ustawić czas prezentacji, a następnie poinformować użytkownika SurfaceFlinger o wybranej opcji. SurfaceFlinger nie próbuje wtedy zastosować transakcji ani buforów zatrzasku przed żądanym czasem prezentacji.

Jeśli Twoja aplikacja używa nowych metod Choreographer i SurfaceControl, możesz wyświetlić cykl życia klatek w aplikacji w logu czasu Perfetto.

Aparat

Nagrywanie filmów HDR

Począwszy od Androida 13 interfejsy API Camera2 obsługują nagrywanie filmów HDR (High Dynamic Range), co umożliwia wyświetlanie podglądu i nagrywanie filmów HDR za pomocą aparatu. W porównaniu ze Standardowym zakresem dynamiki (SDR) technologia HDR ma szerszy zakres kolorów i zwiększa zakres dynamiczny komponentu luminancji (od 100 cd/m2 do 1000 s w przypadku cd/m2). W efekcie jakość filmu jest lepiej dopasowana do rzeczywistego, a jej kolory są bardziej żywe, jaśniejsze podświetlenia i ciemniejsze cienie.

Więcej informacji o rejestrowaniu filmów HDR znajdziesz w dokumentacji nagrywania filmów HDR.

Multimedia

Dźwięk przestrzenny

Dźwięk przestrzenny to niezwykłe doznania dźwiękowe, które sprawiają, że treści multimedialne brzmią bardziej realistycznie. Szczegółowe informacje o integracji z tą funkcją znajdziesz w dokumentacji dźwięku przestrzennego.

Przewidywane kierowanie dźwięku

Aby pomóc aplikacjom do multimediów w określaniu sposobu kierowania dźwięku, Android 13 wprowadza w klasie AudioManager interfejsy API tras audio. Interfejs API getAudioDevicesForAttributes() umożliwia pobranie listy urządzeń, które mogą być użyte do odtwarzania określonego dźwięku, a interfejs API getDirectProfilesForAttributes() pomaga określić, czy strumień audio można odtwarzać bezpośrednio. Za pomocą tych interfejsów API możesz określić najlepszy AudioFormat do wykorzystania w Twojej ścieżce audio.

Ułatwienia dostępu

Audiodeskrypcja

Android 13 (poziom interfejsu API 33) wprowadza 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 polegająca na tym, że lektor mówi w trakcie prezentacji, opisując, co dzieje się na ekranie podczas naturalnych przerw w dźwięku. Aplikacje mogą korzystać z preferencji użytkownika w zakresie ścieżek audiodeskrypcji, wysyłając do niej zapytanie za pomocą isAudioDescriptionRequested(), jak pokazano w tym fragmencie kodu:

Kotlin


private lateinit var accessibilityManager: AccessibilityManager

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

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

Java


private AccessibilityManager accessibilityManager;

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

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

Aplikacje mogą monitorować zmianę preferencji użytkownika, dodając do AccessbilityManager detektor:

Kotlin

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

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

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

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

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

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

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}

Główna funkcja

Aktualizacje OpenJDK 11

Android 13 rozpoczyna pracę nad odświeżaniem podstawowych bibliotek Androida, aby zapewnić zgodność z wersją OpenJDK 11 LTS w zakresie aktualizacji bibliotek i obsługi języka Java 11 dla deweloperów aplikacji i platform. Zmiany w podstawowej bibliotece wprowadzone w Androidzie 13 będą również dostępne na urządzeniach z Androidem 12 w ramach aktualizacji systemowej Google Play do modułu ART Mainline.

Android 13 wprowadza te 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) ułatwiająca dostosowanie kolekcji do tablicy.

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

  • Rozszerzona obsługa funkcji SocketOptions, w tym możliwość ponownego użycia gniazdek.

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

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

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

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

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

  • Aktualizuje interfejs java.util.concurrent do interfejsu OpenJDK 11 API za pomocą wewnętrznego interfejsu VarHandle.

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