diff options
Diffstat (limited to 'docs/html-intl/intl/ru/preview/api-overview.jd')
-rw-r--r-- | docs/html-intl/intl/ru/preview/api-overview.jd | 521 |
1 files changed, 521 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd new file mode 100644 index 0000000..ae30e09 --- /dev/null +++ b/docs/html-intl/intl/ru/preview/api-overview.jd @@ -0,0 +1,521 @@ +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 + + +<div id="qv-wrapper"> +<div id="qv"> + +<h2>Содержание +<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle"> + <span class="more">развернуть</span> + <span class="less" style="display:none">свернуть</span></a></h2> + +<ol id="toc44" class="hide-nested"> + <li><a href="#app-linking">Связывание приложений</a></li> + <li><a href="#backup">Автоматическое резервное копирование для приложений</a></li> + <li><a href="#authentication">Авторизация</a> + <ol> + <li><a href="#fingerprint-authentication">Авторизация по отпечатку пальца</a></li> + <li><a href="#confirm-credential">Подтверждение учетных данных</a></li> + </ol> + </li> + <li><a href="#direct-share">Прямой обмен контентом</a></li> + <li><a href="#voice-interactions">Голосовой интерфейс</a></li> + <li><a href="#assist">API-интерфейс помощника</a></li> + <li><a href="#notifications">Уведомления</a></li> + <li><a href="#bluetooth-stylus">Поддержка пера Bluetooth</a></li> + <li><a href="#ble-scanning">Улучшенное сканирование Bluetooth с низким потреблением энергии</a></li> + <li><a href="#hotspot">Поддержка Hotspot 2.0, выпуск 1</a></li> + <li><a href="#4K-display">Режим отображения в формате 4K</a></li> + <li><a href="#behavior-themeable-colorstatelists">Метод ColorStateLists для работы с темами</a></li> + <li><a href="#audio">Работа с аудио</a></li> + <li><a href="#video">Работа с видео</a></li> + <li><a href="#camera">Возможности камеры</a> + <ol> + <li><a href="#flashlight">API-интерфейс вспышки</a></li> + <li><a href="#reprocessing">Повторная обработка изображения с камеры</a></li> + </ol> + </li> + <li><a href="#afw">Возможности Android for Work</a></li> +</ol> + +<h2>Различия между API-интерфейсами</h2> +<ol> +<li><a href="{@docRoot}preview/download.html">API уровня 22 в M Preview »</a> </li> +</ol> + +</div> +</div> + +<p>M Developer Preview — ознакомительная версия предстоящего выпуска платформы Android, +в котором реализованы новые возможности как для пользователей, так и для +разработчиков приложений. В этой статье мы расскажем о наиболее интересных API-интерфейсах.</p> + +<p>Версия M Developer Preview предназначена для тех, <strong>кто хочет первым ознакомиться с новой платформой</strong>, +а также для <strong>тестировщиков</strong>. <a href="{@docRoot}preview/setup-sdk.html">M Developer Preview — прекрасная возможность +</a>повлиять на вектор развития +платформы Android. +Мы с нетерпением ждем ваших отзывов!</p> + +<p class="caution"><strong>Внимание!</strong> Не публикуйте в магазине Google Play приложения, +предназначенные для M Developer Preview.</p> + +<p class="note"><strong>Примечание.</strong> В этой статье часто упоминаются классы и методы, +для которых на сайте <a href="{@docRoot}">developer.android.com</a> пока еще нет справочных материалов. Такие элементы API-интерфейса обозначаются здесь следующим образом: +{@code code style} (без гиперссылок). Чтобы ознакомиться с предварительной документацией по этим элементам, +загрузите <a href="{@docRoot}preview/download.html#docs">справочное руководство по предварительной версии</a>.</p> + +<h3>Важные изменения в работе приложений</h3> + +<p>Если вы ранее публиковали приложения для Android, то примите во внимание, что изменения в платформе могут повлиять +на работу опубликованных приложений.</p> + +<p>Подробные сведения представлены в статье <a href="behavior-changes.html">Изменения в работе</a>.</p> + +<h2 id="app-linking">Связывание приложений</h2> +<p>В M Preview улучшена система намерений Android за счет более эффективного связывания приложений. +Теперь у вас есть возможность связывать приложения с вашими собственными веб-доменами. Благодаря этому +платформа может сама, без вмешательства пользователя, определить приложение, которое будет использоваться по умолчанию +для обработки определенной веб-ссылки. О том, как реализовать такую возможность, можно почитать в статье +<a href="{@docRoot}preview/features/app-linking.html">Связывание приложений</a>. + +<h2 id="backup">Автоматическое резервное копирование для приложений</h2> +<p>Теперь система автоматически выполняет полное резервное копирование и восстановление данных ваших приложений. Для приложений, +написанных под M Preview, эта функция включена по умолчанию — вам даже не нужно добавлять отдельный код. Если пользователь решит удалить свою учетную запись Google, все резервные копии его данных также будут удалены. + О том, как работает эта функция и как настроить параметры резервного копирования элементов файловой системы, + рассказано в статье +<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>.</p> + +<h2 id="authentication">Авторизация</h2> +<p>В M Preview представлены новые API-интерфейсы, которые позволяют авторизовать пользователей по отпечатку пальца +(на устройствах, поддерживающих такую возможность), а также подтвердить учетные данные, если пользователь недавно авторизовался через механизмы разблокировки устройства +(например, вводил пароль для разблокировки экрана). Эти API-интерфейсы рекомендуется использовать совместно с +<a href="{@docRoot}training/articles/keystore.html">системой хранилища ключей Android</a>.</p> + +<h3 id="fingerprint-authentication">Авторизация по отпечатку пальца</h3> + +<p>Чтобы авторизовать пользователя по отпечатку пальца, получите экземпляр нового класса +{@code android.hardware.fingerprint.FingerprintManager} и вызовите метод +{@code FingerprintManager.authenticate()}. Эта функция доступна для совместимых +устройств, оснащенных сканером отпечатков пальцев. Прежде всего, вам необходимо реализовать в своем приложении пользовательский интерфейс проверки +подлинности по отпечатку пальца, а также использовать для него стандартный значок отпечатка пальца Android. +Этот значок ({@code c_fp_40px.png}) вы можете найти в +<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">примере приложения</a>. При разработке нескольких приложений, использующих функцию авторизации по отпечатку пальца, +помните, что каждое из них должно самостоятельно выполнять проверку подлинности. +</p> + +<p>Чтобы реализовать эту функцию, сначала добавьте в файл манифеста разрешение {@code USE_FINGERPRINT}. +</p> + +<pre> +<uses-permission + android:name="android.permission.USE_FINGERPRINT" /> +</pre> + +<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" /> + +<p>Пример такой проверки подлинности вы найдете в +<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">примере +диалогового окна авторизации по отпечатку пальца</a>.</p> + +<p>Если вы тестируете эту функцию, выполните следующие действия:</p> +<ol> +<li>Установите инструменты SDK Android (версию 24.3), если у вас их еще нет.</li> +<li>Зарегистрируйте в эмуляторе новый отпечаток пальца (в разделе +<strong>Настройки > Безопасность > Отпечаток пальца</strong>) и следуйте дальнейшим инструкциям.</li> +<li>Воспользовавшись указанной ниже командой, сымитируйте в эмуляторе события касания для проверки отпечатка пальца. + С помощью этой же команды сымитируйте события касания для проверки отпечатка пальца на экране блокировки или в +своем приложении. +<pre class="no-prettyprint"> +adb -e emu finger touch <finger_id> +</pre> +<p>В Windows, возможно, потребуется выполнить команду {@code telnet 127.0.0.1 <emulator-id>}, а затем +{@code finger touch <finger_id>}. +</p> +</li> +</ol> + +<h3 id="confirm-credential">Подтверждение учетных данных</h3> +<p>Для авторизации пользователей ваше приложение может обратиться к сведениям о том, как давно они разблокировали свое устройство в последний раз. Эта функция +избавляет пользователя от необходимости запоминать отдельные пароли для каждого приложения, а вас — от необходимости +реализовывать собственный пользовательский интерфейс авторизации. В приложении эту функцию следует +использовать совместно с реализацией открытого или секретного ключа для авторизации пользователей.</p> + +<p>Чтобы задать временя ожидания, в течение которого после успешной +авторизации можно использовать ключ повторно, вызовите новый метод +{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} +при настройке {@link javax.crypto.KeyGenerator} или +{@link java.security.KeyPairGenerator}. На сегодняшний день эта функция совместима с симметричными криптографическими +операциями.</p> + +<p>Не стоит слишком часто отображать диалоговое окно повторной авторизации — ваше +приложение должно сначала попробовать использовать криптографический объект и только потом, если окажется, что время ожидания истекло, обратиться к методу +{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} +для повторной авторизации пользователя. +</p> + +<p>Как можно реализовать эту функцию, показано в +<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">примерепроверки учетных данных</a>. +</p> + +<h2 id="direct-share">Прямой обмен контентом</h2> + +<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" /> + +<p>M Preview содержит API-интерфейсы для интуитивно понятного и быстрого обмена контентом между пользователями. Теперь вы можете +определить <em>целевые объекты прямого обмена</em>, которые будут запускать определенную операцию в приложении +и открываться в меню <em>Поделиться</em>. С помощью данной функции пользователи могут обмениваться контентом +с целевыми объектами, такими как контакты, в других приложениях. Например, целевой объект прямого обмена может запустить операцию +в другом приложении социальной сети, что позволит пользователю напрямую делиться контентом с другом +или членами сообщества через это приложение.</p> + +<p>Чтобы включить использование целевых объектов прямого обмена, необходимо определить класс, который наследует класс +{@code android.service.} <br> +{@code chooser.ChooserTargetService}. Объявите +{@code ChooserTargetService} в манифесте. В этом объявлении укажите разрешение +{@code BIND_CHOOSER_TARGET_SERVICE} и фильтр намерений с помощью действия +{@code SERVICE_INTERFACE}.</p> +<p>В примере ниже показано, как объявить {@code ChooserTargetService} + в вашем манифесте.</p> +<pre> +<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> +</pre> + +<p>Для каждого действия, которое необходимо сделать доступным для {@code ChooserTargetService}, добавьте в манифест вашего приложения элемент +{@code <meta-data>} с именем +{@code "android.service.chooser.chooser_target_service"}. +</p> + +<pre> +<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> +</pre> + +<h2 id="voice-interactions">Голосовой интерфейс</h2> +<p> +В M Preview представлен новый голосовой API-интерфейс, который, наряду с +<a href="https://developers.google.com/voice-actions/" class="external-link">голосовыми командами</a>, +позволяет встраивать в приложение диалоговое голосовое взаимодействие. Вызовите метод +{@code android.app.Activity.isVoiceInteraction()}, чтобы определить, была ли операция запущена +в ответ на голосовую команду. Если это так, ваше приложение может использовать класс +{@code android.app.VoiceInteractor}, чтобы получить голосовое подтверждение от пользователя, предложить ему список вариантов +на выбор и многое другое. Подробнее о реализации голосовых команд можно почитать в +<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">руководстве к голосовому интерфейсу</a>. +</p> + +<h2 id="assist">API-интерфейс помощника</h2> +<p> +M Preview предлагает новый способ взаимодействия пользователей с приложением — взаимодействие посредством помощника. Для этого +пользователю необходимо разришить помощнику использовать текущий контекст, после чего он сможет вызывать помощника +в любом приложении, удерживая кнопку <strong>Домой</strong>.</p> +<p>Разработчик может также запретить приложению сообщать помощнику текущий контекст. Для этого установите флаг +{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Кроме стандартного набора +информации, который платформа передает помощнику, ваше приложение может сообщать ему дополнительные +сведения посредством нового класса {@code android.app.Activity.AssistContent}.</p> + +<p>Чтобы предоставить помощнику дополнительный контекст из вашего приложения, выполните следующие действия:</p> + +<ol> +<li>Реализуйте интерфейс {@link android.app.Application.OnProvideAssistDataListener}.</li> +<li>Зарегистрируйте этот приемник с помощью +{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li> +<li>Для предоставления контекста, относящего к конкретной операции, переопределите метод обратного вызова +{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}, +а также, при желании, новый метод обратного вызова{@code Activity.onProvideAssistContent()}. +</ol> + +<h2 id="notifications">Уведомления</h2> +<p>В API-интерфейс уведомлений внесены следующие изменения:</p> +<ul> + <li>{@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} — новый уровень фильтрации, +соответствующий новому режиму «Не беспокоить» <em>Только будильник</em>.</li> + <li>{@code Notification.CATEGORY_REMINDER} — новое значение категории, позволяющее отличить +установленные пользователем напоминания от других событий +({@link android.app.Notification#CATEGORY_EVENT}) и будильников +({@link android.app.Notification#CATEGORY_ALARM}).</li> + <li>{@code android.graphics.drawable.Icon} — новый класс, который можно добавить к уведомлениям +с помощью методов {@code Notification.Builder.setSmallIcon(Icon)} и +{@code Notification.Builder.setLargeIcon(Icon)}.</li> + <li>{@code NotificationManager.getActiveNotifications()} — новый метод, с помощью которого ваше приложение +может определить, какие из уведомлений в настоящее время активны. Если хотите взглянуть, как может быть реализовано приложение +с этой функцией, пройдите по ссылке: <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">Пример активных уведомлений</a>.</li> +</ul> + +<h2 id="bluetooth-stylus">Поддержка пера Bluetooth</h2> +<p>В M Preview улучшена поддержка ввода с помощью пера Bluetooth. Пользователи могут подключить +совместимое перо Bluetooth к своему смартфону или планшету. Когда перо подключено, данные о его +положении объединяются со сведениями о степени нажима и нажатия кнопки на пере, +и таким образом при сенсорном вводе используются не только возможности сенсорного экрана. Ваше приложение может отслеживать +нажатия кнопки пера и выполнять дополнительные действия, регистрируя в операции новые методы обратного вызова +{@code View.onStylusButtonPressListener} и +{@code GestureDetector.OnStylusButtonPressListener}.</p> + +<p>Для определения нажатий кнопок пера используйте методы и константы {@link android.view.MotionEvent}: +</p> +<ul> +<li>Если пользователь касается пером кнопки на экране приложения, метод +{@link android.view.MotionEvent#getToolType(int) getTooltype()} возвращает +{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li> +<li>В приложениях, разработанных для M Preview, при нажатии пользователем на основную кнопку на пере, метод +{@link android.view.MotionEvent#getButtonState() getButtonState()} +возвращает{@code MotionEvent.STYLUS_BUTTON_PRIMARY}. + Если перо оснащено дополнительной кнопкой, то при нажатии на нее этот метод возвращает +{@code MotionEvent.STYLUS_BUTTON_SECONDARY}. При нажатии пользователем +на обе кнопки одновременно, метод возвращает оба значения через оператор «OR» +({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li> +<li> +В приложениях, разработанных для более ранних версий платформы, метод +{@link android.view.MotionEvent#getButtonState() getButtonState()} возвращает +{@link android.view.MotionEvent#BUTTON_SECONDARY} (при нажатии на основную кнопку на пере), +{@link android.view.MotionEvent#BUTTON_TERTIARY} (при нажатии дополнительной кнопки на пере) или оба этих значения. +</li> +</ul> + +<h2 id="ble-scanning">Улучшенное сканирование Bluetooth с низким потреблением энергии</h2> +<p> +Если ваше приложение выполняет сканирование Bluetooth с низким потреблением энергии, вы можете при помощи нового метода +{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} указать, что обратные вызовы следует уведомлять только в случае, если прежде обнаружен пакет объявления, + совпадающий с заданным фильтром +{@link android.bluetooth.le.ScanFilter}, или если он не обнаруживается в течение заданного периода времени. + Такой подход к сканированию обеспечивает еще большую экономию энергии, чем это было возможно в предыдущей +версии платформы. +</p> + +<h2 id="hotspot">Поддержка Hotspot 2.0, выпуск 1</h2> +<p> +В 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. +</p> + +<h2 id="4K-display">Режим отображения в формате 4K</h2> +<p>Теперь платформа позволяет приложениям запрашивать увеличение разрешения экрана до 4K при обработке изображения +на совместимом устройстве. Чтобы запросить текущее физическое разрешение, используйте новые API-интерфейсы +{@code android.view.Display.Mode}. Если элементы пользовательского интерфейса, отрисованные в более низком логическом разрешении, масштабируются до +более высокого физического разрешения, обратите внимание, что метод физического разрешения +{@code Display.Mode.getPhysicalWidth()} возвращает результат, который может отличаться от результата выполнения метода логического разрешения +{@link android.view.Display#getSize(android.graphics.Point) getSize()} .</p> + +<p>Можно отправить запрос системе на изменение физического разрешения в активном приложении, задав для окна вашего приложения свойство +{@code WindowManager.LayoutParams.preferredDisplayModeId}. Эта +функция особенно полезна в случаях, когда требуется переключиться на разрешение экрана 4K. В режиме отображения в формате 4K элементы +пользовательского интерфейса отрисовываются в исходном разрешении (например, 1080p) и масштабируются до 4K, однако содержимое +{@link android.view.SurfaceView} объектов может отображаться с использованием основного разрешения.</p> + +<h2 id="behavior-themeable-colorstatelists">Метод ColorStateLists для работы с темами</h2> +<p>Теперь метод +{@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}.</p> + +<h2 id="audio">Работа с аудио</h2> + +<p>В M Preview реализован ряд улучшений в области обработки аудиофайлов системой Android, включая следующие: </p> +<ul> + <li>Новые API-интерфейсы {@code android.media.midi}, поддерживающие протокол <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> + для отправки и получения событий +MIDI.</li> + <li>Новые классы: {@code android.media.AudioRecord.Builder} позволяет создавать объекты захвата цифрового аудио, а {@code android.media.AudioTrack.Builder} — объекты воспроизведения, +а также осуществлять настройку источника +аудио и свойств приемника, переопределяя исходные системные настройки.</li> + <li>Обработчики API-интерфейсов предназначены для связывания аудиофайлов и устройств ввода. Это особенно полезно в случае, если ваше приложение +предоставляет возможность выполнять голосовой поиск с помощью игрового контроллера или пульта дистанционного управления, подключенного к Android +TV. Когда пользователь запустит поиск, система вызовет новый метод обратного вызова {@code android.app.Activity.onSearchRequested()}. + Чтобы определить, оснащено ли устройство ввода встроенным микрофоном, получите из этого метода обратного вызова объект +{@link android.view.InputDevice} и вызовите новый метод +{@code InputDevice.hasMic()}.</li> + <li>Новый класс {@code android.media.AudioDevicesManager}, позволяющий пользователю получить список всех +подключенных источников аудио и приемников. Также можно указать объект +{@code android.media.OnAudioDeviceConnectionListener}, если требуется, чтобы приложение +получало уведомления о подключении или отключении аудиоустройств.</li> +</ul> + +<h2 id="video">Работа с видео</h2> +<p>В M Preview вы обнаружите новые возможности API-интерфейсов для обработки видео, в том числе:</p> +<ul> +<li>Новый класс {@code android.media.MediaSync} обеспечивает синхронную обработку потоков +аудио и видео. Буферы аудио отправляются неблокируемым способом и возвращаются посредством +обратного вызова. Также имеется поддержка динамической скорости воспроизведения. +</li> +<li>Новое событие {@code MediaDrm.EVENT_SESSION_RECLAIMED} указывает на то, что сеанс, запущенный +приложением, освобожден диспетчером ресурсов. Если в вашем приложении используются сеансы DRM, то это событие +необходимо обработать и убедиться в том, что освобожденный сеанс не используется. +</li> +<li>Новый код ошибки {@code MediaCodec.CodecException.ERROR_RECLAIMED} указывает на то, что +диспетчер ресурсов освободил ресурс мультимедиа, используемый кодеком. Во всех остальных случаях кодек должен +быть освобожден, поскольку его необходимо перевести в конечное состояние. +</li> +<li>Новый интерфейс {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} позволяет узнать максимальное количество + экземпляров кодека, которые могут выполняться одновременно. +</li> +<li>Новый {@code MediaPlayer.setPlaybackParams()} метод задает скорость при ускоренном или +замедленном воспроизведении мультимедиа. Он также позволяет автоматически замедлять или ускорять воспроизведение аудио синхронно с +видео.</li> +</ul> + +<h2 id="camera">Возможности камеры</h2> +<p>В M Preview представлены следующие API-интерфейсы для вспышки камеры и повторной обработки +изображений камерой.</p> + +<h3 id="flashlight">API-интерфейс вспышки</h3> +<p>Если камера оснащена вспышкой, вы можете вызвать метод{@code CameraManager.setTorchMode()}, +чтобы включить или отключить режим фонарика, не запуская камеру. Приложение +не может заполучить вспышку или камеру в единоличное пользование. Режим фонарика отключается +и становится недоступен, когда камера недоступна или ресурсов камеры недостаточно для использования вспышки в качестве +фонарика. Кроме того, другие приложения могут вызывать метод {@code setTorchMode()} +для отключения режима фонарика. При закрытии приложения, которое включило режим фонарика, этот режим +отключается.</p> + +<p>Чтобы зарегистрировать обратный вызов для уведомления о режиме фонарика, вызовите метод +{@code CameraManager.registerTorchCallback()}. При первой регистрации обратного вызова +он сразу же вызывается со сведениями о состоянии режима фонарика для всех известных к настоящему моменту устройств, +оснащенных вспышкой. При успешном включении или отключении фонарика вызывается метод +{@code CameraManager.TorchCallback.onTorchModeChanged()}.</p> + +<h3 id="reprocessing">API-интерфейс повторной обработки</h3> +<p>API-интерфейс {@link android.hardware.camera2 Camera2} теперь поддерживает повторную обработку цветовых моделей YUV и изображений в собственном +формате непрозрачности. Чтобы определить, возможна ли повторная обработка, приложение использует метод +{@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Если устройство поддерживает повторную обработку, +вы можете создать сеанс захвата изображения с камеры с возможностью повторной обработки, вызвав метод +{@code CameraDevice.createReprocessableCaptureSession()}, а затем создать запросы на повторную обработку буфера +входных данных.</p> + +<p>Чтобы подключить поток буфера входных данных к модулю повторной обработки изображения с камеры, используйте класс +{@code ImageWriter}. Чтобы получить пустой буфер, выполните следующие действия:</p> + +<ol> +<li>Вызовите метод {@code ImageWriter.dequeueInputImage()}.</li> +<li>Заполните буфер входными данными.</li> +<li>Отправьте буфер в камеру, вызвав метод {@code ImageWriter.queueInputImage()}.</li> +</ol> + +<p>Если вы используете объект {@code ImageWriter} вместе с изображением +{@code android.graphics.ImageFormat.PRIVATE}, вашему приложению не удастся получить доступ к изображению +напрямую. Вместо этого передайте изображение {@code ImageFormat.PRIVATE} прямо в +{@code ImageWriter}, вызвав метод {@code ImageWriter.queueInputImage()} без копии +буфера.</p> + +<p>Класс {@code ImageReader} теперь поддерживает потоки изображений в формате {@code android.graphics.ImageFormat.PRIVATE}. + Благодаря этому ваше приложение может организовать циклическую очередь выходных изображений +{@code ImageReader}, выбрать одно или несколько изображений и отправить их в +{@code ImageWriter} для повторной обработки камерой.</p> + +<h2 id="afw">Возможности Android for Work</h2> +<p>В M Preview представлены новые API-интерфейсы для Android for Work:</p> +<ul> + <li><strong>Улучшенные элементы управления для корпоративных специализированных устройств.</strong> Владельцу устройства +теперь доступны новые возможности управления +корпоративными специализированными устройствами при помощие следующих настроек: + <ul> + <li>Отключение или повторное включение блокировки клавиатуры с помощью метода +{@code DevicePolicyManager.setKeyguardEnabledState()}.</li> + <li>Отключение или повторное включение строки состояния (включая быстрые настройки, уведомления и +запуск Google Now путем проведения пальцем по экрану) с помощью метода +{@code DevicePolicyManager.setStatusBarEnabledState()}.</li> + <li>Отключение и повторное включение безопасной загрузки с помощью константы +{@code DISALLOW_SAFE_BOOT} {@link android.os.UserManager}.</li> + <li>Предотвращение отключения экрана, если устройство питается от сети, с помощью константы +{@code STAY_ON_WHILE_PLUGGED_IN} {@link android.provider.Settings.Global}.</li> + </ul> + </li> + <li><strong>Автоматические установка и удаление приложений владельцами устройств.</strong> Владелец устройства теперь может автоматически +устанавливать и удалять приложения с помощью API-интерфейсов {@link android.content.pm.PackageInstaller}, +независимо от Google Play for Work. Теперь вы можете подготавливать устройства с помощью компонента «Владелец устройства», который +получает и устанавливает приложения без участия пользователя. Такая возможность особенно полезна тем, что позволяет подготавливать +киоски или иные подобные устройства одним касанием, не активируя аккаунт Google.</li> +<li><strong>Автоматический доступ к корпоративному сертификату.</strong> Теперь, когда приложение вызывает метод +{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()}, +владелец профиля или устройства, прежде чем ему будет предложено выбрать сертификат, может вызывать метод +{@code DeviceAdminReceiver.onChoosePrivateKeyAlias()}, который автоматически предоставит предложению псевдоним. + С помощью этой возможности вы можете предоставлять управляемым приложениям доступ к сертификатам без +вмешательства пользователя.</li> +<li><strong>Автоматическое принятие обновлений системы.</strong> Настройка параметров обновления системы с помощью +{@code DevicePolicyManager.setSystemUpdatePolicy()} теперь позволяет компоненту «Владелец устройства» автоматически принять обновление системы +(например, в киоске) или отложить его на период до 30 дней, причем пользователь +тоже не сможет установить обновление до истечения этого срока. Более того, администратор может задать ежедневный временной интервал, когда устройство будет принимать +обновления (например, во те часы, когда киоск не используется). При наличии доступного +обновления система проверяет, заданы ли параметры обновления системы приложением «Параметры работы» +, и выполняет соответствующие действия. +</li> +<li> +<strong>Делегированная установка сертификата.</strong> Владелец профиля или устройства теперь может предоставлять +стороннему приложению возможность вызывать следующие API-интерфейсы управления сертификатом +{@link android.app.admin.DevicePolicyManager}: +<ul> + <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName) +getInstalledCaCerts()}</li> + <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[]) +hasCaCertInstalled()}</li> + <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[]) +installCaCert()}</li> + <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[]) +uninstallCaCert()}</li> + <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName) +uninstallAllUserCaCerts()}</li> + <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String) +installKeyPair()}</li> +</ul> +</li> +<li><strong>Корпоративная настройка защиты от сброса параметров до заводских настроек.</strong> При подготовке компонента «Владелец устройства» теперь +имеется возможность настроить параметры разблокировки защиты от сброса параметров до заводских настроек (FRP) путем задания пакета +{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Приложение NFC Programmer +может после перезагрузки устройства предоставить эти параметрыс целью разблокировки FRP и его подготовки +(без необходимости запрашивать ранее настроенную учетную запись Google). Если не изменить эти параметры, +заводские настройки сохранятся не позволят активировать устройство без ввода активированных ранее +учетных данных Google. +<p>Кроме того, задав ограничения на использование служб Google Play, компонент «Владелец устройства» может указать альтернативные учетные записи +Google для разблокировки FRP и замены учетных записей, активированных на устройстве.</p> +</li> +<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" /> +<li><strong>Отслеживание использования данных.</strong> Владелец профиля или устройства теперь может запрашивать статистику использования +данных, которая отображается в разделе <strong>Настройки > Использование данных</strong>, с помощью новых методов +{@code android.app.usage.NetworkStatsManager}. Владельцам профилей автоматически предоставляется +разрешение запрашивать данные профиля, которым они управляют, тогда как владельцам устройств предоставляется доступ к сведениям об использовании данных +основного управляемого пользователя.</li> +<li><strong>Управление разрешениями на выполнение.</strong> +<p>Владелец профиля или устройства может задавать политику разрешений +для всех запросов на использование среды выполнения любых приложений с помощью +{@code DevicePolicyManager.setPermissionPolicy()}. Это позволяет выбрать, будет ли система предлагать пользователю предоставить разрешение +как обычно, или она будет автоматически предоставлять разрешения или отказывать в них. В последнем случае +пользователю не удастся изменить выбор, сделанный владельцем профиля или устройства на экране +разрешений приложения в разделе <strong>Настройки</strong>.</p></li> +<li><strong>VPN в разделе «Настройки».</strong> Приложения VPN теперь отображаются в разделе +<strong>Настройки > Другие сети > VPN</strong>. +Кроме того, сведения в уведомлениях об использовании VPN теперь зависят от настроек самой VPN. + Для владельца профиля уведомления зависят от того, настроена ли VPN для +управляемого профиля, личного профиля или же того и другого. Для владельца устройства уведомления зависят от того, настроена ли VPN для +всего устройства.</li> +<li><strong>Уведомление о состоянии «В работе».</strong> Теперь, когда приложения +из управляемого профиля выполняет операцию в фоновом режиме, в строке состояния появляется значок портфеля. Кроме того, если после разблокировки устройства +открывается операция приложения из управляемого профиля, отображается всплывающее уведомление о том, +что операция выполняется в рабочем профиле. +</li> +</ul> + +<p class="note"> + Подробные сведения обо всех изменениях в API-интерфейсах в версии M Developer Preview представлены в <a href="{@docRoot}preview/download.html">отчете о различиях между API-интерфейсами</a>. +</p> |