В 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](https://developer.android.com/static/images/about/versions/12/appsearch.png?authuser=5&hl=ru)
AppSearch существует в двух вариантах: локальный индекс для использования вашим приложением, совместимый со старыми версиями Android, или центральный индекс, поддерживаемый для всей системы в Android 12. Используя центральный индекс, ваше приложение может разрешить отображение своих данных на пользовательский интерфейс системы отображается с помощью предварительно установленного интеллектуального компонента системы. Какие именно данные отображаются на поверхностях системного пользовательского интерфейса, зависит от OEM-производителя. Кроме того, ваше приложение может безопасно обмениваться данными с другими приложениями, чтобы они также могли выполнять поиск по этим данным.
Узнайте больше о AppSearch в руководстве для разработчиков и начните использовать его с библиотекой AppSearch Jetpack , которая предоставляет удобную для разработчиков поверхность API, а также поддержку процессора аннотаций.
Игровой режим
API игрового режима и вмешательства в игровом режиме позволяют оптимизировать игровой процесс, расставляя приоритеты таких характеристик, как производительность или время автономной работы, на основе настроек пользователя или конкретных конфигураций игры.
Дополнительную информацию см. в разделе Игровой режим .
Рекомендации и улучшения режима «Картинка в картинке» (PiP)
В Android 12 представлены следующие улучшения режима PiP:
Поддержка новых жестов PiP
Android 12 теперь поддерживает жесты сохранения и масштабирования для окна PiP:
Чтобы спрятать окно, пользователь может перетащить окно к левому или правому краю. Чтобы удалить окно, пользователь может либо коснуться видимой части спрятанного окна, либо перетащить его.
Теперь пользователь может изменить размер окна PiP, используя масштабирование.
Рекомендуемые новые функции, обеспечивающие безупречный переход в режиме PiP
В Android 12 были внесены значительные косметические улучшения в анимированные переходы между полноэкранным режимом и окнами PiP. Мы настоятельно рекомендуем внести все применимые изменения; как только вы это сделаете, эти изменения автоматически масштабируются на большие экраны, такие как складные устройства и планшеты, без каких-либо дополнительных действий.
Эти особенности заключаются в следующем:
Новый флаг API для более плавного перехода в режим PiP с помощью навигации с помощью жестов.
Используйте флаг
setAutoEnterEnabled
, чтобы обеспечить более плавный переход в режим «картинка в картинке» при пролистывании до исходного положения в режиме навигации с помощью жестов. Раньше Android ждал завершения анимации смахивания вверх, прежде чем исчезать в окне PiP.Более плавная анимация при входе и выходе из режима PiP.
Флаг
SourceRectHint
теперь используется повторно для реализации более плавной анимации при входе в режим PiP и выходе из него.Новый флаг API для отключения плавного изменения размера невидеоконтента.
Флаг
SeamlessResizeEnabled
обеспечивает гораздо более плавную анимацию плавного затухания при изменении размера невидеоконтента в окне PiP. Раньше изменение размера невидеоконтента в окне 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-адресам последних страниц .
Безопасность и конфиденциальность
Панель конфиденциальности
На поддерживаемых устройствах под управлением 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)
![](https://developer.android.com/static/images/about/versions/12/phishing-detection.png?authuser=5&hl=ru)
На поддерживаемых устройствах 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
, необходимо выполнить следующие шаги:
- Создайте
MediaDrm
. - Откройте сеанс, чтобы получить идентификатор сеанса.
- Создайте
MediaCrypto
используя идентификатор сеанса. - Вызовите
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()
.
Профили диспетчера сопутствующих устройств
![](https://developer.android.com/static/images/about/versions/12/companion-device-profile.png?authuser=5&hl=ru)
Партнерские приложения на 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 представлены следующие возможности управления хранилищем:
- Поддержка хранилища мультимедиа для
MediaDocumentsProvider
, когда ваше приложение получает URI мультимедиа, эквивалентный URI данного поставщика документов . - Каталог для записей голоса .
- Разрешение
MANAGE_MEDIA
, которое позволяет приложению выполнять операции управления мультимедиа, не показывая пользователю диалоговое окно подтверждения для каждой операции. - Приложения, у которых есть как разрешение
MANAGE_EXTERNAL_STORAGE
, так и разрешениеQUERY_ALL_PACKAGES
, например приложения для управления файлами, могут вызывать настраиваемое действие для управления пространством хранения другого приложения при условии, что другое приложение создает настраиваемое действие .
Основная функциональность
Автоматические обновления приложений
В 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 |