Funkcje i interfejsy API – przegląd

Android 14 wprowadza deweloperów świetnych funkcji i interfejsów API. Poniższe informacje pomogą Ci poznać funkcje aplikacji i zacząć korzystać z powiązanych interfejsów API.

Szczegółową listę dodanych, zmodyfikowanych i usuniętych interfejsów API znajdziesz w artykule Różnice między interfejsami API . Szczegółowe informacje o dodanych interfejsach API znajdziesz w dokumentacji interfejsu API Androida. W przypadku Androida 14 poszukaj interfejsów API dodanych na poziomie 34. Aby dowiedzieć się, w jakich obszarach zmiany w platformie mogą mieć wpływ na Twoje aplikacje, zapoznaj się ze zmianami w zachowaniu Androida 14 w przypadku aplikacji kierowanych na tę wersję systemuwszystkich aplikacji.

Internacjonalizacja

Wybór języka według aplikacji

Android 14 rozszerza funkcje języka na poziomie aplikacji, które zostały wprowadzone w Androidzie 13 (poziom API 33), o te dodatkowe możliwości:

  • Automatyczne generowanie localeConfig w aplikacji: od wersji Android Studio Giraffe Canary 7 i AGP 8.1.0-alpha07 możesz skonfigurować aplikację tak, aby automatycznie obsługiwała ustawienia języka na poziomie aplikacji. Na podstawie zasobów projektu wtyczka Androida do obsługi Gradle generuje plik LocaleConfig i dodaje do niego odwołanie w pliku manifestu końcowego. Dzięki temu nie musisz już tworzyć ani aktualizować tego pliku ręcznie. AGP korzysta z zasobów w folderach res w modułach aplikacji oraz z zależnych modułów bibliotek, aby określić lokalizacje, które mają być uwzględnione w pliku LocaleConfig.

  • Dynamiczne aktualizacje localeConfig aplikacji: użyj metod setOverrideLocaleConfig() i getOverrideLocaleConfig() w LocaleManager, aby dynamicznie aktualizować listę obsługiwanych języków aplikacji w ustawieniach systemu urządzenia. Dzięki tej elastyczności możesz dostosować listę obsługiwanych języków w danym regionie, przeprowadzać eksperymenty A/B lub przesyłać zaktualizowaną listę lokalizacji, jeśli Twoja aplikacja korzysta z push na serwerze do celów lokalizacji.

  • Widoczność języka aplikacji w edytorach metody wprowadzania: edytorzy metody wprowadzania mogą korzystać z metody getApplicationLocales(), aby sprawdzić język bieżącej aplikacji i dostosować do niego język edytora metody wprowadzania.

Interfejs Grammatical Inflection API

3 miliardy ludzi mówi językami z płcią: językami, w których kategorie gramatyczne (np. rzeczowniki, czasowniki, przymiotniki i przyimki) odmieniają się w zależności od płci osób i rzeczy, do których się zwracamy lub o których mówimy. Tradycyjnie wiele języków z płcią gramatyczną używa męskiej formy gramatycznej jako domyślnej lub uniwersalnej.

Zwracanie się do użytkowników w niewłaściwym rodzaju gramatycznym, np. do kobiet w męskim rodzaju gramatycznym, może negatywne wpłynąć na ich wyniki i postawę. Z kolei interfejs z językiem, który poprawnie odzwierciedla płeć gramatyczną użytkownika, może zwiększyć zaangażowanie użytkowników i zapewnić bardziej spersonalizowane i naturalne wrażenia.

To help you build a user-centric UI for gendered languages, Android 14 introduces the Grammatical Inflection API, which lets you add support for grammatical gender without refactoring your app.

Regionalne preferencje

Preferencje regionalne pozwalają użytkownikom personalizować jednostki temperatury. dnia tygodnia i systemy numeracji. Europejczyk mieszkający w Stanach Zjednoczonych może preferować jednostki temperatury w stopniach Celsjusza zamiast w stopniach Fahrenheita, a aplikacje powinny traktować poniedziałek jako początek tygodnia zamiast niedzieli, która jest domyślną jednostką w Stanach Zjednoczonych.

Nowe menu ustawień Androida dla tych ustawień da użytkownikom wykrywalną i scentralizowaną lokalizację na potrzeby zmiany ustawień aplikacji. Te ustawienia są również zachowywane podczas tworzenia kopii zapasowej i przywracania. Kilka interfejsów API i intencji, takich jak getTemperatureUnitgetFirstDayOfWeek, przyznaje aplikacji uprawnienia do odczytu ustawień użytkownika, dzięki czemu aplikacja może dostosowywać sposób wyświetlania informacji. Możesz też zarejestrować BroadcastReceiver włączona ACTION_LOCALE_CHANGED. obsługi zmian konfiguracji języka w przypadku zmiany preferencji regionalnych.

Aby znaleźć te ustawienia, otwórz aplikację Ustawienia i kliknij System > Języki wejście > Ustawienia regionalne.

Ekran Ustawienia regionalne w ustawieniach systemu Android.
opcje temperatury dla preferencji regionalnych w ustawieniach systemu Androida;

Ułatwienia dostępu

nieliniowe skalowanie czcionki do 200%,

Od Androida 14 system obsługuje skalowanie czcionek do 200%, zapewniając użytkownikom niedowidzącym dodatkowe opcje ułatwień dostępu zgodne z wytycznymi Web Content Accessibility Guidelines (WCAG).

Aby zapobiec nadmiernemu skalowaniu dużych elementów tekstowych na ekranie, system stosuje nieliniową krzywą skalowania. Ta strategia skalowania oznacza, że duży tekst nie jest skalowany w taki sam sposób jak mniejszy tekst. Pomocne jest nieliniowe skalowanie czcionek zachowaj proporcjonalną hierarchię elementów o różnych rozmiarach, łagodzenie problemów z liniowym skalowaniem tekstu pod wysokim stopniem (np. lub tekst, który staje się trudniejszy do odczytania ze względu na bardzo duży wyświetlacz. rozmiarów).

Testowanie aplikacji za pomocą nieliniowego skalowania czcionek

Aby przetestować aplikację, włącz maksymalny rozmiar czcionki w ustawieniach ułatwień dostępu na urządzeniu.

Jeśli do definiowania rozmiaru tekstu używasz już skalowanych pikseli (sp), te dodatkowe opcje i ulepszone skalowanie zostaną automatycznie zastosowane do tekstu w aplikacji. Mimo to nadal zalecamy przeprowadzenie testów interfejsu z włączonym maksymalnym rozmiarem czcionki (200%), aby mieć pewność, że aplikacja poprawnie stosuje rozmiary czcionek i że może wyświetlać czcionki o większych rozmiarach bez wpływu na użyteczność.

Aby włączyć rozmiar czcionki 200%, wykonaj te czynności:

  1. Otwórz aplikację Ustawienia i kliknij Ułatwienia dostępu > Rozmiar interfejsu i tekst.
  2. W przypadku opcji Rozmiar czcionki klikaj ikonę plusa (+), aby ustawić maksymalną rozmiar jest włączony, tak jak na ilustracji obok .

Używanie skalowanych pikseli (sp) do określania rozmiaru tekstu

Pamiętaj, aby zawsze określać rozmiary tekstu w jednostkach SP. Gdy aplikacja używa jednostek sp, Android może zastosować preferowany rozmiar tekstu użytkownika i odpowiednio go skalować.

Nie używaj jednostek sp jako dopełnienia ani zdefiniuj wysokości widoku, zakładając niejawne dopełnienie: z nieliniowym skalowaniem czcionki wymiary sp mogą być nieproporcjonalne, więc 4sp + 20 sp może nie równać się 24 sp.

Przelicz skalowane jednostki pikseli (sp)

Użyj TypedValue.applyDimension(), aby przeliczyć jednostki SP na piksele i użyj funkcji TypedValue.deriveDimension(), aby konwertowanie pikseli na sp. Te metody stosują odpowiednie skalowanie nieliniowe automatycznie.

Unikaj umieszczania w kodzie stałych wartości równań za pomocą funkcji Configuration.fontScale lub DisplayMetrics.scaledDensity. Skalowanie czcionek jest nieliniowe, więc pole scaledDensity nie jest już dokładne. fontScale powinno być używane wyłącznie w celach informacyjnych, ponieważ czcionki nie są już przeskalowane do jednej wartości skalarnej.

Używanie jednostek sp do atrybutów lineHeight

Zawsze definiuj kolumnę android:lineHeight za pomocą jednostek SP dp, więc wysokość wiersza jest skalowana wraz z tekstem. Jeśli natomiast tekst jest w układzie sp, ale lineHeight jest w układzie dp lub px, nie będzie się skalować i będzie wyglądać ciasno. TextView automatycznie poprawia lineHeight zgodnie z proporcje są zachowywane, ale tylko wtedy, gdy zostaną uwzględnione zarówno textSize, jak i lineHeight zdefiniowane w jednostkach sp.

Aparat i multimedia

Ultra HDR w obrazach

An illustration of Standard Dynamic Range (SDR) versus High Dynamic Range (HDR) image quality.

Android 14 adds support for High Dynamic Range (HDR) images that retain more of the information from the sensor when taking a photo, which enables vibrant colors and greater contrast. Android uses the Ultra HDR format, which is fully backward compatible with JPEG images, allowing apps to seamlessly interoperate with HDR images, displaying them in Standard Dynamic Range (SDR) as needed.

Rendering these images in the UI in HDR is done automatically by the framework when your app opts in to using HDR UI for its Activity Window, either through a manifest entry or at runtime by calling Window.setColorMode(). You can also capture compressed Ultra HDR still images on supported devices. With more colors recovered from the sensor, editing in post can be more flexible. The Gainmap associated with Ultra HDR images can be used to render them using OpenGL or Vulkan.

Zoom, ostrość, podgląd po zrobieniu zdjęcia i inne funkcje w rozszerzeniach aparatu

Android 14 upgrades and improves camera extensions, allowing apps to handle longer processing times, which enables improved images using compute-intensive algorithms like low-light photography on supported devices. These features give users an even more robust experience when using camera extension capabilities. Examples of these improvements include:

Powiększenie w czujniku

When REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE in CameraCharacteristics contains SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, your app can use advanced sensor capabilities to give a cropped RAW stream the same pixels as the full field of view by using a CaptureRequest with a RAW target that has stream use case set to CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW. By implementing the request override controls, the updated camera gives users zoom control even before other camera controls are ready.

Bezstratny dźwięk przez USB

Android 14 gains support for lossless audio formats for audiophile-level experiences over USB wired headsets. You can query a USB device for its preferred mixer attributes, register a listener for changes in preferred mixer attributes, and configure mixer attributes using the AudioMixerAttributes class. This class represents the format, such as channel mask, sample rate, and behavior of the audio mixer. The class allows for audio to be sent directly, without mixing, volume adjustment, or processing effects.

Produktywność i narzędzia programistów

Menedżer danych logowania

Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.

Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.

For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.

Health Connect

Health Connect is an on-device repository for user health and fitness data. It allows users to share data between their favorite apps, with a single place to control what data they want to share with these apps.

On devices running Android versions prior to Android 14, Health Connect is available to download as an app on the Google Play store. Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. With this, Health Connect can be updated frequently, and your apps can rely on Health Connect being available on devices running Android 14 or higher. Users can access Health Connect from the Settings in their device, with privacy controls integrated into the system settings.

Users can get started using Health Connect without a separate app download on devices running Android 14 or higher.
Users can control which apps have access to their health and fitness data through system settings.

Health Connect includes several new features in Android 14, such as exercise routes, allowing users to share a route of their workout which can be visualized on a map. A route is defined as a list of locations saved within a window of time, and your app can insert routes into exercise sessions, tying them together. To ensure that users have complete control over this sensitive data, users must allow sharing individual routes with other apps.

For more information, see the Health Connection documentation and the blogpost on What's new in Android Health.

Aktualizacje OpenJDK 17

Android 14 kontynuuje proces odświeżania podstawowych bibliotek Androida, aby dostosować je do funkcji najnowszych wersji OpenJDK LTS, w tym do aktualizacji bibliotek i obsługi języka Java 17 dla deweloperów aplikacji i platform.

Dostępne są następujące funkcje i ulepszenia:

  • Zaktualizowano około 300 klas java.base, aby obsługiwały Java 17.
  • Blokami tekstowymi, które wprowadzają do języka programowania Java wielowierszowe ciągi znaków.
  • dopasowywanie wzoru do instanceof, które umożliwia traktowanie obiektu jako mającego określony typ w instanceof bez żadnych dodatkowych zmiennych;
  • Zamknięte klasy, które umożliwiają ograniczenie zakresu klas i interfejsów, które mogą je rozszerzać lub implementować.

Dzięki aktualizacjom systemowym Google Play (projekt Mainline) ponad 600 milionów urządzeń może otrzymywać najnowsze aktualizacje środowiska wykonawczego Androida (ART), które zawierają te zmiany. Jest to część naszego zobowiązania do zapewnienia aplikacjom bardziej spójnego i bezpiecznego środowiska na różnych urządzeniach oraz udostępniania użytkownikom nowych funkcji i możliwości niezależnie od wersji platformy.

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

Ulepszenia sklepów z aplikacjami

Android 14 introduces several PackageInstaller APIs that allow app stores to improve their user experience.

Request install approval before downloading

Installing or updating an app might require user approval. For example, when an installer making use of the REQUEST_INSTALL_PACKAGES permission attempts to install a new app. In prior Android versions, app stores can only request user approval after APKs are written to the install session and the session is committed.

Starting with Android 14, the requestUserPreapproval() method lets installers request user approval before committing the install session. This improvement lets an app store defer downloading any APKs until after the installation has been approved by the user. Furthermore, once a user has approved installation, the app store can download and install the app in the background without interrupting the user.

Claim responsibility for future updates

The setRequestUpdateOwnership() method allows an installer to indicate to the system that it intends to be responsible for future updates to an app it is installing. This capability enables update ownership enforcement, meaning that only the update owner is permitted to install automatic updates to the app. Update ownership enforcement helps to ensure that users receive updates only from the expected app store.

Any other installer, including those making use of the INSTALL_PACKAGES permission, must receive explicit user approval in order to install an update. If a user decides to proceed with an update from another source, update ownership is lost.

Update apps at less-disruptive times

App stores typically want to avoid updating an app that is actively in use because this leads to the app's running processes being killed, which potentially interrupts what the user was doing.

Starting with Android 14, the InstallConstraints API gives installers a way to ensure that their app updates happen at an opportune moment. For example, an app store can call the commitSessionAfterInstallConstraintsAreMet() method to make sure that an update is only committed when the user is no longer interacting with the app in question.

Seamlessly install optional splits

With split APKs, features of an app can be delivered in separate APK files, rather than as a monolithic APK. Split APKs allow app stores to optimize the delivery of different app components. For example, app stores might optimize based on the properties of the target device. The PackageInstaller API has supported splits since its introduction in API level 22.

In Android 14, the setDontKillApp() method allows an installer to indicate that the app's running processes shouldn't be killed when new splits are installed. App stores can use this feature to seamlessly install new features of an app while the user is using the app.

Pakiety metadanych aplikacji

Starting in Android 14, the Android package installer lets you specify app metadata, such as data safety practices, to include on app store pages such as Google Play.

Wykrywanie, kiedy użytkownicy robią zrzuty ekranu na urządzeniu

To create a more standardized experience for detecting screenshots, Android 14 introduces a privacy-preserving screenshot detection API. This API lets apps register callbacks on a per-activity basis. These callbacks are invoked, and the user is notified, when the user takes a screenshot while that activity is visible.

Interfejs użytkownika

Niestandardowe działania w arkuszu udostępniania i ulepszony ranking

Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.

Add custom actions

With Android 14, your app can add custom actions to the system sharesheet it invokes.

Screenshot of custom actions on the sharesheet.

Improve ranking of Direct Share targets

Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.

Direct Share row in the sharesheet, as shown by 1

Obsługa wbudowanych i niestandardowych animacji dla funkcji przewidywania tekstu Wstecz

Video: Predictive back animations

Android 13 introduced the predictive back-to-home animation behind a developer option. When used in a supported app with the developer option enabled, swiping back shows an animation indicating that the back gesture exits the app back to the home screen.

Android 14 includes multiple improvements and new guidance for Predictive Back:

With this Android 14 preview release, all features of Predictive Back remain behind a developer option. See the developer guide to migrate your app to predictive back, as well as the developer guide to creating custom in-app transitions.

Zastąpienia na urządzeniach z dużym ekranem

Per-app overrides enable device manufacturers to change the behavior of apps on large screen devices. For example, the FORCE_RESIZE_APP override instructs the system to resize the app to fit display dimensions (avoiding size compatibility mode) even if resizeableActivity="false" is set in the app manifest.

Overrides are intended to improve the user experience on large screens.

New manifest properties enable you to disable some device manufacturer overrides for your app.

Zastąpienia dla użytkowników na dużym ekranie na poziomie aplikacji

Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.

Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.

Udostępnianie ekranu aplikacji

App screen sharing enables users to share an app window instead of the entire device screen during screen content recording.

With app screen sharing, the status bar, navigation bar, notifications, and other system UI elements are excluded from the shared display. Only the content of the selected app is shared.

App screen sharing improves productivity and privacy by enabling users to run multiple apps but limit content sharing to a single app.

Inteligentna odpowiedź na klawiaturze Gboard na Pixelu 8 Pro z wykorzystaniem LLM

Na urządzeniach Pixel 8 Pro z aktualizacją z listopada deweloperzy mogą wypróbować inteligentne odpowiedzi lepszej jakości w klawiaturze Gboard, które są obsługiwane przez duże modele językowe (LLM) działające na procesorze Google Tensor.

Ta funkcja jest dostępna w wersji testowej w języku angielskim (USA) w aplikacji WhatsApp, Line i KakaoTalk. Wymaga użycia urządzenia Pixel 8 Pro z klawiaturą Gboard.

Aby wypróbować tę funkcję, najpierw włącz ją w sekcji Ustawienia > Opcje programisty > Ustawienia AICore > Włącz trwałe AICore.

Następnie otwórz rozmowę w obsługiwanej aplikacji, aby zobaczyć inteligentną odpowiedź w pasku sugestii Gboard, która jest obsługiwana przez LLM.

Gboard korzysta z LLM na urządzeniu, aby dostarczać inteligentne odpowiedzi lepszej jakości.

Grafika

Ścieżki można wyszukiwać i interpolować

Android's Path API is a powerful and flexible mechanism for creating and rendering vector graphics, with the ability to stroke or fill a path, construct a path from line segments or quadratic or cubic curves, perform boolean operations to get even more complex shapes, or all of these simultaneously. One limitation is the ability to find out what is actually in a Path object; the internals of the object are opaque to callers after creation.

To create a Path, you call methods such as moveTo(), lineTo(), and cubicTo() to add path segments. But there has been no way to ask that path what the segments are, so you must retain that information at creation time.

Starting in Android 14, you can query paths to find out what's inside of them. First, you need to get a PathIterator object using the Path.getPathIterator API:

Kotlin

val path = Path().apply {
    moveTo(1.0f, 1.0f)
    lineTo(2.0f, 2.0f)
    close()
}
val pathIterator = path.pathIterator

Java

Path path = new Path();
path.moveTo(1.0F, 1.0F);
path.lineTo(2.0F, 2.0F);
path.close();
PathIterator pathIterator = path.getPathIterator();

Next, you can call PathIterator to iterate through the segments one by one, retrieving all of the necessary data for each segment. This example uses PathIterator.Segment objects, which packages up the data for you:

Kotlin

for (segment in pathIterator) {
    println("segment: ${segment.verb}, ${segment.points}")
}

Java

while (pathIterator.hasNext()) {
    PathIterator.Segment segment = pathIterator.next();
    Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints());
}

PathIterator also has a non-allocating version of next() where you can pass in a buffer to hold the point data.

One of the important use cases of querying Path data is interpolation. For example, you might want to animate (or morph) between two different paths. To further simplify that use case, Android 14 also includes the interpolate() method on Path. Assuming the two paths have the same internal structure, the interpolate() method creates a new Path with that interpolated result. This example returns a path whose shape is halfway (a linear interpolation of .5) between path and otherPath:

Kotlin

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, .5f, interpolatedResult)
}

Java

Path interpolatedResult = new Path();
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, 0.5F, interpolatedResult);
}

The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.

niestandardowe siatki z shaderami wierzchołkowymi i fragmentowymi,

Android od dawna obsługuje rysowanie trójkątnych siatek z niestandardowym cieniowaniem, ale format siatki wejściowej był ograniczony do kilku wstępnie zdefiniowanych kombinacji atrybutów. Android 14 obsługuje niestandardowe siatki, które można zdefiniować jako trójkąty lub trójkątne paski, a także opcjonalnie posortować. Te siatki są określane za pomocą niestandardowych atrybutów, kroków wierzchołków, zmiennych oraz shaderów wierzchołków i fragmentów napisanych w AGSL.

Shader wierzchołka definiuje zmienne, takie jak pozycja i kolor, a shader fragmentu może opcjonalnie zdefiniować kolor piksela, zwykle za pomocą zmiennych utworzonych przez shader wierzchołka. Jeśli kolor jest dostarczany przez fragment shadera, jest on mieszany z bieżącym kolorem Paint za pomocą trybu mieszania wybranego podczas rysowania siatki. Tablice jednolite można przekazywać do shaderów wierzchołkowych i fragmentów, aby zwiększyć elastyczność.

sprzętowy renderowanie bufora dla Canvasa,

Aby ułatwić korzystanie z interfejsu API Canvas w Androidzie do rysowania z przyspieszeniem sprzętowym w HardwareBuffer, Android 14 wprowadza HardwareBufferRenderer. Ten interfejs API jest szczególnie przydatne, gdy Twój przypadek użycia obejmuje komunikację z systemem kompozytor do SurfaceControl, by zapewnić małe opóźnienie rysunek.