summaryrefslogtreecommitdiffstats
path: root/docs/html-intl/intl/ru/preview/api-overview.jd
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html-intl/intl/ru/preview/api-overview.jd')
-rw-r--r--docs/html-intl/intl/ru/preview/api-overview.jd521
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 &raquo;</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>
+&lt;uses-permission
+ android:name="android.permission.USE_FINGERPRINT" /&gt;
+</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>Настройки &gt; Безопасность &gt; Отпечаток пальца</strong>) и следуйте дальнейшим инструкциям.</li>
+<li>Воспользовавшись указанной ниже командой, сымитируйте в эмуляторе события касания для проверки отпечатка пальца.
+ С помощью этой же команды сымитируйте события касания для проверки отпечатка пальца на экране блокировки или в
+своем приложении.
+<pre class="no-prettyprint">
+adb -e emu finger touch &lt;finger_id&gt;
+</pre>
+<p>В Windows, возможно, потребуется выполнить команду {@code telnet 127.0.0.1 &lt;emulator-id&gt;}, а затем
+{@code finger touch &lt;finger_id&gt;}.
+</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>
+&lt;service android:name=".ChooserTargetService"
+ android:label="&#64;string/service_name"
+ android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"&gt;
+ &lt;intent-filter&gt;
+ &lt;action android:name="android.service.chooser.ChooserTargetService" /&gt;
+ &lt;/intent-filter&gt;
+&lt;/service&gt;
+</pre>
+
+<p>Для каждого действия, которое необходимо сделать доступным для {@code ChooserTargetService}, добавьте в манифест вашего приложения элемент
+{@code &lt;meta-data&gt;} с именем
+{@code "android.service.chooser.chooser_target_service"}.
+</p>
+
+<pre>
+&lt;activity android:name=".MyShareActivity”
+ android:label="&#64;string/share_activity_label"&gt;
+ &lt;intent-filter>
+ &lt;action android:name="android.intent.action.SEND" /&gt;
+ &lt;/intent-filter>
+&lt;meta-data
+ android:name="android.service.chooser.chooser_target_service"
+ android:value=".ChooserTargetService" /&gt;
+&lt;/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>Настройки &gt; Использование данных</strong>, с помощью новых методов
+{@code android.app.usage.NetworkStatsManager}. Владельцам профилей автоматически предоставляется
+разрешение запрашивать данные профиля, которым они управляют, тогда как владельцам устройств предоставляется доступ к сведениям об использовании данных
+основного управляемого пользователя.</li>
+<li><strong>Управление разрешениями на выполнение.</strong>
+<p>Владелец профиля или устройства может задавать политику разрешений
+для всех запросов на использование среды выполнения любых приложений с помощью
+{@code DevicePolicyManager.setPermissionPolicy()}. Это позволяет выбрать, будет ли система предлагать пользователю предоставить разрешение
+как обычно, или она будет автоматически предоставлять разрешения или отказывать в них. В последнем случае
+пользователю не удастся изменить выбор, сделанный владельцем профиля или устройства на экране
+разрешений приложения в разделе <strong>Настройки</strong>.</p></li>
+<li><strong>VPN в разделе «Настройки».</strong> Приложения VPN теперь отображаются в разделе
+<strong>Настройки &gt; Другие сети &gt; 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>