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

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

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

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

Материальный Вы

В Android 12 представлен новый язык дизайна Material You , который поможет вам создавать более персонализированные и красивые приложения. Чтобы внедрить все последние обновления Material Design 3 в свои приложения, попробуйте альфа-версию Material Design Components .

Материальный Вы

Улучшения виджетов

В Android 12 обновлен API виджетов, чтобы улучшить взаимодействие пользователей и разработчиков с платформой и лаунчерами. Мы создали руководство, которое поможет вам убедиться в совместимости вашего виджета с Android 12 и добавить в него новые функции.

Дополнительную информацию см. в разделе Улучшения виджетов Android 12 .

Вставка расширенного контента

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

Более подробную информацию см. в разделе Получение расширенного контента .

API заставок приложений

В Android 12 представлена новая анимация запуска всех приложений, которая включает в себя переход в приложение с момента запуска, заставку со значком приложения и переход к самому приложению. Подробнее см. в руководстве разработчика заставок .

API с закругленными углами

В Android 12 представлены RoundedCorner и WindowInsets.getRoundedCorner(int position) , которые предоставляют радиус и центральную точку для скругленных углов.

Более подробную информацию см. в разделе Закругленные углы .

Богатые тактильные впечатления

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

Эффекты актуатора

В Android 12 добавлены выразительные эффекты, такие как низкий тик , которые используют более широкий частотный диапазон новейших приводов. Разработчики игр теперь могут независимо использовать несколько различных приводов в игровых контроллерах для синхронного воспроизведения одного и того же эффекта или различных тактильных эффектов на нескольких приводах. Разработчикам мы рекомендуем использовать константы и примитивы в качестве строительных блоков для создания насыщенных тактильных эффектов: константы — для улучшения событий пользовательского интерфейса, а компоновщик тактильных сигналов — для упорядочивания примитивов для создания более сложных эффектов. Эти API доступны для тестирования на устройствах Pixel 4, и мы продолжаем работать с нашими партнёрами-производителями устройств, чтобы обеспечить поддержку новейших технологий тактильных эффектов для пользователей по всей экосистеме.

Тактильные эффекты, связанные со звуком

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

Более подробную информацию см. в справочной документации HapticGenerator .

AppSearch

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

Диаграмма, иллюстрирующая индексацию и поиск в AppSearch

AppSearch доступен в двух вариантах: локальный индекс для вашего приложения, совместимый со старыми версиями Android, или центральный индекс, поддерживаемый для всей системы в Android 12. Используя центральный индекс, ваше приложение может отображать свои данные на поверхностях системного пользовательского интерфейса с помощью предустановленного компонента интеллектуального анализа. То, какие именно данные будут отображаться на поверхностях системного пользовательского интерфейса, зависит от производителя оборудования. Кроме того, ваше приложение может безопасно обмениваться данными с другими приложениями, позволяя им также выполнять поиск по этим данным.

Узнайте больше об AppSearch в руководстве для разработчиков и начните использовать его с библиотекой AppSearch Jetpack , которая предоставляет удобную для разработчиков поверхность API, а также поддержку процессора аннотаций.

Игровой режим

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

Более подробную информацию см. в разделе Игровой режим .

Рекомендации и улучшения для режима «картинка в картинке» (PiP)

В Android 12 реализованы следующие улучшения режима PiP:

Поддержка новых жестов PiP

Android 12 теперь поддерживает жесты «скрыть» и «развести/развести» для изменения масштаба окна «картинка в картинке»:

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

  • Теперь пользователь может изменять размер окна PiP, используя масштабирование пальцами.

В Android 12 были внесены значительные косметические улучшения в анимированные переходы между полноэкранным режимом и режимом «картинка в картинке». Мы настоятельно рекомендуем реализовать все необходимые изменения; после этого они автоматически масштабируются на большие экраны, такие как складные устройства и планшеты, без необходимости дополнительных действий.

Эти особенности следующие:

Новые уведомления о телефонных звонках, позволяющие ранжировать важность входящих звонков

В Android 12 добавлен новый стиль уведомлений Notification.CallStyle для телефонных звонков. Этот шаблон позволяет вашему приложению отмечать важность активных звонков, отображая в строке состояния заметную метку, показывающую время звонка. Пользователь может нажать на эту метку, чтобы вернуться к разговору.

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

Реализуйте следующий код для всех типов вызовов.

Котлин

// Create a new call with the user as caller.
val incoming_caller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Ява

// Create a new call with the user as caller.
Person incoming_caller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

Используйте forIncomingCall() для создания уведомления в стиле звонка для входящего вызова.

Котлин

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller)

Ява

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller);

Используйте forOngoingCall() для создания уведомления в стиле вызова для текущего вызова.

Котлин

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Ява

// Create a call style notification for an ongoing call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller);

Используйте forScreeningCall() для создания уведомления в стиле вызова для проверки вызова.

Котлин

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Ява

Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

Расширенная поддержка изображений для уведомлений

В Android 12 вы теперь можете расширить возможности уведомлений своего приложения, добавив анимированные изображения в уведомления MessagingStyle() и BigPictureStyle() . Кроме того, ваше приложение теперь позволяет пользователям отправлять изображения при ответе на сообщения из панели уведомлений.

Улучшения режима погружения для навигации жестами

Android 12 консолидирует существующее поведение, чтобы упростить выполнение команд навигации жестами в режиме погружения . Кроме того, Android 12 обеспечивает обратную совместимость с режимом «прилипания» в режиме погружения .

Недавние публикации URL (только Pixel)

На устройствах Pixel пользователи теперь могут делиться ссылками на недавно просмотренный веб-контент прямо с экрана «Недавние». После просмотра контента в приложении пользователь может смахнуть на экран «Недавние» и найти приложение, в котором он просматривал этот контент, а затем нажать на кнопку ссылки, чтобы скопировать или поделиться URL-адресом.

Для получения дополнительной информации см. раздел Включить общий доступ к URL-адресам недавних ресурсов .

Безопасность и конфиденциальность

Панель управления конфиденциальностью

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

На поддерживаемых устройствах под управлением Android 12 и выше в системных настройках отображается экран «Панель конфиденциальности». На этом экране пользователи могут получить доступ к отдельным экранам, показывающим, когда приложения получают доступ к данным о местоположении, камере и микрофоне. На каждом экране отображается временная шкала доступа различных приложений к определённому типу данных. На рисунке 1 показана временная шкала доступа к данным о местоположении.

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

Разрешения Bluetooth

В Android 12 появились разрешения BLUETOOTH_SCAN , BLUETOOTH_ADVERTISE и BLUETOOTH_CONNECT . Эти разрешения упрощают взаимодействие приложений, предназначенных для Android 12, с устройствами Bluetooth , особенно для приложений, которым не требуется доступ к данным о местоположении устройства.

Обновите декларации разрешений Bluetooth вашего приложения

Чтобы подготовить устройство к использованию Android 12 или более поздней версии, обновите логику приложения. Вместо объявления устаревшего набора разрешений Bluetooth заявите более современный набор разрешений Bluetooth .

Поиск группы разрешений

В Android 12 и выше вы можете запросить, как система организует предоставляемые платформой разрешения в группы разрешений:

  • Чтобы определить группу разрешений, в которую система поместила платформенно-определяемое разрешение, вызовите getGroupOfPlatformPermission() .
  • Чтобы определить разрешения, определенные платформой, которые система поместила в определенную группу разрешений, вызовите getPlatformPermissionsForGroup() .

Скрыть окна наложения приложений

Чтобы предоставить разработчикам больше контроля над тем, что видят пользователи при взаимодействии с приложением разработчика, в Android 12 появилась возможность скрывать окна наложений, которые рисуются приложениями, имеющими разрешение SYSTEM_ALERT_WINDOW .

После объявления разрешения HIDE_OVERLAY_WINDOWS приложение может вызвать метод setHideOverlayWindows() чтобы указать, что все окна типа TYPE_APPLICATION_OVERLAY должны быть скрыты, когда отображается собственное окно приложения. Приложения могут выбрать это при отображении конфиденциальных экранов, таких как потоки подтверждения транзакций.

Приложения, отображающие окна типа TYPE_APPLICATION_OVERLAY должны рассмотреть альтернативы, которые могут быть более подходящими для их варианта использования, например, «картинка в картинке» или «пузыри» .

Флаг защиты разрешения известных подписчиков

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

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

Подтверждение свойств устройства

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

Начиная с Android 9 (уровень API 28), владельцы политик устройств (DPO) , использующие Keymaster 4.0 или выше, могут проверять свойства устройства в этих сертификатах аттестации. Начиная с Android 12, любое приложение, предназначенное для Android 12 (уровень API 31) или выше, может выполнять эту проверку с помощью метода setDevicePropertiesAttestationIncluded() .

Сгенерированные свойства устройства включают следующие поля Build :

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

Безопасные действия с уведомлениями на экране блокировки

Начиная с Android 12, класс Notification.Action.Builder поддерживает метод setAuthenticationRequired() , который позволяет приложению требовать разблокировки устройства перед выполнением определённого действия. Этот метод помогает повысить уровень безопасности уведомлений на заблокированных устройствах.

Локализуемые строки для BiometricPrompt

В Android 12 представлены новые API, которые помогут улучшить пользовательский опыт биометрической аутентификации в вашем приложении. Новый вложенный класс BiometricManager.Strings включает методы getButtonLabel() , getPromptMessage() и getSettingName() , которые позволяют вашему приложению получать удобочитаемую и локализованную метку кнопки, подсказку или название параметра приложения. Используйте эти метки для создания более точных инструкций для пользователя, специфичных для используемых методов биометрической аутентификации, например, «Использовать разблокировку с помощью лица» или «Использовать отпечаток пальца для продолжения».

Обнаружение фишинга в приложениях обмена сообщениями (только Pixel)

Пользователь видит подобное сообщение при обнаружении подозрительного сообщения.

На поддерживаемых устройствах Pixel система Android 12 обнаруживает фишинг в сообщениях, полученных в популярных мессенджерах. Система использует встроенное машинное обучение для выявления подозрительной активности. При обнаружении фишинга система отображает предупреждающее сообщение поверх интерфейса мессенджера. Например, функция обнаружения фишинга может предупреждать пользователей о следующих потенциальных рисках:

  • Подозрительные запросы, такие как отправка кода, денег или чего-то подобного
  • Ненадежные URL-адреса
  • Вредоносные вложения
  • Ссылки на вредоносные приложения

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

Разработчики могут отказаться от этой функции, добавив новый тег метаданных, включающий строку com.google.android.ALLOW_PHISHING_DETECTION , в файлы манифеста своего приложения. Например:

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

СМИ

Совместимое перекодирование медиа

Начиная с Android 12 (уровень API 31), система может автоматически перекодировать видео HEVC (H.265) и HDR (HDR10 и HDR10+), записанные на устройстве, в формат AVC (H.264), который широко совместим со стандартными проигрывателями. Это позволяет использовать преимущества современных кодеков (при их наличии), не жертвуя совместимостью со старыми приложениями.

Более подробную информацию см. в разделе «Совместимое перекодирование медиафайлов» .

Класс производительности

В Android 12 представлен стандарт, называемый классом производительности . Класс производительности определяет аппаратные возможности, выходящие за рамки базовых требований Android. Каждое устройство Android заявляет поддерживаемый им класс производительности. Разработчики могут проверять класс производительности устройства во время выполнения и предоставлять обновлённые возможности, которые в полной мере используют его возможности.

Более подробную информацию смотрите в разделе Класс производительности .

Улучшения кодирования видео

Android 12 определяет стандартный набор ключей для управления значением параметра квантования (QP) для кодирования видео, что позволяет разработчикам избегать специфичного для поставщика кода.

Новые ключи доступны в API MediaFormat , а также в библиотеке NDK Media .

Начиная с Android 12, видеокодеры устанавливают минимальный порог качества. Это гарантирует, что пользователи не столкнутся с крайне низким качеством при кодировании видео с высокой сложностью сцен.

Аудиофокус

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

Более подробную информацию см. в разделе Аудиофокус в Android 12 и более поздних версиях .

Обновления MediaDrm

Чтобы определить, требуется ли компонент безопасного декодера с текущими API MediaDrm , необходимо выполнить следующие шаги:

  1. Создайте MediaDrm .
  2. Откройте сеанс, чтобы получить идентификатор сеанса.
  3. Создайте MediaCrypto , используя идентификатор сеанса.
  4. Вызовите MediaCrypto.requiresSecureDecoderComponent(mimeType) .

С помощью новых методов requiresSecureDecoder(@NonNull String mime) и requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) вы можете определить это сразу после создания MediaDrm .

Камера

Расширения поставщика Camera2

Многие наши партнёры-производители устройств разработали собственные расширения для камеры, такие как «Боке», HDR, «Ночной режим» и другие, которые они хотят использовать в приложениях для создания уникальных впечатлений на своих устройствах. Библиотека CameraX уже поддерживает эти расширения от поставщиков. В Android 12 эти расширения от поставщиков теперь доступны непосредственно в платформе.

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

Более подробную информацию см. в разделе CameraExtensionCharacteristics .

Поддержка четырех датчиков камеры Bayer

Многие современные устройства Android оснащены сенсорами сверхвысокого разрешения, как правило, с фильтрами Quad или Nona Bayer, которые обеспечивают высокую гибкость в плане качества изображения и производительности при слабом освещении. В Android 12 представлены новые API платформы, которые позволяют сторонним приложениям в полной мере использовать возможности этих универсальных сенсоров. Новые API поддерживают уникальное поведение этих сенсоров и учитывают возможность поддержки различных конфигураций и комбинаций потоков при работе в режиме полного разрешения или «максимального разрешения» по сравнению с режимом «по умолчанию».

Графика и изображения

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

Начиная с Android 12, вы можете получить доступ к нативному объекту аварийного завершения приложения как к буферу протокола через метод ApplicationExitInfo.getTraceInputStream() . Буфер протокола сериализуется с помощью этой схемы . Ранее получить доступ к этой информации можно было только через Android Debug Bridge (adb).

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

Поддержка изображений AVIF

В Android 12 реализована поддержка изображений в формате AV1 Image File Format (AVIF). AVIF — это контейнерный формат для изображений и последовательностей изображений, закодированных с помощью AV1. AVIF использует преимущества внутрикадрового кодирования, получаемого при сжатии видео. Это значительно улучшает качество изображения при том же размере файла по сравнению со старыми форматами изображений, такими как JPEG. Подробный обзор преимуществ этого формата см. в блоге Джейка Арчибальда.

Более простое размытие, цветовые фильтры и другие эффекты

В Android 12 добавлен новый RenderEffect , который применяет распространённые графические эффекты, такие как размытие, цветовые фильтры, эффекты шейдеров Android и другие, к View и иерархиям рендеринга. Эффекты можно комбинировать как цепочку (составляющую внутренний и внешний эффекты), так и смешанные эффекты. Различные устройства Android могут поддерживать эту функцию из-за ограниченной вычислительной мощности.

Эффекты также можно применять к базовому RenderNode для View путем вызова View.setRenderEffect(RenderEffect) .

Чтобы реализовать RenderEffect :

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

Декодирование собственных анимированных изображений

В Android 12 API NDK ImageDecoder был расширен для декодирования всех кадров и данных о времени в изображениях в форматах GIF и WebP . В Android 11 этот API декодировал только первое изображение анимации в этих форматах.

Используйте ImageDecoder вместо сторонних библиотек, чтобы еще больше уменьшить размер APK и воспользоваться преимуществами будущих обновлений, связанных с безопасностью и производительностью.

Более подробную информацию об API можно найти в справочнике по API и примере на GitHub .

Связность

Поддержание активности сопутствующих приложений

Чтобы обеспечить постоянную работу сопутствующих приложений для управления устройством, в Android 12 представлены API-интерфейсы, которые выполняют следующие функции:

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

Для использования API ваши устройства должны быть подключены с помощью Companion Device Manager . Подробнее см. в разделах CompanionDeviceManager.startObservingDevicePresence() и CompanionDeviceService.onDeviceAppeared() .

Профили диспетчера сопутствующих устройств

Диалоговое окно разрешений, которое использует профиль сопутствующего устройства для запроса нескольких разрешений в одном запросе.

Партнерские приложения на Android 12 (уровень API 31) и выше могут использовать профили сопутствующих устройств при подключении к часам. Использование профиля упрощает процесс регистрации, объединяя предоставление набора разрешений, специфичных для типа устройства, в один шаг.

Пакетные разрешения предоставляются сопутствующему приложению после подключения устройства и действуют только пока устройство ассоциировано. Удаление приложения или отмена ассоциации приводит к удалению разрешений.

Для получения дополнительной информации см. AssociationRequest.Builder.setDeviceProfile() .

Улучшения в оценке пропускной способности

В Android 12 возможности оценки пропускной способности, предоставляемые методами getLinkDownstreamBandwidthKbps() и getLinkUpstreamBandwidthKbps() улучшены как для Wi-Fi, так и для сотовой связи. Возвращаемые значения теперь представляют собой средневзвешенную пропускную способность пользователя за всё время работы с каждым оператором или идентификатором Wi-Fi, типом сети и уровнем сигнала для всех приложений на устройстве. Это позволяет получить более точную и реалистичную оценку ожидаемой пропускной способности, обеспечивает оценку при холодном запуске приложения и требует меньше циклов по сравнению с другими методами оценки пропускной способности.

Улучшения Wi-Fi Aware (NAN)

В Android 12 реализованы некоторые улучшения Wi-Fi Aware:

  • На устройствах под управлением Android 12 (уровень API 31) и выше вы можете использовать обратный вызов onServiceLost() , чтобы получать оповещения о том, что ваше приложение потеряло обнаруженную службу из-за ее остановки или выхода за пределы диапазона.
  • Способ настройки нескольких путей передачи данных (путей передачи данных NAN) меняется в сторону повышения эффективности. В более ранних версиях для обмена информацией об одноранговых узлах инициаторов использовался обмен сообщениями уровня 2, что приводило к задержкам. На устройствах под управлением Android 12 и более поздних версий ответчик (сервер) можно настроить на приём любого однорангового узла, то есть ему не требуется заранее знать информацию об инициаторе. Это ускоряет установку путей передачи данных и позволяет организовать несколько соединений «точка-точка» с помощью всего одного сетевого запроса.
  • Чтобы предотвратить отклонение фреймворком запросов на обнаружение или подключение из-за нехватки ресурсов, на устройствах под управлением Android 12 и выше можно вызвать WifiAwareManager.getAvailableAwareResources() . Возвращаемое значение этого метода позволяет получить количество доступных путей передачи данных, количество доступных сеансов публикации и количество доступных сеансов подписки.

Одновременный одноранговый доступ + подключение к Интернету

Если устройства с Android 12 (уровень API 31) и выше работают на устройствах с аппаратной поддержкой, использование одноранговых подключений не приведет к разрыву существующего Wi-Fi-подключения при создании подключения к одноранговому устройству. Чтобы проверить поддержку этой функции, используйте WifiManager.isMultiStaConcurrencySupported() .

Включить отключение экрана для платежей NFC

В приложениях для Android 12 и более поздних версий можно включить NFC-платежи без включения экрана устройства, установив параметр requireDeviceScreenOn в значение false . Подробнее о NFC-платежах с выключенным или заблокированным экраном см. в разделе Поведение выключенного и заблокированного экрана .

Хранилище

В Android 12 представлены следующие возможности управления хранилищем:

Основная функциональность

Автоматические обновления приложений

В Android 12 появился метод setRequireUserAction() для приложений, использующих API PackageInstaller . Этот метод позволяет приложениям-установщикам выполнять обновления без необходимости подтверждения пользователем.

Информация о чипсете устройства

В Android 12 в android.os.Build добавлены две константы, которые предоставляют информацию о производителе и модели чипсета SoC через SDK. Эту информацию можно получить, вызвав Build.SOC_MANUFACTURER и Build.SOC_MODEL соответственно.

Обновления основных API Java

Основываясь на просьбах и сотрудничестве с разработчиками, мы добавили следующие основные библиотеки в Android 12:

Сорт API-интерфейсы
java.lang.Deprecated
java.lang.Byte
java.lang.Short
java.lang.Math
java.lang.StrictMath
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration
java.time.LocalTime