Выпуск мобильной платформы Android 15
Компания Google опубликовала релиз открытой мобильной платформы Android 15. Связанные с новым выпуском исходные тексты размещены в Git-репозитории проекта (ветка android-15.0.0_r1). В ближайшие недели обновление прошивки будет подготовлено для устройств серии Pixel, а в ближайшие месяцы для смартфонов производства Samsung, Honor, iQOO, Lenovo, Motorola, Nothing, OnePlus, Oppo, realme, Sharp, Sony, Tecno, vivo и Xiaomi. Дополнительно будут сформированы универсальные сборки GSI (Generic System Images), подходящие для разных устройств на базе архитектур ARM64 и x86_64.
Основные новшества:
Расширены возможности для одновременной работы с несколькими приложениями на устройствах с большими экранами. Реализована поддержка добавления на экран панели задач для быстрого переключения между приложениями и закрепления ярлыков наиболее часто используемых программ.
Добавлена возможность определения отдельной приватной секции с приложениями, появляющейся только после дополнительной аутентификации пользователя. Фактически приложения в данной секции хранятся в отдельном профиле, приостанавливаемом, когда доступ к приложениям не разблокирован (т.е. приложения из данного профиля активны только при разблокировке профиля). При просмотре списка приложений, содержимое приватной секции показывается в отдельном блоке. Связанные с приватными приложениями уведомления и настройки при блокировке скрываются, а созданные и загруженные с использованием данных приложений файлы отделены от файлов основного профиля (доступ к приватному контенту из приложений в основном профиле осуществляется через интерфейсы обмена файлами и доступа к изображениям).
Предоставлена поддержка отображения персонализированных миниатюр. Приложения могут предоставлять виджетам релевантные для пользователя представления миниатюр, вместо выставленных по умолчанию заглушек.
По умолчанию на уровне системы задействована визуализация при навигации при помощи экранных жестов, при помощи анимации предупреждающая пользователя о предстоящем действии, например, при сдвиге влево показывающая, что приложение будет свёрнуто и показан домашний экран.
Для приложений предоставлена возможность использована небольших вспомогательных экранов (Cover screen), которыми оснащаются некоторые складные смартфоны, такие как Samsung Galaxy Z Flip. Например, вспомогательный экран позволяет быстро принять звонок, ответить на сообщение, управлять камерой и выполнять другие действия без раскрытия устройства.
По умолчанию обеспечено отображение приложений в режиме «от края до края», позволяющего выводить информацию на всей видимой области экрана, не упираясь в границы верхней панели состояния и нижней навигационной панели (данные панели выглядят полупрозрачными и перекрывают содержимое приложения). Для отображения содержимого за системными панелями теперь не нужно явно вызывать функции Window.setDecorFitsSystemWindows (false) и EnableEdgeToEdge ().
Расширены возможности работы через спутниковые каналы связи. Добавлены новые элементы интерфейса для унификации использования спутниковой связи. Приложениям предоставлена возможность определения использования спутникового канала при помощи метода ServiceState.isUsingNonTerrestrialNetwork (). В интерфейсе для работы с SMS/MMS реализована поддержка отправки и приёма сообщений через спутниковые каналы.
Значительно расширены возможности для отрисовки PDF-документов (API PdfRenderer). Например, предоставлены средства для отрисовки защищённых паролем файлов, показа аннотаций, редактирования форм, поиска внутри документа и выделения областей для копирования через буфер обмена. Добавлены оптимизации, снижающие потребление ресурсов и ускоряющие просмотр локальных PDF-файлов. Реализация API PdfRenderer вынесена в отдельный модуль, обновляемый через Google Play и не привязанный к основной платформе.
Предоставлена возможность управления запасом яркости для HDR (отношение самого яркого белого цвета на HDR-изображении к яркости белого цвета в изображении в стандартном динамическом диапазоне). Для установки запаса яркости добавлен метод setDesiredHdrHeadroom, при помощи которого можно сбалансировать яркость при отображении содержимого в SDR и HDR.
Улучшен интерфейс для управления учётными записями и упрощена аутентификация на уровне подключения к отдельным приложениям с использованием технологии Passkeys, позволяющей пользователю проходить аутентификацию без паролей с использованием биометрических идентификаторов, таких как отпечаток пальца или распознавание лица.
На базе прослойки ANGLE подготовлена реализация OpenGL ES, работающая поверх графического API Vulkan, который отмечен как приоритетный программный интерфейс для взаимодействия с GPU. Задействование прослойки ANGLE для OpenGL-приложений позволяет улучшить совместимость , а в некоторых ситуациях и повысить производительность. Для включения ANGLE в секцию настроек «Developer options/Experimental» добавлена опция «Enable ANGLE». В 2025 году реализацию OpenGL ES на базе ANGLE планируют активировать по умолчанию, а в 2026 году сделать единственно поддерживаемой.
Обеспечено использование библиотеки dav1d для программного декодирования видео в формате AV1 на устройствах без поддержки аппаратного ускорения. Библиотека развивается участниками проектов VideoLAN и FFmpeg, и нацелена на достижение максимально возможной производительности декодирования и обеспечение качественной работы в многопоточном режиме. В проведённых тестах dav1d в три раза обгоняет по производительности ранее используемый программный декодировщик. Библиотека пока доступна в виде опции, но в одном из следующих обновлений будет предложена по умолчанию.
В графическую подсистему добавлена поддержка класса Matrix44 для преобразования координат с использованием матрицы 4×4 при манипуляции 2D-поверхностями в 3D-пространстве. Также добавлена функция clipShader для наложения клипа с указанным шейдером.
Добавлена поддержка стандарта CTA-2075, определяющего возможности для нормализации громкости, позволяющие избежать изменения уровня громкости для разного контента. Согласование громкости достигается через определение метаданных о характеристиках громкоговорителей и громкости звукового AAC-контента. Для нормализации громкости предложен объект LoudnessCodecController и метод OnLoudnessCodecUpdateListener, корректирующий параметры громкости перед обращением к кодеку.
- В AndroidX media3 ExoPlayer 1.0 включено по умолчанию использование пространственного звука для многоканального звука, если пространственный звук поддерживается на устройстве. Объявлен устаревшим класс Virtualizer, вместо которого для определения поведения и возможностей пространственного звука следует использовать класс Spatializer.
Расширены возможности управления камерой и алгоритмами обработки снятого изображения. В частности, добавлены параметры для увеличения яркости при слабом освещении и настройки интенсивности фотовспышки.
Реализована возможность создания приложений с музыкальными инструментами и синтезаторами, выглядящими для других приложений как виртуальные MIDI-устройства, соответствующие спецификации MIDI 2.0.
Продолжено развитие API для динамического управления производительностью — ADPF (Android Dynamic Performance Framework), позволяющего в играх и ресурсоёмких приложениях отслеживать энергопотребление и температуру. Добавлен режим power-efficiency при котором приоритет при выполнении потоков будет отдаваться экономии энергопотребления, а не производительности (например, можно использовать для длительно выполняемых фоновых работ). Предоставлена возможность передачи объединённой информации о потреблении GPU и CPU, что позволяет системе настроить частоту GPU и CPU или привязку потоков к ядрам, учитывая общую нагрузку.
Добавлен метод getThermalHeadroomThresholds для вывода сведений о состоянии регулирования температуры с учётом прогнозируемых значений.
Добавлена поддержка устройств, на которых используются страницы памяти размером 16 КБ. Для задействования 16-килобайтных страниц достаточно просто пересобрать приложения, напрямую или косвенно использующие библиотеки NDK (Native Development Kit). Задействование страниц размером 16 КБ вместо 4 КБ позволяет повысить производительность программ, интенсивно работающих с памятью. Например, при использовании 16-килобайтных страниц время запуска подобных программ в среднем снизилось на 3.16% (для некоторых на 30%), а энегропотребление снизилось на 4.56%. Повторный запуск программы для работы с камерой ускорился на 4.48%, а общее время загрузки системы сократилось на 0.8 сек. (1.5%).
В операционную систему встроена возможность архивирования редко используемых приложений для высвобождения занимаемого ими пространства на накопителе. При возникновении потребности в приложении его можно вернуть из архива. Приложения с полномочиями REQUEST_DELETE_PACKAGES теперь могут вызвать метод requestArchive для запроса архивирования установленного пакета, что приведёт удалению пакета APK и всех файлов из кэша, но сохранит ярлык и связанные с приложением пользовательские данные. При попытке запуска заархивированного приложения оно заново будет загружено и восстановлено.
Проведена работа по упрощению использования телефона с поддержкой NFC для оплаты товаров одним касанием (tap to pay). Приложениям предоставлена возможность перевода NFC-адаптера в режим наблюдения, при котором устройство принимает запросы по NFC и отправляет на обработку заданному процессу, но не отвечает и не предаёт данные NFC-ридерам. Реализована поддержка регистрации отпечатка (fingerprint) для получения уведомлений о связанной с NFC активности при одновременном использовании на устройстве нескольких приложений, работающих с NFC.
Улучшены возможности для автоматического распознавания языка и переключения языков. Приложениям предоставлены расширенные опции для тонкой настройки переключения языков во время распознавания речи. Например, режим EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS допускает переключение только вначале звукового сеанса, а режим EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES отменяет переключение языка после определённого числа переключений, что может быть востребовано в ситуациях, когда заранее известно, что в одном сеансе будет использован только один язык.
Проведена оптимизация работы механизма фоновых сервисов, позволяющего приложениям находиться в активном состоянии, когда с ними не взаимодействует пользователь. Фоновые сервисы, выполняющие синхронизацию данных (dataSync) или обработку мультимедийного контента (mediaProcessing), теперь принудительно останавливаются после работы в течение 6 часов.
При предоставлении частичного доступа к контенту в интерфейсе выбора фотографий реализована возможность пометки только фото и видео, которые уже выбирали в недавнем прошлом, что позволяет упростить работу с часто запрашиваемыми фото и видео.
В конфигураторе (Settings → System → Languages & Input → System languages → Choose how you«re addressed) предоставлена возможность выставления предпочитаемого обращения к пользователю (мужчина, женщина, нейтральное обращение), используемая для адаптации грамматики в выдаваемых системой обращениях. Настройка пока доступна только для французского языка.
Добавлены дополнительные элементы API для обеспечения плавного перехода в режим «картинка в картинке» программ с элементами интерфейса, отображаемыми поверх основного интерфейса пользователя.
Предоставлена возможность выбора виброэффекта для предупреждения о поступлении нового уведомления.
В хранилище Health Connect добавлена поддержка новых типов данных, применяемых при занятиях спортом и контроле за питанием. Например, добавлено поле для контроля за температурой кожи и реализована структура для определения плана тренировок.
Добавлен класс ProfilingManager, позволяющий запросить из приложения данные профилирования. Например, можно получить доступ к дампам памяти в куче, сведениям об использовании кучи и активности в стеке.
Предоставлены средства для гибкого управления разрывом строк. В виджете TextView для улучшения читаемости при помощи тегов и можно управлять переносом групп слов или частей слов на другую строку. Например, в строке «The power and brains behind Pixel 8 Pro.» фраза «Pixel 8 Pro» будет всегда отображаться в одной строке.
Добавлен API E2eeContactKeysManager для управления ключами сквозного шифрования (E2EE) в приложениях. Интеграция E2eeContactKeysManager в адресную книгу позволяет предоставить пользователю централизованный интерфейс для управления открытыми ключами адресатов, а также верификации этих ключей.
Добавлена дополнительная защита от вредоносной активности фоновых приложений, нацеленных на активацию других приложений, повышение их привилегий и злоупотребление взаимодействием с пользователем.
Расширены возможности фильтрации intent-запросов. При помощи класса UriRelativeFilterGroup можно задавать правила для блокирования или пропускания запросов на основе содержимого параметров URL и фрагментов URL. Правила фильтрации также могут задаваться через новый тег в манифесте приложения.
Расширена поддержка API, предоставляемого в OpenJDK. Например, добавлена поддержка дополнительных методов классов Math и StrictMath, упорядоченных коллекций и списков, использования ByteBuffer в Deflater и обновления ключей.
Добавлен API, позволяющий приложениям определять выполнение записи экрана. Приложение может задать callback-обработчик, который будет вызван, в случае если включена запись экрана и окно приложения попадает в видимую область. Предложенная возможность позволяет показывать пользователю предупреждения о записи в случае отображения конфиденциальных данных.
Добавлен API ApplicationStartInfo, через который можно получить информацию о состоянии при запуске программы. Например, можно узнать прокэшированы ли компоненты приложения (состояния cold, warm или hot), как долго выполнялись разные стадии запуска, что послужило причиной запуска, а также определить метрики, полезные для оптимизации скорости запуска.
Изменена обработка остановленного состояния, при котором выполнение приложения приостанавливается до связанного с приложением действия пользователя. В новой версии предоставлены возможности для определения приложением прекращения приостановки: обработка сообщения BOOT_COMPLETED или использование метода ApplicationStartInfo.wasForceStopped ().
Помимо метода StorageStats.getAppBytes (), позволяющего получить общие данные о размере установленного приложения, добавлен метод StorageStats.getAppBytesByDataType (), дающий возможность получить раздельные сведения о размере пакета APK, скомпилированном коде, извлечённых и сгенерированных данных.
Внесены изменения в API запуска приоритетных сервисов (Foreground Service). Добавлен новый тип приоритетных сервисов — mediaProcessing, который можно использовать для ресурсоёмких операций с мультимедийным содержимым, например, перекодирования из одного формата в другой.
Предложен новый API для работы с движком хранения на базе СУБД SQLite, предоставляющий доступ к расширенным возможностям SQLite.
Добавлен класс AutomaticZenRules, позволяющий приложениям настроить правила применения режима «не беспокоить» и определить ситуации, когда эти правила должны применяться.
В сервисах для показа рекламы в мобильных приложениях (Android AD Services) задействованы последние наработки проекта Privacy Sandbox, нацеленного на создание техник персонализации показа рекламы без нарушения конфиденциальности пользователя (определение общей категории интересов пользователя без индивидуальной идентификации).
В хранилище Health Connect добавлена поддержка новых типов данных, применяемых при занятиях спортом и контроле за питанием. Например, добавлены поля для отслеживания среднего числа пройденных шагов и потребления трансжиров. Health Connect обеспечивает централизованное хранение данных с фитнес-браслетов и прочих устройств, имеющих отношение к здоровью пользователя, и организует совместный доступ разных приложений к данным о здоровье.
В API FileIntegrityManager добавлена поддержка предоставляемого ядром Linux механизма fs-verity для прозрачного контроля целостности и подлинности отдельных файлов по ассоциированным с файлами криптографическим подписям, хранимым в области метаданных.
В API для предоставления совместного доступа к экрану добавлена возможность захвата отдельных окон приложений, а не всего содержимого экрана.
Источник: http://www.opennet.ru/opennews/art.shtml? num=61808
© OpenNet