Android 10 для разработчиков

Android 10 построен на трех важных темах. Во-первых, Android 10 формирует передовые мобильные инновации благодаря передовому машинному обучению и поддержке новых устройств, таких как складные телефоны и телефоны с поддержкой 5G. Кроме того, в Android 10 основное внимание уделяется конфиденциальности и безопасности: почти 50 функций обеспечивают пользователям большую защиту, прозрачность и контроль. Наконец, Android 10 расширяет возможности контроля цифрового благополучия пользователей, поэтому отдельные люди и семьи могут найти лучший баланс с технологиями.

Вот что нового в Android 10 для разработчиков и как вы можете использовать его уже сегодня.

Инновации и новый опыт

С Android 10 вы можете воспользоваться новейшими аппаратными и программными инновациями, чтобы создавать потрясающие возможности приложений для пользователей.

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

Складные

Опираясь на надежную поддержку нескольких окон, Android 10 расширяет возможности многозадачности между окнами приложений и обеспечивает непрерывность экрана, чтобы поддерживать состояние вашего приложения, когда устройство складывается или раскладывается. В Android 10 добавлен ряд улучшений в onResume и onPause для поддержки множественного возобновления и уведомления вашего приложения, когда оно находится в фокусе. Он также меняет способ работы атрибута манифеста resizeableActivity , чтобы помочь вам управлять отображением вашего приложения на складных и больших экранах. Чтобы помочь вам создавать складные устройства, вы можете настроить складной эмулятор как виртуальное устройство (AVD) в Android Studio. Подробную информацию о том, как оптимизировать приложения для складных устройств, см. в руководстве для разработчиков .

Сети 5G

5G обещает обеспечить стабильно более высокую скорость и меньшую задержку. В Android 10 добавлена ​​поддержка платформы 5G и расширены существующие API , чтобы помочь вам воспользоваться этими улучшениями. Вы можете использовать API-интерфейсы подключения, чтобы определить, имеет ли устройство соединение с высокой пропускной способностью, и проверить, является ли соединение лимитным. Благодаря этому ваши приложения и игры смогут адаптировать богатые и захватывающие впечатления для пользователей через 5G.

Умный ответ в уведомлениях

Android 10 использует машинное обучение на устройстве, чтобы предлагать контекстные действия в уведомлениях, такие как интеллектуальные ответы на сообщения или открытие карты для адреса в уведомлении. Ваши приложения могут сразу же воспользоваться этой функцией, без необходимости каких-либо действий. Предоставленные системой интеллектуальные ответы и действия по умолчанию вставляются непосредственно в уведомления. При желании вы по-прежнему можете предоставлять свои собственные ответы и действия. Просто откажитесь от Smart Reply для каждого уведомления, используя setAllowGeneratedReplies() и setAllowSystemGeneratedContextualActions() .

Smart Reply может предлагать действия на основе содержимого уведомления.

Темная тема

В Android 10 добавлена ​​общесистемная темная тема, которая идеально подходит для слабого освещения и помогает экономить заряд батареи. Пользователи могут активировать новую общесистемную темную тему, перейдя в «Настройки» или включив «Экономия заряда». Это изменит пользовательский интерфейс системы на темный и включит темную тему приложений, которые ее поддерживают. Вы можете создать собственную темную тему для своего приложения или выбрать новую функцию Force Dark, которая позволяет системе динамически создавать темную версию из существующей темы. Вы также можете воспользоваться функцией DayNight AppCompat , чтобы предложить темную тему для пользователей более ранних версий Android. Дополнительную информацию см. в руководстве разработчика .

Android 10 может динамически создавать темную тему для вашего приложения с помощью Force Dark.

Навигация с помощью жестов

Навигация с помощью жестов позволяет приложениям просматривать контент в полноэкранном режиме.

В Android 10 представлен режим полностью жестовой навигации, который устраняет область панели навигации и позволяет приложениям использовать полноэкранный режим для обеспечения более богатого и захватывающего опыта. Он сохраняет знакомую навигацию «Назад», «Домой» и «Недавние» с помощью пролистывания по краям, а не видимых кнопок. Чтобы плавно сочетаться с навигацией с помощью жестов, вам следует двигаться от края до края, рисуя за панелью навигации, чтобы создать эффект присутствия. Чтобы реализовать это, приложения должны использовать API setSystemUiVisibility() для полноэкранного размещения, а затем соответствующим образом обрабатывать WindowInsets , чтобы гарантировать, что важные части пользовательского интерфейса не скрыты. Начните оптимизировать свое приложение уже сегодня и ознакомьтесь с серией публикаций в нашем блоге для получения дополнительной информации.

Панели настроек

Теперь вы можете отображать ключевые системные настройки непосредственно в контексте вашего приложения с помощью нового API панели настроек . Панель настроек — это плавающий пользовательский интерфейс, который вы вызываете, чтобы показать настройки, которые могут понадобиться пользователям, такие как подключение к Интернету, NFC и громкость звука. Например, браузер может отображать панель с настройками подключения, такими как режим полета, Wi-Fi (включая близлежащие сети) и мобильные данные. Чтобы отобразить панель настроек, просто активируйте намерение с помощью одного из новых действий Settings.Panel .

Совместное использование ярлыков

Ярлыки общего доступа ускоряют и упрощают обмен данными, позволяя пользователям напрямую переходить к другому приложению для обмена контентом. Разработчики могут публиковать цели общего доступа, которые запускают определенное действие в их приложениях с прикрепленным содержимым, и они отображаются пользователям в пользовательском интерфейсе общего доступа. Поскольку они публикуются заранее, пользовательский интерфейс общего доступа загружается мгновенно при запуске. Общий доступ к ярлыкам аналогичен ярлыкам приложений и использует тот же API ShortcutInfo . API также поддерживается в библиотеке ShareTarget AndroidX. Подробнее см. в примере приложения .

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

Конфиденциальность для пользователей

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

Теперь пользователи могут предоставить доступ к местоположению, когда приложение находится на переднем плане.

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

Защита данных о местоположении при сканировании сети . Большинству API-интерфейсов для сканирования сетей уже требовалось грубое разрешение на определение местоположения. Android 10 повышает защиту этих API, требуя вместо этого разрешения на точное определение местоположения .

Предотвращение отслеживания устройств . Приложения больше не могут получить доступ к несбрасываемым идентификаторам устройств, которые можно использовать для отслеживания, включая IMEI устройства, серийный номер и аналогичные идентификаторы. MAC-адрес устройства также рандомизируется при подключении к сетям Wi-Fi по умолчанию. Прочтите рекомендации, которые помогут вам выбрать правильные идентификаторы для вашего варианта использования, и ознакомьтесь с подробностями здесь .

Защита пользовательских данных во внешнем хранилище . В Android 10 представлен ряд изменений, которые дают пользователям больше контроля над файлами во внешнем хранилище и данными приложений внутри них. Приложения могут хранить свои собственные файлы в своих частных изолированных программных средах, но должны использовать MediaStore для доступа к общим медиафайлам и использовать системный инструмент выбора файлов для доступа к общим файлам в новой коллекции «Загрузки». Узнайте больше здесь .

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

Безопасность

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

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

TLS 1.3 по умолчанию . Android 10 также по умолчанию включает TLS 1.3 — основную версию стандарта TLS с преимуществами производительности и повышенной безопасности .

Усиление защиты платформы . Android 10 также включает усиление защиты нескольких критически важных для безопасности областей платформы.

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

Камера и медиа

Динамическая глубина для фотографий

Приложения теперь могут запрашивать изображение динамической глубины, которое состоит из метаданных JPEG, XMP, связанных с элементами, связанными с глубиной, а также карты глубины и достоверности, встроенной в один и тот же файл. Они позволяют вам предлагать в вашем приложении специальные параметры размытия и боке. Dynamic Depth — это открытый формат для экосистемы, и мы работаем с нашими партнерами, чтобы внедрить его на устройства под управлением Android 10 и более поздних версий.

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

Захват воспроизведения звука

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

Новые аудио и видео кодеки

В Android 10 добавлена ​​поддержка видеокодека с открытым исходным кодом AV1 , который позволяет медиа-провайдерам передавать высококачественный видеоконтент на устройства Android, используя меньшую пропускную способность . Кроме того, Android 10 поддерживает кодирование звука с помощью Opus — открытого бесплатного кодека, оптимизированного для потоковой передачи речи и музыки, — и HDR10+ для видео с расширенным динамическим диапазоном на устройствах, которые его поддерживают. API MediaCodecInfo представляет более простой способ определения возможностей рендеринга видео на устройстве Android. Для любого кодека вы можете получить список поддерживаемых размеров и частоты кадров.

Собственный MIDI API

Для приложений, выполняющих обработку звука на C++, Android 10 представляет собственный MIDI API для связи с MIDI-устройствами через NDK. Этот API позволяет извлекать MIDI-данные внутри обратного аудиовызова с использованием неблокирующего чтения, что обеспечивает обработку MIDI-сообщений с низкой задержкой. Попробуйте его с примером приложения и исходным кодом здесь .

Направленные масштабируемые микрофоны

Android 10 дает вам больше контроля над захватом звука благодаря новому API MicrophoneDirection . Вы можете использовать API, чтобы указать предпочтительное направление микрофона при аудиозаписи. Например, когда пользователь снимает видео «селфи», вы можете запросить фронтальный микрофон для записи звука (если он существует). Кроме того, этот API представляет стандартизированный способ управления масштабируемыми микрофонами, позволяя вашему приложению контролировать размер поля записи .

Вулкан повсюду

Android 10 расширяет возможности Vulkan благодаря нашей реализации кроссплатформенного API с низкими издержками для высокопроизводительной 3D-графики. Vulkan 1.1 теперь является обязательным требованием для всех 64-битных устройств под управлением Android 10 и выше и рекомендуется для всех 32-битных устройств. Мы уже видим значительный импульс поддержке Vulkan в экосистеме: среди устройств под управлением Android N или выше 53% поддерживают Vulkan 1.0.3 или выше. Учитывая новые требования Android 10, мы ожидаем дальнейшего улучшения внедрения в следующем году.

Возможности подключения

Улучшенное одноранговое соединение и подключение к Интернету.

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

Режимы работы Wi-Fi

Приложения теперь могут запрашивать адаптивный Wi-Fi, включив режимы высокой производительности и низкой задержки . Это может быть большим преимуществом там, где для пользовательского опыта важна низкая задержка, например, игры в реальном времени, активные голосовые вызовы и аналогичные варианты использования. Платформа работает с прошивкой устройства, чтобы обеспечить минимальное энергопотребление. Чтобы использовать новые режимы производительности, вызовите WifiManager.WifiLock.createWifiLock() с WIFI_MODE_FULL_LOW_LATENCY или WIFI_MODE_FULL_HIGH_PERF . В этих режимах платформа работает с прошивкой устройства, чтобы обеспечить минимальное энергопотребление.

Основы Android

Оптимизация АРТ

Улучшения в среде выполнения ART помогают вашим приложениям запускаться быстрее, потреблять меньше памяти и работать более плавно, не требуя от вас никаких действий. Профили ART , предоставляемые Google Play, позволяют ART предварительно скомпилировать части вашего приложения еще до его запуска. Во время выполнения Android 10 добавляет сборку мусора поколений в сборщик мусора с одновременным копированием (CC) ART, чтобы сделать сбор мусора более эффективным с точки зрения времени и ресурсов ЦП, уменьшить количество зависаний и помочь приложениям лучше работать на устройствах более низкого уровня.

На этой диаграмме показано процентное улучшение времени запуска отдельных приложений при тестировании с использованием профилей Play.

API нейронных сетей 1.2

Мы добавили 60 новых операций, включая ARGMAX, ARGMIN, квантованный LSTM, а также ряд оптимизаций производительности. Это закладывает основу для ускорения разработки гораздо более широкого спектра моделей, например моделей обнаружения объектов и сегментации изображений. Мы работаем с поставщиками оборудования и популярными платформами машинного обучения, такими как TensorFlow, над оптимизацией и развертыванием поддержки NNAPI 1.2.

Термальный API

Когда устройства перегреваются, они могут замедлить работу процессора и/или графического процессора, что может неожиданным образом повлиять на приложения и игры. Теперь в Android 10 приложения и игры могут использовать термический API для отслеживания изменений на устройстве и принятия мер по восстановлению нормальной температуры. Например, потоковые приложения могут снизить разрешение/битовую скорость или сетевой трафик, приложение камеры может отключить вспышку или интенсивное улучшение изображения, а игра может снизить частоту кадров или тесселяцию полигонов. Подробнее читайте здесь .

Совместимость через общедоступные API

В Android 10 продолжают расширяться ограничения на интерфейсы, не относящиеся к SDK, поэтому приложения постепенно переходят на использование только общедоступных API . Если интерфейс, который вы сейчас используете, ограничен, вы можете вместо этого запросить новый общедоступный API для этого интерфейса . Чтобы помочь вам осуществить переход и предотвратить сбои в работе ваших приложений, мы включаем ограничения только в том случае, если ваше приложение ориентировано на Android 10 (API 29). Подробнее об ограничениях читайте в руководстве разработчика .

Более быстрые обновления, более свежий код

Android 10 создан для более быстрых обновлений через Project Treble , который обеспечивает согласованный, тестируемый интерфейс между Android и базовым кодом устройства от производителей устройств и производителей микросхем. Благодаря Treble производители устройств могут быстрее и с меньшими затратами перенести Android 10 на устройства, совместимые с Treble.

Android 10 также является первым выпуском, поддерживающим Project Mainline (официально называемое обновлениями системы Google Play ), нашу новую технологию для защиты пользователей Android и поддержания актуальности их устройств с помощью важных изменений кода — прямо из Google Play. Благодаря обновлениям системы Google Play мы можем обновлять определенные внутренние компоненты на всех устройствах под управлением Android 10 и более поздних версий, не требуя полного обновления системы от производителя устройства.

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

Начать

Полный список ресурсов для разработчиков Android 10 можно найти на сайте Developer.android.com/10 .