summaryrefslogtreecommitdiffstats
path: root/docs/html-intl/intl/ru/preview
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html-intl/intl/ru/preview')
-rw-r--r--docs/html-intl/intl/ru/preview/api-overview.jd521
-rw-r--r--docs/html-intl/intl/ru/preview/behavior-changes.jd402
-rw-r--r--docs/html-intl/intl/ru/preview/features/runtime-permissions.jd794
-rw-r--r--docs/html-intl/intl/ru/preview/overview.jd362
4 files changed, 2079 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>
diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/preview/behavior-changes.jd
new file mode 100644
index 0000000..0623ea7
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/behavior-changes.jd
@@ -0,0 +1,402 @@
+page.title=Изменения в работе
+page.keywords=предварительная версия,пакет sdk,совместимость
+sdk.platform.apiLevel=MNC
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Содержание документа</h2>
+
+<ol id="toc44" class="hide-nested">
+ <li><a href="#behavior-runtime-permissions">Разрешения на выполнение</a></li>
+ <li><a href="#behavior-power">Оптимизация экономии энергии</a>
+ <ol>
+ <li><a href="#behavior-doze">Режим «Doze»</a></li>
+ <li><a href="#behavior-app-standby">Ждущий режим для приложений</a></li>
+ </ol>
+ </li>
+ <li><a href="#behavior-adoptable-storage">Подключаемые устройства хранения</a></li>
+ <li><a href="#behavior-apache-http-client">Отказ от HTTP-клиента Apache</a></li>
+ <li><a href="#behavior-audiomanager-Changes">Изменения в классе AudioManager</a></li>
+ <li><a href="#behavior-test-selection">Выделение текста</a></li>
+ <li><a href="#behavior-keystore">Изменения в хранилище ключей Android</a></li>
+ <li><a href="#behavior-network">Изменения в работе с Wi-Fi и сетями</a></li>
+ <li><a href="#behavior-camera">Изменения в службе камеры</a></li>
+ <li><a href="#behavior-art-runtime">Среда выполнения ART</a></li>
+ <li><a href="#behavior-apk-validation">Проверка пакетов APK</a></li>
+ <li><a href="#behavior-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>
+
+
+<h2>См. также:</h2>
+<ol>
+<li><a href="{@docRoot}preview/api-overview.html">Обзор API-интерфейсов M Developer Preview</a> </li>
+</ol>
+
+</div>
+</div>
+
+<p>Наряду с новыми функциями и возможностями, версия M Developer Preview также включает в себя ряд
+системных изменений и изменений в работе API-интерфейсов. В этом документе рассматриваются
+определенные ключевые изменения, о которых следует знать, чтобы учитывать их при разработке приложений.</p>
+
+<p>Если вы ранее публиковали приложения для Android, то примите во внимание,
+что эти изменения в платформе могут повлиять на работу ваших уже опубликованных приложений.</p>
+
+<h2 id="behavior-runtime-permissions">Разрешения на выполнение</h1>
+<p>В M Preview представлена новая модель разрешений: теперь пользователи могут управлять разрешениями приложений
+напрямую во время работы с ними. Такая модель обеспечивает улучшенное управление
+разрешениями и одновременно позволяет оптимизировать установку и автоматическое обновление для разработчиков.
+Пользователи могут предоставлять разрешения или отзывать их отдельно для каждого установленного приложения. </p>
+
+<p>В ваших приложениях, предназначенных для M Preview, следует в обязательном порядке проверить такие разрешения и при необходимости
+запросить их. Чтобы определить, было ли вашему приложению предоставлено разрешение, вызовите новый метод
+{@code Context.checkSelfPermission()}. Чтобы запросить разрешение, вызовите новый метод
+{@code Activity.requestPermission()}. Даже если ваше приложение не предназначено для использования в версии M, вам все равно следует
+протестировать его с использованием новой модели разрешений.</p>
+
+<p>Подробные сведения о поддержке новой модели
+разрешений вашим приложением представлены в статье
+<a href="{@docRoot}preview/features/runtime-permissions.html">Разрешения</a>. Как можно проверить влияние новой модели на ваше приложение, читайте в
+<a href="{@docRoot}preview/testing/guide.html#runtime-permissions">руководстве по тестированию</a></p>
+
+<h2 id="behavior-power">Оптимизация экономии энергии</h2>
+<p>В M Preview реализован ряд новых функций оптимизации экономии энергии для неактивных устройств и приложений.</p>
+
+<h3 id="behavior-doze">Режим «Doze»</h3>
+<p>Если устройство отключено от сети и остается неактивным (и с выключенным экраном) в течение определенного времени,
+оно переходит в режим <em>Doze</em> и старается, чтобы система не выходила из спящего состояния. В этому режиме
+устройство периодически возобновляет свою обычную работу на краткие промежутки времени, чтобы произвести
+синхронизацию и позволить системе выполнить какие-либо отложенные операции.</p>
+
+<p>Когда устройство находится в режиме «Doze», к приложениям применяются следующие ограничения:</p>
+<ul>
+<li>Доступ к сети отключен до тех пор, пока от службы Google Cloud Messaging
+не будет получен высокоприоритетный сигнал побуждения приложения к действию.</li>
+<li>Механизмы <a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">WakeLock</a> игнорируются.</li>
+<li>Будильники, установленные с помощью класса {@link android.app.AlarmManager}, отключаются, кроме
+тех, которые установлены с помощью методов {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}
+и {@code AlarmManager.setAndAllowWhileIdle()}.</li>
+<li>Поиск сетей Wi-Fi не производится.</li>
+<li>Операции синхронизации и заданий для адаптеров синхронизации и {@link android.app.job.JobScheduler} блокируются.
+</li>
+</ul>
+</p>
+<p>После выхода из режима «Doze», устройство приступает к выполнению любых отложенных заданий и операций синхронизации.</p>
+<p>Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру
+для разработки и выполните следующие команды:
+</p>
+<pre class="no-prettyprint">
+$ adb shell dumpsys battery unplug
+$ adb shell dumpsys deviceidle step
+$ adb shell dumpsys deviceidle -h
+</pre>
+<p class="note"><strong>Примечание.</strong> В предстоящем выпуске службы
+<a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud Messaging</a>
+реализована возможность назначения сообщений
+с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткое время предоставляется
+доступ к сети, даже если устройство находится в режиме «Doze».
+</p>
+
+<p>Советы по тестированию работы приложений в режиме «Doze» представлены
+в <a href="{@docRoot}preview/testing/guide.html#doze-standby">руководстве
+по тестированию</a>. </p>
+
+<h3 id="behavior-app-standby">Ждущий режим для приложений</h3>
+<p>В M Preview система может определять, что приложения неактивны, когда они
+не используются. Приложение считается неактивным по прошествии определенного периода времени до тех пор, пока система
+не обнаружит один из следующих сигналов:</p>
+
+<ul>
+<li>приложение явным образом запущено пользователем;</li>
+<li>у приложения имеется процесс, который в настоящее время выполняется на переднем плане (это может быть как сама операция или служба переднего плана,
+так и процесс, используемый другой операцией или службой переднего плана).</li>
+<li>приложение создает уведомление, которое пользователи видят на экране блокировки или в
+области уведомлений.</li>
+<li>пользователь явным образом исключает приложение из списка для оптимизации
+в разделе <strong>Настройки</strong>.</li>
+</ul>
+
+<p>Если устройство отключено от электросети, для приложений, которые считаются неактивными, закрывается доступ к Интернету,
+а их операции синхронизации и задания приостанавливаются. После подключения устройства к электросети доступ к Интернету для приложений возобновится
+и они смогут приступить к выполнению любых ожидающих заданий и операций синхронизации. Если устройство
+неактивно в течение длительного времени, неактивным приложениям раз в день предоставляется доступ к сети.</p>
+
+<p>Чтобы протестировать эту функцию, подключите устройство под управлением M Preview к своему компьютеру
+для разработки и выполните следующие команды:
+</p>
+<pre class="no-prettyprint">
+$ adb shell dumpsys battery unplug
+$ adb shell am set-idle &lt;packageName&gt; true
+$ adb shell am set-idle &lt;packageName&gt; false
+$ adb shell am get-idle &lt;packageName&gt;
+</pre>
+
+<p class="note"><strong>Примечание.</strong> В предстоящем выпуске службы
+<a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud Messaging</a> (GCM)
+реализована возможность назначения сообщений
+с высоким приоритетом. При получении вашим приложением сообщений GCM с высоким приоритетом ему на короткий промежуток времени предоставляется
+доступ к сети, даже если приложение находится в неактивном состоянии.
+</p>
+
+<p>Советы по тестированию работы приложений в ждущем режиме представлены
+в <a href="{@docRoot}preview/testing/guide.html#doze-standby">руководстве
+по тестированию</a>. </p>
+
+<h2 id="behavior-adoptable-storage">Подключаемые устройства хранения</h2>
+<p>
+В M Preview пользователи могут <em>подключать</em> внешние устройства хранения, такие как SD-карты, и использовать их как внутреннее хранилище,
+зашифровав и отформатировав требуемым образом. Благодаря этому
+ пользователи могут переносить как сами приложения, так свои файлы для этих приложений с одного устройства хранения на другое. При переносе
+приложений система руководствуется настройкой
+<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
+в манифесте.</p>
+
+<p>Если ваше приложение работает с указанными ниже API-интерфейсами или полями, следует помнить, что возвращаемые ими пути к файлам
+будут динамически изменяться при перемещении приложения с внутреннего хранилища на внешнее устройство или наоборот.
+При создании путей к файлам настоятельно рекомендуется всегда вызывать эти API-интерфейсы динамическим образом.
+Не используйте жестко запрограммированные пути к файлам и не указывайте созданные ранее полные пути к файлам.</p>
+
+<ul>
+<li>Методы {@link android.content.Context}:
+ <ul>
+ <li>{@link android.content.Context#getFilesDir() getFilesDir()}</li>
+ <li>{@link android.content.Context#getCacheDir() getCacheDir()}</li>
+ <li>{@link android.content.Context#getCodeCacheDir() getCodeCacheDir()}</li>
+ <li>{@link android.content.Context#getDatabasePath(java.lang.String) getDatabasePath()}</li>
+ <li>{@link android.content.Context#getDir(java.lang.String,int) getDir()}</li>
+ <li>{@link android.content.Context#getNoBackupFilesDir() getNoBackupFilesDir()}</li>
+ <li>{@link android.content.Context#getFileStreamPath(java.lang.String) getFileStreamPath()}</li>
+ <li>{@link android.content.Context#getPackageCodePath() getPackageCodePath()}</li>
+ <li>{@link android.content.Context#getPackageResourcePath() getPackageResourcePath()}</li>
+ </ul>
+</li>
+<li>Поля {@link android.content.pm.ApplicationInfo}:
+ <ul>
+ <li>{@link android.content.pm.ApplicationInfo#dataDir dataDir}</li>
+ <li>{@link android.content.pm.ApplicationInfo#sourceDir sourceDir}</li>
+ <li>{@link android.content.pm.ApplicationInfo#nativeLibraryDir nativeLibraryDir}</li>
+ <li>{@link android.content.pm.ApplicationInfo#publicSourceDir publicSourceDir}</li>
+ <li>{@link android.content.pm.ApplicationInfo#splitSourceDirs splitSourceDirs}</li>
+ <li>{@link android.content.pm.ApplicationInfo#splitPublicSourceDirs splitPublicSourceDirs}</li>
+ </ul>
+</li>
+</ul>
+
+<p>Для отладки этой функции в Developer Preview подключите USB-устройство,
+ к устройству Android посредством USB-кабеля On-The-Go (OTG) и выполните следующую команду:</p>
+
+<pre class="no-prettyprint">
+$ adb shell sm set-force-adoptable true
+</pre>
+
+<h2 id="behavior-apache-http-client">Отказ от HTTP-клиента Apache</h2>
+<p>В M Preview удалена поддержка HTTP-клиента Apache. Если ваше приложение, разработанное для
+Android 2.3 (уровень API 9) или более поздней версии, использует этот клиент, вам необходимо воспользоваться вместо него классом {@link java.net.HttpURLConnection}.
+ Этот API-интерфейс более эффективный, поскольку он сокращает использование сетевого трафика за счет прозрачного сжатия
+и кэширования ответов, а также сводит к минимуму потребление энергии. Чтобы продолжить использовать API-интерфейсы HTTP Apache,
+сначала объявите в своем файле {@code build.gradle} следующую зависимость compile-time:
+</p>
+<pre>
+android {
+ useLibrary 'org.apache.http.legacy'
+}
+</pre>
+<p>Вместо OpenSSL в Android теперь будет использоваться библиотека
+<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
+. Если вы используете в ваших приложениях Android NDK, не связывайте его с криптографическими библиотеками,
+которые не входят в состав API-интерфейса NDK, такими как {@code libcrypto.so} и {@code libssl.so}. Эти библиотеки
+не являются общедоступными API-интерфейсами, и в разных выпусках или на разных устройствах они могут быть изменены или разбиты без предварительного уведомления.
+Кроме того, этим вы можете создать уязвимости в системе безопасности вашего продукта. Вместо этого внесите изменения в
+собственный код для вызова криптографических API-интерфейсов Java посредством JNI или статической ссылки на
+библиотеку криптографии по своему выбору.</p>
+
+<h2 id="behavior-audiomanager-Changes">Изменения в классе AudioManager</h2>
+<p>Теперь в платформе не поддерживается настройка уровня громкости напрямую или отключение звука определенных потоков с помощью класса {@link android.media.AudioManager}.
+ Метод {@link android.media.AudioManager#setStreamSolo(int,boolean)
+setStreamSolo()} больше не используется. Вместо него следует вызывать метод
+{@code AudioManager.requestAudioFocus()}. Также больше не используется метод
+{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()};
+вместо него следует вызывать метод {@code AudioManager.adjustStreamVolume()}
+и передавать в него значение направления {@code ADJUST_MUTE} или {@code ADJUST_UNMUTE}.</p>
+
+<h2 id="behavior-test-selection">Выделение текста</h2>
+
+<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
+
+<p>Теперь, когда пользователь выделяет текст в приложении, такие дополнительные действия как
+<em>Вырезать</em>, <em>Копировать</em> и <em>Вставить</em>, можно отображать на
+<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">перемещаемой панели инструментов</a>. Реализация взаимодействия пользователя с текстом аналогична той, которая используется для
+контекстного меню,
+как описано в статье
+<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">Запуск контекстного меню для отдельных представлений</a>.</p>
+
+<p>Чтобы реализовать перемещаемую панель инструментов для выделения текста, внесите в ваши существующие приложения
+следующие изменения.</p>
+<ol>
+<li>В объекте {@link android.view.View} или {@link android.app.Activity} измените вызовы
+{@link android.view.ActionMode} с
+{@code startActionMode(Callback)} на {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
+<li>Возьмите свою реализацию класса {@code ActionMode.Callback} и сделайте его наследуемой от класса
+{@code ActionMode.Callback2}.</li>
+<li>Переопределите метод {@code Callback2.onGetContentRect()} для указания координат объекта
+{@link android.graphics.Rect} контента (например, прямоугольника выделения текста) в представлении.</li>
+<li>Если расположение прямоугольника больше недействительно и это единственный элемент, который не подлежит пересчитыванию,
+вызовите метод {@code ActionMode.invalidateContentRect()}.</li>
+</ol>
+
+<p>Если вы используете
+<a href="{@docRoot}tools/support-library/index.html">вспомогательную библиотеку Android</a> версии 22.2, то помните, что перемещаемым панелям инструментов
+не свойственна обратная совместимость и по умолчанию для управления объектами {@link android.view.ActionMode}
+используется библиотека appcompat. Это означает, что перемещаемые панели инструментов не будут отображаться. Чтобы включить поддержку
+{@link android.view.ActionMode} в
+{@link android.support.v7.app.AppCompatActivity}, вызовите метод
+{@code android.support.v7.app.AppCompatActivity.getDelegate()}, затем вызовите
+{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} для возвращенного объекта
+{@link android.support.v7.app.AppCompatDelegate} и задайте для параметра input
+значение {@code false}. Этот вызов возвращает управление объектами {@link android.view.ActionMode}
+платформе. На устройствах под управлением M Preview платформа поддерживает как режимы
+{@link android.support.v7.app.ActionBar}, так и режимы перемещаемых панелей инструментов, тогда как на устройствах под управлением более ранних версий
+поддерживаются только режимы {@link android.support.v7.app.ActionBar}.</p>
+
+<h2 id="behavior-keystore">Изменения в хранилище ключей Android</h2>
+<p>В M Preview
+<a href="{@docRoot}training/articles/keystore.html">поставщик хранилища ключей Android</a> больше не поддерживает
+DSA. ECDSA по-прежнему поддерживается.</p>
+
+<p>Ключи, для которых не требуется шифрование в хранилище, больше не будут удаляться при отключении или сбросе защищенного экрана блокировки
+(например, пользователем или администратором устройства). Ключи, для которых требуется шифрование
+в хранилище, во время таких событий будут удалены.</p>
+
+<h2 id="behavior-network">Изменения в работе с Wi-Fi и сетями</h2>
+
+<p>Ниже перечислены изменения в API-интерфейсах для работы с Wi-Fi и сетями, реализованные в M Preview.</p>
+<ul>
+<li>Теперь ваши приложения могут изменять состояние объектов {@link android.net.wifi.WifiConfiguration}
+только в том случае, если эти объекты вы создали сами. Вам запрещено изменять или удалять объекты
+{@link android.net.wifi.WifiConfiguration}, созданные пользователем или другими приложениями.
+</li>
+<li>
+Ранее, если приложение принудительно подключало устройство к определенной сети Wi-Fi с помощью метода
+{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} и настройки
+{@code disableAllOthers=true}, то устройство отключалось от других сетей, например, от
+сотовой сети. В M Preview устройство больше не отключается от других сетей. Если
+в вашем приложении для параметра {@code targetSdkVersion} выбрано значение {@code “20”} или меньше, оно закрепляется за выбранной сетью
+Wi-Fi. Если же параметр {@code targetSdkVersion} имеет значение {@code “21”} или больше, следует использовать
+API-интерфейсы для работы с несколькими сетями (такие как
+{@link android.net.Network#openConnection(java.net.URL) openConnection()},
+{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} и новый метод
+{@code ConnectivityManager.bindProcessToNetwork()}), чтобы обеспечить отправку
+сетевого трафика приложения в выбранную сеть.</li>
+</ul>
+
+<h2 id="behavior-camera">Изменения в службе камеры</h2>
+<p>В M Preview изменена модель получения доступа к ресурсам в службе камеры.
+ Если раньше запросы доступа обрабатывались в порядке поступления, то теперь процессы с высоким приоритетом имеют преимущество.
+ В работе службы камеры произошли следующие изменения:</p>
+<ul>
+<li>Доступ к ресурсам подсистемы камеры, включая открытие и настройку устройства камеры,
+предоставляется в зависимости от того, какой приоритет имеет процесс клиентского приложения. Процессы приложений с операциями, которые
+видны пользователю или выполняются на переднем плане, обычно имеют более высокий приоритет, что повышает возможность доступа к ресурсам камеры и их
+использования.</li>
+<li>Когда приложение с более высоким приоритетом пытается использовать камеру, активные клиенты камеры для приложений с более низким приоритетом могут быть исключены из очереди доступа.
+ В устаревшем API-интерфейсе {@link android.hardware.Camera}
+это приводит к вызову
+{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}
+для исключенного клиента. В API-интерфейсе {@link android.hardware.camera2 Camera2} в таких случаях для исключенного клиента вызывается
+{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}.
+</li>
+<li>На устройствах, где камера позволяет такое, отдельным процессам
+приложения предоставляется возможность одновременно и независимо друг от друга открывать и использовать ресурсы камеры. При этом служба камеры теперь отслеживает и исключает ситуации с использованием ресурсов несколькими процессами,
+когда одновременный доступ вызывает значительное снижение производительности или негативно влияет на возможности
+всех открытых камер. Это изменение
+может привести к отключению доступа для клиентов с более низким приоритетом, даже если к этой же камере не пытаются получить доступ другие приложения.
+
+</li>
+<li>
+Смена пользователя приводит к исключению активных клиентов камеры в приложениях, относящихся к предыдущей учетной записи,
+из очереди доступа. Доступ к камере предоставлен только профилям, которыми владеет активный пользователь устройства.
+Фактически это означает, что если, например, пользователь переключился с гостевой учетной записи на другую, гостевой аккаунт не сможет покинуть запущенные процессы
+, использующие ресурсы подсистемы камеры.
+</li>
+</ul>
+
+<h2 id="behavior-art-runtime">Среда выполнения ART</h2>
+<p>Среда выполнения ART теперь должным образом реализует правила доступа для метода
+{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Это
+изменение позволило устранить проблему, связанную с тем, что в предыдущих версиях система Dalvik неправильно проверяла правила доступа.
+Если ваше приложение использует метод
+{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} и вы
+хотите переопределить проверки доступа, вызовите метод
+{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()}, присвоив параметру input
+значение {@code true}. Если ваше приложение использует
+<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">библиотеку appcompat v7</a> или
+<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">библиотеку recyclerview v7</a>,
+вам необходимо установить актуальные версии этих библиотек. В противном случае убедитесь в том,
+что любые настраиваемые классы, на которые имеются ссылки из XML, обновлены и их конструкторы классов доступны.</p>
+
+<p>В M Preview обновлено поведение динамического компоновщика. Теперь он распознает разницу между
+{@code soname} библиотеки и путем к ней
+(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">ошибка 6670, о которой сообщалось в открытых источниках</a>),
+и позволяет выполнять поиск по {@code soname}.
+ Приложения, которые ранее работали, но содержали неправильные записи {@code DT_NEEDED}
+(обычно абсолютные пути в файловой системе компьютера для сборки), теперь при загрузке могут выдавать ошибки.</p>
+
+<p>В M Preview правильно реализован флаг {@code dlopen(3) RTLD_LOCAL}. Обратите внимание, что
+{@code RTLD_LOCAL} используется по умолчанию, поэтому будут затронуты вызовы {@code dlopen(3)}, которые явно не используют
+{@code RTLD_LOCAL} (за исключением случаев, когда ваше приложение явным образом использует{@code RTLD_GLOBAL}). Поскольку используется
+{@code RTLD_LOCAL}, символы не будут доступны для библиотек, загруженных с использованием последующих вызовов
+{@code dlopen(3)} (в противоположность ссылкам из записей {@code DT_NEEDED}).</p>
+</p>
+
+<h2 id="behavior-apk-validation">Проверка пакетов APK</h2>
+<p>Теперь платформа более строго подходит к проверке пакетов APK. Пакет APK считается поврежденным, если файл объявлен
+в манифесте, но отсутствует в самом пакете APK. Пакет APK подлежит повторной подписи в случае удаления любого его
+содержимого.</p>
+
+<h2 id="behavior-afw">Изменения в Android for Work</h2>
+<p>В M Preview представлены следующие изменения работы Android for Work:</p>
+<ul>
+<li><strong>Рабочие контакты в контексте личных сведений.</strong> Теперь при просмотре пользователем прошлых звонков в журнале вызовов Google Dialer
+в нем отображаются и рабочие контакты.
+Чтобы скрыть эти сведения в журнале вызовов, установите для параметра {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} значение {@code true}.
+ Рабочие контакты могут отображаться на устройствах через Bluetooth вместе с
+личными контактами только в том случае, если
+для параметра {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} задано значение {@code false}. По
+умолчанию для этого параметра установлено значение {@code true}.
+</li>
+<li><strong>Удаление конфигурации Wi-Fi.</strong> Конфигурации Wi-Fi, добавленные владельцем профиля
+(например, посредством вызова метода
+{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
+addNetwork()}), теперь удаляются при удалении соответствующего рабочего профиля.</li>
+<li><strong>Блокировка конфигурации Wi-Fi.</strong> Пользователю больше не удастся изменить или удалить любые конфигурации Wi-Fi, созданные активным
+владельцем устройства. Пользователь по-прежнему может создавать
+и изменять свои собственные конфигурации Wi-Fi, если для этого пользователя не задана константа
+{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} {@link android.os.UserManager}.</li>
+<li><strong>Загрузка приложения «Контроллер политики работы» путем добавления учетной записи Google.</strong> Теперь при добавлении на устройство учетной записи Google,
+для управления которой требуется приложение «Контроллер политики работы»,
+вне управляемого контекста пользователю предлагается установить соответствующее приложение.
+Это также применимо к учетным записям, добавляемым посредством мастера первоначальной настройки устройства в разделе
+<strong>Настройки &gt; Учетные записи</strong>.</li>
+<li><strong>Изменения, касающиеся работы API-интерфейса DevicePolicyManager.</strong>
+Вызов метода {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
+затрагивает только использование камеры пользователем, который его вызвал; вызов этого метода из управляемого профиля
+не влияет на работу приложений камеры, выполняющихся для основного пользователя. Кроме того, метод
+{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
+теперь доступен как для владельцев устройства, так и для владельцев профиля. Владелец профиля может задать
+следующие ограничения для блокировки клавиатуры:
+<ul>
+<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} и
+{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, которые влияют на настройки
+блокировки клавиатуры для родительского пользователя профиля;</li>
+<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, которое
+влияет только на уведомления, создаваемые приложениями в управляемом профиле.</li>
+</ul>
+</li>
+</ul>
diff --git a/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd
new file mode 100644
index 0000000..7d12b2d
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd
@@ -0,0 +1,794 @@
+page.title=Разрешения
+page.tags=previewresources, androidm
+page.keywords=разрешения, среда выполнения, предварительная версия
+page.image={@docRoot}preview/features/images/permissions_check.png
+@jd:body
+
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>Краткое описание</h2>
+ <ul>
+ <li>Если ваше приложение предназначено для пакета SDK M Preview, пользователю будет предложено предоставить для него разрешения
+ не в процессе установки, а при работе с приложением.</li>
+ <li>Пользователь также может в любой момент отозвать разрешения, воспользовавшись экраном приложения «Настройки»
+.</li>
+ <li>Ваше приложение должно проверять наличие соответствующих разрешений при каждом запуске.
+</li>
+ </ul>
+
+ <h2>Содержание документа</h2>
+ <ol>
+ <li><a href="#overview">Обзор</a></li>
+ <li><a href="#coding">Добавление в код разрешений на выполнение</a></li>
+ <li><a href="#testing">Тестирование разрешений на выполнение</a></li>
+ <li><a href="#best-practices">Советы и рекомендации</a></li>
+ </ol>
+
+<!--
+ <h2>Related Samples</h2>
+ <ol>
+ <li></li>
+ </ol>
+-->
+
+<!--
+ <h2>See also</h2>
+ <ol>
+ <li></li>
+ </ol>
+-->
+ </div> <!-- qv -->
+</div> <!-- qv-wrapper -->
+
+
+<p>
+ В версии M Developer Preview представлена новая модель разрешений для приложений, которая
+оптимизирует для пользователей процесс установки и обновления приложений. Если приложение,
+работающее в M Preview, поддерживает новую модель разрешений, пользователю не нужно предоставлять какие-либо
+разрешения при установке приложения или его обновлении. Вместо этого приложение
+запрашивает разрешения, когда в них возникает необходимость, — в таких случаях система отображает для пользователя диалоговое окно с просьбой предоставить
+соответствующее разрешение.
+</p>
+
+<p>
+ Если приложение поддерживает новую модель разрешений, его, тем не менее, можно установить и
+запустить на устройстве под управлением одной из более ранних версий Android, и оно будет использовать старую модель
+разрешений.
+</p>
+
+<h2 id="overview">
+ Обзор
+</h2>
+
+<p>
+ В версии M Developer Preview представлена новая
+модель разрешений. Ниже приводится краткий обзор ее ключевых компонентов:
+</p>
+
+<ul>
+ <li>
+ <strong>Объявление разрешений.</strong> Все разрешения, которые требуются
+приложению, объявляются в его манифесте, как и в более ранних версиях платформы Android.
+ </li>
+
+ <li>
+ <strong>Группы разрешений.</strong> Разрешения
+<em>группируются</em> по типу их функциональных возможностей. Например, в группе разрешений
+<code>CONTACTS</code> находятся разрешения на чтение и запись
+контактов пользователя и информации из его профиля.
+ </li>
+
+ <li>
+ <p><strong>Ограниченные разрешения, предоставляемые во время установки.</strong> Когда
+пользователь устанавливает или обновляет приложение, система предоставляет такому приложению все запрашиваемые им
+разрешения, соответствующие константе {@link
+android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
+ Например, разрешения для будильника и подключения к Интернету соответствуют константе {@link
+android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL},
+поэтому они предоставляются автоматически во время установки.
+ </p>
+
+ <p>Система также может предоставить приложению подпись и системные разрешения, как описано в разделе
+<a href="#system-apps">Предоставление приложениям системных разрешений и
+подписи</a>. Пользователю <em>не предлагается</em> предоставить какие-либо разрешения
+во время установки.</p>
+ </li>
+
+ <li>
+ <strong>Предоставление пользователем разрешений во время выполнения.</strong> Когда приложение запрашивает разрешение,
+система отображает для пользователя соответствующее диалоговое окно, а затем вызывает функцию обратного вызова приложения
+с целью уведомить его о том, предоставлены ли необходимые разрешения. Если
+пользователь предоставляет разрешение, приложение получает весь набор разрешений в рамках данной функциональной области
+разрешения, который был объявлен в манифесте приложения.
+ </li>
+
+</ul>
+
+<p>
+ Новая модель разрешений влияет на поведение приложений при работе с функциями, для
+которых требуются разрешения. При использовании этой модели в разработке
+ обратите внимание на следующие рекомендации:
+</p>
+
+<ul>
+
+ <li>
+ <strong>Всегда проверяйте наличие разрешений.</strong> Когда приложению необходимо выполнить
+какое-либо действие, для которого требуется разрешение, оно должно сначала проверить,
+имеется ли у него такое разрешение. Если разрешение отсутствует, приложение
+должно запросить его.
+ </li>
+
+ <li>
+ <strong>Если вам не дают разрешения, выходите из положения красиво.</strong> Если у приложения
+нет нужного разрешения, оно должно обработать эту ошибку разумно.
+ Например, если разрешение требуется лишь для необязательной функции, приложение может
+просто отключить ее. Если же приложение не может работать без данного разрешения,
+ оно может отключить все свои функциональные возможности и проинформировать пользователя,
+что для работы ему требуется разрешение.
+ </li>
+
+ <div class="figure" style="width:220px" id="fig-perms-screen">
+ <img src="{@docRoot}preview/features/images/app-permissions-screen_2x.png" srcset="{@docRoot}preview/features/images/app-permissions-screen.png 1x, {@docRoot}preview/features/images/app-permissions-screen_2x.png 2x" alt="" width="220">
+ <p class="img-caption">
+ <strong>Рисунок 1.</strong> Экран разрешений в настройках приложения.
+ </p>
+ </div>
+
+ <li>
+ <strong>Разрешения можно отзывать.</strong> Пользователи могут в любое время отозвать разрешения
+приложения. Когда пользователь отзывает разрешения,
+приложение <em>не</em> уведомляется об этом. Снова повторим, что приложение должно всегда проверять наличие
+разрешений, прежде чем выполнять любые действия, для которых они необходимы.
+ </li>
+</ul>
+
+<p class="note">
+ <strong>Примечание.</strong> Если приложение предназначено для M Developer Preview, оно
+<em>должно в обязательном порядке</em> использовать новую модель разрешений.
+</p>
+
+<p>
+ На момент выпуска M Developer Preview не все приложения Google в полной мере реализуют
+ новую модель разрешений. Google обновляет эти приложения
+по мере разработки M Developer Preview, чтобы они должным образом поддерживали настройки
+разрешений.
+</p>
+
+<p class="note">
+ <strong>Примечание.</strong> Если у вашего приложения имеется собственная поверхность API-интерфейса, прежде чем проксировать
+разрешения, убедитесь сначала в том, что у вызывающей операции имеются надлежащие
+разрешения на доступ к данным.
+</p>
+
+<h3 id="system-apps">
+ Предоставление приложениям системных разрешений и подписи
+</h3>
+
+<p>
+ Как правило, когда пользователь устанавливает приложение, система предоставляет такому приложению только те
+разрешения, которые соответствуют константе {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
+PROTECTION_NORMAL}. Однако в определенных ситуациях система предоставляет
+приложению больше разрешений:
+</p>
+
+<ul>
+ <li>если приложение является частью системного образа, ему автоматически предоставляются все
+разрешения, обозначенные в его манифесте;
+ </li>
+
+ <li>если в манифесте приложения запрашиваются разрешения, соответствующие константе {@link
+android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE},
+а для подписи приложения использовался то же сертификат, что и для приложения,
+объявившего эти разрешения, система предоставляет запрашивающему приложению необходимые разрешения при
+установке.
+ </li>
+</ul>
+
+<p>
+ В обоих случаях пользователь по-прежнему может в любое время отозвать разрешения, обратившись к
+экрану <strong>Настройки</strong> и выбрав <strong>Приложения
+&gt;</strong> <i>название_приложения</i> <strong>&gt; Разрешения</strong>. Поэтому приложение все равноу
+должно проверять наличие разрешений во время выполнения и при необходимости запрашивать их.
+
+</p>
+
+<h3 id="compatibility">
+ Совместимость с предыдущими и последующими версиями
+</h3>
+
+<p>
+ Если приложение не предназначено для M Developer Preview, оно
+продолжает использовать старую модель разрешений даже на устройствах под управлением M Preview. В таком случае при установке приложения
+ система предлагает пользователю предоставить все разрешения,
+указанные в манифесте приложения.
+</p>
+
+<p class="note">
+ <strong>Примечание.</strong> На устройствах под управлением M Developer Preview пользователь может отключить
+разрешения для любого приложения (включая устаревшие приложения) на экране «Настройки».
+ Если пользователь решит отключить разрешения для устаревших приложений, система
+автоматически отключит соответствующие функциональные возможности. Когда приложение пытается
+выполнить операцию, для которой требуется такое разрешение, это
+не обязательно приведет к возникновению исключения. Вместо этого оно может выдать пустой набор данных,
+сигнал об ошибке или иным образом обозначить непредвиденное поведение. Например, если запросить
+календарь, не имея соответствующего разрешения, метод возвратит пустой набор данных.
+</p>
+
+<p>
+ При установке приложения с использованием новой модели разрешений на устройство
+под управлением другой версии ОС, отличной от M Preview,
+система рассматривает такое приложение как любое другое и предлагает
+пользователю предоставить все объявленные разрешения уже во время установки.
+</p>
+
+<p class="note">
+ <strong>Примечание.</strong> В случае с предварительной версией в качестве минимальной версии пакета SDK
+следует задать версию SDK M Preview, чтобы получить возможность компилировать код с помощью пакета SDK предварительной версии. Это означает,
+что вы не сможете протестировать такие приложения на старых платформах
+во время использования предварительной версии для разработчиков.
+</p>
+
+<h3 id="perms-vs-intents">Разрешения и намерения</h3>
+
+<p>
+ Во многих случаях при разработке приложения у вас есть выбор между двумя способами выполнения задачи:
+ вы можете настроить приложение таким образом, чтобы оно самостоятельно запрашивало соответствующие разрешения на выполнение
+операции, или же можно указать ему использовать намерение, чтобы задачу выполнило
+другое приложение.
+</p>
+
+<p>
+ Например, предположим, что вашему приложению требуется возможность делать снимки с помощью камеры устройства.
+ Ваше приложение может запросить разрешение
+<code>android.permission.CAMERA</code>, которое позволит ему напрямую получить доступ
+к камере. Затем ваше приложение использует API-интерфейсы камеры
+для управления камерой и получения снимков. Благодаря такому подходу ваше приложение получает
+полный контроль над процессом фотографирования. Кроме того, это позволяет вам вставить пользовательский интерфейс камеры
+в свое приложение.
+</p>
+
+<p>
+ Если же вам не требуется такой контроль, просто воспользуйтесь намерением {@link
+android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE}
+для запроса изображения. Когда вы запускаете намерение, пользователю предлагается выбрать
+приложение камеры (если оно отличается от приложения камеры по умолчанию), после чего
+это приложение делает снимок. Приложение камеры возвращает полученное изображение в метод {@link
+android.app.Activity#onActivityResult onActivityResult()} вашего приложения.
+</p>
+
+<p>
+ Аналогичным образом, если вам необходимо позвонить, получить доступ к контактам пользователя и так далее,
+можно создать соответствующее намерение или запросить
+разрешение и напрямую получить доступ к нужным объектам. У каждого подхода есть
+как преимущества, так и недостатки.
+</p>
+
+<p>
+ При использовании разрешений:
+</p>
+
+<ul>
+ <li>Ваше приложение получает полный контроль над взаимодействием пользователя с интерфейсом во время выполнения
+операции. Однако такой широкий контроль усложняет вашу задачу,
+требуя разработать подходящий пользовательский интерфейс.
+ </li>
+
+ <li>Пользователю предлагается предоставить разрешения только один раз, при первом
+выполнении операции. После этого ваше приложение может выполнять операцию без вмешательства
+со стороны пользователя. Однако если пользователь не
+предоставит разрешение (или отзовет его позже), ваше приложение не сможет выполнить
+операцию.
+ </li>
+</ul>
+
+<p>
+ При использовании намерений:
+</p>
+
+<ul>
+ <li>Вам не нужно разрабатывать пользовательский интерфейс для выполнения операции, его предоставляет приложение, которое обрабатывает
+намерение. Однако это также означает, что у вас отсутствует контроль над
+взаимодействием пользователя с интерфейсом. Возможно, пользователю придется взаимодействовать с
+приложением, которое вы даже не видели.
+ </li>
+
+ <li>Если у пользователя нет приложения по умолчанию для выполнения операции, система
+предлагает ему выбрать приложение. Если пользователь не назначит обработчик
+по умолчанию, то при каждом выполнении операции для него может
+отображаться дополнительное диалоговое окно.
+ </li>
+</ul>
+
+<h2 id="coding">Добавление в код разрешений на выполнение</h2>
+
+<p>
+ Если ваше приложение предназначено для новой версии M Developer Preview, вы должны в обязательном порядке использовать
+новую модель разрешений. Это означает, что кроме объявления требуемых разрешений
+в манифесте, вам следует проверять наличие этих разрешений
+во время выполнения, а также запрашивать их, если у вас
+еще нет необходимых разрешений.
+</p>
+
+<h3 id="enabling">
+ Активация новой модели разрешений
+</h3>
+
+<p>
+ Чтобы активировать новую модель разрешений M Developer Preview, задайте для атрибута
+<code>targetSdkVersion</code> приложения значение <code>"MNC"</code>, а для атрибута
+<code>compileSdkVersion</code> – значение <code>"android-MNC"</code>. Это позволит
+включить все функции новой модели разрешений.
+</p>
+
+<p>
+ В случае с предварительной версией необходимо задать для параметра <code>minSdkVersion</code> значение
+<code>"MNC"</code>, чтобы получить возможность компилировать код с помощью пакета SDK предварительной версии.
+</p>
+
+<h3 id="m-only-perm">
+ Назначение разрешений только для M Preview
+</h3>
+
+<p>
+ В манифесте приложения можно использовать новый элемент <code>&lt;uses-permission-sdk-m&gt;</code>,
+чтобы указать, что разрешение требуется только для M Developer Preview. Если объявить
+разрешение таким способом, то при установке приложения на устройство с более старой версией платформы
+система не будет отправлять запрос пользователю или предоставлять разрешение приложению.
+С помощью элемента <code>&lt;uses-permission-sdk-m&gt;</code>
+вы можете добавлять новые разрешения
+в обновленные версии вашего приложения без принудительного запроса у пользователей разрешений при
+установке обновления.
+</p>
+
+<p>
+ Если приложение запущено на устройстве под управлением M Developer Preview,
+поведение элемента <code>&lt;uses-permission-sdk-m&gt;</code> аналогично поведению
+<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html">&lt;uses-permission&gt;</a></code>.
+ Система не запрашивает у пользователей предоставление каких-либо разрешений, когда они устанавливают
+приложение. Вместо этого приложение само запрашивает разрешения, когда они требуются.
+</p>
+
+<h3 id="prompting">
+ Запрос разрешений
+</h3>
+
+<p>
+ Если ваше приложение использует новую модель разрешений M Developer Preview, то при первом запуске приложения
+на устройстве под управлением
+M Preview пользователю не предлагается предоставить все разрешения. Вместо этого приложение само запрашивает разрешения, когда они
+требуются. Когда приложение запрашивает разрешение, система отображает для пользователя соответствующее диалоговое
+окно.
+</p>
+
+<p>
+ Если ваше приложение запущено на устройстве с пакетом SDK уровня 22 или более низкого, то приложение использует старую
+модель разрешений. То есть при каждой устновке приложения пользователю будет предложено предоставить приложению все разрешения,
+запрашиваемые в манифесте приложения, кроме
+отмеченных элементом <code>&lt;uses-permission-sdk-m&gt;</code>.
+</p>
+
+<h4 id="check-platform">Проверка платформы, на которой выполняется приложение</h4>
+
+<p>
+ Новая модель разрешений поддерживается только на устройствах под управлением M Developer
+Preview. Прежде чем вызывать любые из этих методов, приложению следует проверить,
+на какой платформе оно выполняется,
+обратившись к значению параметра {@link android.os.Build.VERSION#CODENAME
+Build.VERSION.CODENAME}. Если устройство работает под управлением M Developer Preview,
+то значение параметра{@link android.os.Build.VERSION#CODENAME CODENAME} будет <code>"MNC"</code>.
+</p>
+
+<h4 id="check-for-permission">Проверка наличия у приложения необходимого разрешения</h4>
+
+<p>Когда пользователи пытаются выполнить какое-либо действие, для которого требуется разрешение, приложение
+проверяет, имеется ли у него в настоящее время разрешение на выполнение этой операции. Для этого
+приложение вызывает метод
+<code>Context.checkSelfPermission(<i>permission_name</i>)</code>. Приложению
+следует выполнять такую проверку даже в том случае, если ему известно, что пользователь уже предоставил
+необходимое разрешение,
+поскольку пользователь может в любое время отозвать разрешения приложения. Например, если пользователь
+хочет получить снимок с помощью приложения, то приложение вызывает метод
+<code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.</p>
+
+<p class="table-caption" id="permission-groups">
+ <strong>Таблица 1.</strong> Разрешения и группы разрешений.</p>
+<table>
+ <tr>
+ <th scope="col">Группа разрешений</th>
+ <th scope="col">Разрешения</th>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.CALENDAR</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.READ_CALENDAR</code>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <code>android.permission.WRITE_CALENDAR</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.CAMERA</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.CAMERA</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.CONTACTS</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.READ_CONTACTS</code>
+ </li>
+ <li>
+ <code>android.permission.WRITE_CONTACTS</code>
+ </li>
+ <li>
+ <code>android.permission.READ_PROFILE</code>
+ </li>
+ <li>
+ <code>android.permission.WRITE_PROFILE</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.LOCATION</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.ACCESS_FINE_LOCATION</code>
+ </li>
+ <li>
+ <code>android.permission.ACCESS_COARSE_LOCATION</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.MICROPHONE</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.RECORD_AUDIO</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.PHONE</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.READ_PHONE_STATE</code>
+ </li>
+ <li>
+ <code>android.permission.CALL_PHONE</code>
+ </li>
+ <li>
+ <code>android.permission.READ_CALL_LOG</code>
+ </li>
+ <li>
+ <code>android.permission.WRITE_CALL_LOG</code>
+ </li>
+ <li>
+ <code>com.android.voicemail.permission.ADD_VOICEMAIL</code>
+ </li>
+ <li>
+ <code>android.permission.USE_SIP</code>
+ </li>
+ <li>
+ <code>android.permission.PROCESS_OUTGOING_CALLS</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.SENSORS</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.BODY_SENSORS</code>
+ </li>
+ </ul>
+ <ul>
+ <li>
+ <code>android.permission.USE_FINGERPRINT</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>android.permission-group.SMS</code></td>
+ <td>
+ <ul>
+ <li>
+ <code>android.permission.SEND_SMS</code>
+ </li>
+ <li>
+ <code>android.permission.RECEIVE_SMS</code>
+ </li>
+ <li>
+ <code>android.permission.READ_SMS</code>
+ </li>
+ <li>
+ <code>android.permission.RECEIVE_WAP_PUSH</code>
+ </li>
+ <li>
+ <code>android.permission.RECEIVE_MMS</code>
+ </li>
+ <li>
+ <code>android.permission.READ_CELL_BROADCASTS</code>
+ </li>
+ </ul>
+ </td>
+ </tr>
+
+</table>
+
+<h4 id="request-permissions">Запрос разрешений при необходимости</h4>
+
+<p>Если у приложения нет требуемого разрешения, оно вызывает метод
+<code>Activity.requestPermissions(String[], int)</code>, чтобы запросить его.
+ Приложение передает в него
+требуемые разрешения, а также целочисленный код запроса.
+ Этот метод выполняется асинхронно: он возвращает результат сразу же, а после того как пользователь
+предоставляет ответ в диалоговом окне, система вызывает метод обратного вызова
+приложения с результатами и передает в него тот же код запроса, который приложение передало в метод
+<code>requestPermissions()</code>.</p>
+
+ <p>Ниже представлен пример кода для проверки наличия у приложения разрешения на чтение контактов
+пользователя и запроса соответствующего разрешения при необходимости.</p>
+
+<pre>
+if (checkSelfPermission(Manifest.permission.READ_CONTACTS)
+ != PackageManager.PERMISSION_GRANTED) {
+ requestPermissions(new String[]{Manifest.permission.READ_CONTACTS},
+ MY_PERMISSIONS_REQUEST_READ_CONTACTS);
+
+ // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
+ // app-defined int constant
+
+ return;
+}
+</pre>
+
+<h4 id="handle-response">Обработка ответа на запрос разрешений</h4>
+
+<p>
+ Когда приложение запрашивает разрешения, система отображает для пользователя соответствующее диалоговое
+окно. После получения ответа от пользователя система вызывает метод
+<code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
+вашего приложения и передает в него ответ пользователя. Вашему приложению необходимо переопределить этот метод. В обратном
+вызове передается тот же код запроса, который вы передали в метод
+<code>requestPermissions()</code>. Например, если приложение запрашивает доступ на
+<code>READ_CONTACTS</code>, то метод обратного вызова
+может быть следующим:
+</p>
+
+<pre>
+&#64;Override
+public void onRequestPermissionsResult(int requestCode,
+ String permissions[], int[] grantResults) {
+ switch (requestCode) {
+ case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+
+ // permission was granted, yay! do the
+ // calendar task you need to do.
+
+ } else {
+
+ // permission denied, boo! Disable the
+ // functionality that depends on this permission.
+ }
+ return;
+ }
+
+ // other 'switch' lines to check for other
+ // permissions this app might request
+ }
+}
+</pre>
+
+ <p>Если пользователь предоставляет разрешение, система, в свою очередь, представляет все разрешения,
+запрашиваемые в манифесте приложения для обозначенной функциональной области. Если пользователь
+отказывает в предоставлении разрешения, вам необходимо принять меры. Например, вы можете отключить любые пункты меню
+, для использования которых требуется это разрешение.
+ </li>
+</p>
+
+<p>
+ Когда система предлагает пользователю предоставить разрешение, он может указать системе,
+чтобы она больше не запрашивала это разрешение. В этом случае,
+когда приложение использует метод <code>requestPermissions()</code> для запроса такого разрешения,
+система сразу же отклоняет запрос. При этом система вызывает ваш метод
+<code>onRequestPermissionsResult()</code> так же, как если бы пользователь повторно
+отклонил ваш запрос. Поэтому ваше приложение
+не считает, что имело место прямое взаимодействие с пользователем.
+</p>
+
+<h2 id="testing">Тестирование разрешений на выполнение</h2>
+
+
+<p>
+ Если ваше приложение предназначено для новой версии M Developer Preview, то вы должны протестировать
+его и убедиться в том, что оно должным образом обрабатывает разрешения. Не надо исходить из того, что к началу работы ваше приложение уже имеет
+любые определенные разрешения. При первом запуске приложения оно,
+скорее всего, не будет обладать разрешениями, а в дальнейшем пользователь может в любой момент отозвать или восстановить
+разрешения.
+</p>
+
+<p>
+ Вам следует протестировать ваше приложение и убедиться в том, что оно ведет себя должным образом в
+любых ситуациях, касающихся разрешений. Мы включили в состав пакета SDK M Preview SDK новые команды
+<a href="{@docRoot}tools/help/adb.html">Android
+Debug Bridge (ADB)</a>, чтобы вы могли протестировать ваше приложение с любыми настройками разрешений,
+которые вы хотите попробовать в действии.
+</p>
+
+<h3>
+ Новые команды и параметры ADB
+</h3>
+
+<p>
+ В состав пакета инструментов SDK M Preview входит ряд новых команд, позволяющих протестировать обработку разрешений
+вашим приложением.
+</p>
+
+<h4>
+ Установка с разрешениями
+</h4>
+
+<p>
+ Можно воспользоваться новым параметром <code>-g</code> команды <a href="{@docRoot}tools/help/adb.html#move"><code>adb
+ install</code></a>, который служит для установки
+приложения и предоставления всех разрешений, указанных в его манифесте:
+</p>
+
+<pre class="no-pretty-print">
+$ adb install -g &lt;path_to_apk&gt;
+</pre>
+
+<h4>
+ Предоставление разрешений и их отзыв
+</h4>
+
+<p>
+ Для предоставления разрешений установленному приложению и их отзыва можно использовать новые команды <a href="{@docRoot}tools/help/adb.html#pm">диспетчера пакетов</a>
+ADB.
+Такая функциональная возможность может быть полезна для автоматизированного тестирования.
+</p>
+
+<p>
+ Для представления разрешения используйте команду <code>grant</code> диспетчера пакетов:
+</p>
+
+<pre class="no-pretty-print">
+$ adb pm grant &lt;package_name&gt; &lt;permission_name&gt;
+</pre>
+
+<p>
+ Например, чтобы представить пакету com.example.myapp разрешение на запись
+аудио, воспользуйтесь следующей командой:
+</p>
+
+<pre class="no-pretty-print">
+$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
+</pre>
+
+<p>
+ Чтобы отозвать разрешение, используйте команду <code>revoke</code> диспетчера пакетов:
+</p>
+
+<pre class="no-pretty-print">
+$ adb pm revoke &lt;package_name&gt; &lt;permission_name&gt;
+</pre>
+
+<h2 id="best-practices">Советы и рекомендации</h2>
+
+<p>
+ Новая модель разрешений делает работу пользователей удобнее,
+упрощает для них процесс установки приложений и позволяет лучше понимать,
+что делает то или иное приложение. Чтобы использовать все преимущества
+этой модели, примите во внимание следующие рекомендации:
+</p>
+
+
+<h3 id="bp-what-you-need">Запрашивайте только те разрешения, которые необходимы</h3>
+
+<p>
+ Каждый раз, когда вы запрашиваете разрешение, вы заставляете пользователя делать выбор.
+ Если пользователь отклоняет запрос, соответствующая функциональная возможность приложения отключается.
+ Вам следует сократить количество таких запросов.
+</p>
+
+<p>
+ Например, во многих случаях можно предоставить приложению доступ к нужной функции посредством
+<a href="{@docRoot}guide/components/intents-filters.html">намерения</a> вместо
+запроса разрешений. Если вашему приложению необходимо получить снимки с камеры
+телефона, можно использовать намерение {@link
+android.provider.MediaStore#ACTION_IMAGE_CAPTURE
+MediaStore.ACTION_IMAGE_CAPTURE}. Когда ваше приложение выполняет намерение, система
+предлагает пользователю выбрать уже установленное приложение камеры для
+получения снимков.
+</p>
+
+<h3 id="bp-dont-overwhelm">
+ Не перегружайте пользователя запросами
+</h3>
+
+<p>
+ Если на пользователя обрушивается сразу много запросов разрешений, он может
+решить, что все это слишком сложно, и просто закрыть приложение. Поэтому разрешения следует
+запрашивать только тогда, когда это необходимо.
+</p>
+
+<p>
+ Иногда приложению жизненно необходимы одно или несколько разрешений.
+В таких случаях имеет смысл запросить все разрешения
+сразу при запуске приложения. Например, если вы разрабатываете приложение для фотографирования, то ему
+однозначно потребуется доступ к камере устройства. Когда пользователь в первый раз запускает приложение,
+он не удивится, если приложение запросит у него разрешение на
+использование камеры. Однако если в этом же приложении имеется функция обмена фотографиями с
+контактами пользователя, возможно, <em>не следует</em> запрашивать соответствующее разрешение при
+первом запуске приложения. Лучше дождаться, когда пользователю потребуется функция обмена контентом,
+и уже тогда запросить разрешение.
+</p>
+
+<p>
+ Если в вашем приложении имеются обучающие материалы, может оказаться целесообразным запросить необходимые разрешения
+после того, как пользователь изучит материалы.
+</p>
+
+<h3 id="bp-explain">
+ Всегда поясняйте, для чего требуются те или иные разрешения
+</h3>
+
+<p>
+ В диалоговом окне запроса разрешений, которое система отображает при вызове вами метода
+<code>requestPermissions()</code>, обозначается требуемое для приложения разрешение,
+однако не указывается, для чего оно необходимо. В некоторых случаях это может озадачить пользователя.
+ Поэтому, прежде чем вызывать метод
+<code>requestPermissions()</code>, стоит пояснить пользователю, для чего вашему приложению требуются разрешения.
+</p>
+
+<p>
+ Например, приложению для фотографирования может потребоваться доступ к службам геолокации, чтобы фотографии можно было снабдить
+геотегами. Не все пользователи знают, что
+фотография может содержать данные о месте съемки, и им может показаться странным, что приложение для фотографирования запрашивает данные
+о местоположении. В этом случае полезно
+рассказать пользователю о такой возможности, <em>прежде</em> чем вызывать метод
+<code>requestPermissions()</code>.
+</p>
+
+<p>
+ Это можно сделать, в частности, внедрив такие запросы в обучающие материалы приложения. В обучающих
+материалах могут содержаться описания каждой из функций приложения с пояснением,
+какие разрешения необходимы для их использования. Например, в обучающий материал по работе с приложением для фотографирования
+можно включить описание функции обмена контентом с контактами, после чего
+пояснить, что для этого пользователю следует предоставить приложению доступ к его контактам.
+ После этого приложение может вызвать метод <code>requestPermissions()</code> для запроса
+доступа. Конечно, не все пользователи обращаются к обучающим материалам,
+поэтому вам по-прежнему следует проверять наличие разрешений и при необходимости запрашивать
+их во время обычной работы приложения.
+</p>
diff --git a/docs/html-intl/intl/ru/preview/overview.jd b/docs/html-intl/intl/ru/preview/overview.jd
new file mode 100644
index 0000000..6ed1d20
--- /dev/null
+++ b/docs/html-intl/intl/ru/preview/overview.jd
@@ -0,0 +1,362 @@
+page.title=Обзор программы
+page.metaDescription=Добро пожаловать в программу Android M Developer Preview, участники которой получают всё необходимое для тестирования и оптимизации своих приложений для следующей версии платформы Android.
+page.image=images/cards/card-preview_16-9_2x.png
+page.tags="preview", "developer", "android"
+
+@jd:body
+
+<p>
+ Добро пожаловать в программу <strong>Android M Developer Preview</strong>, участники которой получают всё необходимоедля тестирования и оптимизации своих приложений для следующей версии платформы Android.
+
+ Это бесплатная программа, и приступить к ее использованию можно прямо сейчас, загрузив
+инструменты M Developer Preview.
+</p>
+
+<div style="background-color:#eceff1;padding:1em;">
+<div class="wrap">
+ <div class="cols">
+ <div class="col-4of12">
+ <h5>
+ Системные образы эмулятора и оборудования
+ </h5>
+
+ <p>
+ Запускайте и тестируйте ваши приложения на устройствах Nexus 5, 6, 9 и Player (для Android TV), а также в эмуляторе.
+
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Самый актуальный код платформы
+ </h5>
+
+ <p>
+ Во время знакомства с предварительной версией платформы мы будем предоставлять различные обновления, поэтому вы сможете протестировать самые актуальные изменения в платформе.
+
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Получение обновлений по беспроводной связи
+ </h5>
+
+ <p>
+ После прошивки своего устройства для работы с предварительной версией платформы вы сможете получать обновления по беспроводной связи.
+
+ </p>
+ </div>
+ </div>
+
+ <div class="cols">
+
+
+ <div class="col-4of12">
+ <h5>
+ Новые возможности и новые функции
+ </h5>
+
+ <p>
+ Начните уже заранее реализовывать в своих приложениях поддержку расширенной функциональности платформы, например, новую модель разрешений на выполнение и функции сбережения энергии.
+
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Приоритетная обработка отчетов об ошибках от разработчиков
+ </h5>
+
+ <p>
+ В течение первых нескольких недель мы будем рассматривать отчеты об ошибках, поступающие от разработчиков, в приоритетном порядке, поэтому не теряйте времени и приступайте к тестированию и составлению отзывов как можно раньше.
+
+ </p>
+ </div>
+
+ <div class="col-4of12">
+ <h5>
+ Отзывы и поддержка
+ </h5>
+
+ <p>
+ Отправляйте нам отчеты об ошибках и предоставляйте свои отзывы с помощью нашей <a href="https://code.google.com/p/android-developer-preview/">системы отслеживания проблем</a>.
+ Обменивайтесь идеями и предложениями с другими разработчиками в <a href="http://g.co/dev/AndroidMDevPreview">сообществе разработчиков Android&nbsp;M</a>.
+
+ </p>
+ </div>
+ </div>
+</div>
+</div>
+
+<!--
+<p>
+ With the M Developer Preview, you'll get an early start on testing your apps,
+ with enough time to make adjustments before the public platform release later
+ in the year. We'll provide several updates to the Preview tools in the weeks
+ ahead, so you can keep in sync with the latest changes as the platform moves
+ toward launch.
+</p>
+<img src="{@docRoot}preview/images/m-preview-timeline.png" alt=
+"Preview program timeline" id="timeline">
+<p>
+ You can help us improve the platform by <a href=
+ "https://code.google.com/p/android-developer-preview/">reporting issues</a>
+ through our feedback channels. This is especially
+ critical in the first month of the preview, when we’ll be giving priority to
+ developer-reported issues and feedback.
+</p> -->
+
+
+<h2 id="timeline">
+ График и обновления
+</h2>
+<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
+<p>
+ Тестирование версии M Developer Preview запланировано на период с 28 мая до выпуска окончательной версии пакета SDK Android M, который
+состоится незадолго до публикации новой платформы в открытом доступе в
+третьем квартале 2015 г.
+</p>
+
+<p>
+ На ключевых этапах разработки платформы мы предоставим обновления для тестовых устройств.
+ Ниже перечислены предварительные даты этих ключевых этапов.
+</p>
+
+<ul>
+ <li>
+ <strong>Preview&nbsp;1</strong> (первоначальный выпуск версии Preview, конец мая)
+ </li>
+
+ <li>
+ <strong>Preview&nbsp;2</strong> (конец июня/начало июля)
+ </li>
+
+ <li>
+ <strong>Preview&nbsp;3</strong> (почти окончательный выпуск, конец июля)
+ </li>
+</ul>
+
+<p>
+ Завершающим этапом обновлений станет выход <strong>окончательной версии пакета SDK</strong> (в третьем квартале),
+где будут представлены официальные API-интерфейсы для новой версии Android, а также
+окончательные версии функций и поведений системы.
+</p>
+
+<p>
+ Мы настоятельно рекомендуем вам в ходе тестирования и разработки приложений для Android M <strong>постоянно
+обновлять вашу среду разработки</strong> по мере выхода обновлений для версии Preview.
+ Чтобы упростить этот процесс, мы будем отправлять на устройства, которые уже прошиты для работы с предварительной версией платформы, <strong>обновления по беспроводной сети</strong>.
+Мы также будем предоставлять вам системные образы, которые можно
+загрузить и использовать для прошивки устройства вручную.
+</p>
+<p class="note">
+ <strong>Примечание.</strong> Окончательные версии пакета SDK и системных образов не будут отправляться по беспроводной сети,
+их придется <strong>вручную установить</strong> на
+тестовые устройства.</strong>
+</p>
+
+<p>
+ Мы будем сообщать о появлении обновлений для версии Preview в <a href="http://android-developers.blogspot.com/">блоге разработчиков Android</a>, а
+также на этом сайте и в
+<a href="http://g.co/dev/AndroidMDevPreview">сообществе разработчиков Android M</a>.
+</p>
+
+<h2 id="preview_tools">
+ Что входит в состав Preview?
+</h2>
+
+<p>
+ M Developer Preview содержит всё, что вам необходимо для тестирования ваших существующих приложений на экранах различных размеров,
+тестирования с использованием различных сетевых технологий, чипсетов ЦП и графических процессоров,
+ а также на различных архитектурах оборудования.
+</p>
+
+<h4>
+ Инструменты SDK
+</h4>
+
+<p>
+ С помощью менеджера SDK в <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> вы можете загрузить следующие компоненты:
+</p>
+
+<ul>
+ <li><strong>Инструменты SDK</strong> для M Developer Preview.
+ </li>
+
+ <li><strong>Системный образ эмулятора</strong> (32- и
+64-разрядная версии) для M Developer Preview.
+ </li>
+
+ <li><strong>Системный образ эмулятора для Android TV</strong> (32- и
+32-разрядная версии)
+ </li>
+</ul>
+
+<h4>
+ Системные образы оборудования
+</h4>
+
+<p>
+ На странице
+<a href="download.html">Загрузки</a> можно скачать следующие системные образы оборудования:
+</p>
+
+<ul>
+ <li>
+ Системный образ устройства <strong>Nexus 5</strong> (GSM/LTE) («hammerhead»)
+ </li>
+
+ <li>
+ Системный образ устройства <strong>Nexus 6</strong> («shamu»)
+ </li>
+
+ <li>
+ Системный образ устройства <strong>Nexus 9</strong> (Wi-Fi) («volantis»)
+ </li>
+
+ <li>
+ Системный образ устройства <strong>Nexus Player</strong> (Android TV) («fugu»)
+ </li>
+</ul>
+
+<h4>
+ Документация и примеры кода
+</h4>
+
+<p>
+ Здесь вы можете найти документацию, где представлены подробные сведения о версии Preview:
+</p>
+
+<ul>
+ <li>
+ Документ, посвященный <a href="setup-sdk.html">настройке пакета SDK</a>, с пошаговыми инструкциями
+по началу работы.
+ </li>
+
+ <li>
+ <a href="{@docRoot}preview/testing/guide.html">Руководство по тестированию</a> и <a href="behavior-changes.html">обзор изменений в работе</a> с указанием ключевых областей для тестирования.
+ </li>
+
+ <li>Документация по новым API-интерфейсам, включая <a href="api-overview.html">обзор API-интерфейсов</a>,
+<a href="{@docRoot}preview/download.html#docs">справочник по API-интерфейсам</a> для загрузки и подробные руководства для разработчиков,
+в которых освещаются такие ключевые функции платформы,
+как <a href="{@docRoot}preview/features/runtime-permissions.html">разрешения</a>,
+<a href="{@docRoot}preview/backup/index.html">резервное копирование приложений</a> и многое другое.
+ </li>
+
+ <li>
+ <a href="{@docRoot}preview/samples.html">Примеры кода</a>, где можно посмотреть реализацию поддержки
+разрешений и других новых функций.
+ </li>
+
+ <li>
+ <a href="{@docRoot}preview/support.html#release-notes">Примечания к выпуску</a> для текущей версии
+M Developer Preview, включая информацию об изменениях и различные отчеты.
+ </li>
+</ul>
+
+<h4>
+ Ресурсы поддержки
+</h4>
+
+<p>
+ При тестировании и разработке приложений для M
+Developer Preview рекомендуем пользоваться следующими ресурсами поддержки:
+</p>
+
+<ul>
+ <li><a href="https://code.google.com/p/android-developer-preview/">Система отслеживания проблем M
+Developer Preview</a> — это ваш <strong>основной канал для предоставления своих
+отзывов.</strong> С ее помощью вы можете сообщать нам об обнаруженных ошибках, проблемах производительности, а также предоставлять общие отзывы.
+ Также можно ознакомиться с <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">известными проблемами</a>
+и действиями по их устранению.
+ </li>
+
+ <li><a href="http://g.co/dev/AndroidMDevPreview">Сообщество разработчиков Android
+M</a> — это сообщество Google+, где можно <strong>общаться с другими
+разработчиками</strong>, работающими с Android M. Делитесь в сообществе своими наблюдениями
+и идеями, а также находите ответы на вопросы об Android M.
+ </li>
+</ul>
+
+
+<h2 id="preview_apis_and_publishing">
+ Выбор целевого уровня, предварительные версии API-интерфейсов и публикация приложений
+</h2>
+
+<p>
+ Выпуск Android M Developer Preview предназначен исключительно для разработки и
+<strong>не имеет стандартного уровня API</strong>. Если вы не хотите
+проверять свое приложение на совместимость (хотя мы настоятельно рекомендуем делать это),
+выберите целевой уровень M Developer Preview, задав для параметра <code><a href=
+ "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
+своего приложения значение <code>“MNC”</code>.
+</p>
+
+<p>
+ В Android M Developer Preview представлены <strong>предварительные версии API-интерфейсов</strong>
+&mdash;. Такие API-интерфейсы не будут официально опубликованы до выпуска окончательной версии пакета SDK,
+ намеченого на третий квартал 2015 г. Это означает, что в будущем можно
+<strong>ожидать незначительных изменений в API-интерфейсах</strong>, особенно в
+первые недели действия программы. Каждое обновление
+Android M Developer Preview будет включать обзор изменений.
+</p>
+
+<p class="note">
+ Обратите внимание, что несмотря на возможные изменения в предварительных версиях API-интерфейсов, соответствующие расширения функциональности системы,
+такие как разрешения на выполнение и функции сбережения энергии, работают стабильно и уже готовы для
+тестирования.
+</p>
+
+<p>
+ Что касается публикации приложений, то политика Google Play <strong>однозначно запрещает публикацию приложений,
+разработанных для M Developer Preview</strong>. После выхода окончательной версии пакета SDK Android M
+вы сможете выбрать официальный целевой уровень API Android M и приступить
+к публикации ваших приложений в магазине Google Play. Тем временем, если вы хотите распространить приложение, предназначенное для
+тестировщиков Android M, то используйте для этого электронную почту или разместите такие приложения на своем сайте
+для прямой загрузки.
+</p>
+
+<h2 id="get_started">
+ Начало работы
+</h2>
+
+<p>
+ Чтобы приступить к тестированию своего приложения, выполните указанные ниже действия.
+</p>
+
+<ol>
+ <li>Ознакомьтесь с <a href="{@docRoot}preview/api-overview.html">обзором API-интерфейсов</a>
+и сведениями об <a href="{@docRoot}preview/behavior-changes.html">изменениях в работе</a>, чтобы получить
+представление о новых возможностях платформы и о том, как это может повлиять на ваши приложения. В частности, узнайте подробнее о новой модели
+<a href="{@docRoot}preview/features/runtime-permissions.html">разрешений на
+выполнение</a>, функциях сбережения энергии и автоматическом резервном копировании.
+ </li>
+
+ <li>Настройте свою среду, руководствуясь инструкциями по
+<a href="{@docRoot}preview/setup-sdk.html">настройке пакета SDK Preview</a>
+и конфигурированию тестовых устройств.
+ </li>
+
+ <li>Выполните
+<a href="https://developers.google.com/android/nexus/images">инструкции по прошивке</a>, чтобы прошить устройства
+Nexus 5, 6, 9 и Player с использованием последнего системного образа M Developer Preview. После прошивки вашего устройства для разработки
+обновления Preview на него будут приходить по беспроводной сети.</a>
+ </li>
+
+ <li>Загрузите <a href="{@docRoot}preview/download.html#docs">справочник по API-интерфейсам M Preview</a>
+и <a href="{@docRoot}preview/samples.html">примеры кода M Preview</a>
+, чтобы узнать больше о новых возможностях API-интерфейсов и о том, как использовать их в ваших
+приложениях.
+ </li>
+
+ <li>Присоединяйтесь к <a href="http://g.co/dev/AndroidMDevPreview">сообществу разработчиков Android
+M</a>, чтобы всегда быть в курсе последних новостей и общаться с другими
+разработчиками, работающими с новой платформой.
+ </li>
+</ol>
+
+<p>
+ Благодарим за участие в программе Android M Developer!
+</p>