Дата выхода: 3 сентября 2019.
API: 29.
Сладкое название: Quince Tart (пирог с айвой).
Визуальные изменения
Навигация жестами. В данном режиме всё экранное пространство выделяется под контент, а для управления используются экранные жесты. Подробнее в гайде.
Тёмная тема. Тема добавлена на уровне системы и может быть включена в настройках. Применяется как для системы, так и для приложений. При этом можно использовать функцию Force Dark, которая анализирует внешний вид приложения и автоматически применяет к нему тёмную тему. Подробнее в гайде.
- Панель настроек. Позволяет показывать настройки приложения в всплывающей панели. При этом настройки ограничены следующими типами:
ACTION_INTERNET_CONNECTIVITY
- настройки, связанные с подключением к интернету (режим полёта, wi-fi, мобильные сети).ACTION_WIFI
- настройки wi-fi.ACTION_NFC
- настройки, связанные с беспроводной передачей данных между устройствами.ACTION_VOLUME
- настройки громкости.
Улучшено меню отправки контента.
Рекомендации в уведомлениях. Данная функция обновлена и теперь в уведомлениях можно увидеть рекомендуемые ответы и действия. При этом эти действия могут генерироваться системой автоматически. Либо приложение может предоставлять свои собственные действия, а системные отключить.
Автоматические субтитры. Эта функция автоматически создает субтитры к видеороликам, подкастам, голосовым сообщениям и даже записям, которые вы сделали сами. Чтобы включить ее, достаточно одного нажатия. Подключение к Интернету при этом не требуется.
Усилитель звука. С помощью приложения “Усилитель звука” можно усилить нужные звуки, отфильтровать фоновый шум и отрегулировать настройки для максимально комфортного звучания.
Режим концентрации внимания. Если вам нужно сосредоточиться на важных задачах, включите режим концентрации внимания, выберите приложения, которые вас отвлекают, и приостановите их работу.
- Family Link. Позволяет ограничивать время использования устройства и доступ к определенным приложениям и контенту, а также просматривать историю приложений и следить за местоположением устройства.
Конфиденциальность и безопасность
Предоставлено новое хранилище Scoped storage (хранение по областям). С его помощью приложение может создать на внешнем носителе каталог для хранения своих файлов, к которому не смогут получить доступ другие приложения. Всем приложениям, ориентированным на Android 10 и выше, не требуется дополнительных разрешений для доступа к таким файлам, а также к медиа файлам (фото, видео итд.), созданным самим приложениям. Для обращения к файлам в каталоге приложения добавлен метод
getExternalFilesDir()
.Подробнее об управлении внешним хранилищем написано в гайде.
Добавлено новое разрешение
ACCESS_BACKGROUND_LOCATION
на получение местоположения в фоновом режиме. Теперь пользователь может разрешить получение информации о его местоположении только когда приложение находится на переднем плане. Подробнее можно почитать здесь, либо в гайде.Ограничена возможность запуска приложений из фона с переходом на передний план. Это позволит минимизировать прерывания работы пользователя с другими приложениями и лучше контролировать то, что отображается на экране.
Вместо запуска из фона, рекомендуется, чтобы запуск приложения был следствием взаимодействия с пользователем. Например, при помощи высокоприоритетных уведомлений.
Платформа больше не отслеживает информацию о контактах, чтобы скрыть от приложений информацию о предпочтениях пользователя. Теперь при поиске контакта результаты не будут упорядочиваться по частоте взаимодействия.
- Рандомизация MAC-адресов. На устройствах Android 10 и выше система по умолчанию будут генерироваться случайные MAC-адреса. Это не позволит отслеживать перемещение пользователя между WiFi-сетями. Также добавлены следующие методы:
getRandomizedMacAddress()
для получения случайного MAC-адреса;- getWifiMacAddress() для получения фактического MAC-адреса.
Ограничен доступ к файлам в директории
/proc/net
, которые содержат информацию о состоянии сети. Для получения доступа к этой информации следует использовать класс NetworkStatsManager или ConnectivityManager.Ограничен доступ к неизменяемым идентификаторам устройства, таким как IMEI и серийный номер. Для получения к ним доступа приложения должны иметь разрешение
READ_PRIVILEGED_PHONE_STATE
.Ограничен доступ к данным из буфера обмена: если приложение не находится на переднем плане, то оно не может получить доступ к данным в буфере обмена.
Защита серийного номера USB-устройства. Если приложению требуется серийный номер, то необходимо, чтобы пользователь предоставил разрешение на его считывание. Подробнее о том, как работать с USB можно почитать в специальном гайде.
Изменён объём информации, предоставляемый методом
getCameraCharacteristics()
. Для получения доступа к некоторым полям требуется разрешение CAMERA. Список таких полей можно найти здесь.Приложения больше не могут включать и отключать Wi-Fi, а метод
WifiManager.setWifiEnabled()
всегда возвращаетfalse
. Если же нужно предложить пользователю включить или отключить Wi-Fi, то используйте панель настроек (settings panel).- Ограничен доступ к настроенным сетям Wi-Fi. Для защиты конфиденциальности пользователей ручная настройка списка сетей Wi-Fi ограничена системными приложениями и device policy controllers (DPC). Если приложение предназначено для Android 10 или выше, то следующие методы не вернут полезной информации:
getConfiguredNetworks()
- всегда возвращает пустой список.addNetwork()
иupdateNetwork()
- всегда возвращают-1
.removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
, иdisconnect()
- всегда возвращаютfalse
.
Если приложению нужно подключиться к Wi-Fi, то используйте альтернативные методы:
WifiNetworkSpecifier
совместно сNetworkRequest
- для мгновенного локального подключения к Wi-Fi.WifiNetworkSuggestion
- для предоставления пользователю доступа в Интернет.
- Для возможности использования некоторых методов телефонии, Bluetooth и Wi-Fi требуется разрешение
ACCESS_FINE_LOCATION
. Список этих методов:- TelephonyManager -
getCellLocation()
,getAllCellInfo()
,requestNetworkScan()
,requestCellInfoUpdate()
,getAvailableNetworks()
,getServiceState()
. - TelephonyScanManager -
requestNetworkScan()
. - TelephonyScanManager.NetworkScanCallback -
onResults()
. - PhoneStateListener -
onCellLocationChanged()
,onCellInfoChanged()
,onServiceStateChanged()
. - WifiManager -
startScan()
,getScanResults()
,getConnectionInfo()
,getConfiguredNetworks()
. - WifiAwareManager.
- WifiP2pManager.
- WifiRttManager.
- BluetoothAdapter -
startDiscovery()
,startLeScan()
. - BluetoothAdapter.LeScanCallback.
- BluetoothLeScanner -
startScan()
.
- TelephonyManager -
Ограничен доступ к содержимому экрана. Изменена область действия разрешений
READ_FRAME_BUFFER
,CAPTURE_VIDEO_OUTPUT
, иCAPTURE_SECURE_VIDEO_OUTPUT
, что в свою очередь предотвращает “тихий” доступ к содержимому экрана. Эти разрешения теперь относятся к signature permissions. Приложения, которым необходим доступ к экранному содержимому устройства, должны использоватьMediaProjection
, который отправляет запрос пользователю для получения разрешения.Проверка разрешений для устаревших приложений. Если приложение предназначено для Android 5.1 (API 22) или ниже, то при первом запуске такого приложения на Android 10 пользователь увидит экран, который даёт возможность аннулировать разрешения, выданные системой автоматически при установке приложения.
Введено новое разрешение
ACTIVITY_RECOGNITION
для приложений, которым необходимо распознавать физическую активности: ходьбу, езду итд. Это сделано для того, чтобы пользователи могли в настройках увидеть то, как используются данные датчика.Некоторые библиотеки, например, Activity Recognition и Google Fit, не предоставляют информацию, если пользователь не предоставил это разрешение.
Начиная с Android 10, приложения не могут посмотреть, как разрешения группируются в пользовательском интерфейсе.
- Улучшена биометрическая аутентификация:
- Проверка на возможность биометрической аутентификации.
- Возможность аутентификации пользователя с помощью резервного механизма, например, чрез PIN-код устройства или пароль. Это актуально, когда пользователь по каким-либо причинам не может авторизоваться, используя биометрический код.
- Если аутентификация пользователя была произведена неявно, то системе будет отправляться подсказка о том, что не следует требовать повторной аутентификации.
- TLS 1.3. Добавлена и включена по умолчанию для всех соединений.
Другие изменения
Проверка вызовов. Android 10 позволяет идентифицировать вызовы, которые отсутствуют в адресной книге пользователя, как потенциальные спам-вызовы и отклонять их. Информация о таких вызовах фиксируется в журнале вызовов с пометкой о том, что вызов заблокирован.
Возможность обмена аудиовходом между двумя приложениями. Подробнее в гайде.
Возможность копирования звука, воспроизводимого другими приложениями. Подробнее в гайде.
- Начиная с Android 10, уведомления
MediaStyle
отображают seekbar, который показывает ход воспроизведения и может быть использован для перемещения по аудиофайлу. Внешний вид seekbar’а контролируется правилами:- seekbar появляется, если существует активная
MediaSession
и её продолжительность больше нуля. То естьseekbar
не отображается для неопределённых потоков, таких как прямые трансляции и радиопередачи. - если используется флаг
ACTION_SEEK_TO
, то пользователь может перетаскивать seekbar.
- seekbar появляется, если существует активная
Thermal API. Позволяет приложениям контролировать показатели температуры CPU и GPU и самостоятельно принимать меры для снижения нагрузки (например, снижать FPS в играх и уменьшать разрешение транслируемого видео), не дожидаясь пока система принудительно начнёт урезать активность приложений.
Улучшена поддержка монохромной камеры.
Динамическая глубина резкости. Новый формат файлов DDF (Dynamic Depth Format), в котором можно создавать, хранить и отправлять фотографии с изменяемой глубиной резкости и AR-контентом.
Добавлен новый формата для сохранения фотографий - HEIC.
Добавлен класс
WebViewRenderProcessClient
, который позволяет определить, чтоWebView
перестал отвечать на запросы. Класс абстрактный, поэтому для его использования нужно определить собственный подкласс и реализовать в нём методыonRenderProcessResponsive()
иonRenderProcessUnresponsive
. Далее экземпляр этого класса прикрепляется к одному или нескольким объектамWebView
. ЕслиWebView
перестанет отвечать, то система периодически (не чаще, чем раз в пять секунд) вызывает методonRenderProcessUnresponsive()
. ЕслиWebView
начинает отвечать, то система вызываетonRenderProcessResponsive()
.Сборка мусора на основе Mallinfo.
Улучшена функциональность
TextClassifier
.В Android 10 появилась встроенная поддержка слуховых аппаратов. Теперь их можно подключать к телефону и использовать, например, для прослушивания музыки и во время вызовов. Для передачи данных используется Bluetooth с низким энергопотреблением.
- Android Auto. Сервис Android Auto теперь встроен в систему, поэтому вы можете просто подключить телефон к бортовому компьютеру и пользоваться всеми возможностями Android на дисплее автомобиля. Скачивать отдельное приложение не нужно.
Полезные ссылки
What’s in Android 10 - список всех изменений.
Android 10 - список изменений с акцентом на визуальную составляющую или то, с чем работают пользователи.
Выпуск мобильной платформы Android 10 - обзорная статья по новшествам платформы.