Android 15 представляет замечательные функции и API для разработчиков. В следующих разделах обобщаются эти функции, чтобы помочь вам начать работу с соответствующими API.
Подробный список добавленных, измененных и удаленных API см. в отчете API diff . Подробную информацию о добавленных API см. в справочнике Android API — для Android 15 найдите API, добавленные на уровне API 35. Чтобы узнать об областях, в которых изменения платформы могут повлиять на ваши приложения, обязательно ознакомьтесь с изменениями поведения Android 15 для приложений, ориентированных на Android 15 , и для всех приложений .
Камера и медиа
Android 15 включает в себя множество функций, которые улучшают работу камеры и мультимедиа, а также предоставляют доступ к инструментам и оборудованию, помогающим создателям контента воплощать свои идеи в жизнь на Android.
Дополнительную информацию о новейших функциях и решениях для разработчиков в области медиа и камер Android можно найти в докладе «Создание современных возможностей медиа и камер Android» на Google I/O.
Усиление при слабом освещении
В Android 15 представлен Low Light Boost — режим автоматической экспозиции, доступный как для Камеры 2 , так и для расширения камеры для ночного режима . Low Light Boost регулирует экспозицию потока предварительного просмотра в условиях низкой освещенности. Это отличается от того, как расширение камеры для ночного режима создает неподвижные изображения, поскольку ночной режим объединяет серию фотографий для создания единого улучшенного изображения. Хотя ночной режим очень хорошо работает для создания неподвижного изображения, он не может создавать непрерывный поток кадров, а режим Low Light Boost может. Таким образом, Low Light Boost обеспечивает такие возможности камеры, как:
- Предоставление улучшенного предварительного просмотра изображения, чтобы пользователи могли лучше кадрировать свои снимки при слабом освещении.
- Сканирование QR-кодов при слабом освещении
Если вы включите усиление при слабом освещении, оно автоматически включается при низком уровне освещенности и выключается, когда света становится больше.
Приложения могут записывать поток предварительного просмотра в условиях низкой освещенности, чтобы сохранить более яркое видео.
Для получения дополнительной информации см. «Усиление при слабом освещении» .
Управление камерой в приложении
В Android 15 добавлено расширение для большего контроля над оборудованием камеры и ее алгоритмами на поддерживаемых устройствах:
- Расширенные настройки мощности вспышки позволяют точно контролировать интенсивность вспышки как в режиме
SINGLE
, так и в режимеTORCH
при съемке изображений.
Управление запасом по HDR
Android 15 выбирает запас HDR, соответствующий возможностям основного устройства и разрядности панели. Для страниц с большим количеством контента SDR, таких как приложение для обмена сообщениями, отображающее одну миниатюру HDR, такое поведение может в конечном итоге отрицательно повлиять на воспринимаемую яркость контента SDR. Android 15 позволяет управлять запасом HDR с помощью setDesiredHdrHeadroom
чтобы обеспечить баланс между SDR и HDR-контентом.

Регулировка громкости
В Android 15 реализована поддержка стандарта громкости CTA-2075, который поможет вам избежать несоответствия громкости звука и гарантировать, что пользователям не придется постоянно регулировать громкость при переключении между контентом. Система использует известные характеристики устройств вывода (наушников и динамика), а также метаданные громкости, доступные в аудиоконтенте AAC, для интеллектуальной регулировки громкости звука и уровней сжатия динамического диапазона.
Чтобы включить эту функцию, вам необходимо убедиться, что метаданные громкости доступны в вашем контенте AAC, и включить функцию платформы в вашем приложении. Для этого вы создаете экземпляр объекта LoudnessCodecController
, вызывая его фабричный метод create с идентификатором аудиосеанса из связанного AudioTrack
; это автоматически начнет применять аудиообновления. Вы можете передать OnLoudnessCodecUpdateListener
для изменения или фильтрации параметров громкости перед их применением в MediaCodec
.
// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// Starts applying audio updates for each added MediaCodec
}
AndroidX media3 ExoPlayer также будет обновлен для использования API-интерфейсов LoudnessCodecController
для плавной интеграции приложений.
Виртуальные устройства MIDI 2.0
В Android 13 добавлена поддержка подключения к устройствам MIDI 2.0 с помощью USB , которые обмениваются данными с помощью универсальных пакетов MIDI (UMP). Android 15 расширяет поддержку UMP на виртуальные MIDI-приложения , позволяя приложениям композиции управлять приложениями синтезатора как виртуальным устройством MIDI 2.0 так же, как если бы они работали с устройством USB MIDI 2.0.
Более эффективное программное декодирование AV1
dav1d, the popular AV1 software decoder from VideoLAN is available for Android devices that don't support AV1 decode in hardware. dav1d is up to 3x more performant than the legacy AV1 software decoder, enabling HD AV1 playback for more users, including some low and mid tier devices.
Your app needs to opt-in to using dav1d by invoking it by name
"c2.android.av1-dav1d.decoder"
. dav1d will be made the default AV1 software
decoder in a subsequent update. This support is standardized and backported to
Android 11 devices that receive Google Play system updates.
Производительность и инструменты разработчика
Хотя большая часть нашей работы по повышению вашей производительности сосредоточена вокруг таких инструментов, как Android Studio , Jetpack Compose и библиотеки Android Jetpack , мы всегда ищем способы на платформе помочь вам легче реализовать свое видение.
Обновления OpenJDK 17
Android 15 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases.
The following key features and improvements are included:
- Quality-of-life improvements around NIO buffers
- Streams
- Additional
math
andstrictmath
methods util
package updates including sequencedcollection
,map
, andset
ByteBuffer
support inDeflater
- Security updates such as
X500PrivateCredential
and security key updates
These APIs are updated on over a billion devices running Android 12 (API level 31) and higher through Google Play System updates, so you can target the latest programming features.
Улучшения PDF-файлов
Android 15 includes substantial improvements to the PdfRenderer
APIs. Apps can incorporate advanced features such as rendering
password-protected files, annotations, form editing,
searching, and selection with copy. Linearized PDF
optimizations are supported to speed local PDF viewing and reduce resource use.
The Jetpack PDF library uses these APIs to simplify adding PDF
viewing capabilities to your app.

The PdfRenderer
has been moved to a module that can be updated using Google
Play system updates independent of the platform release, and we're supporting
these changes back to Android 11 (API level 30) by creating a compatible
pre-Android 15 version of the API surface, called
PdfRendererPreV
.
Улучшения автоматического переключения языка
В Android 14 добавлено распознавание нескольких языков в аудио на устройстве с автоматическим переключением между языками, но это может привести к пропаданию слов, особенно когда языки переключаются с меньшей паузой между двумя произнесениями. В Android 15 добавлены дополнительные элементы управления, которые помогают приложениям настроить это переключение в соответствии со своими сценариями использования. EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
ограничивает автоматическое переключение началом аудиосеанса, а EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
деактивирует переключение языка после определенного количества переключений. Эти параметры особенно полезны, если вы ожидаете, что во время сеанса будет говориться на одном языке, который должен определяться автоматически.
Улучшенный API переменных шрифтов OpenType
В Android 15 улучшено удобство использования переменного шрифта OpenType. Вы можете создать экземпляр FontFamily
из переменного шрифта без указания осей веса с помощью API buildVariableFamily
. Средство визуализации текста переопределяет значение оси wght
, чтобы оно соответствовало отображаемому тексту.
Использование API значительно упрощает код для создания Typeface
:
Котлин
val newTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build()
Ява
Typeface newTypeface = Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build();
Раньше для создания того же Typeface
требовалось гораздо больше кода:
Котлин
val oldTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build()) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ).build() ).build()
Ява
Typeface oldTypeface = new Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ) .build() ).build();
Вот пример того, как отображается Typeface
созданный с использованием старого и нового API:
В этом примере Typeface
, созданный с помощью старого API, не имеет возможности создавать точные веса шрифтов для экземпляров Font
350, 450, 550 и 650, поэтому средство визуализации возвращается к ближайшему весу. Таким образом, в этом случае вместо 350 отображается 300, вместо 450 отображается 400 и так далее. Напротив, Typeface
, созданный с помощью новых API, динамически создает экземпляр Font
для заданного веса, поэтому точные веса отображаются также для 350, 450, 550 и 650.
Детальное управление разрывами строк
Начиная с Android 15, TextView
и базовый разрыв строки могут сохранять заданную часть текста в одной строке для улучшения читаемости. Вы можете воспользоваться преимуществами этой настройки разрыва строки, используя тег <nobreak>
в строковых ресурсах или createNoBreakSpan
. Аналогичным образом вы можете предотвратить расстановку переносов в словах, используя тег <nohyphen>
или createNoHyphenationSpan
.
Например, следующий строковый ресурс не содержит разрыва строки и отображается с текстом «Pixel 8 Pro». поломка в нежелательном месте:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
Напротив, этот строковый ресурс включает тег <nobreak>
, который окружает фразу «Pixel 8 Pro». и предотвращает разрывы строк:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
Разница в том, как отображаются эти строки, показана на следующих изображениях:

<nobreak>
. 
<nobreak>
.Архивация приложений
В прошлом году Android и Google Play объявили о поддержке архивирования приложений , что позволяет пользователям освободить место за счет частичного удаления с устройства нечасто используемых приложений, опубликованных с помощью Android App Bundle в Google Play. Android 15 включает поддержку архивирования и разархивирования приложений на уровне ОС, что упрощает реализацию этой функции для всех магазинов приложений.
Приложения с разрешением REQUEST_DELETE_PACKAGES
могут вызывать метод requestArchive
PackageInstaller
, чтобы запросить архивирование установленного пакета приложения, при этом APK и все кэшированные файлы удаляются, но пользовательские данные сохраняются. Архивированные приложения возвращаются как отображаемые приложения через API LauncherApps
; пользователи увидят сообщение пользовательского интерфейса, указывающее на то, что эти приложения заархивированы. Если пользователь нажмет на заархивированное приложение, ответственный установщик получит запрос на его разархивирование , а процесс восстановления можно будет отслеживать с помощью широковещательной рассылки ACTION_PACKAGE_ADDED
.
Включите режим 16 КБ на устройстве, используя параметры разработчика.

Включите параметр разработчика «Загрузка с размером страницы 16 КБ», чтобы загрузить устройство в режиме 16 КБ.
Начиная с Android 15 QPR1, вы можете использовать опцию разработчика , доступную на некоторых устройствах, для загрузки устройства в режиме 16 КБ и выполнения тестирования на устройстве. Прежде чем использовать опцию разработчика, перейдите в «Настройки» -> «Система» -> «Обновления программного обеспечения» и примените все доступные обновления.
Этот вариант разработчика доступен на следующих устройствах:
Pixel 8 и 8 Pro (с Android 15 QPR1 или более поздней версии)
Предупреждение . Из-за известной проблемы с Android 15 QPR2 Beta 3 сенсорный экран не работает на устройствах Pixel 8 после установки Android 15 QPR2 Beta 3 и загрузки устройства в режиме 16 КБ. Эта проблема не затрагивает устройства Pixel 8 Pro.
Pixel 8a (с Android 15 QPR1 или более поздней версии)
Предупреждение . Из-за известной проблемы с Android 15 QPR2 Beta 3 сенсорный экран не работает на устройствах Pixel 8a после установки Android 15 QPR2 Beta 3 и загрузки устройства в режиме 16 КБ.
Pixel 9, 9 Pro и 9 Pro XL (с Android 15 QPR2 Beta 2 или более поздней версии)
Графика
Android 15 предлагает новейшие графические улучшения, включая ANGLE и дополнения к графической системе Canvas.
Модернизация доступа к графическому процессору Android
Аппаратное обеспечение Android значительно изменилось с первых дней, когда основная ОС работала на одном процессоре, а доступ к графическим процессорам осуществлялся с использованием API-интерфейсов, основанных на конвейерах с фиксированными функциями. Графический API Vulkan® доступен в NDK начиная с Android 7.0 (уровень API 24) с абстракцией более низкого уровня, которая лучше отражает современное аппаратное обеспечение графического процессора, лучше масштабируется для поддержки нескольких ядер ЦП и обеспечивает снижение нагрузки на драйвер ЦП, что приводит к улучшению производительность приложения. Vulkan поддерживается всеми современными игровыми движками.
Vulkan — предпочтительный интерфейс Android для графического процессора. Поэтому Android 15 включает ANGLE в качестве дополнительного уровня для запуска OpenGL® ES поверх Vulkan. Переход на ANGLE позволит стандартизировать реализацию Android OpenGL для улучшения совместимости и, в некоторых случаях, повышения производительности. Вы можете проверить стабильность и производительность вашего приложения OpenGL ES с помощью ANGLE, включив опцию разработчика в «Настройки» -> «Система» -> «Параметры разработчика» -> «Экспериментально: включить ANGLE на Android 15».
Android ANGLE на дорожной карте Vulkan

В рамках оптимизации нашего стека графических процессоров в дальнейшем мы будем поставлять ANGLE в качестве системного драйвера GL на большее количество новых устройств, при этом в будущем ожидается, что OpenGL/ES будет доступен только через ANGLE. При этом мы планируем продолжить поддержку OpenGL ES на всех устройствах .
Рекомендуемые следующие шаги
Используйте параметры разработчика, чтобы выбрать драйвер ANGLE для OpenGL ES и протестировать свое приложение. Для новых проектов мы настоятельно рекомендуем использовать Vulkan для C/C++.
Улучшения для Canvas
Android 15 продолжает модернизацию графической системы Android Canvas с дополнительными возможностями:
-
Matrix44
предоставляет матрицу 4x4 для преобразования координат, которую следует использовать, когда вы хотите манипулировать холстом в 3D. -
clipShader
пересекает текущий клип с указанным шейдером, аclipOutShader
устанавливает для клипа разницу между текущим клипом и шейдером, каждый из которых рассматривает шейдер как альфа-маску. Это позволяет эффективно рисовать сложные формы.
Производительность и аккумулятор
Android продолжает фокусироваться на том, чтобы помочь вам улучшить производительность и качество ваших приложений. Android 15 представляет API, которые помогают сделать задачи в вашем приложении более эффективными для выполнения, оптимизировать производительность приложения и собирать информацию о ваших приложениях.
Информацию о передовых методах экономии заряда батареи, отладке сети и энергопотребления, а также о том, как мы повышаем эффективность использования батареи при фоновой работе в Android 15 и последних версиях Android, можно найти в докладе «Повышение эффективности использования батареи при фоновой работе в Android » на конференции Google I/O.
API ApplicationStartInfo
В предыдущих версиях Android запуск приложений был чем-то вроде загадки. В вашем приложении было сложно определить, началось ли оно с холодного, теплого или горячего состояния. Также было сложно узнать, сколько времени ваше приложение тратило на различных этапах запуска: разветвление процесса, вызов onCreate
, рисование первого кадра и многое другое. Когда был создан экземпляр вашего класса Application
, у вас не было возможности узнать, запускается ли приложение с широковещательной рассылки, поставщика контента, задания, резервной копии, завершения загрузки, сигнала тревоги или Activity
.
API ApplicationStartInfo
в Android 15 предоставляет все это и многое другое. Вы даже можете добавить в поток свои собственные временные метки, чтобы собирать данные о времени в одном месте. Помимо сбора метрик, вы можете использовать ApplicationStartInfo
, чтобы напрямую оптимизировать запуск приложения; например, вы можете исключить дорогостоящее создание экземпляров библиотек, связанных с пользовательским интерфейсом, в классе Application
, когда ваше приложение запускается из-за широковещательной рассылки.
Подробная информация о размере приложения
Since Android 8.0 (API level 26), Android has included the
StorageStats.getAppBytes
API that summarizes the installed
size of an app as a single number of bytes, which is a sum of the APK size, the
size of files extracted from the APK, and files that were generated on the
device such as ahead-of-time (AOT) compiled code. This number is not very
insightful in terms of how your app is using storage.
Android 15 adds the
StorageStats.getAppBytesByDataType([type])
API, which lets
you get insight into how your app is using up all that space, including APK file
splits, AOT and speedup related code, dex metadata, libraries, and guided
profiles.
Профилирование, управляемое приложением
Android 15 включает класс ProfilingManager
, который позволяет собирать информацию о профилировании внутри вашего приложения, например дампы кучи, профили кучи, выборку стека и многое другое. Он обеспечивает обратный вызов вашего приложения с предоставленным тегом для идентификации выходного файла, который доставляется в каталог файлов вашего приложения. API ограничивает скорость, чтобы минимизировать влияние на производительность.
Чтобы упростить создание запросов профилирования в вашем приложении, мы рекомендуем использовать соответствующий API Profiling
AndroidX, доступный в версии Core 1.15.0-rc01 или выше.
Улучшения базы данных SQLite
В Android 15 представлены API-интерфейсы SQLite, которые предоставляют расширенные функции базового механизма SQLite, направленные на решение конкретных проблем с производительностью, которые могут проявляться в приложениях. Эти API включены в обновление SQLite до версии 3.44.3 .
Разработчикам следует ознакомиться с передовыми практиками производительности SQLite , чтобы максимально эффективно использовать свою базу данных SQLite, особенно при работе с большими базами данных или при выполнении запросов, чувствительных к задержке.
- Отложенные транзакции только для чтения : при выпуске транзакций, предназначенных только для чтения (не включая операторы записи), используйте
beginTransactionReadOnly()
иbeginTransactionWithListenerReadOnly(SQLiteTransactionListener)
для выполненияDEFERRED
транзакций только для чтения. Такие транзакции могут выполняться одновременно друг с другом, а если база данных находится в режиме WAL, они могут выполняться одновременно сIMMEDIATE
илиEXCLUSIVE
транзакциями. - Количество и идентификаторы строк : были добавлены API для получения количества измененных строк или идентификатора последней вставленной строки без выполнения дополнительного запроса.
getLastChangedRowCount()
возвращает количество строк, которые были вставлены, обновлены или удалены последним оператором SQL в текущей транзакции, аgetTotalChangedRowCount()
возвращает количество в текущем соединении.getLastInsertRowId()
возвращаетrowid
последней строки, которая будет вставлена в текущее соединение. - Необработанные операторы : выдайте необработанный оператор SQlite, минуя удобные оболочки и любые дополнительные накладные расходы на обработку, которые они могут понести.
Обновления Android Dynamic Performance Framework
Android 15 continues our investment in the Android Dynamic Performance Framework (ADPF), a set of APIs that allow games and performance intensive apps to interact more directly with power and thermal systems of Android devices. On supported devices, Android 15 adds ADPF capabilities:
- A power-efficiency mode for hint sessions to indicate that their associated threads should prefer power saving over performance, great for long-running background workloads.
- GPU and CPU work durations can both be reported in hint sessions, allowing the system to adjust CPU and GPU frequencies together to best meet workload demands.
- Thermal headroom thresholds to interpret possible thermal throttling status based on headroom prediction.
To learn more about how to use ADPF in your apps and games, head over to the documentation.
Конфиденциальность
Android 15 включает в себя ряд функций, которые помогают разработчикам приложений защищать конфиденциальность пользователей.
Обнаружение записи экрана
В Android 15 добавлена поддержка приложений, позволяющих обнаружить, что они записываются. Обратный вызов вызывается всякий раз, когда приложение становится видимым или невидимым во время записи экрана. Приложение считается видимым, если записываются действия, принадлежащие UID процесса регистрации. Таким образом, если ваше приложение выполняет конфиденциальную операцию, вы можете сообщить пользователю, что его действия записываются.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
Расширенные возможности IntentFilter
В Android 15 реализована поддержка более точного разрешения Intent
с помощью UriRelativeFilterGroup
, который содержит набор объектов UriRelativeFilter
, формирующих набор правил сопоставления Intent
, каждое из которых должно выполняться, включая параметры URL-запроса, фрагменты URL-адресов и правила блокировки или исключения.
Эти правила можно определить в XML-файле AndroidManifest
с помощью тега <uri-relative-filter-group>
, который при необходимости может включать тег android:allow
. Эти теги могут содержать теги <data>
, которые используют существующие атрибуты тегов данных, а также атрибуты android:query
и android:fragment
.
Вот пример синтаксиса AndroidManifest
:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:domain="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
Личное пространство
Личное пространство позволяет пользователям создать на своем устройстве отдельное пространство, где они смогут хранить конфиденциальные приложения вдали от посторонних глаз, используя дополнительный уровень аутентификации. В личном пространстве используется отдельный профиль пользователя. Пользователь может выбрать использование блокировки устройства или отдельный фактор блокировки для личного пространства.
Приложения в личном пространстве отображаются в отдельном контейнере на панели запуска и скрыты от просмотра последних, уведомлений, настроек и других приложений, когда личное пространство заблокировано. Созданный и загруженный пользователем контент (например, медиафайлы или файлы) и учетные записи разделены между частным пространством и основным пространством. Системный общий лист и средство выбора фотографий можно использовать для предоставления приложениям доступа к контенту в разных пространствах, когда личное пространство разблокировано.
Пользователи не могут перемещать существующие приложения и их данные в личное пространство. Вместо этого пользователи выбирают вариант установки в личном пространстве, чтобы установить приложение, используя любой магазин приложений, который они предпочитают. Приложения в личном пространстве устанавливаются как отдельные копии любых приложений в основном пространстве (новые копии одного и того же приложения).
Когда пользователь блокирует личное пространство, профиль останавливается. Пока профиль остановлен, приложения в личном пространстве больше не активны и не могут выполнять приоритетные или фоновые действия, включая показ уведомлений.
Мы рекомендуем вам протестировать свое приложение в личном пространстве, чтобы убедиться, что оно работает должным образом, особенно если ваше приложение попадает в одну из следующих категорий:
- Приложения с логикой рабочих профилей , которая предполагает, что все установленные копии их приложений, которых нет в основном профиле, находятся в рабочем профиле.
- Медицинские приложения
- Приложения для запуска
- Приложения из магазина приложений
Запрос последнего выбора пользователя для доступа к выбранным фотографиям
Приложения теперь могут выделять только те фотографии и видео, которые были выбраны последними, если предоставлен частичный доступ к медиа-разрешениям. Эта функция может улучшить взаимодействие с пользователем в приложениях, которые часто запрашивают доступ к фотографиям и видео. Чтобы использовать эту функцию в своем приложении, включите аргумент QUERY_ARG_LATEST_SELECTION_ONLY
при запросе MediaStore
через ContentResolver
.
Котлин
val externalContentUri = MediaStore.Files.getContentUri("external") val mediaColumns = arrayOf( FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE, ) val queryArgs = bundleOf( // Return only items from the last selection (selected photos access) QUERY_ARG_LATEST_SELECTION_ONLY to true, // Sort returned items chronologically based on when they were added to the device's storage QUERY_ARG_SQL_SORT_ORDER to "${FileColumns.DATE_ADDED} DESC", QUERY_ARG_SQL_SELECTION to "${FileColumns.MEDIA_TYPE} = ? OR ${FileColumns.MEDIA_TYPE} = ?", QUERY_ARG_SQL_SELECTION_ARGS to arrayOf( FileColumns.MEDIA_TYPE_IMAGE.toString(), FileColumns.MEDIA_TYPE_VIDEO.toString() ) )
Ява
Uri externalContentUri = MediaStore.Files.getContentUri("external"); String[] mediaColumns = { FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE }; Bundle queryArgs = new Bundle(); queryArgs.putBoolean(MediaStore.QUERY_ARG_LATEST_SELECTION_ONLY, true); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SORT_ORDER, FileColumns.DATE_ADDED + " DESC"); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SELECTION, FileColumns.MEDIA_TYPE + " = ? OR " + FileColumns.MEDIA_TYPE + " = ?"); queryArgs.putStringArray(MediaStore.QUERY_ARG_SQL_SELECTION_ARGS, new String[] { String.valueOf(FileColumns.MEDIA_TYPE_IMAGE), String.valueOf(FileColumns.MEDIA_TYPE_VIDEO) });
Privacy Sandbox на Android
Android 15 включает новейшие расширения Android Ad Services, включая последнюю версию Privacy Sandbox для Android . Это дополнение является частью нашей работы по разработке технологий, которые улучшают конфиденциальность пользователей и обеспечивают эффективную персонализированную рекламу для мобильных приложений. На нашей странице «Песочница конфиденциальности» вы найдете дополнительную информацию о предварительной версии и бета-версиях Privacy Sandbox для разработчиков Android, которые помогут вам начать работу.
Здоровье Подключи
Android 15 integrates the latest extensions around Health Connect by Android, a secure and centralized platform to manage and share app-collected health and fitness data. This update adds support for additional data types across fitness, nutrition, skin temperature, training plans, and more.
Skin temperature tracking allows users to store and share more accurate temperature data from a wearable or other tracking device.
Training plans are structured workout plans to help a user achieve their fitness goals. Training plans support includes a variety of completion and performance goals:
- Completion goals around calories burned, distance, duration, repetition, and steps.
- Performance goals around as many repetitions as possible (AMRAP), cadence, heart rate, power, perceived rate of exertion, and speed.
Learn more about the latest updates to Health Connect in Android in the Building adaptable experiences with Android Health talk from Google I/O.
Совместное использование экрана приложения
Android 15 поддерживает совместное использование экрана приложения, поэтому пользователи могут делиться или записывать только окно приложения, а не весь экран устройства. Эта функция, впервые включенная в Android 14 QPR2, включает обратные вызовы MediaProjection
, которые позволяют вашему приложению настраивать процесс совместного использования экрана приложения. Обратите внимание, что для приложений, предназначенных для Android 14 (уровень API 34) или выше, требуется согласие пользователя для каждого сеанса захвата MediaProjection
.
Пользовательский опыт и системный пользовательский интерфейс
Android 15 предоставляет разработчикам приложений и пользователям больше контроля и гибкости для настройки устройств в соответствии со своими потребностями.
Чтобы узнать больше о том, как использовать последние улучшения в Android 15 для улучшения пользовательского опыта вашего приложения, ознакомьтесь с докладом «Улучшение пользовательского опыта вашего приложения Android» на конференции Google I/O.
Более богатые возможности предварительного просмотра виджетов с помощью API Generated Previews
До Android 15 единственным способом обеспечить предварительный просмотр средства выбора виджетов было указание статического изображения или ресурса макета . Эти предварительные просмотры часто существенно отличаются от внешнего вида фактического виджета, когда он размещен на главном экране. Кроме того, статические ресурсы невозможно создавать с помощью Jetpack Glance, поэтому разработчику Glance приходилось делать снимок экрана своего виджета или создавать макет XML, чтобы иметь предварительный просмотр виджета.
В Android 15 добавлена поддержка созданных предварительных просмотров. Это означает, что поставщики виджетов приложений могут создавать RemoteViews
для использования в качестве предварительного просмотра средства выбора вместо статического ресурса.

Нажмите API
Приложения могут предоставлять сгенерированные предварительные просмотры через push API. Приложения могут предоставлять предварительные просмотры в любой момент своего жизненного цикла и не получают явного запроса от хоста на предоставление предварительных просмотров. Предварительные просмотры сохраняются в AppWidgetService
, и хосты могут запрашивать их по требованию. В следующем примере загружается ресурс макета виджета XML и устанавливается его в качестве предварительного просмотра:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
Ожидаемый поток:
- В любой момент поставщик виджетов вызывает
setWidgetPreview
. Предоставленные предварительные просмотры сохраняются вAppWidgetService
вместе с другой информацией поставщика. -
setWidgetPreview
уведомляет узлы об обновленной предварительной версии через обратный вызовAppWidgetHost.onProvidersChanged
. В ответ хост виджета перезагружает всю информацию о своем провайдере. - При отображении предварительного просмотра виджета хост проверяет
AppWidgetProviderInfo.generatedPreviewCategories
и, если выбранная категория доступна, вызываетAppWidgetManager.getWidgetPreview
, чтобы вернуть сохраненный предварительный просмотр для этого провайдера.
Когда вызывать setWidgetPreview
Поскольку обратный вызов для предоставления предварительного просмотра отсутствует, приложения могут отправлять предварительные просмотры в любой момент их работы. Частота обновления предварительного просмотра зависит от варианта использования виджета.
В следующем списке описаны две основные категории вариантов использования предварительной версии:
- Поставщики, которые показывают реальные данные в предварительных просмотрах виджетов, например персонализированную или недавнюю информацию. Эти поставщики могут установить предварительный просмотр после того, как пользователь вошел в систему или выполнил первоначальную настройку в своем приложении. После этого они могут настроить периодическую задачу для обновления предварительных просмотров с выбранной частотой. Примерами виджетов этого типа могут быть виджет фотографий, календаря, погоды или новостей.
- Поставщики, которые отображают статическую информацию в предварительном просмотре, или виджеты быстрого действия, которые не отображают никаких данных. Эти поставщики могут установить предварительный просмотр один раз при первом запуске приложения. Примеры виджетов этого типа включают виджет быстрых действий на диске или виджет ярлыков Chrome.
Некоторые провайдеры могут отображать статические предварительные просмотры в средстве выбора режима концентратора, а реальную информацию — в средстве выбора главного экрана. Эти поставщики должны следовать рекомендациям для обоих этих вариантов использования, чтобы установить предварительный просмотр.
Картинка в картинке
Android 15 introduces changes in Picture-in-Picture (PiP) ensuring an even smoother transition when entering into PiP mode. This will be beneficial for apps having UI elements overlaid on top of their main UI, which goes into PiP.
Developers use the onPictureInPictureModeChanged
callback to define logic
that toggles the visibility of the overlaid UI elements. This callback is
triggered when the PiP enter or exit animation is completed. Beginning in
Android 15, the PictureInPictureUiState
class includes another state.
With this UI state, apps targeting Android 15 (API level 35) will observe the
Activity#onPictureInPictureUiStateChanged
callback being invoked with
isTransitioningToPip()
as soon as the PiP animation starts. There are
many UI elements that are not relevant for the app when it is in PiP mode, for
example views or layout that include information such as suggestions, upcoming
video, ratings, and titles. When the app goes to PiP mode, use the
onPictureInPictureUiStateChanged
callback to hide these UI elements. When the
app goes to full screen mode from the PiP window, use
onPictureInPictureModeChanged
callback to unhide these elements, as shown in
the following examples:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
This quick visibility toggle of irrelevant UI elements (for a PiP window) helps ensure a smoother and flicker-free PiP enter animation.
Улучшенные правила «Не беспокоить»
AutomaticZenRule
позволяет приложениям настраивать правила управления вниманием (не беспокоить) и решать, когда их активировать или деактивировать. В Android 15 эти правила значительно усовершенствованы с целью улучшения пользовательского опыта. Включены следующие улучшения:
- Добавление типов в
AutomaticZenRule
, позволяющее системе применять специальную обработку к некоторым правилам. - Добавление значка в
AutomaticZenRule
, помогающее сделать режимы более узнаваемыми. - Добавление в
AutomaticZenRule
строкиtriggerDescription
, описывающей условия, при которых правило должно стать активным для пользователя. - В
AutomaticZenRule
добавленZenDeviceEffects
, позволяющий правилам запускать такие функции, как отображение оттенков серого, ночной режим или затемнение обоев.
Установить VibrationEffect для каналов уведомлений
Android 15 supports setting rich vibrations for incoming notifications by
channel using NotificationChannel.setVibrationEffect
, so
your users can distinguish between different types of notifications without
having to look at their device.
Чип строки состояния проекции мультимедиа и автоматическая остановка
Медиа-проекция может раскрыть личную информацию пользователя. Новый, заметный чип строки состояния информирует пользователей о любой текущей проекции экрана. Пользователи могут коснуться чипа, чтобы остановить трансляцию экрана, совместное использование или запись. Кроме того, для более интуитивно понятного взаимодействия с пользователем любое текущее проецирование экрана теперь автоматически останавливается при блокировке экрана устройства.

Большие экраны и форм-факторы
Android 15 предоставляет вашим приложениям поддержку, позволяющую максимально эффективно использовать форм-факторы Android, включая большие экраны, переворачивающиеся и складные устройства.
Улучшенная многозадачность на большом экране
Android 15 gives users better ways to multitask on large screen devices. For example, users can save their favorite split-screen app combinations for quick access and pin the taskbar on screen to quickly switch between apps. This means that making sure your app is adaptive is more important than ever.
Google I/O has sessions on Building adaptive Android apps and Building UI with the Material 3 adaptive library that can help, and our documentation has more to help you Design for large screens.
Поддержка защитного экрана
Ваше приложение может объявить свойство , которое Android 15 использует, чтобы позволить вашему Application
или Activity
отображаться на небольших верхних экранах поддерживаемых переворачивающихся устройств. Эти экраны слишком малы, чтобы их можно было рассматривать как совместимые цели для запуска приложений Android, но ваше приложение может согласиться на их поддержку, что сделает ваше приложение доступным в большем количестве мест.
Связность
Android 15 обновляет платформу, предоставляя вашему приложению доступ к новейшим достижениям в области коммуникационных и беспроводных технологий.
Спутниковая поддержка
Android 15 продолжает расширять поддержку платформы для спутниковой связи и включает в себя некоторые элементы пользовательского интерфейса, обеспечивающие единообразный пользовательский опыт в сфере спутниковой связи.
Приложения могут использовать ServiceState.isUsingNonTerrestrialNetwork()
для определения того, когда устройство подключено к спутнику, что дает им больше информации о том, почему все сетевые службы могут быть недоступны. Кроме того, Android 15 обеспечивает поддержку приложений SMS и MMS, а также предустановленных приложений RCS для использования спутниковой связи для отправки и получения сообщений.

Более плавный опыт использования NFC
Android 15 работает над тем, чтобы сделать процесс оплаты одним касанием более простым и надежным, продолжая при этом поддерживать надежную экосистему приложений Android NFC. На поддерживаемых устройствах приложения могут запрашивать NfcAdapter
для перехода в режим наблюдения , в котором устройство прослушивает, но не отвечает устройствам чтения NFC, отправляя на обработку объекты PollingFrame
службы NFC приложения. Объекты PollingFrame
можно использовать для аутентификации перед первой связью со считывателем NFC, что во многих случаях позволяет выполнить транзакцию одним касанием.
Кроме того, приложения могут зарегистрировать фильтр на поддерживаемых устройствах, чтобы они могли получать уведомления об активности цикла опроса, что обеспечивает бесперебойную работу с несколькими приложениями, поддерживающими NFC.
Роль кошелька
В Android 15 представлена роль кошелька, которая обеспечивает более тесную интеграцию с предпочтительным приложением-кошельком пользователя. Эта роль заменяет настройку бесконтактной оплаты NFC по умолчанию. Пользователи могут управлять владельцем роли Кошелька, перейдя в «Настройки» > «Приложения» > «Приложения по умолчанию» .
Роль «Кошелек» используется при маршрутизации касаний NFC для AID, зарегистрированных в категории платежей. Нажатия всегда передаются владельцу роли «Кошелек», если только на переднем плане не работает другое приложение, зарегистрированное для того же AID.
Эта роль также используется для определения того, куда должна перемещаться плитка быстрого доступа к кошельку при активации. Если для роли установлено значение «Нет», плитка быстрого доступа недоступна, а касания NFC категории оплаты доставляются только в приложение на переднем плане.
Безопасность
Android 15 помогает вам повысить безопасность вашего приложения, защитить данные вашего приложения и дает пользователям больше прозрачности и контроля над их данными. Ознакомьтесь с докладом «Защита безопасности пользователей на Android» с конференции Google I/O, чтобы узнать больше о том, что мы делаем для улучшения защиты пользователей и защиты вашего приложения от новых угроз.
Интеграция Credential Manager с функцией автозаполнения
Starting with Android 15, developers can link specific views like username or password fields with Credential Manager requests, making it easier to provide a tailored user experience during the sign-in process. When the user focuses on one of these views, a corresponding request is sent to Credential Manager. The resulting credentials are aggregated across providers and displayed in autofill fallback UIs, such as inline suggestions or drop-down suggestions. The Jetpack androidx.credentials library is the preferred endpoint for developers to use and will soon be available to further enhance this feature in Android 15 and higher.
Интеграция регистрации и входа в систему одним нажатием с биометрическими запросами
Credential Manager интегрирует биометрические запросы в процессы создания учетных данных и входа в систему , устраняя необходимость для поставщиков управлять биометрическими запросами. В результате поставщикам учетных данных необходимо сосредоточиться только на результатах потоков создания и получения, дополненных результатами биометрического потока. Этот упрощенный процесс обеспечивает более эффективный и оптимизированный процесс создания и поиска учетных данных.
Управление ключами для сквозного шифрования
Мы представляем E2eeContactKeysManager
в Android 15, который упрощает сквозное шифрование (E2EE) в ваших приложениях Android, предоставляя API на уровне ОС для хранения криптографических открытых ключей.
E2eeContactKeysManager
предназначен для интеграции с приложением контактов платформы, чтобы предоставить пользователям централизованный способ управления и проверки открытых ключей своих контактов.
Проверки разрешений на URI контента
В Android 15 представлен набор API, которые выполняют проверку разрешений для URI контента:
-
Context.checkContentUriPermissionFull
: выполняет полную проверку разрешений для URI контента. - Атрибут манифеста
Activity
requireContentUriPermissionFromCaller
: обеспечивает соблюдение указанных разрешений для предоставленных URI контента при запуске действия. - Класс
ComponentCaller
для вызывающихActivity
: представляет приложение, запустившее действие.
Доступность
В Android 15 добавлены функции, улучшающие доступность для пользователей.
Лучший шрифт Брайля
In Android 15, we've made it possible for TalkBack to support Braille displays that are using the HID standard over both USB and secure Bluetooth.
This standard, much like the one used by mice and keyboards, will help Android support a wider range of Braille displays over time.
Интернационализация
В Android 15 добавлены функции и возможности, которые дополняют пользовательский опыт при использовании устройства на разных языках.
Вариативный шрифт CJK
Начиная с Android 15, файл шрифта для китайского, японского и корейского (CJK) языков NotoSansCJK теперь является переменным шрифтом. Вариативные шрифты открывают возможности для творческой типографики на языках CJK. Дизайнеры могут исследовать более широкий спектр стилей и создавать визуально яркие макеты, которые раньше было трудно или невозможно реализовать.

Межсимвольное выравнивание
Starting with Android 15, text can be justified utilizing letter spacing by
using JUSTIFICATION_MODE_INTER_CHARACTER
. Inter-word justification was
first introduced in Android 8.0 (API level 26), and inter-character
justification provides similar capabilities for languages that use the
whitespace character for segmentation, such as Chinese, Japanese, and others.

JUSTIFICATION_MODE_NONE
.
JUSTIFICATION_MODE_NONE
.
JUSTIFICATION_MODE_INTER_WORD
.
JUSTIFICATION_MODE_INTER_WORD
.
JUSTIFICATION_MODE_INTER_CHARACTER
.
JUSTIFICATION_MODE_INTER_CHARACTER
.Автоматическая настройка разрыва строки
Android started supporting phrase-based line breaks for Japanese and Korean in
Android 13 (API level 33). However, while phrase-based line breaks improve the
readability of short lines of text, they don't work well for long lines of text.
In Android 15, apps can apply phrase-based line breaks only for short lines
of text, using the LINE_BREAK_WORD_STYLE_AUTO
option. This option selects the best word style option for the text.
For short lines of text, phrase-based line breaks are used, functioning the same
as LINE_BREAK_WORD_STYLE_PHRASE
, as shown in the
following image:

LINE_BREAK_WORD_STYLE_AUTO
applies phrase-based line breaks to improve the readability of the text.
This is the same as applying
LINE_BREAK_WORD_STYLE_PHRASE
.For longer lines of text, LINE_BREAK_WORD_STYLE_AUTO
uses a no
line-break word style, functioning the same as
LINE_BREAK_WORD_STYLE_NONE
, as shown in the
following image:

LINE_BREAK_WORD_STYLE_AUTO
applies no line-break word style to improve the readability of the text.
This is the same as applying
LINE_BREAK_WORD_STYLE_NONE
.Дополнительный японский шрифт Hentaigana
В Android 15 по умолчанию включен файл шрифта для старой японской хираганы (известной как хентайгана). Уникальные формы символов хентайганы могут придать особый шарм произведениям искусства или дизайну, а также помогают сохранить точную передачу и понимание древних японских документов.

Конус VideoLAN Copyright (c) 1996-2010 VideoLAN. Этот логотип или его измененная версия может использоваться или изменяться кем-либо для ссылки на проект VideoLAN или любой продукт, разработанный командой VideoLAN, но не означает одобрения проекта.
Vulkan и логотип Vulkan являются зарегистрированными торговыми марками Khronos Group Inc.
OpenGL является зарегистрированной торговой маркой, а логотип OpenGL ES является торговой маркой Hewlett Packard Enterprise, используемой с разрешения Khronos.