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() .

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

Темная тема

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

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

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

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

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

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

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

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

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

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

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

Теперь приложения могут запрашивать изображение Dynamic Depth, которое состоит из файла 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 для повышения конфиденциальности и производительности, а также для улучшения распространенных сценариев использования, таких как управление устройствами 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 добавляет поколенческую сборку мусора к сборщику мусора Concurrent Copying (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 создан для более быстрых обновлений благодаря проекту 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 .