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

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

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

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