Обзор функций и API

В Android 14 представлены отличные функции и API для разработчиков. Информация ниже поможет вам узнать о функциях ваших приложений и начать работу с соответствующими API.

Подробный список добавленных, измененных и удаленных API см. в отчете о различиях в API . Подробнее о добавленных API см. в справочнике по API Android . Для Android 14 найдите API, добавленные на уровне API 34. Чтобы узнать об областях, где изменения платформы могут повлиять на ваши приложения, ознакомьтесь с изменениями в поведении приложений, ориентированных на Android 14 , и для всех приложений .

Интернационализация

Настройки языка для каждого приложения

Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:

  • Automatically generate an app's localeConfig: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates the LocaleConfig file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in the res folders of your app modules and any library module dependencies to determine the locales to include in the LocaleConfig file.

  • Dynamic updates for an app's localeConfig: Use the setOverrideLocaleConfig() and getOverrideLocaleConfig() methods in LocaleManager to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.

  • App language visibility for input method editors (IMEs): IMEs can utilize the getApplicationLocales() method to check the language of the current app and match the IME language to that language.

API грамматического склонения

3 миллиарда человек говорят на гендерных языках : языках, в которых грамматические категории, такие как существительные, глаголы, прилагательные и предлоги, изменяются в зависимости от пола людей и предметов, с которыми вы разговариваете или о которых вы говорите. Традиционно во многих гендерных языках мужской грамматический род используется в качестве родового или общего рода по умолчанию.

Обращение к пользователям неправильного грамматического рода, например обращение к женщинам мужского грамматического рода, может негативно повлиять на их работу и отношение. Напротив, пользовательский интерфейс с языком, который правильно отражает грамматический пол пользователя, может улучшить взаимодействие с пользователем и обеспечить более персонализированный и естественный пользовательский интерфейс.

Чтобы помочь вам создать ориентированный на пользователя пользовательский интерфейс для языков с гендерной принадлежностью, в Android 14 представлен API Grammatical Inflection , который позволяет добавить поддержку грамматического рода без рефакторинга приложения.

,

Чтобы помочь вам создать ориентированный на пользователя пользовательский интерфейс для языков с гендерной принадлежностью, в Android 14 представлен API Grammatical Inflection , который позволяет добавить поддержку грамматического рода без рефакторинга приложения.

,

Чтобы помочь вам создать ориентированный на пользователя пользовательский интерфейс для языков с гендерной принадлежностью, в Android 14 представлен API Grammatical Inflection , который позволяет добавить поддержку грамматического рода без рефакторинга приложения.

,

Чтобы помочь вам создать ориентированный на пользователя пользовательский интерфейс для языков с гендерной принадлежностью, в Android 14 представлен API Grammatical Inflection , который позволяет добавить поддержку грамматического рода без рефакторинга приложения.

Региональные предпочтения

Regional preferences enable users to personalize temperature units, the first day of the week, and numbering systems. A European living in the United States might prefer temperature units to be in Celsius rather than Fahrenheit and for apps to treat Monday as the beginning of the week instead of the US default of Sunday.

New Android Settings menus for these preferences provide users with a discoverable and centralized location to change app preferences. These preferences also persist through backup and restore. Several APIs and intents—such as getTemperatureUnit and getFirstDayOfWeek— grant your app read access to user preferences, so your app can adjust how it displays information. You can also register a BroadcastReceiver on ACTION_LOCALE_CHANGED to handle locale configuration changes when regional preferences change.

To find these settings, open the Settings app and navigate to System > Languages & input > Regional preferences.

Regional preferences screen in Android system settings.
Temperature options for regional preferences in Android system settings.

Доступность

Нелинейное масштабирование шрифта до 200%

Starting in Android 14, the system supports font scaling up to 200%, providing low-vision users with additional accessibility options that align with Web Content Accessibility Guidelines (WCAG).

To prevent large text elements on screen from scaling too large, the system applies a nonlinear scaling curve. This scaling strategy means that large text doesn't scale at the same rate as smaller text. Nonlinear font scaling helps preserve the proportional hierarchy between elements of different sizes while mitigating issues with linear text scaling at high degrees (such as text being cut off or text that becomes harder to read due to an extremely large display sizes).

Test your app with nonlinear font scaling

Enable the maximum font size in a device's accessibility settings to test your app.

If you already use scaled pixels (sp) units to define text sizing, then these additional options and scaling improvements are applied automatically to the text in your app. However, you should still perform UI testing with the maximum font size enabled (200%) to ensure that your app applies the font sizes correctly and can accommodate larger font sizes without impacting usability.

To enable 200% font size, follow these steps:

  1. Open the Settings app and navigate to Accessibility > Display size and text.
  2. For the Font size option, tap the plus (+) icon until the maximum font size setting is enabled, as shown in the image that accompanies this section.

Use scaled pixel (sp) units for text-sizes

Remember to always specify text sizes in sp units. When your app uses sp units, Android can apply the user's preferred text size and scale it appropriately.

Don't use sp units for padding or define view heights assuming implicit padding: with nonlinear font scaling sp dimensions might not be proportional, so 4sp + 20sp might not equal 24sp.

Convert scaled pixel (sp) units

Use TypedValue.applyDimension() to convert from sp units to pixels, and use TypedValue.deriveDimension() to convert pixels to sp. These methods apply the appropriate nonlinear scaling curve automatically.

Avoid hardcoding equations using Configuration.fontScale or DisplayMetrics.scaledDensity. Because font scaling is nonlinear, the scaledDensity field is no longer accurate. The fontScale field should be used for informational purposes only because fonts are no longer scaled with a single scalar value.

Use sp units for lineHeight

Always define android:lineHeight using sp units instead of dp, so the line height scales along with your text. Otherwise, if your text is sp but your lineHeight is in dp or px, it doesn't scale and looks cramped. TextView automatically corrects the lineHeight so that your intended proportions are preserved, but only if both textSize and lineHeight are defined in sp units.

Камера и медиа

Ultra HDR для изображений

Иллюстрация качества изображения стандартного динамического диапазона (SDR) и расширенного динамического диапазона (HDR).

В Android 14 добавлена ​​поддержка изображений с расширенным динамическим диапазоном (HDR), которые сохраняют больше информации от датчика при съемке фотографии, что обеспечивает яркие цвета и большую контрастность. Android использует формат Ultra HDR , который полностью обратно совместим с изображениями JPEG, что позволяет приложениям беспрепятственно взаимодействовать с изображениями HDR, отображая их в стандартном динамическом диапазоне (SDR) по мере необходимости.

Рендеринг этих изображений в пользовательском интерфейсе в HDR выполняется платформой автоматически, когда ваше приложение соглашается использовать HDR пользовательский интерфейс для своего окна активности либо через запись манифеста , либо во время выполнения путем вызова Window.setColorMode() . Вы также можете захватывать сжатые неподвижные изображения Ultra HDR на поддерживаемых устройствах. Благодаря большему количеству цветов, полученных с датчика, редактирование при публикации может стать более гибким. Gainmap связанный с изображениями Ultra HDR, можно использовать для их рендеринга с помощью OpenGL или Vulkan.

,
Иллюстрация качества изображения стандартного динамического диапазона (SDR) и расширенного динамического диапазона (HDR).

В Android 14 добавлена ​​поддержка изображений с расширенным динамическим диапазоном (HDR), которые сохраняют больше информации от датчика при съемке фотографии, что обеспечивает яркие цвета и большую контрастность. Android использует формат Ultra HDR , который полностью обратно совместим с изображениями JPEG, что позволяет приложениям беспрепятственно взаимодействовать с изображениями HDR, отображая их в стандартном динамическом диапазоне (SDR) по мере необходимости.

Рендеринг этих изображений в пользовательском интерфейсе в HDR выполняется платформой автоматически, когда ваше приложение соглашается использовать HDR пользовательский интерфейс для своего окна активности либо через запись манифеста , либо во время выполнения путем вызова Window.setColorMode() . Вы также можете захватывать сжатые неподвижные изображения Ultra HDR на поддерживаемых устройствах. Благодаря большему количеству цветов, полученных с датчика, редактирование при публикации может стать более гибким. Gainmap связанный с изображениями Ultra HDR, можно использовать для их рендеринга с помощью OpenGL или Vulkan.

Масштабирование, фокусировка, постпросмотр и другие функции в расширениях камеры

Android 14 升级并改进了相机扩展程序,让应用能够处理更长的处理时间,从而支持在受支持的设备上使用计算密集型算法(例如弱光摄影)来改善图片。这些功能可让用户在使用相机扩展功能时获得更出色的体验。这些改进的示例包括:

Зум в датчике

Если REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE в CameraCharacteristics содержит SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW , ваше приложение может использовать расширенные возможности датчика, чтобы предоставить обрезанному потоку RAW те же пиксели, что и полное поле зрения, используя CaptureRequest с целевым объектом RAW, для которого установлен вариант использования потока CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW _CASES_CROPPED_RAW . Благодаря реализации элементов управления переопределением запроса обновленная камера дает пользователям возможность управлять масштабированием даже до того, как будут готовы другие элементы управления камерой.

USB-аудио без потерь

В Android 14 появилась поддержка аудиоформатов без потерь для аудиофильского уровня через проводные USB-гарнитуры. Вы можете запросить у USB-устройства предпочтительные атрибуты микшера, зарегистрировать прослушиватель изменений в предпочтительных атрибутах микшера и настроить атрибуты микшера с помощью класса AudioMixerAttributes . Этот класс представляет формат, такой как маска канала, частота дискретизации и поведение аудиомикшера. Класс позволяет отправлять аудио напрямую , без микширования, регулировки громкости или обработки эффектов.

Производительность и инструменты разработчика

Менеджер по учетным данным

Android 14 将 Credential Manager 添加为平台 API,并通过使用 Google Play 服务的 Jetpack 库,向后额外支持 Android 4.4(API 级别 19)设备。Credential Manager 旨在通过 API 使用用户配置的凭据提供程序检索和存储凭据,让用户更轻松地登录。Credential Manager 在单个 API 中支持多种登录方法,包括用户名和密码、通行密钥和联合登录解决方案(如“使用 Google 账号登录”)。

通行密钥具有许多优势。例如,通行密钥是基于业界标准构建的,可在各种不同的操作系统和浏览器生态系统中使用,并且可用于网站和应用。

如需了解详情,请参阅 Credential Manager 和通行密钥文档以及介绍 Credential Manager 和通行密钥的博文

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.

Обновления OpenJDK 17

В Android 14 продолжается работа по обновлению основных библиотек Android, чтобы они соответствовали функциям последних выпусков OpenJDK LTS, включая обновления библиотек и поддержку языка Java 17 для разработчиков приложений и платформ.

Включены следующие функции и улучшения:

  • Обновлено около 300 классов java.base для поддержки Java 17.
  • Текстовые блоки , которые вводят многострочные строковые литералы в язык программирования Java.
  • Сопоставление с образцом для экземпляра , которое позволяет рассматривать объект как имеющий определенный тип в instanceof без каких-либо дополнительных переменных.
  • Запечатанные классы , позволяющие ограничить классы и интерфейсы, которые могут их расширять или реализовывать.

Благодаря обновлениям системы Google Play (Project Mainline) более 600 миллионов устройств могут получать последние обновления среды выполнения Android (ART), включающие эти изменения. Это часть нашего обязательства предоставить приложениям более согласованную и безопасную среду на всех устройствах, а также предоставить пользователям новые функции и возможности независимо от версий платформы.

Java и OpenJDK являются товарными знаками или зарегистрированными товарными знаками Oracle и/или ее дочерних компаний.

Улучшения для магазинов приложений

В Android 14 представлено несколько API-интерфейсов PackageInstaller , которые позволяют магазинам приложений улучшить взаимодействие с пользователем.

Перед загрузкой запросите разрешение на установку

Для установки или обновления приложения может потребоваться одобрение пользователя . Например, когда установщик, использующий разрешение REQUEST_INSTALL_PACKAGES пытается установить новое приложение. В предыдущих версиях Android магазины приложений могли запрашивать одобрение пользователя только после того, как APK-файлы были записаны в сеанс установки и сеанс был зафиксирован .

Начиная с Android 14, метод requestUserPreapproval() позволяет установщикам запрашивать одобрение пользователя перед завершением сеанса установки. Это улучшение позволяет магазину приложений отложить загрузку любых APK-файлов до тех пор, пока установка не будет одобрена пользователем. Более того, как только пользователь одобрил установку, магазин приложений сможет загрузить и установить приложение в фоновом режиме, не отвлекая пользователя.

Взять на себя ответственность за будущие обновления

Метод setRequestUpdateOwnership() позволяет установщику указать системе, что он намерен нести ответственность за будущие обновления устанавливаемого приложения. Эта возможность обеспечивает принудительное применение прав собственности на обновления. Это означает, что только владельцу обновления разрешено устанавливать автоматические обновления для приложения. Обеспечение прав собственности на обновления помогает гарантировать, что пользователи получают обновления только из ожидаемого магазина приложений.

Любой другой установщик, в том числе использующий разрешение INSTALL_PACKAGES , должен получить явное одобрение пользователя для установки обновления. Если пользователь решает продолжить обновление из другого источника, право собственности на обновление теряется.

Обновляйте приложения в удобное для вас время

Магазины приложений обычно стараются избегать обновления активно используемого приложения, поскольку это приводит к остановке запущенных процессов приложения, что потенциально может прерывать действия пользователя.

Начиная с Android 14, API InstallConstraints дает установщикам возможность гарантировать, что обновления их приложений будут выполняться в подходящий момент. Например, магазин приложений может вызвать метод commitSessionAfterInstallConstraintsAreMet() чтобы убедиться, что обновление фиксируется только тогда, когда пользователь больше не взаимодействует с рассматриваемым приложением.

Простая установка дополнительных сплит-систем

Благодаря разделенным APK-файлам функции приложения могут быть представлены в отдельных APK-файлах, а не в виде монолитного APK. Разделенные APK-файлы позволяют магазинам приложений оптимизировать доставку различных компонентов приложения. Например, магазины приложений могут оптимизироваться на основе свойств целевого устройства. API PackageInstaller поддерживает разделение с момента его появления на уровне API 22.

В Android 14 метод setDontKillApp() позволяет установщику указать, что запущенные процессы приложения не должны завершаться при установке новых разбиений. Магазины приложений могут использовать эту функцию для беспрепятственной установки новых функций приложения, пока пользователь его использует.

Пакеты метаданных приложения

Начиная с Android 14, установщик пакетов Android позволяет указать метаданные приложения , например правила безопасности данных, для включения на страницы магазина приложений, например Google Play.

Определите, когда пользователи делают снимки экрана устройства

为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。

Пользовательский опыт

Пользовательские действия в Sharesheet и улучшенный рейтинг

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

Поддержка встроенных и пользовательских анимаций для Predictive Back

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.

Переопределения для каждого приложения производителем устройства с большим экраном

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.

Переопределения для каждого приложения на большом экране

Переопределения для каждого приложения меняют поведение приложений на устройствах с большим экраном. Например, переопределение производителя устройства OVERRIDE_MIN_ASPECT_RATIO_LARGE устанавливает соотношение сторон приложения на 16:9 независимо от конфигурации приложения.

Android 14 QPR1 позволяет пользователям применять переопределения для каждого приложения с помощью нового меню настроек на устройствах с большим экраном.

Совместное использование экрана приложения

Совместное использование экрана приложения позволяет пользователям делиться окном приложения, а не всем экраном устройства во время записи содержимого экрана.

При совместном использовании экрана приложения строка состояния, панель навигации, уведомления и другие элементы пользовательского интерфейса системы исключаются из общего дисплея. Доступен только контент выбранного приложения.

Совместное использование экрана приложений повышает производительность и конфиденциальность, позволяя пользователям запускать несколько приложений, но ограничивая общий доступ к контенту одним приложением.

Умный ответ на базе LLM в Gboard на Pixel 8 Pro

On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.

This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.

To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.

Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.

Gboard utilizes on-device LLMs to provide higher-quality smart replies.

Графика

Пути можно запрашивать и интерполировать.

API Path Android — это мощный и гибкий механизм для создания и рендеринга векторной графики с возможностью обводки или заливки пути, построения пути из сегментов линий, квадратичных или кубических кривых, выполнения логических операций для получения еще более сложных фигур или все из них одновременно. Одним из ограничений является возможность узнать, что на самом деле находится в объекте Path; внутренности объекта непрозрачны для вызывающих сторон после создания.

Чтобы создать Path , вы вызываете такие методы, как moveTo() , lineTo() и cubicTo() , чтобы добавить сегменты пути. Но у этого пути не было возможности узнать, что представляют собой сегменты, поэтому вы должны сохранить эту информацию во время создания.

Начиная с Android 14, вы можете запрашивать пути, чтобы узнать, что внутри них. Во-первых, вам нужно получить объект PathIterator с помощью API Path.getPathIterator :

Котлин

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

Ява

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

Затем вы можете вызвать PathIterator для перебора сегментов один за другим, извлекая все необходимые данные для каждого сегмента. В этом примере используются объекты PathIterator.Segment , которые упаковывают данные за вас:

Котлин

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

Ява

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

PathIterator также имеет версию next() без выделения памяти, в которую вы можете передать буфер для хранения данных точек.

Одним из важных вариантов использования запроса данных Path является интерполяция. Например, вы можете захотеть анимировать (или трансформировать ) между двумя разными путями. Чтобы еще больше упростить этот вариант использования, Android 14 также включает метод interpolate() в Path . Предполагая, что два пути имеют одинаковую внутреннюю структуру, метод interpolate() создает новый Path с этим интерполированным результатом. В этом примере возвращается путь, форма которого находится на полпути (линейная интерполяция .5) между path otherPath :

Котлин

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

Ява

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

Библиотека графических путей Jetpack поддерживает аналогичные API и для более ранних версий Android.

Пользовательские сетки с вершинными и фрагментными шейдерами

Android уже давно поддерживает рисование треугольных сеток с настраиваемой заливкой, но формат входной сетки был ограничен несколькими предопределенными комбинациями атрибутов. В Android 14 добавлена ​​поддержка пользовательских сеток , которые можно определить как треугольники или треугольные полосы и при необходимости можно индексировать. Эти сетки задаются с помощью пользовательских атрибутов , шагов вершин, переменных , а также вершинных и фрагментных шейдеров, написанных на AGSL .

Вершинный шейдер определяет такие вариации, как положение и цвет, тогда как фрагментный шейдер может дополнительно определять цвет пикселя, обычно используя вариации, созданные вершинным шейдером. Если цвет предоставляется фрагментным шейдером, он затем смешивается с текущим цветом Paint используя режим наложения , выбранный при рисовании сетки . Униформы можно передавать во фрагментные и вершинные шейдеры для дополнительной гибкости.

Аппаратный буферный рендерер для Canvas

协助使用 Android 的 Canvas API 通过 硬件加速至 HardwareBuffer、Android 14 引入了 HardwareBufferRenderer。如果您的用例涉及通过 SurfaceControl 与系统合成器通信以实现低延迟绘制,此 API 特别有用。