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

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

Подробный список новых, измененных и удаленных API можно найти в отчете о различиях API . Подробную информацию о новых API см. в справочнике по API Android — новые API выделены для наглядности. Кроме того, чтобы узнать об областях, в которых изменения платформы могут повлиять на ваши приложения, обязательно ознакомьтесь с изменениями в поведении Android 12 для приложений, ориентированных на 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 .

Поиск приложений

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

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

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

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

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

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

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

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

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

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

Android 12 теперь поддерживает жесты сохранения и масштабирования для окна PiP:

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

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

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

Эти особенности заключаются в следующем:

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

В 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 .

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

Аудио фокус

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

Дополнительные сведения см . в разделе «Аудио фокус» в Android 12 и более поздних версиях .

Обновления МедиаДрм

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

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

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

Камера

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

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

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

Дополнительные сведения см. в разделе CameraExtensionCharacteristics .

Поддержка сенсора камеры Quad Bayer

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

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

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

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

Дополнительные сведения см. в разделе Предоставление приложениям прямого доступа к следам захоронения.

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

В Android 12 представлена ​​поддержка изображений, использующих формат файлов изображений AV1 (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 . Когда этот API был представлен в Android 11, он декодировал только первое изображение из анимаций в этих форматах.

Используйте 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, так и для сотовой связи. Возвращаемые значения теперь представляют собой средневзвешенную пропускную способность пользователя за все время для каждого оператора связи или SSID Wi-Fi, типа сети и уровня сигнала для всех приложений на устройстве. Это может дать более точную и реалистичную оценку ожидаемой пропускной способности, предоставить оценки при холодном запуске приложения и требует меньшего количества циклов по сравнению с использованием других методов оценки пропускной способности.

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

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

  • На устройствах под управлением Android 12 (уровень API 31) и выше вы можете использовать обратный вызов onServiceLost() , чтобы получать оповещения, когда ваше приложение потеряло обнаруженную службу из-за остановки или выхода службы за пределы диапазона.
  • Способ настройки нескольких путей к данным (пути к данным NAN) меняется и становится более эффективным. Более ранние версии использовали обмен сообщениями L2 для обмена информацией об одноранговых узлах инициаторов, что приводило к задержке. На устройствах под управлением 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
,

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

Подробный список новых, измененных и удаленных API можно найти в отчете о различиях API . Подробную информацию о новых API см. в справочнике по API Android — новые API выделены для наглядности. Кроме того, чтобы узнать об областях, в которых изменения платформы могут повлиять на ваши приложения, обязательно ознакомьтесь с изменениями в поведении Android 12 для приложений, ориентированных на 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 .

Поиск приложений

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

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

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

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

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

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

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

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

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

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

Android 12 теперь поддерживает жесты сохранения и масштабирования для окна PiP:

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

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

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

Эти особенности заключаются в следующем:

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

В 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 должны быть скрыты, когда видно собственное окно приложения. Приложения могут выбрать это при отображении чувствительных экранов, таких как потоки подтверждения транзакций.

Приложения, которые показывают Windows of 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() Этот метод помогает добавить дополнительный уровень безопасности к уведомлениям на заблокированных устройствах.

Локализоватные строки для биометрического прозрачного

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

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

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

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

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

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

Разработчики могут отказаться от этой функции, добавив новый тег Metadata, включая строку 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 объявляет о классе производительности, который оно поддерживает. Разработчики могут проверить класс производительности устройства во время выполнения и обеспечить обновленные впечатления, которые в полной мере используют возможности устройства.

Смотрите класс Performance для получения более подробной информации.

Видео -кодирование улучшений

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

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

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

Аудио Фокус

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

Смотрите аудио фокусировку в Android 12 и выше для получения более подробной информации.

MediaDRM обновления

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

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

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

Камера

Камера2 расширения поставщиков

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

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

Дополнительные сведения см. в разделе CameraExtensionCharacteristics .

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

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

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

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

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

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

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

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

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

Android 12 добавляет новый RenderEffect , который применяет общие графические эффекты, такие как размытые, цветные фильтры, эффекты Android -шейдера и многое другое для View S и иерархий рендеринга. Эффекты могут быть объединены как либо цепные эффекты (которые составляют внутренний и внешний эффект) или смешанные эффекты. Различные устройства 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, ваши устройства должны быть подключены с помощью диспетчера компаньонов . Для получения дополнительной информации см. CompanionDeviceManager.startObservingDevicePresence() и CompanionDeviceService.onDeviceAppeared() .

Профили диспетчера компаньона

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

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

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

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

Улучшения оценки полосы пропускания

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

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

Android 12 добавляет некоторые усовершенствования в Wi-Fi Able:

  • На устройствах под управлением Android 12 (API -уровень 31) и выше, вы можете использовать обратный вызов onServiceLost() который будет предупрежден, когда ваше приложение потеряло обнаруженную услугу из -за остановки услуг или выхода из диапазона.
  • То, как настраиваются несколько путей данных (пути данных NAN), изменяется, чтобы быть более эффективным. Более ранние версии использовали сообщения L2 для обмена информацией о сверстниках инициаторов, которые ввели задержку. На устройствах, работающих на Android 12 и выше, респондер (сервер) может быть настроен, чтобы принять любой одноранговый, то есть он не должен знать информацию о инициаторе заранее. Это ускоряет подключение DataPath и позволяет нескольким точечным ссылкам только с одним сетевым запросом.
  • Чтобы предотвратить отклонение структуры обнаружения или запросов на подключение из -за запуска ресурсов, на устройствах, работающих на 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:

Сорт Апис
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