Omówienie funkcji i interfejsów API

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

Użytkownik zgadza się na używanie tematycznych ikon aplikacji
Jak włączyć motywowane ikony aplikacji na Androidzie 13

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

Języki dla poszczególnych aplikacji w ustawieniach systemu

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() i getApplicationLocales() w LocaleManager, 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:

  1. Wpisz hiragana jako fonetyczną wymowę wyszukiwanego hasła (np. nazwy miejsca lub aplikacji)
  2. Używaj klawiatury do konwertowania znaków hiragana na znaki kanji
  3. Przeprowadź wyszukiwanie przy użyciu znaków kanji
  4. 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.

Wysokość wierszy, która została obcięta w Androidzie 12 (powyżej), jest teraz lepiej rozmieszczona i nie jest przycięta w Androidzie 13 (poniżej).

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.

Japoński zawijanie tekstu z włączonym stylem wyrażenia (poniżej) i bez niego (powyżej).

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.
  • manyKategoria mnoga została wprowadzona w językach hiszpańskim es, włoskim it, portugalskim pt 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

Emotikon wektorowy COLRv1 (po lewej) i emotikon bitmapy (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 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:

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.

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

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.

Widżet kopiowania/wklejania
Nowy interfejs wyświetlany po wejściu treści do schowka.

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:

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

Animowany cieniowanie AGSL na podstawie tego programu Shader.

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.

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

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() i stream() w java.util zajęciach Optional, OptionalDouble, OptionalInt i OptionalLong.

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

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

  • Dodaliśmy funkcje kodowania i dekodowania adresów URL za pomocą Charsets.

  • Charset w zakresie FileReader, FileWriter, PrintStream i PrintWriter.

  • Nowe funkcje transferTo(), readNBytes(), readAllBytes() i writeBytes() na platformach ByteArrayInput, OutputStream i Input oraz OutputStream.

  • 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ętrznie VarHandle.

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