Дата выхода: предварительная версия выпущена 18 февраля 2021 года, релиз - 04 октября 2021 года. API: 31.
Сладкое название: Snow Cone.
Визуальные изменения
- Эффект тактильной обратной связи. Приложения на Android 12 могут использовать вибрацию для тактильной обратной связи. Этот эффект позволяет физически ощущать звук и может применяться для придания дополнительной реалистичности играм и звуковым программам.
- API для адаптации элементов интерфейса к устройствам со сгрулёнными экранами. С помощью RoundedCorner можно узнать радиус и центр закругления, а через WindowInsets.getRoundedCorner(int position) определить координаты каждого сгруглённого угла.
- Улучшение режима Picture in Picture. Переход в/из режима теперь более плавный. Также была изменена реакция на некоторые старые жесты, добавлена поддержка новых жестов.
- Улучшен режим погружения (Immersive mode). В данном режиме приложение занимает весь экран со скрытием служебных панелей. В Android 12 упростили навигацию в этом режиме при помощи одного жеста “смахивания”.
- API для работы с контентом из разных источников (из буфера обмена, клавиатуры или перетаскивания). Осуществляется с помощью интерфейса OnReceiveContentListener, который может быть прикреплён к различным компонентам пользовательского интерфейса. Тип контента может быть как текстовым, так и нетекстовым (HTML, изображения, видео, аудиофайлы и т.д.)
- Внешний вид уведомлений. Ранее у разработчиков был свободный выбор по оформлению своих уведомлений, что могло запутать пользователей или вызвать проблемы совместимости на разных устройствах. Начиная с Android 12 будет применяться стандартный шаблон для всех уведомлений, что сделает все уведомления визуально согласованными и простыми в использовании для пользователей.
Графика, изображения, медиа
- Поддержка изображений формата AVIF.
- API для часто используемых визуальных эффектов (размытие, цветовые фильтры и др.). Реализуется с помощью RenderEffect, который применяет графические эффекты к View или к целой цепочке View. Эффекты можно комбинировать и смешивать.
- Нативное декодирование анимированных изображений. Теперь можно использовать ImageDecoder вместо сторонних библиотек.
- Android 12 может автоматически перекодировать видео в формате HEVC и HDR в AVC.
Безопасность
- Новое разрешение HIDE_OVERLAY_WINDOWS. Если в вашем приложении будет использоваться данное разрешение, то во время работы пользователя с вашим приложением будут скрываться все всплывающие окна типа TYPE_APPLICATION_OVERLAY.
- Новый атрибут knownCerts для разрешений на уровне подписей.
- Расширен набор приложений, которые могут проверять свойства устройства. Ранее это было разрешено только использующим Keymaster 4.0. Начиная с Android 12, любое приложение, предназначенное для Android 12, может выполнить эту проверку с помощью метода
setDevicePropertiesAttestationIncluded()
. Свойства устройства включают в себя следующие поля:BRAND
,DEVICE
,MANUFACTURER
,MODEL
,PRODUCT
. - Безопасные действия с уведомлениями на заблокированном экране. Добавлен новый флаг
setAuthenticationRequired
, с помощью которого можно запрашивать повторную авторизацию в приложении, если пользователь пытается получить к нему доступ через экран блокировки (через уведомление на экране блокировки). До этого можно было только выбрать отображать или не отображать уведомления на экране блокировки. Например, приложение для обмена сообщениями может потребовать авторизоваться перед удаление сообщения или отметкой его как прочитанного итд. - Для всех активити, сервисов и broadcast receiver’ов, которые используют intent-фильтры, требуется явно задавать атрибут
android:exported
в манифесте. Иначе такое приложение не запустится на Android 12. - При создании объектов
PendingIntent
необходимо установить флаг:PendingIntent.FLAG_MUTABLE
- если объект является изменяемымPendingIntent.FLAG_IMMUTABLE
- если объект является неизменяемым
Если флаг не будет установлен, то система выдаст
IllegalArgumentException
. - Новая функция отладки, которая будет предупреждать, если ваше приложение выполняет небезопасный запуск вложенного intent.
Связь
- Улучшена оценка пропускной способности, предоставляемая методами
getLinkDownstreamBandwidthKbps()
иgetLinkUpstreamBandwidthKbps()
. - Новые функции в CompanionDeviceManager. Позволяют пробуждать приложение, когда поблизости находится устройство-компаньон (часы или браслет).
- Улучшения Wi-Fi Aware (NAN).
- Поддержка подключений STA + STA.
Конфиденциальность
- Ограничена частота обновления информации с датчиков движения. Система устанавливает ограничение в 200Гц и для увеличения скорости необходимо разрешение
HIGH_SAMPLING_RATE_SENSORS
. - Новый атрибут SameSite для управления обработкой Cookie. Значение “SameSite=Lax” ограничивает отправку Cookie для межсайтовых субзапросов, таких как запрос изображения или загрузка контента через iframe с другого сайта. В режиме “SameSite=Strict” Cookie не отправляются для любых видов межсайтовых запросов, включая все входящие ссылки с внешних сайтов.
Полезные ссылки
Android 12 - официальная страница.
Android 12 - список изменений с акцентом на визуальную составляющую.
First preview of Android 12 - первый анонс в блоге.
Android 12 Developer Preview 2 - второй анонс в блоге.