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 добавлена системная тёмная тема, которая идеально подходит для работы при слабом освещении и помогает экономить заряд батареи. Пользователи могут активировать новую системную тёмную тему, перейдя в «Настройки» или включив функцию «Экономия заряда батареи». Это изменит интерфейс системы на тёмный и активирует тёмную тему в приложениях, которые её поддерживают. Вы можете создать собственную тёмную тему для своего приложения или подключить новую функцию «Force Dark», которая позволит системе динамически создавать тёмную версию существующей темы. Вы также можете воспользоваться функцией DayNight от AppCompat , чтобы предложить тёмную тему пользователям более ранних версий Android. Подробнее см. в руководстве разработчика .

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

Навигация жестами

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

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

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

Теперь вы можете отображать ключевые системные настройки непосредственно в контексте вашего приложения с помощью нового API панели настроек . Панель настроек — это плавающий пользовательский интерфейс, который вы вызываете для отображения необходимых пользователям настроек, таких как подключение к интернету, NFC и громкость звука. Например, браузер может отображать панель с настройками подключения, такими как режим «В самолете», Wi-Fi (включая ближайшие сети) и мобильные данные. Чтобы отобразить панель настроек, просто активируйте намерение с помощью одного из новых действий 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 также улучшена функция отката для учётных данных устройства при необходимости. Подробнее здесь .

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

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

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

Благодаря функции Dynamic Depth Image вы можете предлагать в своем приложении специализированные варианты размытия и боке.

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

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

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