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

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

Тёмная тема

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

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

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

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

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

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

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

Значки "Поделиться"

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

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

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

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

Теперь пользователи могут разрешать доступ к данным о местоположении, когда приложение работает в активном режиме.

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

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

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

Защита пользовательских данных на внешних накопителях. В 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, связанных с элементами глубины, а также карты глубины и достоверности, встроенной в тот же файл. Это позволяет предлагать в приложении специальные варианты размытия и боке. Динамическая глубина резкости – это открытый формат для экосистемы, и мы работаем с нашими партнерами, чтобы внедрить его на устройствах с Android 10 и более поздними версиями.

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

Запись воспроизводимого аудио

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

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

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

Native MIDI API

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

Направленные микрофоны с возможностью масштабирования

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

Vulkan везде

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

Функции связи

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

Мы провели рефакторинг стека Wi-Fi, чтобы повысить конфиденциальность и производительность, а также улучшить распространенные варианты использования, такие как управление устройствами IoT и предложение подключений к интернету, без необходимости запрашивать разрешение на доступ к данным о местоположении. API сетевого подключения упрощают управление устройствами IoT через локальную сеть 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 помогают приложениям запускаться быстрее, потреблять меньше памяти и работать плавнее. При этом вам не нужно ничего делать. Профили ART, предоставляемые Google Play, позволяют ART предварительно компилировать части приложения ещё до его запуска. В Android 10 в сборщик мусора ART Concurrent Copying (CC) во время выполнения добавлена функция Generational Garbage Collection, которая повышает эффективность сборки мусора с точки зрения времени и ресурсов ЦП, уменьшает временные зависания и помогает приложениям лучше работать на устройствах низкого класса.

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

Neural Networks API 1.2

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

Thermal API

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

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

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

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

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

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

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

Начать

Полный набор ресурсов для разработчиков, посвященных Android 10, доступен на сайте developer.android.com/10.