page.title=Обзор API-интерфейсов page.keywords=предварительная версия,пакет sdk,совместимость page.tags=previewresources, androidm sdk.platform.apiLevel=22-mnc page.image=images/cards/card-api-overview_16-9_2x.png @jd:body

Содержание развернуть

  1. Связывание приложений
  2. Автоматическое резервное копирование для приложений
  3. Авторизация
    1. Авторизация по отпечатку пальца
    2. Подтверждение учетных данных
  4. Прямой обмен контентом
  5. Голосовой интерфейс
  6. API-интерфейс помощника
  7. Уведомления
  8. Поддержка пера Bluetooth
  9. Улучшенное сканирование Bluetooth с низким потреблением энергии
  10. Поддержка Hotspot 2.0, выпуск 1
  11. Режим отображения в формате 4K
  12. Метод ColorStateLists для работы с темами
  13. Работа с аудио
  14. Работа с видео
  15. Возможности камеры
    1. API-интерфейс вспышки
    2. Повторная обработка изображения с камеры
  16. Возможности Android for Work

Различия между API-интерфейсами

  1. API уровня 22 в M Preview »

M Developer Preview — ознакомительная версия предстоящего выпуска платформы Android, в котором реализованы новые возможности как для пользователей, так и для разработчиков приложений. В этой статье мы расскажем о наиболее интересных API-интерфейсах.

Версия M Developer Preview предназначена для тех, кто хочет первым ознакомиться с новой платформой, а также для тестировщиков. M Developer Preview — прекрасная возможность повлиять на вектор развития платформы Android. Мы с нетерпением ждем ваших отзывов!

Внимание! Не публикуйте в магазине Google Play приложения, предназначенные для M Developer Preview.

Примечание. В этой статье часто упоминаются классы и методы, для которых на сайте developer.android.com пока еще нет справочных материалов. Такие элементы API-интерфейса обозначаются здесь следующим образом: {@code code style} (без гиперссылок). Чтобы ознакомиться с предварительной документацией по этим элементам, загрузите справочное руководство по предварительной версии.

Важные изменения в работе приложений

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

Подробные сведения представлены в статье Изменения в работе.

Связывание приложений

В M Preview улучшена система намерений Android за счет более эффективного связывания приложений. Теперь у вас есть возможность связывать приложения с вашими собственными веб-доменами. Благодаря этому платформа может сама, без вмешательства пользователя, определить приложение, которое будет использоваться по умолчанию для обработки определенной веб-ссылки. О том, как реализовать такую возможность, можно почитать в статье Связывание приложений.

Автоматическое резервное копирование для приложений

Теперь система автоматически выполняет полное резервное копирование и восстановление данных ваших приложений. Для приложений, написанных под M Preview, эта функция включена по умолчанию — вам даже не нужно добавлять отдельный код. Если пользователь решит удалить свою учетную запись Google, все резервные копии его данных также будут удалены. О том, как работает эта функция и как настроить параметры резервного копирования элементов файловой системы, рассказано в статье Автоматическое резервное копирование для приложений.

Авторизация

В M Preview представлены новые API-интерфейсы, которые позволяют авторизовать пользователей по отпечатку пальца (на устройствах, поддерживающих такую возможность), а также подтвердить учетные данные, если пользователь недавно авторизовался через механизмы разблокировки устройства (например, вводил пароль для разблокировки экрана). Эти API-интерфейсы рекомендуется использовать совместно с системой хранилища ключей Android.

Авторизация по отпечатку пальца

Чтобы авторизовать пользователя по отпечатку пальца, получите экземпляр нового класса {@code android.hardware.fingerprint.FingerprintManager} и вызовите метод {@code FingerprintManager.authenticate()}. Эта функция доступна для совместимых устройств, оснащенных сканером отпечатков пальцев. Прежде всего, вам необходимо реализовать в своем приложении пользовательский интерфейс проверки подлинности по отпечатку пальца, а также использовать для него стандартный значок отпечатка пальца Android. Этот значок ({@code c_fp_40px.png}) вы можете найти в примере приложения. При разработке нескольких приложений, использующих функцию авторизации по отпечатку пальца, помните, что каждое из них должно самостоятельно выполнять проверку подлинности.

Чтобы реализовать эту функцию, сначала добавьте в файл манифеста разрешение {@code USE_FINGERPRINT}.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

Пример такой проверки подлинности вы найдете в примере диалогового окна авторизации по отпечатку пальца.

Если вы тестируете эту функцию, выполните следующие действия:

  1. Установите инструменты SDK Android (версию 24.3), если у вас их еще нет.
  2. Зарегистрируйте в эмуляторе новый отпечаток пальца (в разделе Настройки > Безопасность > Отпечаток пальца) и следуйте дальнейшим инструкциям.
  3. Воспользовавшись указанной ниже командой, сымитируйте в эмуляторе события касания для проверки отпечатка пальца. С помощью этой же команды сымитируйте события касания для проверки отпечатка пальца на экране блокировки или в своем приложении.
    adb -e emu finger touch <finger_id>
    

    В Windows, возможно, потребуется выполнить команду {@code telnet 127.0.0.1 <emulator-id>}, а затем {@code finger touch <finger_id>}.

Подтверждение учетных данных

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

Чтобы задать временя ожидания, в течение которого после успешной авторизации можно использовать ключ повторно, вызовите новый метод {@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} при настройке {@link javax.crypto.KeyGenerator} или {@link java.security.KeyPairGenerator}. На сегодняшний день эта функция совместима с симметричными криптографическими операциями.

Не стоит слишком часто отображать диалоговое окно повторной авторизации — ваше приложение должно сначала попробовать использовать криптографический объект и только потом, если окажется, что время ожидания истекло, обратиться к методу {@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} для повторной авторизации пользователя.

Как можно реализовать эту функцию, показано в примерепроверки учетных данных.

Прямой обмен контентом

M Preview содержит API-интерфейсы для интуитивно понятного и быстрого обмена контентом между пользователями. Теперь вы можете определить целевые объекты прямого обмена, которые будут запускать определенную операцию в приложении и открываться в меню Поделиться. С помощью данной функции пользователи могут обмениваться контентом с целевыми объектами, такими как контакты, в других приложениях. Например, целевой объект прямого обмена может запустить операцию в другом приложении социальной сети, что позволит пользователю напрямую делиться контентом с другом или членами сообщества через это приложение.

Чтобы включить использование целевых объектов прямого обмена, необходимо определить класс, который наследует класс {@code android.service.}
{@code chooser.ChooserTargetService}. Объявите {@code ChooserTargetService} в манифесте. В этом объявлении укажите разрешение {@code BIND_CHOOSER_TARGET_SERVICE} и фильтр намерений с помощью действия {@code SERVICE_INTERFACE}.

В примере ниже показано, как объявить {@code ChooserTargetService} в вашем манифесте.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

Для каждого действия, которое необходимо сделать доступным для {@code ChooserTargetService}, добавьте в манифест вашего приложения элемент {@code <meta-data>} с именем {@code "android.service.chooser.chooser_target_service"}.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

Голосовой интерфейс

В M Preview представлен новый голосовой API-интерфейс, который, наряду с голосовыми командами, позволяет встраивать в приложение диалоговое голосовое взаимодействие. Вызовите метод {@code android.app.Activity.isVoiceInteraction()}, чтобы определить, была ли операция запущена в ответ на голосовую команду. Если это так, ваше приложение может использовать класс {@code android.app.VoiceInteractor}, чтобы получить голосовое подтверждение от пользователя, предложить ему список вариантов на выбор и многое другое. Подробнее о реализации голосовых команд можно почитать в руководстве к голосовому интерфейсу.

API-интерфейс помощника

M Preview предлагает новый способ взаимодействия пользователей с приложением — взаимодействие посредством помощника. Для этого пользователю необходимо разришить помощнику использовать текущий контекст, после чего он сможет вызывать помощника в любом приложении, удерживая кнопку Домой.

Разработчик может также запретить приложению сообщать помощнику текущий контекст. Для этого установите флаг {@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Кроме стандартного набора информации, который платформа передает помощнику, ваше приложение может сообщать ему дополнительные сведения посредством нового класса {@code android.app.Activity.AssistContent}.

Чтобы предоставить помощнику дополнительный контекст из вашего приложения, выполните следующие действия:

  1. Реализуйте интерфейс {@link android.app.Application.OnProvideAssistDataListener}.
  2. Зарегистрируйте этот приемник с помощью {@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.
  3. Для предоставления контекста, относящего к конкретной операции, переопределите метод обратного вызова {@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}, а также, при желании, новый метод обратного вызова{@code Activity.onProvideAssistContent()}.

Уведомления

В API-интерфейс уведомлений внесены следующие изменения:

Поддержка пера Bluetooth

В M Preview улучшена поддержка ввода с помощью пера Bluetooth. Пользователи могут подключить совместимое перо Bluetooth к своему смартфону или планшету. Когда перо подключено, данные о его положении объединяются со сведениями о степени нажима и нажатия кнопки на пере, и таким образом при сенсорном вводе используются не только возможности сенсорного экрана. Ваше приложение может отслеживать нажатия кнопки пера и выполнять дополнительные действия, регистрируя в операции новые методы обратного вызова {@code View.onStylusButtonPressListener} и {@code GestureDetector.OnStylusButtonPressListener}.

Для определения нажатий кнопок пера используйте методы и константы {@link android.view.MotionEvent}:

Улучшенное сканирование Bluetooth с низким потреблением энергии

Если ваше приложение выполняет сканирование Bluetooth с низким потреблением энергии, вы можете при помощи нового метода {@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} указать, что обратные вызовы следует уведомлять только в случае, если прежде обнаружен пакет объявления, совпадающий с заданным фильтром {@link android.bluetooth.le.ScanFilter}, или если он не обнаруживается в течение заданного периода времени. Такой подход к сканированию обеспечивает еще большую экономию энергии, чем это было возможно в предыдущей версии платформы.

Поддержка Hotspot 2.0, выпуск 1

В M Preview включена поддержка Hotspot 2.0 (выпуск 1) для устройств Nexus 6 и Nexus 9. Для предоставления учетных данных Hotspot 2.0 в вашем приложении используйте новые методы класса {@link android.net.wifi.WifiEnterpriseConfig}, такие как {@code setPlmn()} и {@code setRealm()}. В объекте {@link android.net.wifi.WifiConfiguration} можно задать поля {@link android.net.wifi.WifiConfiguration#FQDN} и {@code providerFriendlyName}. Новое свойство{@code ScanResult.PasspointNetwork} показывает, является ли обнаруженная сеть точкой доступа Hotspot 2.0.

Режим отображения в формате 4K

Теперь платформа позволяет приложениям запрашивать увеличение разрешения экрана до 4K при обработке изображения на совместимом устройстве. Чтобы запросить текущее физическое разрешение, используйте новые API-интерфейсы {@code android.view.Display.Mode}. Если элементы пользовательского интерфейса, отрисованные в более низком логическом разрешении, масштабируются до более высокого физического разрешения, обратите внимание, что метод физического разрешения {@code Display.Mode.getPhysicalWidth()} возвращает результат, который может отличаться от результата выполнения метода логического разрешения {@link android.view.Display#getSize(android.graphics.Point) getSize()} .

Можно отправить запрос системе на изменение физического разрешения в активном приложении, задав для окна вашего приложения свойство {@code WindowManager.LayoutParams.preferredDisplayModeId}. Эта функция особенно полезна в случаях, когда требуется переключиться на разрешение экрана 4K. В режиме отображения в формате 4K элементы пользовательского интерфейса отрисовываются в исходном разрешении (например, 1080p) и масштабируются до 4K, однако содержимое {@link android.view.SurfaceView} объектов может отображаться с использованием основного разрешения.

Метод ColorStateLists для работы с темами

Теперь метод {@link android.content.res.ColorStateList} для устройств под управлением M Preview поддерживает атрибуты темы. Методы {@link android.content.res.Resources#getColorStateList(int) getColorStateList()} и {@link android.content.res.Resources#getColor(int) getColor()} уже неактуальны. Если вы вызываете эти API-интерфейсы, вызовите вместо них новые методы {@code Context.getColorStateList()} или {@code Context.getColor()}, Доступные также в библиотеке v4 appcompat посредством {@link android.support.v4.content.ContextCompat}.

Работа с аудио

В M Preview реализован ряд улучшений в области обработки аудиофайлов системой Android, включая следующие:

Работа с видео

В M Preview вы обнаружите новые возможности API-интерфейсов для обработки видео, в том числе:

Возможности камеры

В M Preview представлены следующие API-интерфейсы для вспышки камеры и повторной обработки изображений камерой.

API-интерфейс вспышки

Если камера оснащена вспышкой, вы можете вызвать метод{@code CameraManager.setTorchMode()}, чтобы включить или отключить режим фонарика, не запуская камеру. Приложение не может заполучить вспышку или камеру в единоличное пользование. Режим фонарика отключается и становится недоступен, когда камера недоступна или ресурсов камеры недостаточно для использования вспышки в качестве фонарика. Кроме того, другие приложения могут вызывать метод {@code setTorchMode()} для отключения режима фонарика. При закрытии приложения, которое включило режим фонарика, этот режим отключается.

Чтобы зарегистрировать обратный вызов для уведомления о режиме фонарика, вызовите метод {@code CameraManager.registerTorchCallback()}. При первой регистрации обратного вызова он сразу же вызывается со сведениями о состоянии режима фонарика для всех известных к настоящему моменту устройств, оснащенных вспышкой. При успешном включении или отключении фонарика вызывается метод {@code CameraManager.TorchCallback.onTorchModeChanged()}.

API-интерфейс повторной обработки

API-интерфейс {@link android.hardware.camera2 Camera2} теперь поддерживает повторную обработку цветовых моделей YUV и изображений в собственном формате непрозрачности. Чтобы определить, возможна ли повторная обработка, приложение использует метод {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Если устройство поддерживает повторную обработку, вы можете создать сеанс захвата изображения с камеры с возможностью повторной обработки, вызвав метод {@code CameraDevice.createReprocessableCaptureSession()}, а затем создать запросы на повторную обработку буфера входных данных.

Чтобы подключить поток буфера входных данных к модулю повторной обработки изображения с камеры, используйте класс {@code ImageWriter}. Чтобы получить пустой буфер, выполните следующие действия:

  1. Вызовите метод {@code ImageWriter.dequeueInputImage()}.
  2. Заполните буфер входными данными.
  3. Отправьте буфер в камеру, вызвав метод {@code ImageWriter.queueInputImage()}.

Если вы используете объект {@code ImageWriter} вместе с изображением {@code android.graphics.ImageFormat.PRIVATE}, вашему приложению не удастся получить доступ к изображению напрямую. Вместо этого передайте изображение {@code ImageFormat.PRIVATE} прямо в {@code ImageWriter}, вызвав метод {@code ImageWriter.queueInputImage()} без копии буфера.

Класс {@code ImageReader} теперь поддерживает потоки изображений в формате {@code android.graphics.ImageFormat.PRIVATE}. Благодаря этому ваше приложение может организовать циклическую очередь выходных изображений {@code ImageReader}, выбрать одно или несколько изображений и отправить их в {@code ImageWriter} для повторной обработки камерой.

Возможности Android for Work

В M Preview представлены новые API-интерфейсы для Android for Work:

Подробные сведения обо всех изменениях в API-интерфейсах в версии M Developer Preview представлены в отчете о различиях между API-интерфейсами.