Merge "Camera: codegen doc update" into mnc-docs
diff --git a/docs/html-intl/intl/es/preview/api-overview.jd b/docs/html-intl/intl/es/preview/api-overview.jd
deleted file mode 100644
index 9f68613..0000000
--- a/docs/html-intl/intl/es/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=Información general de la API
-page.keywords=preview,sdk,compatibility
-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>Contenido del documento<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
-
- <span class="more">mostrar más</span>
- <span class="less" style="display:none">mostrar menos</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
- <li><a href="#app-linking">Vinculación de la aplicación</a></li>
- <li><a href="#backup">Copia de seguridad automática para aplicaciones</a></li>
- <li><a href="#authentication">Autenticación</a>
- <ol>
- <li><a href="#fingerprint-authentication">Autenticación por huellas dactilares</a></li>
- <li><a href="#confirm-credential">Confirmar credencial</a></li>
- </ol>
- </li>
- <li><a href="#direct-share">Compartir de forma directa</a></li>
- <li><a href="#voice-interactions">Interacciones de voz</a></li>
- <li><a href="#assist">Asistencia de API</a></li>
- <li><a href="#notifications">Notificaciones</a></li>
- <li><a href="#bluetooth-stylus">Soporte del lápiz Bluetooth</a></li>
- <li><a href="#ble-scanning">Exploración mejorada de Bluetooth de bajo consumo</a></li>
- <li><a href="#hotspot">Soporte de Hotspot 2.0 versión 1</a></li>
- <li><a href="#4K-display">Modo de pantalla 4K</a></li>
- <li><a href="#behavior-themeable-colorstatelists">ColorStateLists para poder aplicar temas</a></li>
- <li><a href="#audio">Características de audio</a></li>
- <li><a href="#video">Características de video</a></li>
- <li><a href="#camera">Características de la cámara</a>
- <ol>
- <li><a href="#flashlight">API para luz de flash</a></li>
- <li><a href="#reprocessing">Reprocesamiento de la cámara</a></li>
- </ol>
- </li>
- <li><a href="#afw">Características de Android for Work</a></li>
-</ol>
-
-<h2>Diferencias de las API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">Nivel de API 22 para la versión preliminar de Android M »</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview le brinda una perspectiva avanzada de la próxima versión de la plataforma Android, que ofrece nuevas características para usuarios y desarrolladores de aplicaciones.
-
- En este documento, se brinda una introducción sobre las API más distinguidas.</p>
-
-<p>M Developer Preview está destinado a <strong>usuarios desarrolladores principiantes</strong> y <strong>evaluadores</strong>.
- Si le interesa influenciar la dirección del marco de trabajo de Android,
-<a href="{@docRoot}preview/setup-sdk.html">pruebe M Developer Preview y</a> envíenos sus comentarios.
-
-</p>
-
-<p class="caution"><strong>Advertencia:</strong> No publique las aplicaciones que utilizan M Developer Preview en la tienda de Google Play.
-</p>
-
-<p class="note"><strong>Nota:</strong> Este documento, a menudo, hace referencia a clases y métodos que aún no cuentan con materiales de referencia disponibles en <a href="{@docRoot}">developer.android.com</a>.
- Estos elementos de API tienen el formato {@code code style} en este documento (sin hipervínculos).
- Para obtener la documentación preliminar de la API para estos elementos, descargue la <a href="{@docRoot}preview/download.html#docs"> referencia de la versión preliminar</a>.
-</p>
-
-<h3>Importantes cambios en los comportamientos</h3>
-
-<p>Si publicó anteriormente una aplicación para Android, tenga en cuenta que su aplicación podría verse afectada por los cambios en la plataforma.
-</p>
-
-<p>Consulte la sección <a href="behavior-changes.html">Cambios en los comportamientos</a> para obtener información detallada.</p>
-
-<h2 id="app-linking">Vinculación de la aplicación</h2>
-<p>Esta versión preliminar mejora el sistema de intentos de Android al proporcionar una vinculación más sólida de la aplicación. Esta característica le permite asociar una aplicación con un dominio web propio.
- Según esta asociación, la plataforma puede determinar la aplicación predeterminada que se debe utilizar para controlar un vínculo web en particular y omitir el paso de pedirles a los usuarios que seleccionen una aplicación. Para aprender a implementar esta característica, consulte la sección
-<a href="{@docRoot}preview/features/app-linking.html">Vinculación de la aplicación</a>.
-
-
-
-<h2 id="backup">Copia de seguridad automática para aplicaciones</h2>
-<p>Ahora, el sistema realiza restauraciones y copias de seguridad de datos completas y automáticas para las aplicaciones. Este comportamiento se habilita de forma predeterminada para las aplicaciones que tienen como destino la versión preliminar de Android M; usted no necesita agregar ningún código adicional.
- Si los usuarios eliminan sus cuentas de Google, también se eliminarán sus datos de copias de seguridad.
- Para obtener información sobre cómo funciona esta característica y cómo configurar qué elementos incluir en la copia de seguridad del sistema de archivo, consulte la sección
-<a href="{@docRoot}preview/backup/index.html">Copia de seguridad automática para aplicaciones</a>.
-</p>
-
-<h2 id="authentication">Autenticación</h2>
-<p>Esta versión preliminar ofrece nuevas API para permitirle autenticar usuarios al usar escaneos de huellas dactilares en los dispositivos compatibles y verificar cuán reciente es la última autenticación del usuario al utilizar un mecanismo de desbloqueo de dispositivos (como una contraseña de pantalla de bloqueo).
-
- Use estas API junto con el <a href="{@docRoot}training/articles/keystore.html">sistema Android Keystore</a>.
-</p>
-
-<h3 id="fingerprint-authentication">Autenticación por huellas dactilares</h3>
-
-<p>Para autenticar usuarios mediante el escaneo de huellas dactilares, obtenga una instancia de la nueva clase
-{@code android.hardware.fingerprint.FingerprintManager} y llame al método
-{@code FingerprintManager.authenticate()}. Su aplicación se debe ejecutar en un dispositivo compatible con un sensor de huellas dactilares.
- Debe implementar la interfaz de usuario para el flujo de autenticación por huellas dactilares en su aplicación y debe utilizar el ícono de huella dactilar estándar de Android en la UI. El ícono de huella dactilar de Android ({@code c_fp_40px.png}) se incluye en la
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">aplicación de muestra</a>. Si está desarrollando múltiples aplicaciones que utilizan la autenticación por huellas dactilares, tenga en cuenta que cada aplicación debe autenticar la huella dactilar del usuario de manera independiente.
-
-
-
-</p>
-
-<p>Para utilizar esta característica en su aplicación, primero agregue el permiso {@code USE_FINGERPRINT} en su manifiesto.
-</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>Para ver cómo una aplicación implementa la autenticación por huellas dactilares, consulte la sección
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">
-Ejemplo de diálogo de huella dactilar</a>.</p>
-
-<p>Si está evaluando esta característica, siga estos pasos:</p>
-<ol>
-<li>Instale la Revisión de herramientas del SDK de Android versión 24.3, si todavía no la instaló.</li>
-<li>Registre una huella dactilar nueva en el emulador; para hacerlo, vaya a
-<strong>Settings > Security > Fingerprint</strong>, luego siga las instrucciones de registro.</li>
-<li>Use un emulador para emular eventos táctiles de huellas dactilares con el siguiente comando.
- Utilice el mismo comando para emular eventos táctiles de huellas dactilares en la pantalla de bloqueo o en su aplicación.
-
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>En Windows, posiblemente tenga que ejecutar {@code telnet 127.0.0.1 <emulator-id>} seguido de
- {@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Confirmar credencial</h3>
-<p>Su aplicación puede autenticar usuarios según el tiempo que haya pasado desde que desbloquearon su dispositivo por última vez. Esta característica evita que los usuarios tengan que recordar contraseñas adicionales específicas de la aplicación y elimina la necesidad de que usted tenga que implementar su propia interfaz de usuario de autenticación.
-
- Su aplicación debe utilizar esta característica junto con una implementación de clave pública o secreta para la autenticación del usuario.
-</p>
-
-<p>Para definir la duración del tiempo de espera en el que se puede volver a usar la misma clave después de que un usuario se haya autenticado correctamente, llame al nuevo método
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
-cuando configure {@link javax.crypto.KeyGenerator} o
-{@link java.security.KeyPairGenerator}.
- Esta característica actualmente funciona para operaciones criptográficas simétricas.
-</p>
-
-<p>Evite mostrar el diálogo de nueva autenticación de forma excesiva: sus aplicaciones deben intentar utilizar el objeto criptográfico primero y, si se agota el tiempo de espera, deben usar el método
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
-para volver a autenticar el usuario dentro de su aplicación.
-
-</p>
-
-<p>Para ver cómo la aplicación implementa esta característica, consulte la sección
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">
-Ejemplo de cómo confirmar la credencial</a>.</p>
-
-<h2 id="direct-share">Compartir de forma directa</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>Esta versión preliminar le proporciona API para que la acción de compartir sea intuitiva y rápida para los usuarios. Ahora, puede definir <em>destinos para compartir de forma directa</em> que inician una actividad específica en su aplicación. Estos destinos para compartir de forma directa se exponen a los usuarios a través del menú <em>Share</em>.
-
- Esta característica les permite a los usuarios compartir contenido con los destinos, como contactos, dentro de otras aplicaciones.
- Por ejemplo, el destino para compartir de forma directa podría iniciar una actividad en otra aplicación de red social, lo que le permite al usuario compartir contenido directamente con una comunidad o un amigo específicos de esa aplicación.
-
-</p>
-
-<p>Para habilitar destinos para compartir de forma directa, debe definir una clase que extienda el
-{@code android.service.} <br>
-Clase {@code chooser.ChooserTargetService}. Declare su
-{@code ChooserTargetService} en el manifiesto. En esa declaración, especifique el permiso
-{@code BIND_CHOOSER_TARGET_SERVICE} y un filtro de intento con la acción
-{@code SERVICE_INTERFACE}.</p>
-<p>El ejemplo a continuación muestra de qué manera podría declarar {@code ChooserTargetService} en su manifiesto.
-</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>Para cada actividad que desee exponer a {@code ChooserTargetService}, agregue un elemento
-{@code <meta-data>} con el nombre
-{@code "android.service.chooser.chooser_target_service"} en el manifiesto de su aplicación.
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">Interacciones de voz</h2>
-<p>
-Esta versión preliminar proporciona una nueva API de interacción de voz que, junto con las
-<a href="https://developers.google.com/voice-actions/" class="external-link">acciones de voz</a>,
-le permite compilar experiencias de conversaciones de voz en sus aplicaciones. Llame al método
-{@code android.app.Activity.isVoiceInteraction()} para determinar si su actividad se inició en respuesta a una acción de voz.
- De ser así, su aplicación puede utilizar la clase
-{@code android.app.VoiceInteractor} para solicitar una confirmación de voz por parte del usuario, realizar una selección de una lista de opciones y mucho más.
- Para obtener más información sobre cómo implementar acciones de voz, consulte el
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">sitio para desarrolladores de acciones de voz</a>.
-</p>
-
-<h2 id="assist">Asistencia de API</h2>
-<p>
-Esta versión preliminar ofrece una nueva manera para que los usuarios interactúen con sus aplicaciones a través de un asistente. Si desea utilizar esta característica, el usuario debe habilitar el asistente para utilizar el contexto actual.
- Una vez habilitado, para invocar al asistente dentro de cualquier aplicación, el usuario debe mantener presionado el botón <strong>Home</strong>.
-</p>
-<p>Su aplicación puede optar por no compartir el contexto actual con el asistente al configurar la marca
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Además del conjunto de información estándar que la plataforma le pasa al asistente, su aplicación puede compartir información adicional usando la nueva clase {@code android.app.Activity.AssistContent}.
-
-</p>
-
-<p>Para proporcionarle al asistente contexto adicional desde su aplicación, siga estos pasos:</p>
-
-<ol>
-<li>Implemente la interfaz {@link android.app.Application.OnProvideAssistDataListener}.</li>
-<li>Registre esta escucha usando
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>Para proporcionar información contextual específica de la actividad, invalide la devolución de llamada
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
-y, opcionalmente, la nueva devolución de llamada {@code Activity.onProvideAssistContent()}.
-</ol>
-
-<h2 id="notifications">Notificaciones</h2>
-<p>Esta versión preliminar agrega los siguientes cambios de API para las notificaciones:</p>
-<ul>
- <li>Nuevo nivel de filtro {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} que corresponde al nuevo modo ocupado <em>Solo alarmas</em>.
-</li>
- <li>Nuevo valor de categoría {@code Notification.CATEGORY_REMINDER} que se utiliza para distinguir recordatorios programados por el usuario de otros eventos
- ({@link android.app.Notification#CATEGORY_EVENT}) y alarmas
- ({@link android.app.Notification#CATEGORY_ALARM}).
-</li>
- <li>Nueva clase {@code android.graphics.drawable.Icon} que se puede adjuntar a sus notificaciones a través de los métodos {@code Notification.Builder.setSmallIcon(Icon)} y
-{@code Notification.Builder.setLargeIcon(Icon)}.
-</li>
- <li>Nuevo método {@code NotificationManager.getActiveNotifications()} que permite que sus aplicaciones descubran qué notificaciones se encuentran actualmente activas.
- Para ver una implementación de la aplicación que utilice esta característica, consulte la sección <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">Ejemplo de notificaciones activas</a>.
-</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Compatibilidad del lápiz Bluetooth</h2>
-<p>Esta versión preliminar ofrece soporte mejorado para las entradas de usuarios que utilizan un lápiz Bluetooth. Los usuarios pueden sincronizar y conectar un lápiz Bluetooth compatible con su teléfono o tablet.
- Mientras está conectado, la información de posición de la pantalla táctil se fusiona con la información de los botones y la presión del lápiz para proporcionar una mayor variedad de expresiones que al utilizar la pantalla táctil solamente.
-
- Su aplicación puede obedecer cuando se presiona el botón del lápiz y cuando se realizan acciones secundarias al registrar las nuevas devoluciones de llamadas
-{@code View.onStylusButtonPressListener} y {@code GestureDetector.OnStylusButtonPressListener}
-en su actividad.
-</p>
-
-<p>Utilice las constantes y los métodos {@link android.view.MotionEvent} para detectar las interacciones del botón del lápiz:
-</p>
-<ul>
-<li>Si el usuario toca un lápiz con un botón en la pantalla de su aplicación, el método
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} devuelve
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>Para las aplicaciones que tienen como destino la versión preliminar de Android M, el método
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
-devuelve {@code MotionEvent.STYLUS_BUTTON_PRIMARY} cuando el usuario presiona el botón principal del lápiz.
- Si el lápiz tiene un segundo botón, el mismo método devuelve
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY} cuando el usuario lo presiona. Si el usuario presiona ambos botones simultáneamente, el método devuelve ambos valores juntos separados por “OR” ({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).
-
-</li>
-<li>
-Para las aplicaciones que tienen como destino una versión anterior de la plataforma, el método
-{@link android.view.MotionEvent#getButtonState() getButtonState()} devuelve
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (cuando se presiona el botón principal),
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (cuando se presiona el botón secundario) o ambos.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Exploración mejorada de Bluetooth de bajo consumo</h2>
-<p>
-Si su aplicación realiza exploraciones de Bluetooth de bajo consumo, puede utilizar el nuevo método
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar que usted desea que las devoluciones de llamadas se notifiquen solo cuando se encuentre por primera vez un paquete de anuncio que coincida con el conjunto
-{@link android.bluetooth.le.ScanFilter} y cuando no se vea durante un período determinado.
-
- Este enfoque de exploración es más eficaz en cuanto al consumo de energía que la que se proporciona en la versión anterior de la plataforma.
-
-</p>
-
-<h2 id="hotspot">Soporte de Hotspot 2.0 versión 1</h2>
-<p>
-Esta versión preliminar agrega soporte para la especificación de Hotspot 2.0 versión 1 en los dispositivos Nexus 6 y Nexus 9. Para proveer credenciales de Hotspot 2.0 en su aplicación, use los métodos nuevos de la clase
-{@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} y
-{@code setRealm()}.
- En el objeto {@link android.net.wifi.WifiConfiguration}, puede configurar los campos
-{@link android.net.wifi.WifiConfiguration#FQDN} y {@code providerFriendlyName}. La nueva propiedad {@code ScanResult.PasspointNetwork} indica si una red detectada representa un punto de acceso de Hotspot 2.0.
-
-
-</p>
-
-<h2 id="4K-display">Modo de pantalla 4K</h2>
-<p>Ahora, la plataforma permite que las aplicaciones soliciten que la resolución de pantalla se actualice a una representación 4K en el hardware compatible.
- Para consultar la resolución física actual, use las nuevas API
-{@code android.view.Display.Mode}. Si la UI se establece en una resolución lógica más baja y se aumenta a una resolución física más alta, tenga en cuenta que la resolución física que devuelve el método
-{@code Display.Mode.getPhysicalWidth()} puede ser diferente de la resolución lógica informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.
-
-</p>
-
-<p>Puede pedirle al sistema que cambie la resolución física en su aplicación mientras se ejecuta y, para ello, debe configurar la propiedad {@code WindowManager.LayoutParams.preferredDisplayModeId} de la ventana de su aplicación.
- Esta característica resulta útil si desea cambiar a la resolución de pantalla 4K.
- Mientras se encuentra en el modo de pantalla 4K, la UI se continúa representando en la resolución original (como 1080p) y se aumenta a 4K, pero los objetos
-{@link android.view.SurfaceView} pueden mostrar contenido en la resolución nativa.
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">ColorStateLists para poder aplicar temas</h2>
-<p>Ahora, los atributos de tema se admiten en
-{@link android.content.res.ColorStateList} para los dispositivos que ejecutan la versión preliminar de Android M. Los métodos
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} y
-{@link android.content.res.Resources#getColor(int) getColor()} se dejaron de usar. Si desea llamar a estas API, en su lugar, llame a los métodos nuevos {@code Context.getColorStateList()} o
-{@code Context.getColor()}.
- Estos métodos también se encuentran disponibles en la biblioteca AppCompat v4 vía {@link android.support.v4.content.ContextCompat}.
-</p>
-
-<h2 id="audio">Características de audio</h2>
-
-<p>Esta versión preliminar agrega mejoras al procesamiento de audio en Android, lo que incluye lo siguiente: </p>
-<ul>
- <li>Soporte para el protocolo <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
-, con las nuevas API {@code android.media.midi}. Utilice estas API para enviar y recibir eventos MIDI.
-</li>
- <li>Clases nuevas {@code android.media.AudioRecord.Builder} y {@code android.media.AudioTrack.Builder}
- para crear capturas de audio digital y objetos de reproducción respectivamente, y configurar propiedades de receptores y fuentes de audio para invalidar los valores predeterminados del sistema.
-</li>
- <li>Enlaces de API para asociar dispositivos de entrada y de audio. Esto resulta particularmente útil si su aplicación les permite a los usuarios iniciar una búsqueda por voz desde un controlador para juegos o un control remoto conectados a un TV con Android. El sistema invoca la nueva devolución de llamada {@code android.app.Activity.onSearchRequested()} cuando el usuario inicia una búsqueda.
-
-
- Para determinar si el dispositivo de entrada del usuario tiene un micrófono incorporado, recupere el objeto {@link android.view.InputDevice} de esa devolución de llamada y luego llame al nuevo método
-{@code InputDevice.hasMic()}.
-</li>
- <li>Nueva clase {@code android.media.AudioDevicesManager}, que le permite recuperar una lista de todos los dispositivos de audio receptores y fuente adjuntos.
- También puede especificar un objeto
-{@code android.media.OnAudioDeviceConnectionListener} si desea que su aplicación reciba una notificación cuando se conecta o desconecta un dispositivo de audio.
-</li>
-</ul>
-
-<h2 id="video">Características de video</h2>
-<p>Esta versión preliminar agrega nuevas capacidades a las API de procesamiento de video, entre ellas, las siguientes:</p>
-<ul>
-<li>Nueva clase {@code android.media.MediaSync} que ayuda a las aplicaciones a representar de forma sincrónica transmisiones de audio y video.
- Los búferes de audio se envían de manera que no generan bloqueo y regresan mediante una devolución de llamada.
- Además, admite una velocidad de reproducción dinámica.
-</li>
-<li>Nuevo evento {@code MediaDrm.EVENT_SESSION_RECLAIMED}, que indica cuando una sesión abierta por la aplicación es reclamada por el administrador de recursos.
- Si su aplicación utiliza sesiones DRM, debe controlar este evento y asegurarse de no utilizar una sesión reclamada.
-
-</li>
-<li>Nuevo código de error {@code MediaCodec.CodecException.ERROR_RECLAIMED}, que indica que el administrador de recursos reclamó el recurso multimedia utilizado por el códec.
- Con esta excepción, se debe liberar el códec, ya que pasó al estado terminal.
-
-</li>
-<li>Nueva interfaz {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} para obtener una indicación de la cantidad máxima de instancias concurrentes de códec admitidas.
-
-</li>
-<li>Nuevo método {@code MediaPlayer.setPlaybackParams()} para configurar la velocidad de reproducción multimedia para reproducciones rápidas o lentas.
- Además, alarga o acelera la reproducción de audio de forma automática junto con el video.
-</li>
-</ul>
-
-<h2 id="camera">Características de la cámara</h2>
-<p>Esta versión preliminar incluye las siguientes API nuevas para acceder a la luz de flash de la cámara y para el reprocesamiento de imágenes de la cámara:
-</p>
-
-<h3 id="flashlight">API para luz de flash</h3>
-<p>Si un dispositivo de cámara cuenta con una unidad de flash, puede llamar al método {@code CameraManager.setTorchMode()}
-para activar o desactivar el modo linterna de una unidad de flash sin abrir el dispositivo de cámara. La aplicación no tiene propiedad exclusiva de la unidad de flash ni del dispositivo de cámara.
- El modo linterna se desactiva y deja de estar disponible cuando la cámara no se encuentra disponible o cuando otros recursos de la cámara que mantienen la linterna encendida dejan de estar disponibles.
-
- Otras aplicaciones también pueden llamar a {@code setTorchMode()}
-para desactivar el modo linterna. Cuando se cierra la última aplicación que activó el modo linterna, este modo se desactiva.
-</p>
-
-<p>Si desea registrar una devolución de llamada para recibir una notificación sobre el estado del modo linterna, llame al método
-{@code CameraManager.registerTorchCallback()}. La primera vez que se registra la devolución de llamada, se llama inmediatamente con el estado del modo linterna de todos los dispositivos de cámara que se conocen actualmente y que tengan una unidad de flash.
-
- Si el modo linterna se activa o desactiva correctamente, se invoca al método
-{@code CameraManager.TorchCallback.onTorchModeChanged()}.</p>
-
-<h3 id="reprocessing">API de reprocesamiento</h3>
-<p>La API {@link android.hardware.camera2 Camera2} se extiende para admitir el reprocesamiento de imágenes privadas de formato opaco y YUV.
- Su aplicación determina si las capacidades de reprocesamiento se encuentran disponibles vía {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}.
- Si un dispositivo admite el reprocesamiento, usted puede crear una sesión de captura de cámara reprocesable llamando a
-{@code CameraDevice.createReprocessableCaptureSession()} y puede crear solicitudes para el reprocesamiento de búferes de entrada.
-
-</p>
-
-<p>Utilice la clase {@code ImageWriter} para conectar el flujo del búfer de entrada a la entrada de reprocesamiento de la cámara.
- Para obtener un búfer vacío, siga el modelo de programación que se indica a continuación:</p>
-
-<ol>
-<li>Llame al método {@code ImageWriter.dequeueInputImage()}.</li>
-<li>Complete los datos en el búfer de entrada.</li>
-<li>Envíe el búfer a la cámara llamando al método {@code ImageWriter.queueInputImage()}.</li>
-</ol>
-
-<p>Si está utilizando un objeto {@code ImageWriter} junto con una imagen
-{@code android.graphics.ImageFormat.PRIVATE}, su aplicación no puede acceder a los datos de la imagen de forma directa.
- En cambio, pase la imagen {@code ImageFormat.PRIVATE} directamente a
-{@code ImageWriter} llamando al método {@code ImageWriter.queueInputImage()} sin ninguna copia del búfer.
-</p>
-
-<p>La clase {@code ImageReader} ahora admite secuencias de imagen de formato {@code android.graphics.ImageFormat.PRIVATE}.
- Este soporte le permite que su aplicación mantenga una cola de imagen circular de imágenes de salida
-{@code ImageReader}, seleccione una o más imágenes y las envíe a
-{@code ImageWriter} para el reprocesamiento de la cámara.</p>
-
-<h2 id="afw">Características de Android for Work</h2>
-<p>Esta versión preliminar incluye las siguientes API nuevas para Android for Work:</p>
-<ul>
- <li><strong>Controles mejorados para dispositivos corporativos de uso único:</strong> El propietario de dispositivo ahora puede controlar las configuraciones que se describen a continuación para mejorar la administración de los dispositivos corporativos de uso único (Corporate-Owned, Single-Use, COSU).
-
-
- <ul>
- <li>Deshabilitar o volver a habilitar la protección de seguridad con el método
-{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
- <li>Deshabilitar o volver a habilitar la barra de estado (lo que incluye configuraciones rápidas, notificaciones y el gesto de navegación al deslizar el dedo hacia arriba para iniciar Google Now) con el método
-{@code DevicePolicyManager.setStatusBarEnabledState()}.
-</li>
- <li>Deshabilitar o volver a habilitar el inicio seguro con la constante {@link android.os.UserManager}
-{@code DISALLOW_SAFE_BOOT}.</li>
- <li>Evitar que se apague la pantalla mientras el dispositivo se encuentra conectado con la constante
- {@link android.provider.Settings.Global} {@code STAY_ON_WHILE_PLUGGED_IN}.</li>
- </ul>
- </li>
- <li><strong>Instalación y desinstalación automáticas de aplicaciones por parte del propietario de dispositivo:</strong> Un propietario de dispositivo ahora puede instalar y desinstalar aplicaciones de manera automática con las API {@link android.content.pm.PackageInstaller}
-, independiente de Google Play for Work.
- Ahora, puede aprovisionar los dispositivos a través de un propietario de dispositivo que obtiene e instala aplicaciones sin interacción del usuario.
- Esta característica es útil para habilitar el aprovisionamiento con un toque de quioscos u otros dispositivos similares sin activar una cuenta de Google.
-</li>
-<li><strong>Acceso automático al certificado de empresa:</strong> Ahora cuando una aplicación llama a
-{@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()}, antes de que se indique al usuario que seleccione un certificado, el propietario de dispositivo o perfil puede llamar al método {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} para proporcionar el alias de forma automática a la aplicación que realiza la solicitud.
-
-
- Esta característica le permite conceder a las aplicaciones gestionadas acceso a certificados sin interacción del usuario.
-</li>
-<li><strong>Aceptación automática de actualizaciones del sistema:</strong> Al configurar una directiva de actualización del sistema con
-{@code DevicePolicyManager.setSystemUpdatePolicy()}, el propietario de dispositivo ahora puede aceptar automáticamente una actualización del sistema, por ejemplo, en el caso de un dispositivo de quiosco, o posponer la actualización y evitar que el usuario la ejecute durante un plazo de hasta 30 días.
-
- Además, un administrador puede configurar un período de tiempo diario en el que se debe ejecutar una actualización, por ejemplo, durante las horas en que no se usa el dispositivo de quiosco.
- Cuando hay una actualización del sistema disponible, el sistema verifica si la aplicación Work Policy Controller definió una directiva de actualización del sistema y se comporta según corresponda.
-
-
-</li>
-<li>
-<strong>Instalación delegada de certificados:</strong> Ahora, un propietario de dispositivo o perfil puede concederle a una aplicación de terceros la capacidad de llamar a estas API de administración de certificados {@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>Protección de restablecimiento de la configuración predeterminada de fábrica:</strong> Al aprovisionar a un propietario de dispositivo, ahora podrá configurar parámetros para desbloquear la protección de restablecimiento de la configuración predeterminada de fábrica (Factory Reset Protection, FRP) configurando el paquete
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}.
- Una aplicación de Programador NFC puede proporcionar estos parámetros después del restablecimiento de un dispositivo para desbloquear la FRP y aprovisionar al dispositivo sin requerir la cuenta de Google configurada previamente.
-
- Si no modifica estos parámetros, la FRP se conserva y evita que el dispositivo se active sin las credenciales de Google activadas previamente.
-
-
-<p>Además, al configurar las restricciones de la aplicación en los servicios de Google Play, los propietarios de dispositivos pueden especificar cuentas de Google alternativas para desbloquear la FRP y reemplazar las que se encuentran activadas en el dispositivo.
-</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>Seguimiento del uso de datos:</strong> Ahora, un propietario de dispositivo o perfil puede consultar las estadísticas de uso de datos que se pueden ver en <strong>Settings > Data</strong> utilizando los nuevos métodos
-{@code android.app.usage.NetworkStatsManager}.
- A los propietarios de perfiles se les concede automáticamente permiso para consultar los datos del perfil que administran, mientras que los propietarios de dispositivo obtienen acceso a los datos de uso del usuario principal administrado.
-
-</li>
-<li><strong>Administración de permisos de tiempo de ejecución:</strong>
-<p>Un propietario de dispositivo o perfil puede configurar una directiva de permisos para todas las solicitudes de tiempo de ejecución de todas las aplicaciones que utilizan
-{@code DevicePolicyManager.setPermissionPolicy()}, a fin de pedirle confirmación al usuario para conceder el permiso de manera normal, o bien, para conceder o negar el permiso automáticamente sin notificarlo.
-
- Si se configura la última directiva, el usuario no puede modificar la selección realizada por el propietario de dispositivo o perfil dentro de la pantalla de permisos de la aplicación en <strong>Settings</strong>.
-
-</p></li>
-<li><strong>VPN en Settings:</strong> Las aplicaciones de la VPN (red privada virtual) ahora se pueden ver en
-<strong>Settings > More > VPN</strong>. Además, las notificaciones que acompañan el uso de la VPN ahora son específicas para la manera en que dicha VPN está configurada.
-
- Para el propietario de perfil, las notificaciones son específicas dependiendo de si la VPN se configura para un perfil administrado, un perfil personal o ambos.
- Para un propietario de dispositivo, las notificaciones son específicas dependiendo de si la VPN se configura para todo el dispositivo.
-</li>
-<li><strong>Notificación del estado del trabajo:</strong> Ahora aparecerá un ícono de maletín en la barra de estado siempre que una aplicación del perfil administrado tenga una actividad en primer plano.
- Además, si el dispositivo se desbloquea directamente para la actividad de una aplicación del perfil administrado, se mostrará una notificación del sistema para informarle al usuario que se encuentra dentro del perfil de trabajo.
-
-
-</li>
-</ul>
-
-<p class="note">
- Para obtener una vista detallada de todos los cambios de la API en M Developer Preview, consulte el <a href="{@docRoot}preview/download.html">Informe de diferencias de las API</a>.
-</p>
diff --git a/docs/html-intl/intl/es/preview/backup/index.jd b/docs/html-intl/intl/es/preview/backup/index.jd
deleted file mode 100644
index 7e23083..0000000
--- a/docs/html-intl/intl/es/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Copia de seguridad automática para aplicaciones
-page.tags=copia de seguridad, recursos de la versión preliminar, androidm
-page.keywords=copia de seguridad, copia de seguridad automática, versión preliminar
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#overview">Información general</a></li>
- <li><a href="#configuring">Configuración de la copia de seguridad de datos</a></li>
- <li><a href="#testing">Pruebas de la configuración de copia de seguridad</a></li>
- <li><a href="#issues">Problemas conocidos</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- A menudo, los usuarios invierten tiempo y esfuerzo significativos para crear datos y configurar preferencias dentro de las aplicaciones.
- Preservar los datos de los usuarios en caso de que reemplacen un dispositivo averiado o se actualicen a uno nuevo es una parte importante para garantizar una excelente experiencia del usuario.
- Los dispositivos que ejecutan el sistema de la versión preliminar de Android M ayudan a garantizar una buena experiencia para los usuarios en estas circunstancias al realizar automáticamente copias de seguridad de los datos de la aplicación en Google Drive.
-
- Los datos de la aplicación se restauran automáticamente si un usuario cambia o actualiza un dispositivo.
-
-</p>
-
-<p>
- Las copias de seguridad automáticas se habilitan para todas las aplicaciones instaladas en dispositivos que ejecuten la versión preliminar de Android M. No se requiere ningún código de aplicación adicional.
- El sistema les proporciona a los usuarios la capacidad de desactivar las copias de seguridad de datos automáticas.
- También puede optar por limitar qué datos de su aplicación se incluyen en la copia de seguridad.
-</p>
-
-<p>
- En este documento, se describe el nuevo comportamiento del sistema y el modo de especificar qué datos incluir en la copia de seguridad de la aplicación.
-
-</p>
-
-<h2 id="overview">Información general</h2>
-
-<p>
- Para preservar los datos que su aplicación crea en un dispositivo de usuario, la característica de copia de seguridad automática los carga a la cuenta de Google Drive del usuario y los cifra.
- No se aplican cargos para usted ni para el usuario por el almacenamiento de datos y los datos guardados no se consideran al calcular la capacidad máxima de la cuenta personal de Google Drive del usuario.
- Durante el período de la versión preliminar de Android M, los usuarios pueden almacenar hasta 25 MB por aplicación de Android.
-
-</p>
-
-<p>
- Las copias de seguridad automáticas se realizan cada 24 horas, cuando el dispositivo está inactivo, se está cargando y está conectado a una red Wi-Fi.
- Cuando se cumplen estas condiciones, el servicio Backup Manager carga todos los datos de copia de seguridad disponibles a la nube.
- Cuando el usuario pasa a un dispositivo nuevo, o desinstala y vuelve a instalar la aplicación de la copia de seguridad, una operación de restauración copia los datos incluidos en la copia de seguridad en el directorio de datos de la aplicación recientemente instalada.
-
-
-</p>
-
-<p class="note">
- <strong>Nota:</strong> Si su aplicación utiliza el <a href="{@docRoot}google/backup/index.html">servicio Android Backup</a> heredado, este nuevo comportamiento no se aplica y el comportamiento de copia de seguridad existente funciona de manera habitual.
-
-
-</p>
-
-
-<h3 id="auto-exclude">Archivos de datos automáticamente excluidos</h3>
-
-<p>
- No todos los datos de la aplicación se deben incluir en la copia de seguridad, como los archivos temporales y los cachés, por lo que el servicio de copias de seguridad automáticas excluye ciertos archivos de datos de manera predeterminada:
-
-</p>
-
-<ul>
- <li>Archivos de los directorios a los que hacen referencia los métodos {@link android.content.Context#getCacheDir
- getCacheDir()} y {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-.
- </li>
-
- <li>Archivos ubicados en almacenamiento externo, salvo que residan en el directorio al que hace referencia el método
- {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-.
- </li>
-
- <li>Archivos ubicados en el directorio a los que hace referencia el método
- {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
- </li>
-</ul>
-
-<h2 id="configuring">Configuración de la copia de seguridad de datos</h2>
-
-<p>
- Las copias de seguridad se realizan para los datos creados por cualquier aplicación instalada en un dispositivo con la versión preliminar de Android M, excepto en el caso de los archivos excluidos automáticamente que se mencionaron en la sección anterior.
- Usted puede limitar y configurar aún más los datos que se incluyen en la copia de seguridad de su aplicación y, para ello, debe utilizar configuraciones en el manifiesto de su aplicación.
-
-</p>
-
-<h3 id="include-exclude">Cómo incluir o excluir datos</h3>
-
-<p>
- De acuerdo con los datos que su aplicación necesita y el modo en que usted guarda estos datos, es posible que tenga que definir reglas específicas para incluir o excluir ciertos archivos o directorios.
- El servicio de copias de seguridad automáticas admite la configuración de estas reglas de copias de seguridad a través del uso de un archivo de configuración XML y el manifiesto de la aplicación.
-
- En el manifiesto de la aplicación, puede especificar un archivo de configuración de esquema de la copia de seguridad, como se muestra en el siguiente ejemplo:
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- En este código de ejemplo, el atributo <code>android:fullBackupContent</code> especifica un archivo XML, ubicado en el directorio <code>res/xml/</code> del proyecto de desarrollo de su aplicación, con el nombre <code>mybackupscheme.xml</code>.
-
- Este archivo de configuración incluye reglas sobre los archivos para los que se realiza una copia de seguridad.
- El siguiente código de ejemplo muestra un archivo de configuración que excluye un archivo específico de las copias de seguridad:
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- Este ejemplo de configuración de copia de seguridad solo excluye un archivo específico de base de datos que no se incluirá en la copia de seguridad.
- Todos los demás archivos se incluirán en la copia de seguridad.
-</p>
-
-<h4>Sintaxis de la configuración de copia de seguridad</h4>
-
-<p>
- La configuración del servicio de copias de seguridad le permite especificar qué archivos incluir en la copia de seguridad o excluir de ella.
- La sintaxis del archivo de configuración XML de copia de seguridad de datos es la siguiente:
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- Los siguientes elementos y atributos le permiten especificar qué archivos incluir de la copia de seguridad o excluir de ella:
-
-</p>
-
-<ul>
- <li>
- <code><include></code>. Use este elemento si desea especificar un conjunto de recursos para realizar una copia de seguridad, en lugar de hacer que el sistema realice una copia de seguridad de todos los datos de su aplicación de forma predeterminada.
- Cuando especifica una etiqueta <code><include></code>, el sistema realiza una copia de seguridad <em>solo de los recursos que se especifican</em>
- con este elemento.
-
- </li>
-
- <li>
- <code><exclude></code>. Use este elemento para especificar un conjunto de recursos para excluir de la copia de seguridad.
- El sistema realizará una copia de seguridad de todos los datos de su aplicación, excepto de los recursos que se especifican con este elemento.
-
- </li>
-
- <li>
- <code>domain.</code> El tipo de recurso que desea incluir en la copia de seguridad o excluir de esta. Entre los valores válidos que usted puede especificar para este atributo se incluyen los siguientes:
-
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>. Especifica que el recurso se encuentra en el directorio raíz de la aplicación.
- </li>
-
- <li>
- <code>file</code>. Corresponde a un recurso del directorio devuelto por el método
-{@link android.content.Context#getFilesDir getFilesDir()}.
- </li>
-
- <li>
- <code>database</code>. Corresponde a una base de datos devuelta por el método
-{@link android.content.Context#getDatabasePath getDatabasePath()} o mediante el uso de la clase
-{@link android.database.sqlite.SQLiteOpenHelper}.
- </li>
-
- <li>
- <code>sharedpref</code>. Corresponde a un objeto {@link android.content.SharedPreferences} devuelto por el método {@link android.content.Context#getSharedPreferences getSharedPreferences()}
-.
-
- </li>
-
- <li>
- <code>external</code>. Especifica que el recurso se encuentra en almacenamiento externo y corresponde a un archivo del directorio devuelto por el método
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}.
-
- </li>
-
- <li>
- <code>path</code>. La ruta de archivo para un recurso que desea incluir en la copia de seguridad o excluir de esta.
-
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">Cómo prohibir las copias de seguridad de datos</h3>
-
-<p>
- Puede optar por impedir que se realicen copias de seguridad automáticas de los datos de su aplicación y, para ello, debe configurar el atributo
-<code>android:allowBackup</code> en <code>false</code> en el elemento de la aplicación de su manifiesto.
- Esta configuración se ilustra en el siguiente código de ejemplo:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">Pruebas de la configuración de copia de seguridad</h2>
-
-<p>
- Cuando haya creado una configuración de copia de seguridad, debe probarla para garantizar que su aplicación guarde los datos y se pueda restaurar correctamente.
-
-</p>
-
-
-<h4>Cómo habilitar un registro de copias de seguridad</h4>
-
-<p>
- Para ayudar a determinar la manera en que la característica de copia de seguridad está analizando su archivo XML, habilite el registro antes de realizar una copia de seguridad de prueba:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Cómo probar la copia de seguridad</h4>
-
-<p>Para ejecutar manualmente una copia de seguridad, primero debe inicializar Backup Manager llamando al siguiente comando:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- Luego, realice una copia de seguridad de su aplicación manualmente utilizando el comando que se indica a continuación y especificando el nombre de paquete para su aplicación como el parámetro <code><PACKAGE></code>:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>Cómo probar la restauración</h4>
-
-<p>
- Para iniciar una restauración manualmente después de realizar una copia de seguridad de los datos, llame al comando que se indica a continuación y especifique el nombre de paquete para su aplicación como el parámetro <code><PACKAGE></code>:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>Advertencia:</b> Esta acción detiene la aplicación y borra sus datos antes de realizar la operación de restauración.
-
-</p>
-
-<p>
- Para iniciar el proceso de restauración de su aplicación, desinstale su aplicación y vuelva a instalarla. Los datos de la aplicación se restaurarán automáticamente desde la nube una vez que se complete la instalación.
-
-</p>
-
-
-<h4>Solución de problemas de las copias de seguridad</h4>
-
-<p>
- Si tiene algún problema, borre los datos de la copia de seguridad y los metadatos asociados; para hacerlo, desactive y vuelva a activar la copia de seguridad en <strong>Settings > Backup</strong>, restablezca el dispositivo a la configuración predeterminada de fábrica o llame al siguiente comando:
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- El valor <code><TRANSPORT></code> debe estar precedido por <code>com.google.android.gms</code>.
- Para obtener una lista de transportes, llame al siguiente comando:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Problemas conocidos</h2>
-
-<p>Los siguientes son problemas conocidos del servicio de copias de seguridad automáticas:</p>
-
-<ul>
- <li><strong>Google Cloud Messaging</strong>: En las aplicaciones que utilizan Google Cloud Messaging para notificaciones push, existe un problema conocido en el que al realizar una copia de seguridad de la Id. de registro devuelta por el registro de Google Cloud Messaging, se pueden romper las notificaciones push de la aplicación restaurada. Es importante realizar una consulta a la API para obtener una nueva Id. de registro después de realizar la instalación en un dispositivo nuevo, lo que no sucede si se realizó una copia de seguridad de la Id. de registro anterior.
-
-
-
-
- Para evitar esta situación, excluya la Id. de registro del conjunto de archivos para incluir en la copia de seguridad.
-
- </li>
-</ul>
diff --git a/docs/html-intl/intl/es/preview/behavior-changes.jd b/docs/html-intl/intl/es/preview/behavior-changes.jd
deleted file mode 100644
index 75936bd..0000000
--- a/docs/html-intl/intl/es/preview/behavior-changes.jd
+++ /dev/null
@@ -1,403 +0,0 @@
-page.title=Cambios en los comportamientos
-page.keywords=versión preliminar,sdk,compatibilidad
-sdk.platform.apiLevel=MNC
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Contenido del documento</h2>
-
-<ol id="toc44" class="hide-nested">
- <li><a href="#behavior-runtime-permissions">Permisos de tiempo de ejecución</a></li>
- <li><a href="#behavior-power">Optimizaciones de ahorro de energía</a>
- <ol>
- <li><a href="#behavior-doze">Doze</a></li>
- <li><a href="#behavior-app-standby">App Standby</a></li>
- </ol>
- </li>
- <li><a href="#behavior-adoptable-storage">Dispositivos de almacenamiento adoptables</a></li>
- <li><a href="#behavior-apache-http-client">Eliminación del cliente HTTP de Apache</a></li>
- <li><a href="#behavior-audiomanager-Changes">Cambios en AudioManager</a></li>
- <li><a href="#behavior-test-selection">Selección de texto</a></li>
- <li><a href="#behavior-keystore">Cambios en Android Keystore</a></li>
- <li><a href="#behavior-network">Cambios en las funciones de red y Wi-Fi</a></li>
- <li><a href="#behavior-camera">Cambios en el servicio de cámara</a></li>
- <li><a href="#behavior-art-runtime">Tiempo de ejecución de ART</a></li>
- <li><a href="#behavior-apk-validation">Validación de APK</a></li>
- <li><a href="#behavior-afw">Cambios en Android for Work</a></li>
-</ol>
-
-<h2>Diferencias de las API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">Nivel de API 22 para la versión preliminar de Android M »</a> </li>
-</ol>
-
-
-<h2>Consulte también</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">Información general de la API de M Developer Preview</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>Además de nuevas características y capacidades, M Developer Preview incluye diversos cambios en el sistema y cambios en los comportamientos de la API.
- En este documento, se destacan algunos de los cambios principales que debe comprender y justificar en sus aplicaciones.
-</p>
-
-<p>Si publicó anteriormente una aplicación para Android, tenga en cuenta que su aplicación podría verse afectada por estos cambios en la plataforma.
-</p>
-
-<h2 id="behavior-runtime-permissions">Permisos de tiempo de ejecución</h1>
-<p>Esta versión preliminar introduce un nuevo modelo de permisos en el que los usuarios ahora pueden administrar directamente los permisos de la aplicación en tiempo de ejecución.
- Este modelo les proporciona a los usuarios mayor visibilidad y control sobre los permisos y, al mismo tiempo, simplifica los procesos de instalación y actualización automática para los desarrolladores de aplicaciones. Los usuarios pueden conceder o revocar permisos de forma individual para las aplicaciones instaladas.
-
- </p>
-
-<p>En sus aplicaciones que tienen como destino la versión preliminar de Android M, asegúrese de comprobar y solicitar los permisos en tiempo de ejecución.
- Para determinar si se concedió un permiso a su aplicación, llame al nuevo método {@code Context.checkSelfPermission()}.
- Para solicitar un permiso, llame al nuevo método
-{@code Activity.requestPermission()}. Incluso si su aplicación no tiene como destino la versión preliminar de Android M, debería probar su aplicación de acuerdo con el nuevo modelo de permisos.
-</p>
-
-<p>Para obtener detalles sobre la compatibilidad del nuevo modelo de permisos en su aplicación, consulte la página
-<a href="{@docRoot}preview/features/runtime-permissions.html">
-Permisos</a> de la versión preliminar para desarrolladores. Para obtener consejos sobre cómo evaluar el impacto en su aplicación, consulte la <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">Guía de prueba</a>.
-</p>
-
-<h2 id="behavior-power">Optimizaciones de ahorro de energía</h2>
-<p>Esta versión preliminar introduce nuevas optimizaciones de ahorro de energía para aplicaciones y dispositivos inactivos.</p>
-
-<h3 id="behavior-doze">Doze</h3>
-<p>Si un dispositivo está desconectado y permanece quieto con la pantalla apagada durante un período determinado, pasará al modo <em>Doze</em>, en el que el dispositivo intenta mantener el sistema en estado de suspensión.
- En este modo, los dispositivos reanudan periódicamente el funcionamiento normal durante períodos breves, de manera que la aplicación se pueda sincronizar y el sistema pueda realizar las operaciones pendientes.
-
-</p>
-
-<p>Durante el modo Doze, se aplican las siguientes restricciones a sus aplicaciones:</p>
-<ul>
-<li>Se deshabilita el acceso a la red, salvo que su aplicación reciba una señal de prioridad alta de Google Cloud Messaging (envío de mensajes a través de la nube de Google).
-</li>
-<li>Se ignoran los <a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Wakelocks</a>.</li>
-<li>Se deshabilitan las alarmas programadas con la clase {@link android.app.AlarmManager}, salvo las alarmas que haya configurado con el método {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}
-y con {@code AlarmManager.setAndAllowWhileIdle()}.
-</li>
-<li>No se realiza la detección de Wi-Fi.</li>
-<li>No se permite la ejecución de sincronizaciones ni trabajos para sus adaptadores de sincronización y {@link android.app.job.JobScheduler}.
-</li>
-</ul>
-</p>
-<p>Al salir del modo Doze, el dispositivo ejecuta los trabajos y las sincronizaciones pendientes.</p>
-<p>Para probar esta característica, conecte un dispositivo que esté ejecutando la versión preliminar de Android M a su equipo de desarrollo y llame a los siguientes comandos:
-
-</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>Nota:</strong> La próxima versión de
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> le permite designar mensajes de prioridad alta.
- Si su aplicación recibe mensajes de GCM de prioridad alta, se le concede un breve acceso a la red, incluso cuando el dispositivo se encuentra en modo Doze.
-
-</p>
-
-<p>Consulte la
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Guía de prueba</a> para obtener consejos sobre cómo probar el modo Doze en su aplicación.
- </p>
-
-<h3 id="behavior-app-standby">App Standby</h3>
-<p>Con esta versión preliminar, el sistema puede determinar que las aplicaciones se encuentran inactivas cuando no están en uso activo.
- La aplicación se considera inactiva después de un cierto período, salvo que el sistema detecte alguna de las siguientes señales:
-</p>
-
-<ul>
-<li>El usuario inicia explícitamente la aplicación.</li>
-<li>La aplicación actualmente tiene un proceso en primer plano (ya sea como una actividad o un servicio en primer plano, o en uso por parte de otra actividad u otro servicio en primer plano).
-</li>
-<li>La aplicación genera una notificación que los usuarios ven en la pantalla de bloqueo o en la bandeja de notificaciones.
-</li>
-<li>El usuario solicita explícitamente que la aplicación esté exenta de optimizaciones mediante las <strong>Configuraciones</strong>.
-</li>
-</ul>
-
-<p>Si el dispositivo está desconectado, las aplicaciones que se consideren inactivas tendrán deshabilitado el acceso a la red y se suspenderán sus sincronizaciones y trabajos.
- Cuando el dispositivo se conecte a un sistema de alimentación, estas aplicaciones se podrán conectar a la red y podrán ejecutar los trabajos y las sincronizaciones pendientes.
- Si el dispositivo queda inactivo durante períodos prolongados, las aplicaciones inactivas pueden acceder a la red aproximadamente una vez al día.
-</p>
-
-<p>Para probar esta característica, conecte un dispositivo que esté ejecutando la versión preliminar de Android M a su equipo de desarrollo y llame a los siguientes comandos:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</pre>
-
-<p class="note"><strong>Nota:</strong> La próxima versión de
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> (GCM) le permite designar mensajes de prioridad alta.
- Si su aplicación recibe mensajes de GCM de prioridad alta, se le concede un breve acceso a la red, incluso cuando la aplicación está inactiva.
-
-</p>
-
-<p>Consulte la
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Guía de prueba</a> para obtener consejos sobre cómo probar el modo App Standby en sus aplicaciones.
- </p>
-
-<h2 id="behavior-adoptable-storage">Dispositivos de almacenamiento adoptables</h2>
-<p>
-Con esta versión preliminar, los usuarios pueden <em>adoptar</em> dispositivos de almacenamiento externo, como tarjetas SD. Al adoptar un dispositivo de almacenamiento externo, el dispositivo se cifra y se formatea para que actúe como un elemento de almacenamiento interno.
- Esta característica les permite a los usuarios mover tanto las aplicaciones como los datos privados de esas aplicaciones entre dispositivos de almacenamiento.
- Al mover aplicaciones, el sistema respeta la preferencia
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
-del manifiesto.
-</p>
-
-<p>Si su aplicación accede a las API o a los campos que se indican a continuación, tenga en cuenta que las rutas de archivo que devuelven se modificarán dinámicamente cuando la aplicación se mueva entre dispositivos de almacenamiento interno y externo. Al crear rutas de archivo, lo más recomendable es que siempre llame a estas API de forma dinámica. No use rutas de archivo codificadas de forma rígida ni continúe usando rutas de archivo completas que se hayan creado anteriormente.
-
-
-</p>
-
-<ul>
-<li>Métodos {@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>Campos {@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>Para depurar esta característica en la versión preliminar para desarrolladores, puede habilitar la opción de adoptar una unidad USB que esté conectada a un dispositivo Android mediante un cable USB On-The-Go (OTG) y para habilitarla puede ejecutar el siguiente comando:
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Eliminación del cliente HTTP de Apache</h2>
-<p>Esta versión preliminar elimina el soporte del cliente HTTP de Apache. Si su aplicación utiliza este cliente y tiene como destino Android 2.3 (API de nivel 9) o una versión posterior, use, en su lugar, la clase {@link java.net.HttpURLConnection}.
-
- Esta API es más eficaz porque reduce el uso de la red mediante compresión y almacenamiento de respuesta en caché transparentes, y minimiza el consumo de energía.
- Para continuar utilizando las API HTTP de Apache, primero debe declarar la siguiente dependencia en tiempo de compilación en su archivo {@code build.gradle}:
-
-</p>
-<pre>
-android {
- useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android está migrando de la biblioteca OpenSSL a
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
-. Si utiliza Android NDK en su aplicación, no vincule bibliotecas criptográficas que no forman parte de la API de NDK, como {@code libcrypto.so} y {@code libssl.so}.
- Estas bibliotecas no son API públicas y se pueden modificar o interrumpir sin aviso en todas las versiones y todos los dispositivos. Además, puede exponerse a vulnerabilidades de seguridad.
-
- En cambio, modifique su código nativo para llamar a las API de criptografía de Java a través de JNI o para vincular estáticamente una biblioteca criptográfica de su elección.
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">Cambios en AudioManager</h2>
-<p>Ya no se admitirán las funciones de ajustar el volumen de forma directa o silenciar secuencias específicas por medio de la clase {@link android.media.AudioManager}
-. El método {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} es obsoleto, por lo que debe llamar al método
-{@code AudioManager.requestAudioFocus()} en su lugar. Del mismo modo, el método
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} es obsoleto; en su lugar, llame al método{@code AudioManager.adjustStreamVolume()} y pase los valores de dirección {@code ADJUST_MUTE} o {@code ADJUST_UNMUTE}.
-
-</p>
-
-<h2 id="behavior-test-selection">Selección de texto</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>Ahora, cuando los usuarios seleccionen texto en su aplicación, usted puede mostrar acciones de selección de texto, como
-<em>cortar</em>, <em>copiar</em> y <em>pegar</em> en una
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">barra de herramientas flotante</a>. La implementación de la interacción del usuario es similar a la de la barra de acciones contextuales, como se describe en la sección
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
-Habilitación del modo de acción contextual para vistas individuales</a>.
-</p>
-
-<p>Si desea implementar una barra de herramientas flotante para selección de texto, realice los siguientes cambios en sus aplicaciones existentes:
-</p>
-<ol>
-<li>En su objeto {@link android.view.View} o {@link android.app.Activity}, cambie sus llamados
-{@link android.view.ActionMode} de
-{@code startActionMode(Callback)} a {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
-<li>Tome su implementación existente de {@code ActionMode.Callback} y, en su lugar, haga que sea extendida
-{@code ActionMode.Callback2}.</li>
-<li>Invalide el método {@code Callback2.onGetContentRect()} para proporcionar las coordenadas del objeto {@link android.graphics.Rect} de contenido (como un rectángulo de selección de texto) en la vista.
-</li>
-<li>Si el posicionamiento del rectángulo ya no es válido y este es el único elemento por invalidar, llame al método {@code ActionMode.invalidateContentRect()}.
-</li>
-</ol>
-
-<p>Si utiliza la biblioteca <a href="{@docRoot}tools/support-library/index.html">
-Android Support Library</a> versión 22.2, tenga en cuenta que las barras de herramientas flotantes no son compatibles con versiones anteriores y AppCompat toma el control de los objetos {@link android.view.ActionMode} de forma predeterminada.
-
- Esto impide que se muestren las barras de herramientas flotantes. Para permitir la compatibilidad de
-{@link android.view.ActionMode} en
-{@link android.support.v7.app.AppCompatActivity}, llame a
-{@code android.support.v7.app.AppCompatActivity.getDelegate()}, luego llame a
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} en el objeto
-{@link android.support.v7.app.AppCompatDelegate} devuelto y configure el parámetro de entrada como {@code false}.
- Esta llamada devuelve el control de los objetos {@link android.view.ActionMode} al marco de trabajo.
- En los dispositivos que ejecutan la versión preliminar de Android M, eso permite que el marco de trabajo admita los modos de barras de herramientas flotantes o
-{@link android.support.v7.app.ActionBar}, mientras que en los dispositivos anteriores a la versión preliminar de Android M solo se admiten los modos {@link android.support.v7.app.ActionBar}.
-</p>
-
-<h2 id="behavior-keystore">Cambios en Android Keystore</h2>
-<p>Con esta versión preliminar, el
-<a href="{@docRoot}training/articles/keystore.html">proveedor de Android Keystore</a> ya no admite DSA.
- Aún se admite ECDSA.</p>
-
-<p>Las claves que no requieren cifrado de datos estáticos ya no se eliminarán cuando se restablezca o deshabilite la pantalla de bloqueo seguro (por ejemplo, cuando lo haga el usuario o el administrador del dispositivo).
- Las claves que requieren el cifrado de datos estáticos se eliminarán durante estos eventos.
-</p>
-
-<h2 id="behavior-network">Cambios en las funciones de red y Wi-Fi</h2>
-
-<p>Esta versión preliminar introduce en las API de redes y Wi-Fi los siguientes cambios en los comportamientos.</p>
-<ul>
-<li>Ahora sus aplicaciones pueden cambiar el estado de los objetos {@link android.net.wifi.WifiConfiguration} solo si usted creó estos objetos.
- Usted no puede modificar ni eliminar objetos
-{@link android.net.wifi.WifiConfiguration} creados por el usuario o por otras aplicaciones.
-</li>
-<li>
-Anteriormente, si una aplicación forzaba al dispositivo a conectarse a una red Wi-Fi específica utilizando
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} con la configuración
-{@code disableAllOthers=true}, el dispositivo se desconectaba de otras redes, como los datos móviles.
- En esta versión preliminar, el dispositivo ya no se desconectará de otras redes como estas. Si {@code targetSdkVersion} de su aplicación es {@code “20”} o inferior, se anclará a la red Wi-Fi seleccionada.
-
- Si {@code targetSdkVersion} de su aplicación es {@code “21”} o posterior, use las API de redes múltiples (como
-{@link android.net.Network#openConnection(java.net.URL) openConnection()},
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} y el nuevo método
-{@code ConnectivityManager.bindProcessToNetwork()}) para garantizar que el tráfico de su red se envíe a la red seleccionada.
-
-</li>
-</ul>
-
-<h2 id="behavior-camera">Cambios en el servicio de cámara</h2>
-<p>En esta versión preliminar, el modelo para acceder a los recursos compartidos en el servicio de cámara se cambió del modelo de acceso anterior “por orden de llegada” a un modelo de acceso en el que se favorecen los procesos de prioridad alta.
-
- Los cambios en el comportamiento del servicio incluyen los siguientes:</p>
-<ul>
-<li>El acceso a los recursos del subsistema de la cámara, lo que incluye abrir y configurar un dispositivo de cámara, se concede según la “prioridad” del proceso de la aplicación cliente.
- Por lo general, los procesos de la aplicación con actividades en primer plano o visibles para el usuario, reciben una prioridad más alta, lo que hace que el uso y la adquisición de recursos de la cámara sean más dependientes.
-
-</li>
-<li>Los clientes con cámara activa para aplicaciones de menor prioridad pueden ser “expulsados” cuando una aplicación de mayor prioridad intenta utilizar la cámara.
- En la API {@link android.hardware.Camera} obsoleta, esto hace que se llame al método
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} para el cliente expulsado.
-
- En la API {@link android.hardware.camera2 Camera2}, esto hace que se llame al método
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
-para el cliente expulsado.</li>
-<li>En los dispositivos con hardware de cámara correcto, distintos procesos de la aplicación pueden abrir y utilizar de forma independiente dispositivos de cámara separados al mismo tiempo.
- Sin embargo, ahora el servicio de cámara detecta y no permite los casos de uso de procesos múltiples, donde el acceso simultáneo genera una degradación considerable del rendimiento o de las capacidades de cualquiera de los dispositivos de cámara abiertos.
-
- Este cambio puede generar “expulsiones” de clientes de menor prioridad, incluso cuando ninguna otra aplicación esté intentando acceder directamente al mismo dispositivo de cámara.
-
-
-</li>
-<li>
-Cambiar el usuario actual provoca que se expulsen los clientes con cámara activa en las aplicaciones que pertenecen a la cuenta de usuario anterior.
- El acceso a la cámara se limita a perfiles de usuario que pertenecen al usuario actual del dispositivo. En la práctica, esto significa que una cuenta de “invitado”, por ejemplo, no podrá abandonar los procesos en ejecución que utilicen el subsistema de la cámara cuando el usuario haya cambiado a otra cuenta.
-
-
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">Tiempo de ejecución de ART</h2>
-<p>El tiempo de ejecución de ART ahora implementa correctamente reglas de acceso para el método
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Este cambio soluciona el problema que ocurría con Dalvik, que comprobaba las reglas de acceso incorrectamente en las versiones anteriores. Si su aplicación utiliza el método
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} y usted desea invalidar comprobaciones de acceso, llame al método
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} con el parámetro de entrada configurado en {@code true}.
-
-
-
- Si su aplicación utiliza la
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">biblioteca AppCompat versión 7</a> o la
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">biblioteca RecyclerView versión 7</a>, debe actualizar su aplicación para utilizar las versiones más recientes de estas bibliotecas.
- De lo contrario, asegúrese de que las clases personalizadas a las que se haga referencia desde el XML estén actualizadas, de manera que se pueda acceder a sus constructores de clases.
-</p>
-
-<p>Esta versión preliminar actualiza el comportamiento del vinculador dinámico. El vinculador dinámico ahora entiende la diferencia entre {@code soname} de una biblioteca y su ruta de acceso (<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-error público 6670</a>), y ahora se implementa la búsqueda por {@code soname}.
-
-
- Las aplicaciones que anteriormente funcionaban y que tenían entradas {@code DT_NEEDED} incorrectas (generalmente, rutas absolutas en el sistema de archivo del equipo de compilación) pueden generar error al cargarse.
-</p>
-
-<p>Ahora se implementa correctamente la marca {@code dlopen(3) RTLD_LOCAL}. Tenga en cuenta que
-{@code RTLD_LOCAL} es lo predeterminado, por lo que se verán afectadas las llamadas a {@code dlopen(3)} que no utilizaron explícitamente
-{@code RTLD_LOCAL} (salvo que su aplicación haya usado {@code RTLD_GLOBAL} explícitamente). Con
-{@code RTLD_LOCAL}, los símbolos no estarán disponibles para las bibliotecas cargadas por llamadas posteriores a
-{@code dlopen(3)} (a diferencia de lo que sucede al hacer referencia mediante entradas {@code DT_NEEDED}).</p>
-</p>
-
-<h2 id="behavior-apk-validation">Validación de APK</h2>
-<p>Ahora la plataforma realiza validaciones más estrictas de APK. El APK se considera dañado si un archivo está declarado en el manifiesto, pero no está presente en el APK en sí.
- Si se elimina algún contenido, se debe volver a firmar el APK.
-</p>
-
-<h2 id="behavior-afw">Cambios en Android for Work</h2>
-<p>Esta versión preliminar incluye los siguientes cambios en los comportamientos para Android for Work:</p>
-<ul>
-<li><strong>Contactos de trabajo en contextos personales:</strong> Ahora, el registro de llamadas de Google Dialer muestra los contactos de trabajo cuando el usuario ve las llamadas anteriores. Si se configura {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} en {@code true}, se ocultan los contactos de perfiles de trabajo en el registro de llamadas de Google Dialer.
-
-
- Los contactos de trabajo se pueden mostrar junto con los contactos personales en los dispositivos a través de Bluetooth solo si usted configura {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} en {@code false}.
-
- De forma predeterminada, se configura en {@code true}.
-
-</li>
-<li><strong>Eliminación de configuraciones de Wi-Fi:</strong> Las configuraciones de Wi-Fi agregadas por un propietario de perfil (por ejemplo, al llamar al método
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()}) ahora se borran si se elimina ese perfil de trabajo.
-</li>
-<li><strong>Bloqueo de configuraciones de Wi-Fi:</strong> El usuario ya no puede modificar ni eliminar las configuraciones de Wi-Fi creadas por un propietario activo del dispositivo.
- El usuario aún puede crear y modificar sus propias configuraciones de Wi-Fi, siempre que no se haya definido la constante {@link android.os.UserManager}
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} para ese usuario.
-</li>
-<li><strong>Descarga de Work Policy Controller mediante la incorporación de una cuenta de Google:</strong> Cuando una cuenta de Google que requiere gestión a través de una aplicación de Work Policy Controller (WPC) se agrega a un dispositivo fuera de un contexto administrado, el flujo de incorporación de la cuenta ahora le pide al usuario que instale el WPC apropiado. Este comportamiento también se aplica a las cuentas agregadas mediante
-<strong>Settings > Accounts</strong> en el asistente para instalación inicial del dispositivo.
-
-
-</li>
-<li><strong>Cambios en comportamientos específicos de la API DevicePolicyManager:</strong>
-Llamar al método {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-afecta la cámara solo del usuario que lo llama; llamarlo desde el perfil administrado no afecta las aplicaciones de cámara que se ejecutan en el usuario principal.
- Asimismo, el método
-{@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-ahora se encuentra disponible para propietarios de perfiles, además de propietarios de dispositivos. Un propietario de perfil puede configurar las siguientes restricciones de protección de seguridad:
-
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} y
- {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, que afectan las configuraciones de protección de seguridad para el usuario primario del perfil.
-</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, que solo afecta las notificaciones generadas por aplicaciones en el perfil administrado.
-</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/es/preview/download.jd b/docs/html-intl/intl/es/preview/download.jd
deleted file mode 100644
index d71d8fd..0000000
--- a/docs/html-intl/intl/es/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=Descargas
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">Antes de descargar e instalar los componentes del SDK de la versión preliminar de Android, debe aceptar los términos y las condiciones que se describen a continuación.
-</p>
-
- <h2 class="norule">Términos y condiciones</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-Este es el Contrato de licencia de la versión preliminar del SDK de Android (el “Contrato de licencia”). 1.
-
- Introducción 1.1 Se le otorga la licencia de la versión preliminar del SDK de Android (denominada “Versión preliminar” en este Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Versión preliminar, si se encuentran disponibles), sujeto a los términos del Contrato de licencia.
-
- El Contrato de licencia establece una relación legal vinculante entre usted y Google en relación con el uso que usted realice de la Versión preliminar. 1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente. 1.3 “Google” hace referencia a Google Inc., una corporación de Delaware, con sede principal en 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos. 2.
-
-
-
-
-
- Aceptación del Contrato de licencia 2.1 Para poder utilizar la Versión preliminar, primero debe aceptar el Contrato de licencia.
-
- Si no acepta el Contrato de licencia, no podrá utilizar la Versión preliminar. 2.2 Al hacer clic para aceptar o utilizar la Versión preliminar, por medio del presente, usted acepta los términos del Contrato de licencia. 2.3 Usted no puede utilizar la Versión preliminar ni aceptar el Contrato de licencia si tiene prohibido recibir la Versión preliminar en virtud de las leyes de los Estados Unidos o de otros países, lo que incluye el país donde es residente o desde el que utilizará la Versión preliminar. 2.4 Si usted utilizará la Versión preliminar de forma interna, dentro de su compañía u organización, usted acepta quedar sujeto al Contrato de licencia en representación de su empleador u otra entidad, y expresa y garantiza que tiene plena autoridad legal para vincular a su empleador o a dicha entidad al Contrato de licencia.
-
-
-
-
-
- Si no posee la autoridad exigida, no podrá aceptar el Contrato de licencia ni usar la Versión preliminar en representación de su empleador u otra entidad. 3.
-
- Licencia de la Versión preliminar de Google 3.1 Sujeto a los términos del Contrato de licencia, Google le otorga una licencia libre de regalías, no asignable, no exclusiva, no transferible a terceros, limitada y revocable para utilizar la Versión preliminar, de forma personal o interna dentro de su compañía u organización, únicamente para desarrollar aplicaciones para ejecutar en la plataforma de Android. 3.2 Usted acepta que Google u otros terceros poseen todos los derechos legales, títulos e intereses en relación con la Versión preliminar, incluidos los Derechos de propiedad intelectual que existan en la Versión preliminar.
-
-
-
- Los “Derechos de propiedad intelectual” hacen referencia a todos y cada uno de los derechos en virtud de las leyes de patentes, derechos de autor, secreto comercial y marca comercial, y todos los demás derechos de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente. 3.3 No podrá utilizar la Versión preliminar para ningún otro propósito que no esté expresamente permitido en el Contrato de licencia.
-
- Excepto en la medida que lo exijan las licencias correspondientes de terceros, no podrá: (a) copiar (excepto con fines de copia de seguridad), modificar, adaptar, redistribuir, descompilar, utilizar técnicas de ingeniería inversa, desarmar ni crear trabajos derivados de la Versión preliminar ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Versión preliminar en un teléfono móvil ni en ningún otro dispositivo de hardware (a excepción de una computadora personal), ni podrá combinar ninguna parte de la Versión preliminar con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Versión preliminar. 3.4 Usted acepta que no tomará medidas que pudieran provocar la fragmentación de Android, incluidas, entre otras, la distribución y la participación en la creación o la promoción de un kit de desarrollo de software derivado de la Versión preliminar. 3.5 El uso, la reproducción y la distribución de los componentes de la Versión preliminar con licencia de software de código abierto están regidos exclusivamente por los términos de la licencia de ese software de código abierto y no de este Contrato de licencia.
-
-
-
- Usted acepta mantener la licencia en buenas condiciones con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerse de realizar alguna acción que pueda poner fin, suspender o violar dichos derechos. 3.6 Usted acepta que la forma y la naturaleza de la Versión preliminar que proporciona Google pueden cambiar sin brindarle aviso previo y que las versiones futuras de la Versión preliminar pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Versión preliminar.
-
- Usted acepta que Google puede (de forma permanente o temporal) dejar de proporcionarles la Versión preliminar (o cualquiera de las características incluidas en ella) a usted o a los usuarios, generalmente, a criterio exclusivo de Google, sin brindarle aviso previo. 3.7 Ninguna declaración de este Contrato de licencia le otorga el derecho de utilizar alguno de los nombres comerciales, las marcas comerciales, las marcas de servicio, los logotipos, los nombres de dominio ni otras características distintivas de marca de Google. 3.8 Usted acepta que no eliminará, ocultará ni alterará ninguno de los avisos de derechos de propiedad (lo que incluye los avisos de marca comercial y derechos de autor) que pudieran estar anexados o incluidos en la Versión preliminar. 4.
-
-
-
-
-
- Uso que usted realiza de la Versión preliminar 4.1 Google acepta que ninguna declaración del Contrato de licencia le concede a Google derecho, título o interés alguno de su parte (o de parte de sus licenciantes), en virtud del Contrato de licencia, con respecto a las aplicaciones de software que usted desarrolle mediante el uso de la Versión preliminar, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones. 4.2 Usted acepta utilizar la Versión preliminar y escribir aplicaciones únicamente conforme a lo que permite (a) este Contrato de licencia y (b) las leyes, regulaciones, o prácticas y pautas generalmente aceptadas pertinentes en las jurisdicciones relevantes (lo que incluye las leyes sobre la exportación de datos o software hacia los Estados Unidos u otros países relevantes y desde ellos). 4.3 Usted acepta que si utiliza la Versión preliminar para desarrollar aplicaciones, protegerá la privacidad y los derechos legales de los usuarios.
-
-
-
-
-
- Si los usuarios le proporcionan sus nombres de usuario, contraseñas u otra información de inicio de sesión o información personal, debe comunicarles a los usuarios que la información se encontrará disponible para su aplicación, y debe proporcionarles a dichos usuarios un aviso de privacidad con protección y validez legal. Si su aplicación almacena información personal o confidencial proporcionada por los usuarios, lo debe hacer de forma segura. Si los usuarios le proporcionan información sobre la cuenta de Google, su aplicación solo puede usar esa información para acceder a la cuenta de Google del usuario siempre que este le haya otorgado permiso para hacerlo y con los fines para los que se lo haya otorgado. 4.4 Usted acepta que no participará en ninguna actividad con la Versión preliminar (lo que incluye el desarrollo o la distribución de una aplicación) que interfiera, interrumpa, dañe o acceda sin autorización a servidores, redes u otras propiedades o servicios de Google o de algún tercero. 4.5 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de los datos, el contenido o los recursos que usted cree, transmita o muestre a través de Android o las aplicaciones para Android, y de las consecuencias de sus acciones (lo que incluye la pérdida o el daño que Google pudiera sufrir) al hacerlo. 4.6 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de cualquier incumplimiento de sus obligaciones en virtud de este Contrato de licencia, los contratos aplicables de terceros o los términos del servicio, o cualquier ley o regulación pertinentes, y de las consecuencias (lo que incluye las pérdidas o los daños que pudieran sufrir Google o algún tercero) de dichos incumplimientos. 4.7 La Versión preliminar se encuentra en desarrollo, y sus pruebas y comentarios son una parte importante del proceso de desarrollo.
-
-
-
-
-
-
-
- Al utilizar la Versión preliminar, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Versión preliminar contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Versión preliminar, ya que esta Versión preliminar ya no se admitirá tras el lanzamiento del SDK oficial de Android. 5.
-
- Sus credenciales de desarrollador 5.1 Usted acepta que es responsable de mantener la confidencialidad de toda credencial de desarrollador que Google pudiera otorgarle o que usted pudiera escoger, y que será el único responsable de todas las aplicaciones que se desarrollen con sus credenciales de desarrollador. 6.
-
-
-
- Privacidad e información 6.1 A fin de poder innovar y mejorar de forma continua la Versión preliminar, Google podría recopilar ciertas estadísticas de uso del software, lo que incluye, entre otras características, un identificador único, la dirección IP asociada, el número de versión del software e información sobre las herramientas o los servicios de la Versión preliminar que se estén utilizando y la manera en que se estén utilizando.
-
- Antes de que se recopile esta información, la Versión preliminar se lo notificará y le solicitará su permiso. Si no otorga su permiso, no se recopilará la información. 6.2 Los datos recopilados se analizan en el agregado para mejorar la Versión preliminar y se conservan de acuerdo con la política de privacidad de Google que se encuentra en el sitio http://www.google.com/policies/privacy/. 7.
-
-
-
- Aplicaciones de terceros 7.1 Si utiliza la Versión preliminar para ejecutar aplicaciones desarrolladas por un tercero o que accedan a datos, contenido o recursos proporcionados por un tercero, usted acepta que Google no es responsable de esas aplicaciones, datos, contenido ni recursos.
-
- Usted comprende que todos los datos, contenidos o recursos a los que podría acceder a través de esas aplicaciones de terceros son exclusiva responsabilidad de la persona que los origina y que Google no es responsable de las pérdidas ni los daños que usted pudiera experimentar como consecuencia del uso o acceso de cualquiera de esas aplicaciones, datos, contenido o recursos de terceros. 7.2 Usted debe saber que los datos, el contenido y los recursos que se le presentan a través de esa aplicación de un tercero pueden estar protegidos por derechos de propiedad intelectual que les pertenecen a sus proveedores (o a otras personas o compañías en representación de estos).
-
- No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos, contenidos o recursos (en su totalidad o en parte), a menos que los propietarios pertinentes le hayan otorgado permiso específicamente para hacerlo. 7.3 Usted acepta que el uso que haga de las aplicaciones, los datos, el contenido o los recursos de ese tercero puede estar sujeto a términos independientes entre usted y el tercero correspondiente. 8.
-
-
-
- Uso de las API de Google 8.1 API de Google 8.1.1 Si utiliza alguna API para recuperar datos de Google, usted acepta que los datos pueden estar protegidos por derechos de propiedad intelectual que le pertenecen a Google o a las partes que proporcionan esos datos (o a otras personas o empresas en representación de estos).
-
-
-
- El uso que realice de cualquiera de esas API puede estar sujeto a términos de servicio adicionales. No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos (en su totalidad o en parte), a menos que los términos de servicio correspondientes lo permitan. 8.1.2 Si utiliza alguna API para recuperar datos de un usuario de Google, usted acepta y acuerda que solo podrá recuperar datos con el consentimiento explícito del usuario y solo con los fines limitados para los que el usuario le haya otorgado permiso para hacerlo. 9.
-
-
-
- Finalización del Contrato de licencia 9.1 Este Contrato de licencia tendrá vigencia hasta que lo revoquen usted o Google, como se indica a continuación. 9.2 Si desea rescindir el Contrato de licencia, puede hacerlo al interrumpir el uso que realiza de la Versión preliminar y de las credenciales de desarrollador pertinentes. 9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, después de notificárselo a usted. 9.4 El Contrato de licencia finalizará automáticamente, sin previo aviso ni acción alguna, tras la primera de las siguientes situaciones: (A) cuando Google deje de proporcionar la Versión preliminar o ciertas partes de esta a los usuarios en el país donde usted reside o desde el que utiliza el servicio; y (B) cuando Google emita una versión final del SDK de Android. 9.5 Si el Contrato de licencia se rescinde, se revocará la licencia que usted recibió en virtud de dicho contrato; usted deberá suspender inmediatamente todo uso de la Versión preliminar y las disposiciones de los párrafos 10, 11, 12 y 14 seguirán vigentes indefinidamente. 10.
-
-
-
-
-
-
-
-
-
-
-
-
-
- EXENCIONES DE RESPONSABILIDAD 10.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE EL USO QUE REALICE DE LA VERSIÓN PRELIMINAR ES BAJO SU PROPIO RIESGO Y QUE LA VERSIÓN PRELIMINAR SE PROPORCIONA “EN LAS CONDICIONES EN LAS QUE SE ENCUENTRA” Y “SUJETA A DISPONIBILIDAD” SIN GARANTÍAS DE NINGÚN TIPO POR PARTE DE GOOGLE. 10.2 EL USO QUE USTED REALICE DE LA VERSIÓN PRELIMINAR Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA VERSIÓN PRELIMINAR ES A SU ENTERO RIESGO Y DISCRECIÓN, Y USTED ES EL ÚNICO RESPONSABLE DE CUALQUIER DAÑO QUE PUDIERA SUFRIR SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO, O DE LA PÉRDIDA DE DATOS COMO CONSECUENCIA DE DICHO USO.
-
-
-
- SIN PERJUICIO DE LO MENCIONADO ANTERIORMENTE, USTED COMPRENDE QUE LA VERSIÓN PRELIMINAR NO ES UNA VERSIÓN ESTABLE, Y PUEDE CONTENER ERRORES, DEFECTOS Y VULNERABILIDADES DE SEGURIDAD QUE PUEDEN PROVOCAR DAÑOS SIGNIFICATIVOS, LO QUE INCLUYE LA PÉRDIDA COMPLETA E IRRECUPERABLE DEL USO DE SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO. 10.3 GOOGLE TAMBIÉN RECHAZA TODAS LAS GARANTÍAS Y CONDICIONES DE CUALQUIER TIPO, EXPRESAS O IMPLÍCITAS, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS Y CONDICIONES DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN DETERMINADO Y NO VIOLACIÓN. 11.
-
-
-
- LIMITACIÓN DE RESPONSABILIDADES 11.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE GOOGLE, SUS SUBSIDIARIAS Y FILIALES, Y SUS LICENCIANTES NO SERÁN RESPONSABLES ANTE USTED, EN VIRTUD DE NINGUNA TEORÍA DE RESPONSABILIDAD, POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, RESULTANTE NI PUNITIVO EN EL QUE PODRÍA HABER INCURRIDO, LO QUE INCLUYE LA PÉRDIDA DE DATOS, YA SEA QUE SE LE HAYA NOTIFICADO O NO A GOOGLE O A SUS REPRESENTANTES, O SOBRE CUYA POSIBILIDAD ESTOS DEBERÍAN HABER SABIDO. 12.
-
-
-
- Indemnización 12.1 Hasta el grado máximo que permita la ley, usted acepta defender, indemnizar y eximir de responsabilidades a Google, sus filiales y sus respectivos directores, funcionarios, empleados y agentes, de todo tipo de reclamo, acción legal y proceso judicial, así como de las pérdidas, responsabilidades, daños, costos y gastos (incluidos los honorarios razonables de abogados) que surjan o se acumulen (a) del uso que usted realiza de la Versión preliminar, (b) de cualquier aplicación que desarrolle en la Versión preliminar que infrinja algún derecho de propiedad intelectual de cualquier persona, o que difame a cualquier persona o viole sus derechos de publicidad o privacidad, y (c) del incumplimiento por su parte del Contrato de licencia. 13.
-
-
-
- Cambios en el Contrato de licencia 13.1 Google puede realizar cambios en el Contrato de licencia a medida que distribuye nuevas versiones de la Versión preliminar.
-
- Cuando se realicen esos cambios, Google emitirá una nueva versión del Contrato de licencia, que estará disponible en el sitio web donde se ponga a la venta la Versión preliminar. 14.
-
- Términos legales generales 14.1 El Contrato de licencia constituye el contrato legal integral entre usted y Google, y rige el uso que usted realice de la Versión preliminar (a excepción de los servicios que Google pueda proporcionarle en virtud de un contrato por escrito independiente), y reemplaza totalmente cualquier contrato anterior entre usted y Google en relación con la Versión preliminar. 14.2 Usted acepta que, si Google no ejerce ni impone un derecho o recurso legal especificados en el Contrato de licencia (o sobre el que Google tenga beneficios conforme a cualquier ley aplicable), esto no se considerará una renuncia formal a los derechos por parte de Google y Google aún seguirá recibiendo los beneficios de esos derechos o recursos legales. 14.3 Si algún tribunal judicial con jurisdicción para decidir sobre este asunto determina que alguna de las disposiciones de este Contrato de licencia no es válida, se eliminará esa disposición del Contrato de licencia sin que eso afecte la validez del resto del contrato.
-
-
-
-
-
- Las disposiciones restantes del Contrato de licencia continuarán siendo válidas y aplicables. 14.4 Usted reconoce y acepta que cada miembro del grupo de compañías de las que Google es la compañía central serán terceros beneficiarios del Contrato de licencia, y que esas otras empresas tendrán el derecho de imponer directamente cualquier disposición y ampararse en las disposiciones de este Contrato de licencia que les confieran un beneficio (o que confieran derechos a su favor).
-
- Además de esto, ninguna otra persona o compañía serán terceros beneficiarios del Contrato de licencia. 14.5 RESTRICCIONES DE EXPORTACIÓN.
-
- LA VERSIÓN PRELIMINAR ESTÁ SUJETA A LAS LEYES Y REGULACIONES DE EXPORTACIÓN DE LOS ESTADOS UNIDOS. DEBE CUMPLIR CON TODAS LAS LEYES Y REGULACIONES DE EXPORTACIÓN NACIONALES E INTERNACIONALES QUE SE APLIQUEN A LA VERSIÓN PRELIMINAR. ESTAS LEYES INCLUYEN RESTRICCIONES EN RELACIÓN CON LOS DESTINOS, USUARIOS FINALES Y USO FINAL. 14.6 Usted no puede asignar ni transferir el Contrato de licencia sin la aprobación previa por escrito de Google y todo intento de asignación sin dicha aprobación no tendrá validez.
-
- No podrá delegar sus responsabilidades u obligaciones otorgados en virtud del Contrato de licencia sin la aprobación previa por escrito de Google. 14.7 El Contrato de licencia y su relación con Google conforme al Contrato de licencia se regirán por las leyes del estado de California, independientemente de los principios de conflictos entre leyes.
-
- Usted y Google aceptan presentarse ante la jurisdicción exclusiva de los tribunales del condado de Santa Clara, California, para resolver cualquier asunto legal que pudiera surgir del Contrato de licencia. Sin perjuicio de esto, usted acepta que Google aún podrá aplicar reparaciones conforme a mandato judicial (o a un tipo equivalente de desagravio legal) en cualquier jurisdicción.
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">He leído y acepto los términos y las condiciones anteriores.</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#sdk">SDK de la versión preliminar</a></li>
- <li><a href="#docs">Documentación para desarrolladores</a></li>
- <li><a href="#images">Imágenes del sistema de hardware</a></li>
- </ol>
-
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- El SDK de la versión preliminar de Android M incluye herramientas de desarrollo, archivos de sistema de Android y archivos de biblioteca que lo ayudarán a probar su aplicación y las nuevas API que se incluirán en la próxima versión de la plataforma.
- En este documento, se describe la manera de obtener los componentes que se pueden descargar de la versión preliminar para probar su aplicación.
-
-</p>
-
-
-<h2 id="sdk">SDK de la versión preliminar</h2>
-
-<p>
- El SDK de la versión preliminar se encuentra disponible para descargarlo a través del <a href="{@docRoot}tools/help/sdk-manager.html">Administrador de SDK de Android</a>. Para obtener más información sobre cómo descargar y configurar el SDK de la versión preliminar, consulte la sección <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Configurar el SDK de la versión preliminar</a>.
-
-</p>
-
-
-<h2 id="docs">Documentación para desarrolladores</h2>
-
-<p>
- El paquete de descarga de documentación para desarrolladores brinda información detallada de referencia sobre las API y un informe de diferencias de las API para la versión preliminar.
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-
-<h2 id="images">Imágenes del sistema de hardware</h2>
-
-<p>
- Estas imágenes del sistema le permiten instalar una versión preliminar de la plataforma en un dispositivo físico para realizar pruebas.
- Al configurar un dispositivo con una de estas imágenes, puede instalar y probar su aplicación para ver cómo funciona en la próxima versión de la plataforma.
- El proceso de instalación de una imagen del sistema en un dispositivo <em>elimina todos los datos del dispositivo</em>, por lo que debe hacer una copia de seguridad de los datos antes de instalar una imagen del sistema.
-
-
-</p>
-
-<p class="warning">
- <b>Advertencia:</b> Las siguientes imágenes del sistema de Android son versiones preliminares y están sujetas a cambios. El uso que haga de estas imágenes del sistema se rige por el Contrato de licencia de la versión preliminar del SDK de Android.
- Las imágenes del sistema de la versión preliminar de Android no son versiones estables y pueden contener errores y defectos que pueden generar daños en sus sistemas informáticos, dispositivos y datos.
-
- Las imágenes del sistema de la versión preliminar de Android no se someten a las mismas pruebas que el OS de fábrica y podrían hacer que el teléfono, y las aplicaciones y los servicios instalados dejen de funcionar.
-
-
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">Instalar una imagen en un dispositivo</h3>
-
-<p>
- Si desea utilizar una imagen del dispositivo para realizar pruebas, debe instalarla en un dispositivo compatible. Siga las instrucciones que se ofrecen a continuación para instalar una imagen del sistema:
-
-</p>
-
-<ol>
- <li>Descargue y descomprima uno de los paquetes de imágenes del sistema que se enumeran aquí.</li>
- <li>Realice una copia de seguridad de los datos del dispositivo que desee conservar.</li>
- <li>Siga las instrucciones que se describen en el sitio <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- para actualizar la imagen en su dispositivo.
-</li>
-</ol>
-
-<p class="note">
- <strong>Nota:</strong> Cuando haya actualizado un dispositivo de desarrollo con la imagen del sistema de la versión preliminar, se actualizará automáticamente con la próxima versión preliminar a través de actualizaciones OTA.
-
-</p>
-
-<h3 id="revertDevice">Restablecer las especificaciones de fábrica en un dispositivo</h3>
-
-<p>
- Si desea desinstalar la versión preliminar y restablecer las especificaciones de fábrica en un dispositivo, visite el sitio <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> y descargue la imagen con la que desea actualizar su dispositivo.
-
- Siga las instrucciones que se describen en esa página para actualizar la imagen en su dispositivo.
-
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/es/preview/features/app-linking.jd b/docs/html-intl/intl/es/preview/features/app-linking.jd
deleted file mode 100644
index bd63559..0000000
--- a/docs/html-intl/intl/es/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Vínculos de la aplicación
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=vínculo de la aplicación, vínculos profundos, intentos
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#web-assoc">Declarar la asociación de un sitio web</a></li>
- <li><a href="#verfy-links">Solicitar verificación del vínculo de la aplicación</a></li>
- <li><a href="#user-manage">Gestionar las configuraciones del vínculo de la aplicación</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- El sistema Android Intent es un mecanismo flexible para permitir a las aplicaciones controlar contenido y solicitudes.
- Es posible que múltiples aplicaciones declaren modelos URI coincidentes en sus filtros de intento. Cuando un usuario hace clic en un vínculo web que no tiene un controlador de inicio predeterminado, la plataforma puede mostrar un diálogo para que el usuario seleccione una opción de una lista de aplicaciones que han declarado filtros de intento coincidentes.
-
-
-</p>
-
-<p>
- Android M Developer Preview ofrece soporte para los vínculos de la aplicación, lo que mejora los controles de vínculos existentes al permitir a los desarrolladores de la aplicación asociar una aplicación con un dominio web propio.
- Cuando los desarrolladores crean esta asociación, la plataforma puede determinar automáticamente la aplicación predeterminada utilizada para controlar un vínculo web particular y omitir el paso de solicitarles esta información a los usuarios.
-
-
-</p>
-
-
-<h2 id="web-assoc">Declarar una asociación de sitio web</h2>
-
-<p>
- Los propietarios de un sitio web deben declarar las asociaciones con las aplicaciones a fin de establecer el vínculo de una aplicación. El propietario del sitio declara la relación con una aplicación al alojar un archivo JSON, denominado {@code statements.json}, en la ubicación conocida del domino:
-
-
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>Nota:</strong>
- Durante el período de M Developer Preview, el archivo JSON se verifica vía el protocolo http. Para la versión oficial de la plataforma, el archivo se verifica mediante el protocolo https cifrado.
-
-</p>
-
-<p>
- Este archivo JSON indica la aplicación Android que se debe utilizar como el controlador predeterminado para las URL de este dominio.
- Identifica la aplicación según estos campos:
-</p>
-
-<ul>
- <li>{@code package_name}: El nombre de paquete declarado en el manifiesto de la aplicación.</li>
-
- <li>{@code sha256_cert_fingerprints}: La huella dactilar SHA256 del certificado de firma de su aplicación.
- Puede usar la herramienta Keytool de Java para generar la huella dactilar mediante el siguiente comando:
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- El siguiente listado de archivo muestra un ejemplo de los contenidos y del formato de un archivo
-{@code statements.json}:
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">Solicitar verificación del vínculo de la aplicación</h2>
-
-<p>
- Una aplicación puede solicitar que la plataforma verifique automáticamente cualquier vínculo de aplicación definido por los nombres de host en los elementos de datos de sus filtros de intento, comparando con los archivos {@code statements.json} alojados en los respectivos dominios web.
-
- Para solicitar la verificación del vínculo de la aplicación, agregue un atributo {@code android:autoVerify} a cada filtro de intento deseado en el manifiesto, como se muestra en el siguiente fragmento de código de manifiesto:
-
-
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- Cuando el atributo {@code android:autoVerify} está presente en un manifiesto de aplicación, la plataforma intenta verificar los vínculos de la aplicación al instalar la aplicación.
- Si la plataforma no puede verificar exitosamente los vínculos de la aplicación, la aplicación no se configura como la aplicación preferida para controlar los vínculos web.
- La próxima vez que un usuario abra uno de estos vínculos, la plataforma recurrirá a mostrar al usuario un diálogo.
-
-
-</p>
-
-<p class="note">
- <strong>Nota:</strong> Durante la prueba, existe la posibilidad de un falso positivo si la verificación falla, pero el usuario ha habilitado explícitamente la aplicación para que abra los vínculos compatibles sin preguntar, utilizando la aplicación de Configuraciones del sistema. En este caso, no se muestra el diálogo y el vínculo se dirige directamente a su aplicación, pero solo debido a la configuración del usuario y no porque la verificación se haya realizado correctamente.
-
-
-
-</p>
-
-
-<h2 id="user-manage">Gestionar las configuraciones del vínculo de la aplicación</h2>
-
-<p>
- Los usuarios pueden cambiar las configuraciones del vínculo de la aplicación de manera que las URL se controlen como ellos lo prefieran. Puede revisar y gestionar los vínculos de la aplicación en la aplicación de Configuraciones del sistema, en <strong>Settings > Apps > App Info > Open by default</strong>.
-
-
-</p>
diff --git a/docs/html-intl/intl/es/preview/features/runtime-permissions.jd b/docs/html-intl/intl/es/preview/features/runtime-permissions.jd
deleted file mode 100644
index ce94f5b..0000000
--- a/docs/html-intl/intl/es/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=Permisos
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Quickview</h2>
- <ul>
- <li>Si su aplicación tiene como destino el SDK de la versión preliminar de Android M, se solicitará a los usuarios que concedan permisos durante el tiempo de ejecución, en lugar de durante la instalación.
-</li>
- <li>Los usuarios pueden cancelar los permisos en cualquier momento desde la pantalla Settings de la aplicación.
-</li>
- <li>La aplicación necesita controlar los permisos cada vez que se ejecuta.
-</li>
- </ul>
-
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#overview">Información general</a></li>
- <li><a href="#coding">Codificación para permisos de tiempo de ejecución</a></li>
- <li><a href="#testing">Prueba de permisos de tiempo de ejecución</a></li>
- <li><a href="#best-practices">Mejores prácticas</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 introduce un nuevo modelo de permisos de la aplicación que facilita a los usuarios el proceso de instalación y actualización de aplicaciones.
- Si una aplicación que se ejecuta en la versión preliminar de Android M es compatible con el nuevo modelo de permisos, el usuario no tiene que conceder ningún permiso al instalar o actualizar la aplicación. En su lugar, la aplicación solicitará los permisos a medida que los vaya necesitado y el sistema mostrará al usuario un diálogo en el que le solicitará los permisos necesarios.
-
-
-
-
-</p>
-
-<p>
- Si la aplicación es compatible con el nuevo modelo de permisos, podrá instalarse y ejecutarse en los dispositivos con versiones anteriores de Android, utilizando el modelo de permisos anterior en esos dispositivos.
-
-
-</p>
-
-<h2 id="overview">
- Información general
-</h2>
-
-<p>
- En M Developer Preview, la plataforma introduce un nuevo modelo
-de permisos de la aplicación. A continuación, se presenta un resumen de los componentes principales de este nuevo modelo:
-</p>
-
-<ul>
- <li>
- <strong>Declaración de los permisos:</strong> Al igual que en las plataformas anteriores de Android, la aplicación declara todos los permisos que necesita en el manifiesto.
-
- </li>
-
- <li>
- <strong>Grupos de permisos:</strong> Según su función, los permisos se dividen en
-<em>grupos de permisos</em>. Por ejemplo, el grupo de permisos
-<code>CONTACTS</code> contiene permisos para leer y escribir los contactos y la información de perfil del usuario.
-
- </li>
-
- <li>
- <p><strong>Permisos limitados concedidos durante la instalación:</strong> Cuando el usuario instala o actualiza la aplicación, el sistema le concede a la aplicación todos los permisos que la aplicación solicita que corresponden a {@link
- android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
-
-
- Por ejemplo, los permisos para la alarma y los permisos de intento corresponden a {@link
- android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}, por lo que se conceden automáticamente durante la instalación.
-
- </p>
-
- <p>El sistema puede concederle a la aplicación permisos de firma y de sistema, como se especifica en la sección <a href="#system-apps">Permisos de firma y de sistema de la aplicación</a>.
-
- Al usuario <em>no</em> se le solicitará conceder ningún permiso durante la instalación.
-</p>
- </li>
-
- <li>
- <strong>Solicitud de permisos al usuario durante el tiempo de ejecución:</strong> Cuando la aplicación solicita un permiso, el sistema le muestra al usuario un diálogo y luego llama a la función de devolución de llamada de la aplicación para notificarle si el permiso se otorgó.
-
- Si el usuario concede un permiso, la aplicación recibe todos los permisos del área funcional de dicho permiso, los cuales fueron declarados en el manifiesto de la aplicación.
-
-
- </li>
-
-</ul>
-
-<p>
- Este modelo de permisos cambia la forma en la que la aplicación se comporta para características que requieren permisos.
- A continuación, se presenta un resumen de las prácticas de desarrollo que debe seguir para ajustarse a este modelo:
-
-</p>
-
-<ul>
-
- <li>
- <strong>Siempre compruebe los permisos:</strong> Siempre que una aplicación necesite realizar una acción que requiere algún permiso, primero debe comprobar si ya tiene otorgado ese permiso.
-
- En caso de no tenerlo, solicitará que se le otorgue ese permiso.
-
- </li>
-
- <li>
- <strong>Administre la falta de permisos correctamente:</strong> Si la aplicación no recibe un permiso adecuado, deberá administrar la falla sin errores.
-
- Por ejemplo, si se necesita el permiso solo para una característica añadida, la aplicación puede desactivar esa característica.
- Si el permiso es fundamental para que la aplicación funcione, la aplicación podrá desactivar toda su funcionalidad e informar al usuario que se deben conceder dichos permisos.
-
-
- </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>Figura 1</strong> Pantalla de permisos en Settings de la aplicación.
- </p>
- </div>
-
- <li>
- <strong>Los permisos son revocables:</strong> Los usuarios pueden revocar los permisos en cualquier momento.
- Si un usuario desactiva los permisos de una aplicación, la aplicación <em>no</em> recibe ningún aviso.
- Nuevamente, la aplicación deberá verificar que cuenta con los permisos necesarios antes de realizar cualquier acción restringida.
-
- </li>
-</ul>
-
-<p class="note">
- <strong>Nota:</strong> Si una aplicación tiene como destino M Developer Preview, <em>debe</em> utilizar el nuevo modelo de permisos.
-
-</p>
-
-<p>
- A partir del lanzamiento de M Developer Preview, no todas las aplicaciones de Google implementarán por completo el nuevo modelo de permisos.
- Google actualiza estas aplicaciones durante el transcurso de M Developer Preview para respetar adecuadamente las configuraciones de alternancia de los permisos.
-
-
-</p>
-
-<p class="note">
- <strong>Nota:</strong> Si la aplicación cuenta con su propia superficie de API, no transmita permisos sin antes asegurarse de que el iniciador de la llamada cuente con los permisos requeridos para acceder a esa información.
-
-
-</p>
-
-<h3 id="system-apps">
- Permisos de las aplicaciones de firma y de sistema
-</h3>
-
-<p>
- Generalmente, cuando el usuario instala una aplicación, el sistema solo otorga a la aplicación
-{@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
- PROTECTION_NORMAL}. Sin embargo, en ciertas circunstancias, el sistema le concede a la aplicación más permisos:
-
-</p>
-
-<ul>
- <li>Si una aplicación es parte de la imagen del sistema, la aplicación recibe automáticamente todos los permisos enumerados en el manifiesto.
-
- </li>
-
- <li>Si la aplicación solicita permisos en el manifiesto que corresponden a {@link
- android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE} y la aplicación está firmada con el mismo certificado que el de la aplicación que declaró dichos permisos, el sistema le concede a la aplicación que los solicita esos permisos durante la instalación.
-
-
-
- </li>
-</ul>
-
-<p>
- En ambos casos, el usuario aún puede revocar los permisos en cualquier momento si accede a la pantalla <strong>Settings</strong> del sistema y selecciona <strong>Apps ></strong>
-
- <i>app_name</i> <strong>> Permissions</strong>. La aplicación debe seguir controlando los permisos al momento de la ejecución y solicitarlos si fuese necesario.
-
-
-</p>
-
-<h3 id="compatibility">
- Compatibilidad con modelos anteriores y posteriores
-</h3>
-
-<p>
- Si una aplicación no tiene como destino M Developer Preview, la aplicación continúa utilizando el modelo de permisos anterior, incluso en dispositivos con la versión preliminar de Android M.
- Cuando el usuario instala la aplicación, el sistema le solicita al usuario que otorgue todos los permisos enumerados en el manifiesto de la aplicación.
-
-
-</p>
-
-<p class="note">
- <strong>Nota:</strong> En dispositivos que ejecutan M Developer Preview, el usuario puede desactivar los permisos para cualquier aplicación (incluso para aplicaciones heredadas) desde la pantalla Settings de la aplicación.
-
- Si un usuario desactiva permisos para una aplicación heredada, el sistema desactiva las funciones correspondientes de forma automática.
- Cuando la aplicación intenta realizar una operación que requiere ese permiso, la operación no generará necesariamente una excepción.
-
- En su lugar, devolverá un conjunto de datos vacíos, indicará un error o, de lo contrario, mostrará un comportamiento inesperado.
- Por ejemplo, si realiza una consulta sobre el calendario sin permisos, el método devuelve un conjunto de datos vacíos.
-
-</p>
-
-<p>
- Si instala una aplicación que utiliza el nuevo modelo de permisos en un dispositivo que no ejecuta la versión preliminar de Android M, el sistema la trata como cualquier otra aplicación: el sistema le pide al usuario, durante la instalación, que conceda los permisos declarados.
-
-
-
-</p>
-
-<p class="note">
- <strong>Nota:</strong> Para el lanzamiento de la versión preliminar, debe configurar la versión mínima del SDK en M Preview SDK para compilar con la versión del SDK preliminar.
- Esto significa que no podrá probar dichas aplicaciones en plataformas anteriores durante la versión preliminar para desarrolladores.
-
-
-</p>
-
-<h3 id="perms-vs-intents">Permisos frente a intentos</h3>
-
-<p>
- En muchas situaciones, puede elegir entre dos formas para que sus aplicaciones realicen una tarea.
- Puede hacer que su aplicación solicite permiso para realizar la operación por sí misma.
- De lo contrario, puede hacer que la aplicación utilice un intento para que otra aplicación realice la tarea.
-
-</p>
-
-<p>
- Por ejemplo, supongamos que su aplicación necesita poder tomar fotografías con la cámara del dispositivo.
- Su aplicación puede solicitar el permiso
-<code>android.permission.CAMERA</code>, lo que le permite a su aplicación acceder a la cámara directamente.
- Entonces, su aplicación utilizará las API de la cámara para controlar la cámara y tomar una fotografía.
- Este enfoque le otorga a su aplicación total control del proceso de fotografía y le permite incorporar la UI de la cámara en su aplicación.
-
-
-</p>
-
-<p>
- Sin embargo, si no necesita dicho control, puede utilizar {@link
- android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE} para solicitar una imagen.
- Cuando ejecute el intento, se le solicita al usuario que elija una aplicación de cámara (en caso de que no haya una aplicación de cámara predeterminada) y esa aplicación tomará la fotografía.
-
- La aplicación de cámara devuelve la fotografía al método {@link
- android.app.Activity#onActivityResult onActivityResult()} de su aplicación.
-</p>
-
-<p>
- De manera similar, si necesita realizar una llamada telefónica, acceder a los contactos del usuario, etc., lo puede hacer creando intentos apropiados o puede solicitar los permisos e ingresar directamente a los objetos apropiados.
-
- Cada enfoque tiene ventajas y desventajas.
-
-</p>
-
-<p>
- Si utiliza los permisos:
-</p>
-
-<ul>
- <li>La aplicación posee total control sobre la experiencia del usuario cuando usted realiza la operación.
- Sin embargo, un control tan amplio complica su tarea, ya que usted deberá diseñar una UI apropiada.
-
- </li>
-
- <li>Se le solicita al usuario otorgar el permiso una vez, la primera vez que usted realiza la operación.
- Luego, su aplicación puede realizar la operación sin requerir interacción adicional por parte del usuario.
- Sin embargo, si el usuario no concede el permiso (o lo revoca luego), su aplicación queda inhabilitada para realizar la operación.
-
-
- </li>
-</ul>
-
-<p>
- Si utiliza un intento:
-</p>
-
-<ul>
- <li>No debe diseñar la UI para la operación. La aplicación que controla el intento provee la UI. Sin embargo, esto significa que usted no tiene control sobre la experiencia del usuario.
-
- El usuario podrá interactuar con una aplicación que usted no conoce.
-
- </li>
-
- <li>Si el usuario no tiene una aplicación predeterminada para la operación, el sistema le solicita al usuario que elija una aplicación. Si el usuario no designa un controlador predeterminado, es probable que surja un diálogo adicional cada vez que realice la operación.
-
-
-
- </li>
-</ul>
-
-<h2 id="coding">Codificación para permisos de tiempo de ejecución</h2>
-
-<p>
- Si su aplicación tiene como destino el nuevo M Developer Preview, deberá usar el nuevo modelo de permisos.
- Esto significa que, además de declarar los permisos necesarios en el manifiesto, también debe comprobar si tiene los permisos de tiempo de ejecución y solicitarlos en caso de no tenerlos.
-
-
-
-</p>
-
-<h3 id="enabling">
- Habilitar el nuevo modelo de permisos
-</h3>
-
-<p>
- Para habilitar el nuevo modelo de permisos de M Developer Preview, configure el atributo
-<code>targetSdkVersion</code> de la aplicación en <code>"MNC"</code> y
-<code>compileSdkVersion</code> en <code>"android-MNC"</code>. Al hacerlo, se habilitan todas las características de los nuevos permisos.
-
-</p>
-
-<p>
- Para el lanzamiento de la versión preliminar, debe establecer <code>minSdkVersion</code> en
-<code>"MNC"</code> para compilar con el SDK preliminar.
-</p>
-
-<h3 id="m-only-perm">
- Establecer un permiso solo para la versión preliminar de Android M
-</h3>
-
-<p>
- Puede utilizar el nuevo elemento <code><uses-permission-sdk-m></code> en el manifiesto de la aplicación para indicar que se necesita un permiso solo para M Developer Preview.
- Si declara un permiso de esta manera, cuando la aplicación se instale en un dispositivo anterior, el sistema no le solicitará al usuario el permiso ni se lo otorgará a la aplicación. Al usar el elemento <code><uses-permission-sdk-m></code>, puede añadir nuevos permisos a las versiones actualizadas de su aplicación sin forzar a los usuarios a otorgar permisos cuando instalen la actualización.
-
-
-
-
-
-
-</p>
-
-<p>
- Si la aplicación se ejecuta en un dispositivo con M Developer Preview,
-<code><uses-permission-sdk-m></code> se comporta al igual que
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code>.
- El sistema no le solicita al usuario que otorgue ningún permiso al instalar la aplicación y la aplicación solicita los permisos a medida que se necesiten.
-
-</p>
-
-<h3 id="prompting">
- Solicitar permisos
-</h3>
-
-<p>
- Si su aplicación utiliza el nuevo modelo de permisos de M Developer Preview, no se le pedirá al usuario que otorgue todos los permisos cuando la aplicación se ejecute por primera vez en un dispositivo con la versión preliminar de Android M.
-
- En su lugar, su aplicación solicita los permisos a medida que los necesita.
- Cuando su aplicación solicita un permiso, el sistema le muestra un diálogo al usuario.
-
-</p>
-
-<p>
- Si su aplicación se ejecuta en un dispositivo con SDK 22 o anterior, la aplicación utiliza el modelo de permisos anterior.
- Cuando el usuario instala la aplicación, se le solicita que otorgue todos los permisos que la aplicación requiere en su manifiesto, excepto aquellos permisos marcados con <code><uses-permission-sdk-m></code>.
-
-
-</p>
-
-<h4 id="check-platform">Controlar en qué plataforma se ejecuta la aplicación</h4>
-
-<p>
- Este modelo de permisos es compatible solamente con dispositivos que ejecutan M Developer Preview.
- Antes de llamar a cualquiera de estos métodos, la aplicación debe verificar en qué plataforma se está ejecutando y, para hacerlo, se controla el valor de {@link android.os.Build.VERSION#CODENAME
- Build.VERSION.CODENAME}.
-
- Si el dispositivo ejecuta M Developer Preview,
-{@link android.os.Build.VERSION#CODENAME CODENAME} es <code>"MNC"</code>.
-</p>
-
-<h4 id="check-for-permission">Controlar si la aplicación cuenta con los permisos necesarios</h4>
-
-<p>Cuando el usuario intenta realizar algo que requiere un permiso, la aplicación controla si ya tiene el permiso para realizar esa operación.
- Para hacerlo, la aplicación llama a <code>Context.checkSelfPermission(
-
-<i>permission_name</i>)</code>. La aplicación debe realizar este control incluso si sabe que el usuario ya ha concedido ese permiso, ya que el usuario puede revocar los permisos de una aplicación en cualquier momento.
-
-
- Por ejemplo, si un usuario quiere usar una aplicación para tomar una fotografía, la aplicación llama a <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.
-
-</p>
-
-<p class="table-caption" id="permission-groups">
- <strong>Tabla 1.</strong> Permisos y grupo de permisos.</p>
-<table>
- <tr>
- <th scope="col">Grupo de permisos</th>
- <th scope="col">Permisos</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">Solicitar permisos si se necesitan</h4>
-
-<p>Si la aplicación no posee los permisos que necesita, llama al método
-<code>Activity.requestPermissions(String[], int)</code> para solicitar el permiso o los permisos apropiados.
- La aplicación pasa el permiso o los permisos que necesita y un “código de solicitud” entero.
-
- Este método funciona de manera asincrónica: realiza la devolución inmediatamente y cuando el usuario responde a la ventana de diálogo, el sistema llama al método de devolución de llamada de la aplicación con los resultados, y pasa el mismo “código de solicitud” que pasó la aplicación a
-<code>requestPermissions()</code>.
-
-</p>
-
- <p>El siguiente código verifica si la aplicación tiene permisos para leer los contactos del usuario y solicita los permisos de ser necesario:
-</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">Administrar la respuesta a la solicitud de permisos</h4>
-
-<p>
- Cuando una aplicación solicita permisos, el sistema le muestra al usuario una ventana de diálogo.
- Cuando el usuario responde, el sistema invoca
-<code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
- de su aplicación y le transfiere la respuesta del usuario. Su aplicación necesita invalidar ese método. La devolución de llamada pasa el mismo código de solicitud que usted pasó a <code>requestPermissions()</code>.
-
- Por ejemplo, si una aplicación solicita acceso <code>READ_CONTACTS</code>, es posible que tenga el siguiente método de devolución de llamada:
-
-
-</p>
-
-<pre>
-@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>Si el usuario concede un permiso, el sistema le otorga a la aplicación todos los permisos enumerados en el manifiesto para esa área funcional.
- Se deben tomar acciones apropiadas si el usuario rechaza la solicitud.
- Por ejemplo, usted podría desactivar cualquier acción del menú que dependa de este permiso.
-
- </li>
-</p>
-
-<p>
- Cuando el sistema le solicita al usuario que otorgue un permiso, el usuario tiene la opción de indicarle al sistema que no solicite ese permiso de nuevo.
- En ese caso, cuando la aplicación utiliza <code>requestPermissions()</code> para solicitar ese permiso, el sistema rechaza la solicitud inmediatamente.
-
- En este caso, el sistema llama a su <code>onRequestPermissionsResult()</code> de la misma manera en que lo haría si el usuario hubiese rechazado explícitamente su solicitud nuevamente.
-
- Por esta razón, su aplicación no puede asumir que se ha llevado a cabo algún tipo de interacción con el usuario.
-
-</p>
-
-<h2 id="testing">Prueba de permisos de tiempo de ejecución</h2>
-
-
-<p>
- Si su aplicación tiene como destino M Developer Preview, debe probar que administre los permisos correctamente.
- No debe asumir que su aplicación tiene algún permiso en particular cuando se ejecuta.
- Cuando la aplicación se ejecuta por primera vez, es muy probable que no tenga permisos y el usuario puede revocar o reestablecer los permisos en cualquier momento.
-
-
-</p>
-
-<p>
- Debe probar su aplicación para asegurarse de que funciona correctamente en todas las situaciones de permisos.
- Con el SDK de la versión preliminar de Android M, hemos brindado nuevos comandos <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (adb)</a> que le permitirán probar su aplicación con cualquier configuración de permisos que necesite probar.
-
-
-
-</p>
-
-<h3>
- Nuevas opciones y comandos adb
-</h3>
-
-<p>
- Las herramientas de plataforma del SDK de la versión preliminar de Android M contienen varios comandos nuevos que le permiten probar la manera en que su aplicación administra los permisos.
-
-</p>
-
-<h4>
- Instalar con permisos
-</h4>
-
-<p>
- Puede utilizar la nueva opción <code>-g</code> del comando <a href="{@docRoot}tools/help/adb.html#move"><code>adb
- install</code></a>, que instala la aplicación y concede todos los permisos enumerados en el manifiesto de la aplicación:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g <path_to_apk>
-</pre>
-
-<h4>
- Conceder y revocar permisos
-</h4>
-
-<p>
- Puede utilizar los comandos ADB nuevos <a href="{@docRoot}tools/help/adb.html#pm">package manager (pm)</a> para conceder y revocar permisos a una aplicación instalada. Esta funcionalidad puede resultar útil para pruebas automáticas.
-
-
-</p>
-
-<p>
- Para conceder un permiso, utilice el comando <code>grant</code> de package manager:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant <package_name> <permission_name>
-</pre>
-
-<p>
- Por ejemplo, para conceder el paquete de permisos com.example.myapp para grabar audio utilice este comando:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
- Para revocar un permiso, utilice el comando <code>revoke</code> de package manager:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke <package_name> <permission_name>
-</pre>
-
-<h2 id="best-practices">Mejores prácticas</h2>
-
-<p>
- El nuevo modelo de permisos brinda a los usuarios una experiencia más fluida y les facilita la instalación de aplicaciones, además de hacerlos sentir cómodos con las actividades de sus aplicaciones.
-
- Sugerimos las siguientes mejores prácticas para obtener el mayor beneficio del nuevo modelo.
-
-</p>
-
-
-<h3 id="bp-what-you-need">Solicite solo los permisos que necesite</h3>
-
-<p>
- Cada vez que solicite un permiso, usted obliga al usuario a tomar una decisión.
- La funcionalidad de su aplicación se verá reducida si el usuario rechaza la solicitud.
- Debe minimizar la cantidad de veces que realiza estas solicitudes.
-</p>
-
-<p>
- Por ejemplo, a menudo, su aplicación puede obtener la funcionalidad necesaria a través de un <a href="{@docRoot}guide/components/intents-filters.html">intento</a> en lugar de una solicitud de permiso.
-
- Si su aplicación necesita tomar fotografías con la cámara del teléfono, la aplicación puede utilizar un intento {@link
- android.provider.MediaStore#ACTION_IMAGE_CAPTURE
- MediaStore.ACTION_IMAGE_CAPTURE}.
- Cuando su aplicación ejecuta el intento, el sistema le solicita al usuario que elija una aplicación para la cámara que ya está instalada a fin de tomar la fotografía.
-
-
-</p>
-
-<h3 id="bp-dont-overwhelm">
- No abrume al usuario
-</h3>
-
-<p>
- Si expone al usuario a muchas solicitudes de permisos al mismo tiempo, lo abrumará y hará que deje de usar su aplicación. Por el contrario, debe pedir permisos en la medida que los necesite.
-
-
-</p>
-
-<p>
- A veces, uno o más permisos pueden ser absolutamente necesarios para la aplicación. En ese caso, es recomendable pedir todos los permisos no bien se inicie la aplicación.
-
- Por ejemplo, si crea una aplicación de fotografía, la aplicación necesitará acceso a la cámara del dispositivo.
- Cuando el usuario inicie la aplicación por primera vez, no se sorprenderá si la aplicación le solicita permiso para usar la cámara.
-
- Sin embargo, si la misma aplicación además tuviese una característica para compartir fotografías con los contactos del usuario, <em>no</em> solicite ese permiso la primera vez que se ejecute.
-
- En su lugar, espere hasta que el usuario utilice la característica “compartir” para solicitar el permiso en ese momento.
-
-</p>
-
-<p>
- Si su aplicación proporciona un tutorial, se recomienda que se pidan los permisos esenciales de la aplicación al final del tutorial.
-
-</p>
-
-<h3 id="bp-explain">
- Explique por qué se necesitan los permisos
-</h3>
-
-<p>
- El diálogo de permisos que muestra el sistema cuando llama a
- <code>requestPermissions()</code> informa qué permisos necesita su aplicación pero no establece el motivo.
- A veces, el usuario puede confundirse.
- Es una buena idea explicarle al usuario los motivos por los que la aplicación necesita esos permisos antes de llamar a <code>requestPermissions()</code>.
-
-</p>
-
-<p>
- Por ejemplo, una aplicación de fotografía puede solicitar servicios de ubicación para añadir una etiqueta geográfica a las fotografías.
- Es posible que un usuario típico no sepa que una fotografía puede contener información sobre la ubicación y se confundiría si una aplicación de fotografía solicita la ubicación.
-
- En este caso, es recomendable que la aplicación le informe al usuario acerca de esta característica <em>antes</em> de llamar a
-<code>requestPermissions()</code>.
-
-</p>
-
-<p>
- Una forma de hacerlo es incorporar estas solicitudes en el tutorial de la aplicación. El tutorial puede mostrar todas las características de la aplicación, una por vez, y mientras lo hace explicar los permisos que son necesarios.
-
- Por ejemplo, el tutorial de la aplicación de fotografía puede mostrar la característica “compartir fotografías con contactos” y luego explicarle al usuario que debe otorgar permisos para que la aplicación vea los contactos del usuario.
-
-
- La aplicación puede entonces llamar a <code>requestPermissions()</code> para solicitarle al usuario ese acceso.
- Por supuesto, no todos los usuarios siguen el tutorial, por lo que aun así debe controlar y solicitar los permisos durante el funcionamiento normal de la aplicación.
-
-
-</p>
diff --git a/docs/html-intl/intl/es/preview/index.jd b/docs/html-intl/intl/es/preview/index.jd
deleted file mode 100644
index aae8e4c..0000000
--- a/docs/html-intl/intl/es/preview/index.jd
+++ /dev/null
@@ -1,72 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M Developer Preview</h1>
- <p class="dac-hero-description">
- Prepárese para la próxima versión de Android. Pruebe sus aplicaciones en Nexus 5, 6, 9 y Player.
- Explore las novedades en los— <strong>permisos de ejecución</strong>, las características de ahorro de energía <strong>Doze</strong> y <strong>App Standby</strong>, la nueva <strong>tecnología de asistencia</strong> y mucho más.
-
-
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- ¡Empiece hoy mismo!</a>
-<br>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
-
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">Recursos</h1>
- <div class="dac-section-subtitle">
- Información esencial para ayudarlo a preparar sus aplicaciones para Android M.
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Informe los problemas
- </a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- Únase a la comunidad en G+ </a>
-
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/es/preview/license.jd b/docs/html-intl/intl/es/preview/license.jd
deleted file mode 100644
index 7222801..0000000
--- a/docs/html-intl/intl/es/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Contrato de licencia
-
-@jd:body
-
-<p>
-Para comenzar con la versión preliminar del SDK de Android, debe aceptar los términos y las condiciones que se describen a continuación.
-Como se describe a continuación, tenga en cuenta que esta es una versión preliminar del SDK de Android, que está sujeta a cambios y que usted utiliza bajo su cuenta y riesgo. La versión preliminar del SDK de Android no es una versión estable y puede contener errores y defectos que pueden provocar daños graves a sus sistemas informáticos, dispositivos y datos.
-</p>
-
-<p>
-Este es el Contrato de licencia de la versión preliminar del SDK de Android (el “Contrato de licencia”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Introducción
-
-1.1 Se le otorga la licencia de la versión preliminar del SDK de Android (denominada “Versión preliminar” en el Contrato de licencia e incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Versión preliminar, si se encuentran disponibles), sujeto a los términos del Contrato de licencia. El Contrato de licencia establece una relación legal vinculante entre usted y Google en relación con el uso que usted realice de la Versión preliminar.
-
-1.2 “Android” hace referencia al conjunto de soluciones Android para dispositivos, según se encuentre disponible en el Proyecto de código abierto de Android (Android Open Source Project), que se encuentra en la siguiente URL: http://source.android.com/, y según se actualiza periódicamente.
-
-1.3 “Google” hace referencia a Google Inc., una corporación de Delaware, con sede principal en 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
-
-2. Aceptación del Contrato de licencia
-
-2.1 Para poder utilizar la Versión preliminar, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Versión preliminar.
-
-2.2 Al hacer clic para aceptar o utilizar la Versión preliminar, por medio del presente, usted acepta los términos del Contrato de licencia.
-
-2.3 Usted no puede utilizar la Versión preliminar ni aceptar el Contrato de licencia si tiene prohibido recibir la Versión preliminar en virtud de las leyes de los Estados Unidos o de otros países, lo que incluye el país donde es residente o desde el que utilizará la Versión preliminar.
-
-2.4 Si usted utilizará la Versión preliminar de forma interna, dentro de su compañía u organización, usted acepta quedar sujeto al Contrato de licencia en representación de su empleador u otra entidad, y expresa y garantiza que tiene plena autoridad legal para vincular a su empleador o a dicha entidad al Contrato de licencia. Si no posee la autoridad exigida, no podrá aceptar el Contrato de licencia ni usar la Versión preliminar en representación de su empleador u otra entidad.
-
-3. Licencia de la Versión preliminar de Google
-
-3.1 Sujeto a los términos del Contrato de licencia, Google le otorga una licencia libre de regalías, no asignable, no exclusiva, no transferible a terceros, limitada y revocable para utilizar la Versión preliminar, de forma personal o interna dentro de su compañía u organización, únicamente para desarrollar aplicaciones para ejecutar en la plataforma de Android.
-
-3.2 Usted acepta que Google u otros terceros poseen todos los derechos legales, títulos e intereses en relación con la Versión preliminar, incluidos los Derechos de propiedad intelectual que existan en la Versión preliminar. Los “Derechos de propiedad intelectual” hacen referencia a todos y cada uno de los derechos en virtud de las leyes de patentes, derechos de autor, secreto comercial y marca comercial, y todos los demás derechos de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
-
-3.3 No podrá utilizar la Versión preliminar para ningún otro propósito que no esté expresamente permitido en el Contrato de licencia. Excepto en la medida que lo exijan las licencias correspondientes de terceros, no podrá: (a) copiar (excepto con fines de copia de seguridad), modificar, adaptar, redistribuir, descompilar, utilizar técnicas de ingeniería inversa, desarmar ni crear trabajos derivados de la Versión preliminar ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Versión preliminar en un teléfono móvil ni en ningún otro dispositivo de hardware (a excepción de una computadora personal), ni podrá combinar ninguna parte de la Versión preliminar con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Versión preliminar.
-
-3.4 Usted acepta que no tomará medidas que pudieran provocar la fragmentación de Android, incluidas, entre otras, la distribución y la participación en la creación o la promoción de un kit de desarrollo de software derivado de la Versión preliminar.
-
-3.5 El uso, la reproducción y la distribución de los componentes de la Versión preliminar con licencia de software de código abierto están regidos exclusivamente por los términos de la licencia de ese software de código abierto y no de este Contrato de licencia. Usted acepta mantener la licencia en buenas condiciones con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerse de realizar alguna acción que pueda poner fin, suspender o violar dichos derechos.
-
-3.6 Usted acepta que la forma y la naturaleza de la Versión preliminar que proporciona Google pueden cambiar sin brindarle aviso previo y que las versiones futuras de la Versión preliminar pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Versión preliminar. Usted acepta que Google puede (de forma permanente o temporal) dejar de proporcionarles la Versión preliminar (o cualquiera de las características incluidas en ella) a usted o a los usuarios, generalmente, a criterio exclusivo de Google, sin brindarle aviso previo.
-
-3.7 Ninguna declaración de este Contrato de licencia le otorga el derecho de utilizar alguno de los nombres comerciales, las marcas comerciales, las marcas de servicio, los logotipos, los nombres de dominio ni otras características distintivas de marca de Google.
-
-3.8 Usted acepta que no eliminará, ocultará ni alterará ninguno de los avisos de derechos de propiedad (lo que incluye los avisos de marca comercial y derechos de autor) que pudieran estar anexados o incluidos en la Versión preliminar.
-
-4. Uso que usted realiza de la Versión preliminar
-
-4.1 Google acepta que ninguna declaración del Contrato de licencia le concede a Google derecho, título o interés alguno de su parte (o de parte de sus licenciantes), en virtud del Contrato de licencia, con respecto a las aplicaciones de software que usted desarrolle mediante el uso de la Versión preliminar, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
-
-4.2 Usted acepta utilizar la Versión preliminar y escribir aplicaciones únicamente conforme a lo que permite (a) este Contrato de licencia y (b) las leyes, regulaciones, o prácticas y pautas generalmente aceptadas pertinentes en las jurisdicciones relevantes (lo que incluye las leyes sobre la exportación de datos o software hacia los Estados Unidos u otros países relevantes y desde ellos).
-
-4.3 Usted acepta que si utiliza la Versión preliminar para desarrollar aplicaciones, protegerá la privacidad y los derechos legales de los usuarios. Si los usuarios le proporcionan sus nombres de usuario, contraseñas u otra información de inicio de sesión o información personal, debe comunicarles a los usuarios que la información se encontrará disponible para su aplicación, y debe proporcionarles a dichos usuarios un aviso de privacidad con protección y validez legal. Si su aplicación almacena información personal o confidencial proporcionada por los usuarios, lo debe hacer de forma segura. Si los usuarios le proporcionan información sobre la cuenta de Google, su aplicación solo puede usar esa información para acceder a la cuenta de Google del usuario siempre que este le haya otorgado permiso para hacerlo y con los fines para los que se lo haya otorgado.
-
-4.4 Usted acepta que no participará en ninguna actividad con la Versión preliminar (lo que incluye el desarrollo o la distribución de una aplicación) que interfiera, interrumpa, dañe o acceda sin autorización a servidores, redes u otras propiedades o servicios de Google o de algún tercero.
-
-4.5 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de los datos, el contenido o los recursos que usted cree, transmita o muestre a través de Android o las aplicaciones para Android, y de las consecuencias de sus acciones (lo que incluye la pérdida o el daño que Google pudiera sufrir) al hacerlo.
-
-4.6 Usted acepta que es el único responsable (y que Google no asume responsabilidades hacia usted ni terceros) de cualquier incumplimiento de sus obligaciones en virtud de este Contrato de licencia, los contratos aplicables de terceros o los términos del servicio, o cualquier ley o regulación pertinentes, y de las consecuencias (lo que incluye las pérdidas o los daños que pudieran sufrir Google o algún tercero) de dichos incumplimientos.
-
-4.7 La Versión preliminar se encuentra en desarrollo, y sus pruebas y comentarios son una parte importante del proceso de desarrollo. Al utilizar la Versión preliminar, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Versión preliminar contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Versión preliminar, ya que esta Versión preliminar ya no se admitirá tras el lanzamiento del SDK oficial de Android.
-
-5. Sus credenciales de desarrollador
-
-5.1 Usted acepta que es responsable de mantener la confidencialidad de toda credencial de desarrollador que Google pudiera otorgarle o que usted pudiera escoger, y que será el único responsable de todas las aplicaciones que se desarrollen con sus credenciales de desarrollador.
-
-6. Privacidad e información
-
-6.1 A fin de poder innovar y mejorar de forma continua la Versión preliminar, Google podría recopilar ciertas estadísticas de uso del software, lo que incluye, entre otras características, un identificador único, la dirección IP asociada, el número de versión del software e información sobre las herramientas o los servicios de la Versión preliminar que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Versión preliminar se lo notificará y le solicitará su permiso. Si no otorga su permiso, no se recopilará la información.
-
-6.2 Los datos recopilados se analizan en el agregado para mejorar la Versión preliminar y se conservan de acuerdo con la política de privacidad de Google que se encuentra en el sitio http://www.google.com/policies/privacy/.
-
-7. Aplicaciones de terceros
-
-7.1 Si utiliza la Versión preliminar para ejecutar aplicaciones desarrolladas por un tercero o que accedan a datos, contenido o recursos proporcionados por un tercero, usted acepta que Google no es responsable de esas aplicaciones, datos, contenido ni recursos. Usted comprende que todos los datos, contenidos o recursos a los que podría acceder a través de esas aplicaciones de terceros son exclusiva responsabilidad de la persona que los origina y que Google no es responsable de las pérdidas ni los daños que usted pudiera experimentar como consecuencia del uso o acceso de cualquiera de esas aplicaciones, datos, contenido o recursos de terceros.
-
-7.2 Usted debe saber que los datos, el contenido y los recursos que se le presentan a través de esa aplicación de un tercero pueden estar protegidos por derechos de propiedad intelectual que les pertenecen a sus proveedores (o a otras personas o compañías en representación de estos). No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos, contenidos o recursos (en su totalidad o en parte), a menos que los propietarios pertinentes le hayan otorgado permiso específicamente para hacerlo.
-
-7.3 Usted acepta que el uso que haga de las aplicaciones, los datos, el contenido o los recursos de ese tercero puede estar sujeto a términos independientes entre usted y el tercero correspondiente.
-
-8. Uso de las API de Google
-
-8.1 API de Google
-
-8.1.1 Si utiliza alguna API para recuperar datos de Google, usted acepta que los datos pueden estar protegidos por derechos de propiedad intelectual que le pertenecen a Google o a las partes que proporcionan esos datos (o a otras personas o empresas en representación de estos). El uso que realice de cualquiera de esas API puede estar sujeto a términos de servicio adicionales. No puede modificar, alquilar, arrendar, prestar, vender, distribuir ni crear obras derivadas basadas en esos datos (en su totalidad o en parte), a menos que los términos de servicio correspondientes lo permitan.
-
-8.1.2 Si utiliza alguna API para recuperar datos de un usuario de Google, usted acepta y acuerda que solo podrá recuperar datos con el consentimiento explícito del usuario y solo con los fines limitados para los que el usuario le haya otorgado permiso para hacerlo.
-
-9. Finalización del Contrato de licencia
-
-9.1 Este Contrato de licencia tendrá vigencia hasta que lo revoquen usted o Google, como se indica a continuación.
-
-9.2 Si desea rescindir el Contrato de licencia, puede hacerlo al interrumpir el uso que realiza de la Versión preliminar y de las credenciales de desarrollador pertinentes.
-
-9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, después de notificárselo a usted.
-
-9.4 El Contrato de licencia finalizará automáticamente, sin previo aviso ni acción alguna, tras la primera de las siguientes situaciones:
-(A) cuando Google deje de proporcionar la Versión preliminar o ciertas partes de esta a los usuarios en el país donde usted reside o desde el que utiliza el servicio; y
-(B) cuando Google emita una versión final del SDK de Android.
-
-9.5 Si el Contrato de licencia se rescinde, se revocará la licencia que usted recibió en virtud de dicho contrato; usted deberá suspender inmediatamente todo uso de la Versión preliminar y las disposiciones de los párrafos 10, 11, 12 y 14 seguirán vigentes indefinidamente.
-
-10. EXENCIONES DE RESPONSABILIDAD
-
-10.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE EL USO QUE REALICE DE LA VERSIÓN PRELIMINAR ES BAJO SU PROPIO RIESGO Y QUE LA VERSIÓN PRELIMINAR SE PROPORCIONA “EN LAS CONDICIONES EN LAS QUE SE ENCUENTRA” Y “SUJETA A DISPONIBILIDAD” SIN GARANTÍAS DE NINGÚN TIPO POR PARTE DE GOOGLE.
-
-10.2 EL USO QUE USTED REALICE DE LA VERSIÓN PRELIMINAR Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA VERSIÓN PRELIMINAR ES A SU ENTERO RIESGO Y DISCRECIÓN, Y USTED ES EL ÚNICO RESPONSABLE DE CUALQUIER DAÑO QUE PUDIERA SUFRIR SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO, O DE LA PÉRDIDA DE DATOS COMO CONSECUENCIA DE DICHO USO. SIN PERJUICIO DE LO MENCIONADO ANTERIORMENTE, USTED COMPRENDE QUE LA VERSIÓN PRELIMINAR NO ES UNA VERSIÓN ESTABLE, Y PUEDE CONTENER ERRORES, DEFECTOS Y VULNERABILIDADES DE SEGURIDAD QUE PUEDEN PROVOCAR DAÑOS SIGNIFICATIVOS, LO QUE INCLUYE LA PÉRDIDA COMPLETA E IRRECUPERABLE DEL USO DE SU SISTEMA INFORMÁTICO U OTRO DISPOSITIVO.
-
-10.3 GOOGLE TAMBIÉN RECHAZA TODAS LAS GARANTÍAS Y CONDICIONES DE CUALQUIER TIPO, EXPRESAS O IMPLÍCITAS, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS Y CONDICIONES DE COMERCIABILIDAD, IDONEIDAD PARA UN FIN DETERMINADO Y NO VIOLACIÓN.
-
-11. LIMITACIÓN DE RESPONSABILIDADES
-
-11.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE GOOGLE, SUS SUBSIDIARIAS Y FILIALES, Y SUS LICENCIANTES NO SERÁN RESPONSABLES ANTE USTED, EN VIRTUD DE NINGUNA TEORÍA DE RESPONSABILIDAD, POR NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, RESULTANTE NI PUNITIVO EN EL QUE PODRÍA HABER INCURRIDO, LO QUE INCLUYE LA PÉRDIDA DE DATOS, YA SEA QUE SE LE HAYA NOTIFICADO O NO A GOOGLE O A SUS REPRESENTANTES, O SOBRE CUYA POSIBILIDAD ESTOS DEBERÍAN HABER SABIDO.
-
-12. Indemnización
-
-12.1 Hasta el grado máximo que permita la ley, usted acepta defender, indemnizar y eximir de responsabilidades a Google, sus filiales y sus respectivos directores, funcionarios, empleados y agentes, de todo tipo de reclamo, acción legal y proceso judicial, así como de las pérdidas, responsabilidades, daños, costos y gastos (incluidos los honorarios razonables de abogados) que surjan o se acumulen (a) del uso que usted realiza de la Versión preliminar, (b) de cualquier aplicación que desarrolle en la Versión preliminar que infrinja algún derecho de propiedad intelectual de cualquier persona, o que difame a cualquier persona o viole sus derechos de publicidad o privacidad, y (c) del incumplimiento por su parte del Contrato de licencia.
-
-13. Cambios en el Contrato de licencia
-
-13.1 Google puede realizar cambios en el Contrato de licencia a medida que distribuye nuevas versiones de la Versión preliminar. Cuando se realicen esos cambios, Google emitirá una nueva versión del Contrato de licencia, que estará disponible en el sitio web donde se ponga a la venta la Versión preliminar.
-
-14. Términos legales generales
-
-14.1 El Contrato de licencia constituye el contrato legal integral entre usted y Google, y rige el uso que usted realice de la Versión preliminar (a excepción de los servicios que Google pueda proporcionarle en virtud de un contrato por escrito independiente), y reemplaza totalmente cualquier contrato anterior entre usted y Google en relación con la Versión preliminar.
-
-14.2 Usted acepta que, si Google no ejerce ni impone un derecho o recurso legal especificados en el Contrato de licencia (o sobre el que Google tenga beneficios conforme a cualquier ley aplicable), esto no se considerará una renuncia formal a los derechos por parte de Google y Google aún seguirá recibiendo los beneficios de esos derechos o recursos legales.
-
-14.3 Si algún tribunal judicial con jurisdicción para decidir sobre este asunto determina que alguna de las disposiciones de este Contrato de licencia no es válida, se eliminará esa disposición del Contrato de licencia sin que eso afecte la validez del resto del contrato. Las disposiciones restantes del Contrato de licencia continuarán siendo válidas y aplicables.
-
-14.4 Usted reconoce y acepta que cada miembro del grupo de compañías de las que Google es la compañía central serán terceros beneficiarios del Contrato de licencia, y que esas otras empresas tendrán el derecho de imponer directamente cualquier disposición y ampararse en las disposiciones de este Contrato de licencia que les confieran un beneficio (o que confieran derechos a su favor). Además de esto, ninguna otra persona o compañía serán terceros beneficiarios del Contrato de licencia.
-
-14.5 RESTRICCIONES DE EXPORTACIÓN. LA VERSIÓN PRELIMINAR ESTÁ SUJETA A LAS LEYES Y REGULACIONES DE EXPORTACIÓN DE LOS ESTADOS UNIDOS. DEBE CUMPLIR CON TODAS LAS LEYES Y REGULACIONES DE EXPORTACIÓN NACIONALES E INTERNACIONALES QUE SE APLIQUEN A LA VERSIÓN PRELIMINAR. ESTAS LEYES INCLUYEN RESTRICCIONES EN RELACIÓN CON LOS DESTINOS, USUARIOS FINALES Y USO FINAL.
-
-14.6 Usted no puede asignar ni transferir el Contrato de licencia sin la aprobación previa por escrito de Google y todo intento de asignación sin dicha aprobación no tendrá validez. No podrá delegar sus responsabilidades u obligaciones otorgadas en virtud del Contrato de licencia sin la aprobación previa por escrito de Google.
-
-14.7 El Contrato de licencia y su relación con Google conforme al Contrato de licencia se regirán por las leyes del estado de California, independientemente de los principios de conflictos entre leyes. Usted y Google aceptan presentarse ante la jurisdicción exclusiva de los tribunales del condado de Santa Clara, California, para resolver cualquier asunto legal que pudiera surgir del Contrato de licencia. Sin perjuicio de esto, usted acepta que Google aún podrá aplicar reparaciones conforme a mandato judicial (o a un tipo equivalente de desagravio legal) en cualquier jurisdicción.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/es/preview/overview.jd b/docs/html-intl/intl/es/preview/overview.jd
deleted file mode 100644
index 2cd2130..0000000
--- a/docs/html-intl/intl/es/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=Información general del programa
-page.metaDescription=Bienvenido a Android M Developer Preview, el programa que le brinda todo lo que necesita para probar y optimizar sus aplicaciones para la próxima versión de Android.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<p>
- Bienvenido a <strong>Android M Developer Preview</strong>, el programa que le brinda todo lo que necesita para probar y optimizar sus aplicaciones para la próxima versión de Android.
-
- Es gratis y puede comenzar a utilizarlo ahora mismo. Solo tiene que descargar las herramientas de M Developer Preview.
-
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
- <div class="cols">
- <div class="col-4of12">
- <h5>
- Imágenes del sistema emulador y de hardware
- </h5>
-
- <p>
- Ejecute y pruebe sus aplicaciones en Nexus 5, 6, 9 y Player (para TV), además del emulador.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Último código de la plataforma
- </h5>
-
- <p>
- Durante la versión preliminar, ofreceremos múltiples actualizaciones, por lo que usted realizará la prueba comparando los últimos cambios de la plataforma.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Actualizaciones vía OTA
- </h5>
-
- <p>
- Luego de actualizar su dispositivo a la versión preliminar inicial, usted podrá obtener actualizaciones por red inalámbrica (over-the-air, OTA).
-
- </p>
- </div>
- </div>
-
- <div class="cols">
-
-
- <div class="col-4of12">
- <h5>
- Nuevos comportamientos y capacidades
- </h5>
-
- <p>
- Inicie el funcionamiento con anticipación para admitir los comportamientos de la nueva plataforma como el nuevo modelo de permisos de tiempos de ejecución y las opciones de ahorro de energía.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Ventana de prioridad para los problemas informados por los desarrolladores
- </h5>
-
- <p>
- Durante las primeras semanas, daremos prioridad a los problemas informados por los desarrolladores; por lo tanto, realice las pruebas y envíe sus comentarios lo antes posible.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Comentarios y soporte
- </h5>
-
- <p>
- Infórmenos los problemas y envíenos comentarios a través de nuestro <a href="https://code.google.com/p/android-developer-preview/">seguimiento de problemas</a>.
- Póngase en contacto con otros desarrolladores de la comunidad <a href="http://g.co/dev/AndroidMDevPreview">M Developer Community</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">
- Escala de tiempo y actualizaciones
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
- M Developer Preview estará disponible a partir del 28 de mayo hasta la versión final del SDK de Android M, que lanzaremos al poco tiempo del lanzamiento público durante el tercer trimestre de 2015.
-
-
-</p>
-
-<p>
- En momentos clave del desarrollo, lanzaremos actualizaciones para sus dispositivos de prueba.
- Los momentos clave tentativos son los siguientes:
-</p>
-
-<ul>
- <li>
- <strong>Preview 1</strong> (lanzamiento inicial de la versión preliminar, fines de mayo)
- </li>
-
- <li>
- <strong>Preview 2</strong> (fines de junio, comienzos de julio)
- </li>
-
- <li>
- <strong>Preview 3</strong> (casi la versión final, a fines de julio)
- </li>
-</ul>
-
-<p>
- Estas actualizaciones terminan con el <strong>SDK final</strong> (más adelante durante el tercer trimestre), lo que proporcionará tanto las API oficiales para la nueva versión de Android como los comportamientos y las características finales del sistema.
-
-
-</p>
-
-<p>
- A medida que usted prueba y desarrolla en Android M, le recomendamos que <strong>mantenga su entorno de desarrollo actualizado</strong> a medida que se lanzan las actualizaciones de la versión preliminar.
-
- Para que el proceso sea más fácil, lanzaremos <strong>actualizaciones OTA</strong> para los dispositivos que ya hayan sido actualizados a una compilación de la versión preliminar y brindaremos imágenes del sistema que puede descargar y actualizar manualmente.
-
-
-</p>
-<p class="note">
- <strong>Nota:</strong> El SDK final y las imágenes del sistema no se pueden proporcionar vía OTA y deberán <strong>actualizarse manualmente</strong> en sus dispositivos de prueba.</strong>
-
-
-</p>
-
-<p>
- Le informaremos cuando las actualizaciones de la versión preliminar se encuentren disponibles a través del blog de Android para desarrolladores (<a href="http://android-developers.blogspot.com/">Android Developers Blog</a>), de este sitio y de la comunidad de desarrolladores <a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a>.
-
-
-</p>
-
-<h2 id="preview_tools">
- ¿Qué ofrece la versión preliminar?
-</h2>
-
-<p>
- M Developer Preview incluye todo lo que necesita para probar sus aplicaciones actuales en una variedad de tamaños de pantalla, de tecnologías de redes, de conjuntos de chip CPU/GPU y de arquitecturas de hardware.
-
-
-</p>
-
-<h4>
- Herramientas del SDK
-</h4>
-
-<p>
- Estos componentes se pueden descargar mediante SDK Manager en <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:
-</p>
-
-<ul>
- <li><strong>Herramientas del SDK</strong> de M Developer Preview
- </li>
-
- <li><strong>Imagen del sistema emulador</strong> (32-bit y 64-bit) de M Developer Preview
-
- </li>
-
- <li><strong>Imagen del sistema emulador para Android TV</strong> (32-bit) de M Developer Preview
-
- </li>
-</ul>
-
-<h4>
- Imágenes del sistema de hardware
-</h4>
-
-<p>
- Puede descargar estas imágenes del sistema de hardware para dispositivos Nexus desde la <a href="download.html">página de Descargas</a>:
-
-</p>
-
-<ul>
- <li>
- <strong>Nexus 5</strong> (GSM/LTE) imagen del sistema del dispositivo “hammerhead”
- </li>
-
- <li>
- <strong>Nexus 6</strong> imagen del sistema del dispositivo “shamu”
- </li>
-
- <li>
- <strong>Nexus 9</strong> (Wi-Fi) imagen del sistema del dispositivo “volantis”
- </li>
-
- <li>
- <strong>Nexus Player</strong> (Android TV) imagen del sistema del dispositivo “fugu”
- </li>
-</ul>
-
-<h4>
- Documentación y código de muestra
-</h4>
-
-<p>
- Estos recursos de documentación lo ayudan a obtener información sobre la versión preliminar:
-</p>
-
-<ul>
- <li>
- <a href="setup-sdk.html">Configurar el SDK</a>: contiene instrucciones paso a paso para comenzar.
-
- </li>
-
- <li>
- <a href="{@docRoot}preview/testing/guide.html">Guía de prueba</a> y <a href="behavior-changes.html">Cambios en los comportamientos</a>: le indican las áreas más importantes que debe probar.
- </li>
-
- <li>Documentación sobre las nuevas API, lo que incluye <a href="api-overview.html">Información general de la API</a>, <a href="{@docRoot}preview/download.html#docs">Referencia de la API</a> que se puede descargar y guías detalladas para desarrolladores sobre características clave como <a href="{@docRoot}preview/features/runtime-permissions.html">permisos</a>, <a href="{@docRoot}preview/backup/index.html">copias de seguridad de la aplicación</a>, entre otras.
-
-
-
-
- </li>
-
- <li>
- <a href="{@docRoot}preview/samples.html">Código de ejemplo</a>: indica cómo admitir permisos y otras características nuevas.
-
- </li>
-
- <li>
- <a href="{@docRoot}preview/support.html#release-notes">Notas de la versión</a> para la versión actual de M Developer Preview, lo que incluye notas sobre los cambios e informes de diferencias.
-
- </li>
-</ul>
-
-<h4>
- Recursos de soporte
-</h4>
-
-<p>
- Utilice los siguientes recursos de soporte durante el proceso de prueba y desarrollo en M Developer Preview:
-
-</p>
-
-<ul>
- <li><a href="https://code.google.com/p/android-developer-preview/">El seguimiento de problemas de M Developer Preview</a> es su<strong> canal principal de comentarios.</strong>
-
- A través de este seguimiento de problemas, usted puede informarnos errores o problemas de rendimiento, y enviarnos comentarios generales.
- También puede buscar <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">problemas recurrentes</a> y encontrar soluciones alternativas detalladas.
-
- </li>
-
- <li><a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a> es una comunidad en Google+ donde usted puede <strong>contactarse con otros desarrolladores</strong> que estén trabajando con Android M. Puede compartir comentarios o ideas, o encontrar respuestas a sus dudas sobre Android M.
-
-
-
- </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
- Selección del destino, API preliminares y publicación
-</h2>
-
-<p>
- Android M Developer Preview es una versión solo para desarrollo y <strong>no tiene un nivel de API estándar</strong>.
- Si quiere darse de baja de los comportamientos de compatibilidad para probar su aplicación (lo que es muy recomendado), puede elegir como destino M Developer Preview estableciendo <code><a href=
- "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code> de su aplicación como <code>“MNC”</code>.
-
-
-
-</p>
-
-<p>
- Android M Developer Preview ofrece <strong>API preliminares</strong>
- — las API no serán oficiales hasta que se lance el SDK final, lo que actualmente está planeado para el tercer trimestre de 2015.
- Esto quiere decir que surgirán <strong>cambios menores en la API</strong> con el tiempo, particularmente durante las primeras semanas del programa.
-
- Con cada actualización de Android M Developer Preview, proporcionaremos un resumen con los cambios realizados.
-
-</p>
-
-<p class="note">
- Tenga en cuenta que aunque las API preliminares pueden modificarse, los comportamientos del sistema subyacente, como los permisos de tiempo de ejecución y las opciones de ahorro de energía, se mantienen estables y disponibles para cualquier prueba inmediata.
-
-
-</p>
-
-<p>
- En cuanto a la publicación, Google Play <strong>no permite que se publiquen aplicaciones que tienen como destino M Developer Preview</strong>.
- Una vez que el SDK final de Android M esté disponible, podrá seleccionar como destino el nivel de API oficial de Android M y publicar su aplicación en Google Play.
-
- Mientras tanto, si desea distribuir una aplicación con Android M como destino a otros evaluadores, lo puede hacer por correo electrónico o mediante descarga directa desde su sitio.
-
-
-</p>
-
-<h2 id="get_started">
- ¿Cómo comenzar?
-</h2>
-
-<p>
- Para comenzar a probar su aplicación:
-</p>
-
-<ol>
- <li>Revise el artículo <a href="{@docRoot}preview/api-overview.html">Información general de la API</a> y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a> para obtener una idea sobre las novedades y cómo estas pueden afectar sus aplicaciones.
-
- En especial, infórmese sobre el nuevo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permisos de tiempo de ejecución</a>, las opciones de ahorro de energía y las copias de seguridad automáticas.
-
-
- </li>
-
- <li>Configure su entorno siguiendo las instrucciones para <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de la versión preliminar</a> y configurar los dispositivos de prueba.
-
-
- </li>
-
- <li>Siga las <a href="https://developers.google.com/android/nexus/images">instrucciones de actualización</a> para actualizar la última imagen del sistema del desarrollador de Android M para Nexus 5, 6, 9 y Player.
-
- Cuando haya actualizado su dispositivo de desarrollo, recibirá las actualizaciones de la versión preliminar mediante actualizaciones OTA.</a>
-
- </li>
-
- <li>Descargue la <a href="{@docRoot}preview/download.html#docs">Referencia de la API de M Preview</a> y los <a href="{@docRoot}preview/samples.html">Ejemplos de M Preview</a> para obtener más información sobre las nuevas características de la API y sobre cómo utilizarlas en su aplicación.
-
-
-
- </li>
-
- <li>Únase a la comunidad <a href="http://g.co/dev/AndroidMDevPreview">Android M Developer Community</a> para recibir las últimas noticias y para contactarse con otros desarrolladores que estén trabajando con la nueva plataforma.
-
-
- </li>
-</ol>
-
-<p>
- ¡Agradecemos su participación en el programa Android M Developer Preview!
-</p>
diff --git a/docs/html-intl/intl/es/preview/samples.jd b/docs/html-intl/intl/es/preview/samples.jd
deleted file mode 100644
index 03f41e4..0000000
--- a/docs/html-intl/intl/es/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Ejemplos
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- Los siguientes códigos de ejemplo se proporcionan para M Developer Preview. Para descargar los ejemplos en Android Studio, seleccione la opción del menú <b>File > Import Samples</b>.
-
-</p>
-
-<p class="note">
- <strong>Nota:</strong> Estos proyectos que se pueden descargar están diseñados para usarlos con Gradle y Android Studio.
-
-</p>
-
-
-<h3 id="RuntimePermissions">Permisos de tiempo de ejecución</h3>
-
-<p>
- Android M modifica la manera en que funcionan los permisos del sistema. Los usuarios deben aprobar solicitudes de permiso durante la ejecución, en lugar de durante la instalación.
- Este ejemplo muestra cómo solicitar estos permisos.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Obtener en GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Confirmar credencial</h3>
-
-<p>
- Este ejemplo muestra cómo usar las credenciales del dispositivo como método de autenticación en su aplicación.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Obtener en GitHub</a>
-</p>
-
-<h3 id="FingerprintDialog">Diálogo de huellas dactilares</h3>
-
-<p>
- Este ejemplo muestra cómo reconocer huellas dactilares registradas para autenticar al usuario en su aplicación.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Obtener en GitHub</a></p>
-
-<h3 id="AutomaticBackup">Copia de seguridad automática para aplicaciones</h3>
-
-<p>
- Android M incorpora la copia de seguridad automática para las configuraciones de la aplicación. Este ejemplo muestra cómo agregar reglas de filtrado en una aplicación para administrar la copia de seguridad de las configuraciones.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Obtener en GitHub</a></p>
-
-<h3 id="CameraRaw">Camera 2 Raw</h3>
-
-<p>
- Muestra cómo usar la API <code>Camera2</code> para capturar imágenes fotográficas RAW y guardarlas como archivos <code>DNG</code>.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Obtener en GitHub</a></p>
-
-<h3 id="ActiveNotification">Notificación activa</h3>
-
-<p>
- Este ejemplo muestra cómo <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a> puede indicarle cuántas notificaciones está mostrando actualmente su aplicación.
-
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Obtener en GitHub</a></p>
diff --git a/docs/html-intl/intl/es/preview/setup-sdk.jd b/docs/html-intl/intl/es/preview/setup-sdk.jd
deleted file mode 100644
index e3f400f..0000000
--- a/docs/html-intl/intl/es/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Configurar el SDK de la versión preliminar
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#get-as13">Obtener Android Studio 1.3</a></li>
- <li><a href="#get-sdk">Obtener el SDK de la versión preliminar</a></li>
- <li><a href="#create-update">Crear o actualizar un proyecto</a></li>
- <li><a href="#setup-test">Configurar para realizar pruebas</a></li>
- </ol>
- </div>
-</div>
-
-<p>M Developer Preview SDK se encuentra disponible desde Android SDK Manager. En este documento, se asume que usted está familiarizado con el desarrollo de aplicaciones de Android, como el uso de Android SDK Manager y la creación de proyectos.
-
- Si no está familiarizado con Android, consulte primero la sección de capacitación <a href="{@docRoot}training/basics/firstapp/index.html">Desarrollo de su primera aplicación</a>.</a>
-
-</p>
-
-<h2 id="get-as13">Obtener Android Studio 1.3</h2>
-
-<p>La versión preliminar para desarrolladores funciona mejor con Android Studio 1.3, que es una versión preliminar.
- Se recomienda que instale la versión preliminar de Android Studio 1.3 para trabajar con el SDK de la versión preliminar.
-</p>
-
-<p class="caution"><strong>Advertencia:</strong> La versión preliminar Canary de Android Studio 1.3 aún se encuentra en desarrollo activo.
- Si utiliza su equipo de desarrollo principal para probar la versión preliminar para desarrolladores, puede instalar una segunda instancia de Android para realizar las pruebas.
-
-</p>
-
-<p>Para instalar la versión preliminar de Android Studio 1.3:</p>
-
-<ol>
- <li>Descargue y ejecute <a href="{@docRoot}tools/studio/index.html">Android Studio</a>
-
- </li>
-
- <li>Abra la ventana <strong>Settings</strong> (en Windows, puede hacerlo desde <strong>File > Settings</strong>).
- Seleccione el panel <strong>Appearance & Behavior > System Settings > Updates</strong>.
-
-
-
- <p class="aside">En OSX, puede encontrar el panel <strong>Appearance & Behavior</strong> en la ventana <strong>Preferences</strong> de Android Studio.
-
-</p>
- </li>
-
- <li> En el panel <strong>Updates</strong>, elija la opción <strong>Automatically check updates for:
- Canary Channel</strong>.
- </li>
-
- <li>En el panel <strong>Updates</strong>, elija <strong>Check Now</strong> para verificar la última compilación de Canary.
- Descargue e instale la compilación cuando se lo pida.
-
- </li>
-</ol>
-
-<h2 id="get-sdk">Obtener el SDK de la versión preliminar</h2>
-
-<p>Para añadir los componentes del SDK de la versión preliminar a su entorno de desarrollo:</p>
-
-<ol>
- <li>Ejecute la versión preliminar de Android Studio 1.3.
- </li>
-
- <li>Abra la ventana <strong>Settings</strong> (en Windows, puede hacerlo desde <strong>File > Settings</strong>).
- Seleccione el panel <strong>Appearance & Behavior > System Settings > Updates</strong>.
-
-
-
- <p class="aside">En OSX, puede encontrar el panel <strong>Appearance & Behavior</strong> en la ventana <strong>Preferences</strong> de Android Studio.
-
-</p>
- </li>
-
- <li>En el panel <strong>Updates</strong>, elija las opciones <strong>Automatically check updates for:
- Canary Channel</strong> y <strong>Automatically check updates for Android SDK:
- Preview Channel</strong>.
- </li>
-
- <li>Ejecute <strong>Android SDK Manager</strong>. (En Android Studio 1.3, SDK Manager está integrado a Android Studio, en lugar de ser una aplicación independiente).
-
-
- </li>
-
- <li>En la sección <strong>Platforms</strong>, elija <strong>Android MNC Preview</strong>.
-
- </li>
-
- <li>En la sección <strong>Tools</strong>, elija las últimas <strong>SDK Tools</strong>, <strong>Platform-tools</strong> y <strong>Build-tools</strong> de Android.
-
-
- </li>
-
- <li>Seleccione <strong>Install packages</strong> y acepte el contrato de licencia para todos los paquetes.
-
- </li>
-
- <li>Verifique que M Developer Preview esté instalado; para hacerlo, abra la ventana <strong>Settings</strong> y elija el panel <strong>Appearance & Behavior > System Settings > Android SDK</strong>.
-
-</li>
-
- <li>En el panel <strong>Android SDK</strong>, elija la pestaña <strong>SDK Platforms</strong>.
- <strong>Android MNC Preview</strong> deberá figurar como <em>Installed</em>.
- Luego, abra la pestaña <strong>SDK Tools</strong> para verificar que estén instaladas las últimas herramientas.
-
-
- </li>
-</ol>
-<p>Después de completar estos pasos, los componentes de la versión preliminar ya estarán disponibles en su entorno de desarrollo.
- </p>
-
-
-<h2 id="create-update">Crear o actualizar un proyecto</h2>
-
-<p>
- Si desea utilizar las API de la versión preliminar, debe crear o actualizar un proyecto de desarrollo para utilizar los componentes de la versión preliminar.
-
-</p>
-
-
-<h3 id="create">Crear un proyecto nuevo</h3>
-
-<p>
- Recomendamos que utilice Android Studio para crear un proyecto con la versión preliminar. Siga los pasos que se describen en <a href="{@docRoot}sdk/installing/create-project.html">Crear un proyecto</a> hasta que llegue a la pantalla <em>Form Factors</em> en el asistente.
-
- Luego, realice los siguientes pasos para crear un proyecto configurado para la versión preliminar.
-
-</p>
-
-<ul>
- <li>Seleccione <strong>Phone and Tablet</strong>.</li>
- <li>Seleccione <strong>MNC: Android M (Preview)</strong> en <strong>Minimum SDK</strong>.
-</li>
-</ul>
-
-
-<h3 id="update">Actualizar un proyecto existente</h3>
-
-<p>
- Para proyectos existentes, debe modificar la configuración del proyecto para habilitar las API de la versión preliminar. En su entorno de desarrollo, abra el archivo
-<code>build.gradle</code> para su módulo y configure estos valores de la siguiente manera:
-
-</p>
-
-<ul>
- <li><code>compileSdkVersion</code> se configura en <code>'android-MNC'</code></li>
- <li><code>minSdkVersion</code> se configura en <code>'MNC'</code></li>
- <li><code>targetSdkVersion</code> se configura en <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">Configurar para realizar pruebas</h2>
-
-<p>
- Probar una aplicación con la versión preliminar requiere un dispositivo o un dispositivo virtual configurado con la versión preliminar de la plataforma.
- Si tiene un dispositivo compatible, puede instalar la plataforma de la versión preliminar para realizar la prueba.
- De lo contrario, puede configurar un dispositivo virtual para realizar la prueba.
-</p>
-
-<h3 id="setup-device">Configurar un dispositivo físico</h3>
-
-<p>
- Si tiene un Nexus 5, Nexus 6, Nexus 9 o Android TV, puede instalar una imagen de sistema de la versión preliminar en estos dispositivos para probar su aplicación. Con la herramienta Android Virtual Device Manager, puede configurar un dispositivo virtual con la versión preliminar de la plataforma desde Android Studio
-
-
-
-</p>
-
-<p class="caution">
- <strong>Importante:</strong> El proceso de instalación de una imagen preliminar en un dispositivo <em>elimina todos los datos del dispositivo</em>, por lo que debe hacer una copia de seguridad de los datos antes de instalar una imagen preliminar.
-
-</p>
-
-<h3 id="setupAVD">Configurar un dispositivo virtual</h3>
-
-<p>
- Con la herramienta Android Virtual Device, puede configurar un dispositivo virtual para la versión preliminar de la plataforma desde Android Studio.
-
-</p>
-
-<p>Crear un AVD (dispositivo virtual de Android) con AVD Manager:</p>
-
-<ol>
- <li>Instale el SDK de la versión preliminar en su entorno de desarrollo, como se detalla en <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de la versión preliminar</a>.
-
-</li>
- <li>Siga los pasos en <a href="{@docRoot}tools/devices/managing-avds.html">Administración de los ADV con ADV Manager</a>.
-
- Utilice las siguientes configuraciones:
- <ul>
- <li><strong>Dispositivo:</strong> Nexus 5, Nexus 6, Nexus 9 o Android TV</li>
- <li><strong>Destino:</strong>
- Android M (versión preliminar) - Nivel de API M</li>
- <li><strong>ABI:</strong> x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- Para obtener más información sobre cómo crear dispositivos virtuales para realizar pruebas, consulte <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales.</a>
-</p>
diff --git a/docs/html-intl/intl/es/preview/testing/guide.jd b/docs/html-intl/intl/es/preview/testing/guide.jd
deleted file mode 100644
index 138d6ca..0000000
--- a/docs/html-intl/intl/es/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Guía de prueba
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=recursos de la versión preliminar,androidm,pruebas,permisos
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#runtime-permissions">Prueba de los permisos</a></li>
- <li><a href="#doze-standby">Prueba de los modos Doze y App Standby</a></li>
- <li><a href="#ids">Copia de seguridad automática e identificadores de dispositivos</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android M Developer Preview le brinda la oportunidad de garantizar que sus aplicaciones funcionen con la próxima versión de la plataforma.
- Esta versión preliminar incluye diversas API y cambios en los comportamientos que pueden tener impactos en su aplicación, como se describe en las secciones <a href="{@docRoot}preview/api-overview.html">Información general de la API</a> y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a>.
-
- Al probar su aplicación con la versión preliminar, se debe centrar en algunos cambios específicos del sistema para garantizar que los usuarios disfruten de una buena experiencia.
-
-
-</p>
-
-<p>
- En esta guía, se describen qué y cómo probar las características preliminares con su aplicación. Debe priorizar la prueba de estas características específicas preliminares, puesto que podrían tener un alto impacto en el comportamiento de su aplicación:
-
-
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">Permisos</a>
- </li>
- <li><a href="#doze-standby">Modos Doze y App Standby</a>
- </li>
- <li><a href="#ids">Copia de seguridad automática e identificadores de dispositivos</a></li>
-</ul>
-
-<p>
- Para obtener más información sobre cómo configurar dispositivos o dispositivos virtuales con una imagen del sistema de la versión preliminar para realizar pruebas, consulte la sección <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de la versión preliminar</a>.
-
-</p>
-
-
-<h2 id="runtime-permissions">Prueba de los permisos</h2>
-
-<p>
- El nuevo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permisos</a> cambia el modo en que el usuario asigna permisos a su aplicación.
- En lugar de conceder todos los permisos durante el procedimiento de instalación, su aplicación debe solicitar al usuario los permisos individuales en el tiempo de ejecución.
-
- Para los usuarios, este comportamiento ofrece más control granular sobre las actividades de cada aplicación, así como un mejor contexto para comprender por qué la aplicación está solicitando un permiso específico.
- Los usuarios pueden conceder o revocar los permisos concedidos a una aplicación de forma individual en cualquier momento.
- Es muy probable que esta característica de la versión preliminar tenga un impacto en el comportamiento de su aplicación y puede hacer que algunas características de su aplicación no funcionen o funcionen en un estado degradado.
-
-
-</p>
-
-<p class="caution">
- Este cambio afecta a todas las aplicaciones que se ejecutan en la nueva plataforma, incluso a aquellas que no tienen como destino la nueva versión de la plataforma.
- La plataforma ofrece un comportamiento de compatibilidad limitada para las aplicaciones heredadas, pero usted debe comenzar a planificar ahora la migración de su aplicación al nuevo modelo de permisos, con el objetivo de publicar una versión actualizada de su aplicación cuando se lance la plataforma oficial.
-
-
-</p>
-
-
-<h3 id="permission-test-tips">Consejos para pruebas</h3>
-
-<p>
- Use los siguientes consejos para pruebas como ayuda para planificar y ejecutar las pruebas de su aplicación con el nuevo comportamiento de permisos.
-
-</p>
-
-<ul>
- <li>Identifique los permisos actuales de su aplicación y las rutas de códigos relacionadas.</li>
- <li>Pruebe los flujos del usuario en los datos y servicios protegidos por permisos.</li>
- <li>Realice pruebas con varias combinaciones de permisos concedidos/revocados.</li>
- <li>Use la herramienta {@code adb} para administrar permisos desde la línea de comando:
- <ul>
- <li>Enumere los permisos y estados por grupo:
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>Conceda o revoque un permiso o más permisos utilizando la siguiente sintaxis:<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>Analice su aplicación para detectar servicios que utilizan permisos.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Estrategia de prueba</h3>
-
-<p>
- El cambio en los permisos afecta la estructura y el diseño de su aplicación, además de la experiencia del usuario y los flujos que usted proporciona a los usuarios.
- Debe evaluar el uso de los permisos actuales de su aplicación y comenzar a planificar los nuevos flujos que desea ofrecer.
- La versión oficial de la plataforma proporciona un comportamiento de compatibilidad, pero debe prever la actualización de su aplicación y no depender de estos comportamientos.
-
-
-</p>
-
-<p>
- Identifique los permisos que su aplicación verdaderamente necesita y utiliza, y luego busque las diversas rutas de códigos que utilizan los servicios protegidos por permisos.
- Puede realizar esto mediante una combinación de pruebas en la plataforma nueva y análisis de códigos.
- Al realizar las pruebas, debe centrarse en incluir permisos de tiempo de ejecución cambiando {@code targetSdkVersion} de la aplicación a la versión preliminar.
- Para obtener más información, consulte la sección <a href="{@docRoot}preview/setup-sdk.html#">Configurar el SDK de la versión preliminar</a>.
-
-</p>
-
-<p>
- Realice pruebas con diversas combinaciones de permisos revocados y agregados, a fin de destacar los flujos del usuario que dependen de permisos.
- Cuando una dependencia no sea obvia ni lógica, debe considerar la opción de refactorizar o compartimentar ese flujo para eliminar la dependencia o aclarar por qué se necesita el permiso.
-
-
-</p>
-
-<p>
- Para obtener más información sobre el comportamiento de los permisos de tiempo de ejecución, las pruebas y las mejores prácticas, consulte la página <a href="{@docRoot}preview/features/runtime-permissions.html">Permisos</a> de la versión preliminar para desarrolladores.
-
-
-</p>
-
-
-<h2 id="doze-standby">Prueba de los modos Doze y App Standby</h2>
-
-<p>
- Las características de ahorro de energía de los modos Doze y App Standby limitan la cantidad de procesamiento en segundo plano que puede realizar su aplicación cuando un dispositivo se encuentra en estado inactivo o mientras su aplicación no está en foco.
- Entre las restricciones que el sistema puede imponer en las aplicaciones se incluyen el acceso limitado a la red o denegación de acceso, suspensión de las tareas en segundo plano, suspensión de notificaciones, y alarmas y solicitudes de reactivación ignoradas.
-
- Para garantizar que su aplicación tenga un comportamiento correcto con estas optimizaciones de ahorro de energía, debe probar su aplicación simulando estos estados de bajo consumo.
-
-
-</p>
-
-<h4 id="doze">Cómo probar la aplicación en modo Doze</h4>
-
-<p>Para probar el modo Doze con su aplicación, realice lo siguiente:</p>
-
-<ol>
-<li>Configure un dispositivo de hardware o un dispositivo virtual con una imagen del sistema de la versión preliminar de Android M.</li>
-<li>Conecte el dispositivo a su equipo de desarrollo e instale la aplicación.</li>
-<li>Ejecute su aplicación y déjela activa.</li>
-<li>Simule la activación del modo Doze en el dispositivo ejecutando los siguientes comandos:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>Observe el comportamiento de su aplicación cuando se reactive el dispositivo. Asegúrese de que se recupere correctamente cuando el dispositivo salga del modo Doze.
-</li>
-</ol>
-
-
-<h4 id="standby">Cómo probar aplicaciones en modo App Standby</h4>
-
-<p>Para probar el modo App Standby con su aplicación, realice lo siguiente:</p>
-
-<ol>
- <li>Configure un dispositivo de hardware o un dispositivo virtual con una imagen del sistema de la versión preliminar de Android M.</li>
- <li>Conecte el dispositivo a su equipo de desarrollo e instale su aplicación.</li>
- <li>Ejecute su aplicación y déjela activa.</li>
- <li>Simule la activación del modo App Standby en la aplicación ejecutando los siguientes comandos:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>Simule la activación de su aplicación con el siguiente comando:
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>Observe el comportamiento de su aplicación al reactivarse. Asegúrese de que se recupere correctamente del modo App Standby.
- En particular, debe comprobar si los trabajos en segundo plano y las notificaciones de su aplicación continúan funcionando de la manera esperada.
-</li>
-</ol>
-
-<h2 id="ids">Copia de seguridad automática para aplicaciones e identificadores específicos del dispositivo</h2>
-
-<p>Si su aplicación continúa teniendo algún identificador específico del dispositivo, como la Id. de registro de Google Cloud Messaging, en el almacenamiento interno, asegúrese de seguir las mejores prácticas para excluir la ubicación de almacenamiento de la copia de seguridad automática, como se describe en la sección <a href="{@docRoot}preview/backup/index.html">Copia de seguridad automática para aplicaciones</a>.
-
-
-
- </p>
diff --git a/docs/html-intl/intl/es/preview/testing/performance.jd b/docs/html-intl/intl/es/preview/testing/performance.jd
deleted file mode 100644
index 7346976..0000000
--- a/docs/html-intl/intl/es/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=Prueba de rendimiento de video
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=rendimiento, fotogramas por segundo, herramientas
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Contenido del documento</h2>
- <ol>
- <li><a href="#measure">Medición del rendimiento de la UI</a>
- <ul>
- <li><a href="#aggregate">Incorporación de Frame Stats</a></li>
- <li><a href="#timing-info">Información precisa del intervalo del fotograma</a></li>
- <li><a href="#timing-dump">Volcado simple del intervalo del fotograma</a></li>
- <li><a href="#collection-window">Control del período de recopilación de datos</a></li>
- <li><a href="#diagnose">Diagnóstico de regresiones de rendimiento</a></li>
- <li><a href="#resources">Recursos adicionales</a></li>
- </ul>
- </li>
- <li><a href="#automate">Automatización de las pruebas de rendimiento de la UI</a>
- <ul>
- <li><a href="#ui-tests">Configuración de las pruebas de UI</a></li>
- <li><a href="#automated-tests">Configuración de las pruebas automatizadas de UI</a></li>
- <li><a href="#triage">Clasificación y solución de problemas detectados</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- La prueba de rendimiento de la UI le garantiza que su aplicación no solo cumpla con los requisitos funcionales sino que la interacción del usuario con su aplicación sea fluida y funcione constantemente a 60 fotogramas por segundo (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">Why 60fps?</a>) sin disminuir o retrasar fotogramas (lo que llamamos <em>“jank”</em>).
-
-
- Este documento explica las herramientas disponibles para medir el rendimiento de la UI y establece un enfoque para integrar las medidas de rendimiento de la UI en sus prácticas de prueba.
-
-
-</p>
-
-
-<h2 id="measure">Medición del rendimiento de la UI</h2>
-
-<p>
- Para mejorar el rendimiento, primero necesita poder medir el rendimiento de su sistema y, luego, diagnosticar e identificar los problemas que puedan surgir debido a las varias secciones de su canalización.
-
-
-</p>
-
-<p>
- <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> es una herramienta de Android que se ejecuta en el dispositivo y vuelca información útil sobre el estado de los servicios del sistema.
-
- Al pasar el comando <em>gxinfo</em> a dumsys, se obtiene una salida de logcat con información de rendimiento en relación con los fotogramas de animación que ocurren durante la fase de grabado.
-
-
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- Este comando puede crear múltiples variantes diferentes de datos del intervalo del fotograma.
-</p>
-
-<h3 id="aggregate">Incorporación de Frame Stats</h3>
-
-<p>
- En la versión preliminar de Android M, el comando emite un análisis adicional a logcat sobre los datos del fotograma. Estos datos se recopilan en toda la duración del proceso.
- Por ejemplo:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- Estas estadísticas de alto nivel representan, en un nivel avanzado, el rendimiento de representación de la aplicación y su estabilidad en muchos fotogramas.
-
-</p>
-
-
-<h3 id="timing-info">Información precisa del intervalo del fotograma</h3>
-
-<p>
- La versión preliminar de Android M ofrece un nuevo comando para gfxinfo, es <em>framestats</em> que brinda información extremadamente detallada sobre el intervalo del fotograma reciente, de manera que usted puede localizar y depurar errores de manera más precisa.
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- Este comando emite información sobre el intervalo del fotograma, medida en nanosegundos, de los últimos 120 fotogramas que produjo la aplicación. A continuación, se muestra un ejemplo sin formato de adb dumpsys gxinfo <PACKAGE_NAME> framestats:
-
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- Cada línea de esta salida representa un fotograma producido por la aplicación. Cada línea tiene un número fijo de columnas que describen el tiempo transcurrido en cada etapa de la canalización de producción de fotogramas.
- En la siguiente sección, se describe este formato en detalle y se explica qué representa cada columna.
-
-</p>
-
-
-<h4 id="fs-data-format">Formato de datos de framestats</h4>
-
-<p>
- Debido a que el bloque de datos se emite en formato CSV, es muy sencillo pegarlo en su herramienta de hoja de cálculo preferida, o recopilar y redistribuir con un script.
- La siguiente tabla explica el formato de las columnas de los datos de salida.
- Las marcas de tiempo están en nanosegundos.
-</p>
-
-<ul>
- <li>FLAGS
- <ul>
- <li>El tiempo total del fotograma de las filas con “0” en la columna FLAGS se puede calcular restando la columna INTENDED_VSYNC a la columna FRAME_COMPLETED.
-
- </li>
-
- <li>Si el resultado no es cero, la fila se debe ignorar, ya que se ha determinado que el fotograma contiene un valor atípico de rendimiento, donde se espera que el diseño y la imagen tomen más de 16 ms.
-
- Razones por las que esto puede suceder:
- <ul>
- <li>Se cambió el diseño de la ventana (ya sea el primer fotograma de la aplicación o luego de una rotación)
-
- </li>
-
- <li>También es posible que se haya omitido el fotograma. En ese caso, alguno de los valores tendrán marcas de tiempo no utilizables.
- Se puede omitir un fotograma si, por ejemplo, supera los 60 fotogramas por segundo o si no había nada desfasado en pantalla. Esto no necesariamente indica que la aplicación tenga algún problema.
-
-
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>El punto de partida previsto del fotograma. Si este valor es diferente de VSYNC, el subproceso de la interfaz de usuario se encontraba ocupado, lo que evitó la respuesta a la señal vsync de manera oportuna.
-
-
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>El valor de tiempo que se utilizó en todas las escuchas vsync y las imágenes para el fotograma (devolución de llamada del fotograma Choreographer, animaciones, View.getDrawingTime(), etc.).
-
- </li>
-
- <li>Para obtener más información sobre VSYNC y cómo influye en su aplicación, consulte el video <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">
-Understanding VSYNC</a>.
-
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>La marca de tiempo del evento de entrada más antiguo de la cola de entrada, o Long.MAX_VALUE en caso de que el fotograma no tengan ninguna entrada.
-
- </li>
-
- <li>Este valor está diseñado principalmente para trabajar en la plataforma y tiene utilidad limitada para los desarrolladores de aplicaciones.
-
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>La marca de tiempo del evento de entrada más reciente de la cola de entrada, o 0 en caso de que el fotograma no contenga ninguna entrada.
-
- </li>
-
- <li>Este valor está diseñado principalmente para trabajar en la plataforma y tiene utilidad limitada para los desarrolladores de aplicaciones.
-
- </li>
-
- <li>Sin embargo, puede obtener una idea general sobre la cantidad de latencia que la aplicación está añadiendo consultando (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
-
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>La marca de tiempo en que el evento de entrada se distribuye a la aplicación.
- </li>
-
- <li>Al observar el tiempo entre esto y ANIMATION_START, se puede medir cuánto tiempo dedicó la aplicación a la administración de eventos de entrada.
-
- </li>
-
- <li>Si este valor es alto (mayor a 2 ms), esto significa que la aplicación dedica tiempo poco común al proceso de los eventos de entrada, como View.onTouchEvent(), lo que indica que este proceso se debe optimizar o descargar a otro subproceso.
-
- Tenga en cuenta que, en algunas ocasiones, como cuando al hacer clic en un evento que lanza nuevas actividades o algo parecido, se espera y es aceptable que este valor sea alto.
-
-
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>La marca de tiempo en la que se ejecutaron las animaciones registradas con Choreographer.
- </li>
-
- <li>Al observar el tiempo entre esto y PERFORM_TRANVERSALS_START, se puede determinar cuánto tiempo llevó evaluar todos los mecanismos de animación (los más comunes son ObjectAnimator, ViewPropertyAnimator y Transitions) que se estén ejecutando.
-
-
- </li>
-
- <li>Si este valor es alto (mayor a 2 ms), controle si su aplicación escribió alguna animación personalizada o qué campos está animando ObjectAnimators y asegúrese de que su animación sea adecuada.
-
-
- </li>
-
- <li>Para obtener más información sobre Choreographer, consulte el video <a href="https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a>.
-
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>Si a este valor le resta DRAW_START, puede saber cuánto tardaron en completarse las fases de medición y diseño. (Durante el desplazamiento o la animación, este número deberá ser cercano a cero).
-
-
- </li>
-
- <li>Para obtener más información sobre las fases de medición y diseño de la canalización de representación, consulte el video <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">
-Invalidations, Layouts and Performance</a>.
-
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>El momento en que comenzó la fase de dibujo de performTraversals. Este es el punto inicial de grabación de la listas de visualización de cualquier vista invalidada.
-
- </li>
-
- <li>El tiempo entre esto y SYNC_START muestra cuánto se tardó en llamar a View.draw() en todas las vistas invalidadas en el árbol.
-
- </li>
-
- <li>Para obtener más información sobre el modelo de dibujo, consulte los videos <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Hardware Acceleration</a>
- o <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">
-Invalidations, Layouts and Performance.</a>
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>El momento en que comenzó la fase de sincronización del dibujo.
- </li>
-
- <li>Si el tiempo entre esto e ISSUE_DRAW_COMMANDS_START es muy alto (mayor a 0,4 ms o similar), generalmente esto significa que se dibujaron muchos mapas de bits que se deben subir a GPU.
-
-
- </li>
-
- <li>Para obtener más información sobre la fase de sincronización, consulte el video <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
-Profile GPU Rendering.</a>
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>El momento en que el representador de hardware comenzó a enviar comandos de dibujo a GPU.
- </li>
-
- <li>El tiempo entre esto y FRAME_COMPLETED permite obtener una idea general sobre cuánto trabajo le genera la aplicación a GPU.
- Aquí aparecen los problemas como el exceso de dibujos o efectos de representación ineficientes.
-
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>El momento en que se llamó a eglSwapBuffers, generalmente de poca importancia fuera del trabajo en plataforma.
-
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>¡Todo listo! El tiempo total dedicado al trabajo en este fotograma se puede calcular al hacer FRAME_COMPLETED - INTENDED_VSYNC.
-
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- Puede utilizar esta información de distintas maneras. Un método de visualización simple pero eficaz es el histograma que muestra la distribución de los tiempos del fotograma (FRAME_COMPLETED - INTENDED_VSYNC) en distintos bloques de latencia; vea la siguiente figura.
-
- Este gráfico indica brevemente que la mayoría de los fotogramas estuvieron muy bien, es decir, por debajo del límite de 16 ms (marcado en rojo). Sin embargo, algunos fotogramas estuvieron muy por arriba del límite.
-
- En el histograma, podemos observar los cambios con el correr del tiempo para ver la creación de los cambios totales o los nuevos valores atípicos.
- También puede graficar la latencia de entrada, el tiempo dedicado al diseño o cualquier otra medición interesante similar sobre las marcas de tiempo en los datos.
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Volcado simple del intervalo del fotograma</h3>
-
-<p>
- Si, en las Opciones de Desarrollador, <strong>Profile GPU rendering</strong> se configura en <strong>In adb shell dumpsys gfinfo</strong>, el comando <code>adb shell dumpsys gfxinfo</code> emite sobre el tiempo de los 120 fotogramas más recientes y los agrupa en algunas categorías diferentes con valores separados por tabulación.
-
-
- Esta información puede resultar útil para indicar qué partes de la canalización del dibujo podrían funcionar lento en un nivel alto.
-
-</p>
-
-<p>
- Al igual que <a href="#fs-data-format">framestats</a>, es muy sencillo pegar esta información en su herramienta de hoja de cálculo preferida, o recolectar y redistribuir con un script.
-
- El siguiente gráfico detalla dónde pasaron tiempo muchos de los fotogramas generados por la aplicación.
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- El resultado de ejecutar gfxinfo, copiar la salida, pegar en una aplicación de hoja de cálculo y graficar la información en forma de barras apiladas.
-
-</p>
-
-<p>
- Cada barra vertical representa un fotograma de animación, su altura representa la cantidad de milisegundos que le llevó calcular ese fotograma de animación.
- Cada segmento de color de la barra representa una etapa diferente de la canalización de representación, de manera que usted pueda observar qué partes de su aplicación pueden estar creando un cuello de botella.
-
- Para obtener más información sobre la canalización de representación y cómo optimizarla, consulte el video <a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">
-Invalidations Layouts and Performance</a>.
-
-</p>
-
-
-<h3 id="collection-window">Control del período de recopilación de datos</h3>
-
-<p>
- Los intervalos de framestats y del fotograma simple recopilan datos durante un período muy breve: aproximadamente dos segundos que valen la pena representar.
- Para poder controlar este período con precisión, por ejemplo para limitar los datos a una animación en particular, puede restablecer todos los contadores y agregar los datos recopilados.
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- Esto se puede usar junto con los comandos de volcado para recopilar y restablecer a una cadencia normal a fin de capturar continuamente períodos de fotogramas de menos de dos segundos.
-
-
-</p>
-
-
-<h3 id="diagnose">Diagnóstico de regresiones de rendimiento</h3>
-
-<p>
- La identificación de regresiones es un buen primer paso para localizar los problemas y mantener la aplicación funcionando correctamente.
- Sin embargo, dumpsys solo identifica la existencia y la gravedad relativa de los problemas.
- Usted todavía debe diagnosticar la causa particular de los problemas de rendimiento y encontrar las soluciones adecuadas.
- Para esto, es sumamente recomendable que utilice la herramienta <a href="{@docRoot}tools/help/systrace.html">systrace</a>.
-
-</p>
-
-
-<h3 id="resources">Recursos adicionales</h3>
-
-<p>
- Para obtener más información sobre el funcionamiento de la canalización de representación de Android, los problemas comunes que puede encontrar y cómo solucionarlos, es posible que algunos de los siguientes recursos le resulten útiles:
-
-
-</p>
-
-<ul>
- <li>Rendering Performance 101
- </li>
- <li>Why 60fps?
- </li>
- <li>Android UI and the GPU
- </li>
- <li>Invalidations Layouts and performance
- </li>
- <li>Analyzing UI Performance with Systrace
- </li>
-</ul>
-
-
-<h2 id="automate">Pruebas automatizadas de rendimiento de la UI</h2>
-
-<p>
- Un enfoque para realizar la prueba de rendimiento de la UI es solicitar a un evaluador que realice una serie de operaciones de usuario en la aplicación objetivo para identificar visualmente jank, o bien, pasar mucho tiempo utilizando un enfoque basado en alguna herramienta para encontrar jank.
-
- Sin embargo, este enfoque manual tiene sus riesgos, la habilidad humana para percibir cambios en los índices de los fotogramas varía de manera alarmante. Además, este proceso lleva mucho tiempo, es tedioso y propenso a errores.
-
-
-</p>
-
-<p>
- Un método más eficiente es registrarse y analizar las mediciones de rendimiento clave a partir de pruebas automatizadas de UI.
- Android M Developer Preview incluye nuevas capacidades de registro que facilitan la determinación de la cantidad y gravedad de jank en las animaciones de su aplicación y pueden utilizarse para crear un proceso estricto a fin de determinar su rendimiento actual y realizar un seguimiento de futuros objetivos de rendimiento.
-
-
-
-</p>
-
-<p>
- Este artículo lo guía a través de un enfoque recomendado para utilizar esa información a fin de automatizar su prueba de rendimiento.
-
-</p>
-
-<p>
- Esto se divide básicamente en dos acciones clave. Primero, identificar qué está probando y cómo lo prueba. Segundo, configurar y mantener un entorno de prueba automatizado.
-
-
-</p>
-
-
-<h3 id="ui-tests">Configuración de pruebas de UI</h3>
-
-<p>
- Antes de comenzar con las pruebas automatizadas, es importante establecer algunas decisiones de alto nivel para entender correctamente el espacio de prueba y las necesidades que puede tener.
-
-</p>
-
-<h4>
- Identifique flujos/animaciones clave que desea probar
-</h4>
-
-<p>
- Recuerde que el usuario visualiza el rendimiento negativo cuando una animación fluida se interrumpe.
- Por lo tanto, al identificar qué tipo de acciones de UI desea probar, se recomienda centrarse en aquellas animaciones clave que el usuario ve más o que son más importantes para su experiencia.
-
- Por ejemplo, a continuación, se mencionan situaciones comunes que es útil identificar:
-</p>
-
-<ul>
- <li>Desplazamiento por ListView o RecyclerView principales
- </li>
-
- <li>Animaciones durante ciclos de espera no sincronizados
- </li>
-
- <li>Animaciones que puedan contener manipulación o carga de mapa de bits
- </li>
-
- <li>Animaciones que incluyan combinación alfa
- </li>
-
- <li>Dibujos personalizados con Canvas
- </li>
-</ul>
-
-<p>
- Trabaje con los ingenieros, diseñadores y gerentes de productos de su equipo a fin de priorizar estas animaciones clave para la cobertura de la prueba.
-
-</p>
-
-<h4>
- Establezca sus objetivos futuros y realice un seguimiento en virtud de ellos
-</h4>
-
-<p>
- Desde un nivel alto, puede ser crítico identificar sus metas de rendimiento específicas y concentrarse en escribir pruebas y recopilar datos sobre ellas.
- Por ejemplo:
-</p>
-
-<ul>
- <li>¿Simplemente desea comenzar a realizar un seguimiento del rendimiento de la UI por primera vez para obtener más información?
- </li>
-
- <li>¿Desea evitar regresiones que podrían aparecer en el futuro?
- </li>
-
- <li>¿Se encuentra hoy en un 90 % de fluidez de fotogramas y quiere alcanzar un 98 % en este trimestre?
- </li>
-
- <li>¿Se encuentra en un 98 % de fluidez de fotogramas y no quiere retroceder?
- </li>
-
- <li>¿Tiene como objetivo mejorar el rendimiento en dispositivos de gama baja?
- </li>
-</ul>
-
-<p>
- Para todas estas situaciones, es recomendable realizar un seguimiento que muestre el rendimiento en múltiples versiones de su aplicación.
-
-</p>
-
-<h4>
- Identifique los dispositivos en los que desea realizar la prueba
-</h4>
-
-<p>
- El rendimiento de la aplicación varía según el dispositivo en el que se ejecuta. Algunos dispositivos pueden tener menos memoria, GPU menos potentes o CPU más lentos.
- Esto significa que las animaciones que funcionan bien en un conjunto de hardware pueden no hacerlo en otros, o peor, pueden provocar un cuello de botella en diferentes secciones de la canalización.
-
- Por lo tanto, para justificar esta variación en lo que un usuario puede ver, seleccione una serie de dispositivos, tanto de alta gama como de baja, tablets, etc., en los que ejecutará las pruebas.
-
- Busque variedad en rendimiento de CPU, memoria RAM, resolución de pantalla, tamaño, etc.
- Las pruebas exitosas en un dispositivo de alta gama pueden fallar en uno de baja gama.
-
-</p>
-
-<h4>
- Marcos básicos para pruebas de UI
-</h4>
-
-<p>
- Algunos conjuntos de herramientas, como <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> y <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>, están diseñados para ayudar a automatizar el desplazamiento de un usuario por su aplicación.
-
- Estos son marcos simples que imitan la interacción del usuario con el dispositivo.
- Para utilizar estos marcos, debe crear con éxito scripts únicos que se ejecuten en un conjunto de acciones de usuarios y reproducirlos en el dispositivo en sí.
-
-
-</p>
-
-<p>
- Al combinar estas pruebas automatizadas junto con <code>dumpsys gfxinfo</code>, puede crear rápidamente un sistema reproducible que le permite ejecutar una prueba y medir la información de rendimiento de esa condición particular.
-
-
-</p>
-
-
-<h3 id="automated-tests">Configurar pruebas automatizadas de UI</h3>
-
-<p>
- Una vez que pueda ejecutar una prueba de UI y una canalización para recopilar datos de una sola prueba, el próximo paso importante es elegir un marco que pueda ejecutar esa prueba muchas veces en múltiples dispositivos y agregar los datos de rendimiento resultantes para que su equipo de desarrollo los analice mejor.
-
-
-
-</p>
-
-<h4>
- Un marco para la automatización de pruebas
-</h4>
-
-<p>
- Vale la pena mencionar que los marcos para pruebas de UI (como <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>) se ejecutan directamente en el emulador/dispositivo objetivo.
- A la recopilación de información de rendimiento realizada por
-<em>dumpsys gfxinfo</em> la impulsa un equipo de host que envía comandos por ADB. Para ayudar a unir la automatización de estas entidades separadas, se diseñó el marco <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner.</a> Un sistema de scripts que se ejecuta en su equipo de host y que puede emitir comandos a un conjunto de dispositivos conectados y recibir datos de ellos.
-
-
-
-</p>
-
-<p>
- Al crear un conjunto de scripts para la automatización adecuada de las pruebas de rendimiento de UI, usted podrá, como mínimo, utilizar MonkeyRunner para realizar con éxito las siguientes tareas:
-
-</p>
-
-<ul>
- <li>Cargar e iniciar un APK deseado en un dispositivo objetivo, en múltiples dispositivos o en un emulador.
- </li>
-
- <li>Iniciar una prueba de UI automatizada y permitir que se ejecute.
- </li>
-
- <li>Recopilar información de rendimiento mediante <em>dumpsys gfxinfo</em><em>.</em>
- </li>
-
- <li>Añadir información y presentársela de manera útil al desarrollador.
- </li>
-</ul>
-
-
-<h3 id="triage">Clasificar y solucionar problemas detectados</h3>
-
-<p>
- Una vez que se identifican los patrones de problemas o las regresiones, el paso siguiente es identificar y aplicar la solución.
- Si su marco de pruebas automatizadas preserva detalles precisos del intervalo para los fotogramas, puede ayudarlo a investigar cambios sospechosos de código o diseño (en el caso de una regresión), o delimitar la parte del sistema que está analizando al cambiar a una investigación manual.
-
-
- Para realizar una investigación manual, <a href="{@docRoot}tools/help/systrace.html">systrace</a> es un buen lugar para comenzar, ya que muestra información precisa sobre cada etapa de la canalización de representación, cada subproceso y núcleo del sistema, además de cualquier marca de evento personalizada que usted defina.
-
-
-</p>
-
-<h4>
- Descripción adecuada de intervalos temporales
-</h4>
-
-<p>
- Es importante mencionar las dificultades para obtener y medir los intervalos que son producto del rendimiento de la representación.
- Estos números son, por naturaleza, no deterministas y, a menudo, fluctúan según el estado del sistema, la cantidad de memoria disponible, el límite térmico y la última vez que un rayo solar tocó el área de la tierra donde se encuentra.
-
- El punto es que puede ejecutar la misma prueba dos veces y obtener números apenas diferentes que pueden estar cerca pero no ser iguales.
-
-
-</p>
-
-<p>
- Para recopilar y definir datos correctamente de esta manera, deberá ejecutar la misma prueba muchas veces y acumular los resultados como un promedio o un valor promedio (para que resulte más fácil, lo llamaremos un “lote”). Esto le ofrece una aproximación estimada del rendimiento de la prueba, sin requerir intervalos exactos.
-
-
-
-</p>
-
-<p>
- Los lotes se pueden usar entre cambios de código para verificar el impacto relativo que esos cambios tienen en el rendimiento.
- Si el índice de fotograma promedio para el lote previo al cambio es que el lote después del cambio, entonces, generalmente está en presencia de un incremento general en relación con el rendimiento para ese cambio particular.
-
-
-</p>
-
-<p>
- Esto significa que cualquier prueba automatizada de UI que lleve a cabo debería tener en cuenta este concepto, además de justificar cualquier anomalía que pudiera surgir durante una prueba.
- Por ejemplo, si el rendimiento de su aplicación disminuye repentinamente debido a algún problema con el dispositivo (que no sea provocado por la aplicación), deberá volver a ejecutar el lote para obtener intervalos menos caóticos.
-
-
-
-</p>
-
-<p>
- Entonces, ¿cuántas veces debe ejecutar una prueba para que los resultados sean significativos? El mínimo debe ser 10 veces y con números más altos, como 50 o 100, para obtener resultados más precisos (por supuesto, ahora cambia el tiempo por la precisión).
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/preview/api-overview.jd b/docs/html-intl/intl/ja/preview/api-overview.jd
deleted file mode 100644
index 2c0816b..0000000
--- a/docs/html-intl/intl/ja/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-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">Assist API</a></li>
- <li><a href="#notifications">通知</a></li>
- <li><a href="#bluetooth-stylus">Bluetooth スタイラスのサポート</a></li>
- <li><a href="#ble-scanning">Bluetooth Low Energy のスキャンの改善</a></li>
- <li><a href="#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">Flashlight API</a></li>
- <li><a href="#reprocessing">カメラの再処理</a></li>
- </ol>
- </li>
- <li><a href="#afw">Android for Work の機能</a></li>
-</ol>
-
-<h2>API の変更点</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API レベル 22 から M Preview»</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview では、ユーザーやアプリ開発者に Android プラットフォームの次期リリースの新機能をいち早く試していただくことができます。
-
-このドキュメントでは、いくつかの注目すべき API の概要について説明します。</p>
-
-<p>M Developer Preview は、<strong>Developer の早期導入者</strong>と<strong>テスター</strong>を対象としています。
-是非
-<a href="{@docRoot}preview/setup-sdk.html">M Developer Preview を試して</a>フィードバックをご提供ください。あなたのご意見が、Android フレームワークの方向性を決定する上で貴重な情報になります。
-
-</p>
-
-<p class="caution"><strong>注意:</strong> M Developer Preview を使用したアプリは、Google Play ストアには公開しないでください。
-</p>
-
-<p class="note"><strong>注</strong>: このドキュメントには、まだ <a href="{@docRoot}">developer.android.com</a> のリファレンス マテリアルにないクラスやメソッドが多数登場します。
-このドキュメントでは、API エレメントは {@code code style} 形式で記載されています(ハイパーリンクなし)。
-これらのエレメントに関する API ドキュメント(準備段階)については、<a href="{@docRoot}preview/download.html#docs">プレビューのリファレンス</a>をダウンロードしてください。
-</p>
-
-<h3>重要な動作の変更点</h3>
-
-<p>過去に Android にアプリを公開したことがある場合は、アプリがプラットフォームの変更による影響を受ける場合があります。
-</p>
-
-<p>詳細については、<a href="behavior-changes.html">Behavior Changes</a> をご覧ください。</p>
-
-<h2 id="app-linking">アプリのリンク機能</h2>
-<p>このプレビューでは、アプリのリンク機能を強化することで 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>このプレビューでは、サポートされる端末での指紋スキャンを使用したユーザー認証や、端末のロック解除メカニズム(ロック画面のパスワードなど)を使って最後にユーザーが認証された時期の確認などを行える新しい 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()} メソッドを呼び出します。アプリは、指紋センサー付きの、互換性のある端末上で実行している必要があります。
-指紋認証フローのユーザー インターフェースをアプリに実装し、UI には標準の Android 指紋アイコンを使用する必要があります。Android 指紋アイコン({@code c_fp_40px.png})は<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">サンプルアプリ</a>に含まれています。指紋認証を使用するアプリを複数開発する場合は、それぞれのアプリで個別にユーザーの指紋を認証する必要があります。
-
-
-
-
-</p>
-
-<p>アプリでこの機能を使用するには、まずマニフェストに {@code USE_FINGERPRINT} パーミッションを追加する必要があります。
-</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>アプリでの指紋認証の実装については、
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">指紋ダイアログのサンプル</a>をご覧ください。
-</p>
-
-<p>この機能をテストする場合は、次の手順を使用します。</p>
-<ol>
-<li>Android SDK Tools Revision 24.3 をインストールします(まだインストールしていない場合)。</li>
-<li>
-<strong>[設定] > [セキュリティ] > [指紋]</strong> の登録手順に従い、エミュレータに新しい指紋を登録します。</li>
-<li>エミュレータを使って、次のコマンドで指紋のタッチ ベントをエミュレートします。
-同じコマンドを使って、ロック画面やアプリでの指紋のタッチイベントをエミュレートします。
-
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>Windows では、{@code telnet 127.0.0.1 <emulator-id>}、
-{@code finger touch <finger_id>} の順に実行する必要がある場合があります。
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">資格情報の確認</h3>
-<p>アプリでは、ユーザーがいつ、最後に端末のロックを解除したかに基づいて、ユーザーを認証できます。この機能によって、ユーザーがアプリ固有のパスワードを覚えたり、開発者が独自の認証ユーザー インターフェースを実装したりする必要性がなくなります。
-
-アプリでこの機能を使用する場合は、ユーザー認証用の公開鍵か秘密鍵を実装する必要があります。
-</p>
-
-<p>ユーザーが正常に認証された後、同じキーを再使用できるタイムアウト期間を設定するには、{@link javax.crypto.KeyGenerator} か
-{@link java.security.KeyPairGenerator} のセットアップ後に新しい
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} メソッドを呼び出します。
-
-現在、この機能は対象暗号化操作で動作します。
-</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>このプレビューでは、ユーザーが直感的にすばやく共有できるようにする API が提供されます。アプリで特定のアクティビティを起動する<em>ダイレクト シェアのターゲット</em>を定義すると、それらのダイレクト シェアのターゲットは <em>[共有]</em> メニューに表示されるようになります。
-
-この機能を使うと、他のアプリ内にある連絡先などのターゲットにコンテンツを共有できます。
-たとえば、ダイレクト シェアのターゲットによって他のソーシャル ネットワーク アプリのアクティビティが起動し、そのアプリ内の特定の友人やコミュニティに直接コンテンツを共有できるようになります。
-
-</p>
-
-<p>ダイレクト シェアのターゲットを有効にするには、まず
-{@code android.service.} を拡張するクラスを定義する必要があります。 <br>
-{@code chooser.ChooserTargetService} クラス。マニフェストで
-{@code ChooserTargetService} を宣言します。その宣言内で、
-{@code BIND_CHOOSER_TARGET_SERVICE} パーミッションと、
-{@code SERVICE_INTERFACE} アクションを使ったインテント フィルタを指定します。</p>
-<p>次の例は、マニフェストで {@code ChooserTargetService} を宣言する方法を示しています。
-</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>{@code ChooserTargetService} に公開するアクティビティごとに、 {@code "android.service.chooser.chooser_target_service"} という名前の
-{@code <meta-data>} 要素をアプリのマニフェストに追加します。
-
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">音声インタラクション</h2>
-<p>
-このプレビューでは、<a href="https://developers.google.com/voice-actions/" class="external-link">音声アクション</a>と共に使用することでアプリに対話形式の音声操作をビルドできる新しい音声インタラクション API が提供されます。
-
-
-{@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">Assist API</h2>
-<p>
-このプレビューでは、アシスタントを介してユーザーがアプリを操作できる新しい方法が用意されています。この機能を使用するには、ユーザーが現在のコンテキストを使うようアシスタントを有効にする必要があります。
-有効にすると、<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>新しい<em>アラームのみの</em> Do not disturb モードに相当する新しい {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} フィルタレベル。
-</li>
- <li>ユーザーが予定したリマインダを他のイベント({@link android.app.Notification#CATEGORY_EVENT})やアラーム({@link android.app.Notification#CATEGORY_ALARM})から区別する際に使用される新しい{@code Notification.CATEGORY_REMINDER} カテゴリの値。
-
-
-</li>
- <li>{@code Notification.Builder.setSmallIcon(Icon)} メソッドや {@code Notification.Builder.setLargeIcon(Icon)} メソッド経由で通知にアタッチできる新しい {@code android.graphics.drawable.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>このプレビューでは、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 Low Energy のスキャンの改善</h2>
-<p>
-アプリで Bluetooth Low Energy スキャンを実行する場合は、新しい
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} メソッドを使って、設定された
-{@link android.bluetooth.le.ScanFilter} に一致する宣伝パケットが最初に見つかったときと、それが長期間見つからない場合に通知する目的でのみコールバックが必要であると指定できます。
-
-このスキャン アプローチは、以前のプラットフォーム バージョンで提供されていたものよりもはるかに効率的です。
-
-</p>
-
-<h2 id="hotspot">アクセス ポイント 2.0 リリース 1 のサポート</h2>
-<p>
-このプレビューでは、Nexus 6 と Nexus 9 端末のアクセス ポイント2.0 Release 1 仕様のサポートが追加されました。アクセス ポイント 2.0 の資格情報をアプリに提供するには、
-{@code setPlmn()} や {@code setRealm()} などの
-{@link android.net.wifi.WifiEnterpriseConfig} クラスの新しいメソッドを使用します。
-{@link android.net.wifi.WifiConfiguration} オブジェクトで、
-{@link android.net.wifi.WifiConfiguration#FQDN} フィールドと {@code providerFriendlyName} フィールドを設定できます。新しい {@code ScanResult.PasspointNetwork} プロパティは、検出されたネットワークがアクセス ポイント 2.0 のアクセス ポイントを表しているかどうかを示します。
-
-
-</p>
-
-<h2 id="4K-display">4K ディスプレイ モード</h2>
-<p>互換性のあるハードウェアで、ディスプレイの解像度を 4K レンダリングにアップグレードするようアプリから要求できるようになりました。
-現在の物理的解像度を照会するには、新しい
-{@code android.view.Display.Mode} API を使用します。UI が低い論理的解像度で描画されていて、より高い物理的解像度にアップスケールされた場合は、
-{@code Display.Mode.getPhysicalWidth()} メソッドが返す物理的解像度が {@link android.view.Display#getSize(android.graphics.Point) getSize()} で報告される論理的解像度と異なる場合があります。
-
-</p>
-
-<p>アプリ ウィンドウの
-{@code WindowManager.LayoutParams.preferredDisplayModeId} プロパティを設定することで、アプリの実行時に物理的解像度を変更するようシステムに要求できます。この機能は、4K ディスプレイの解像度に切り替えたい場合に便利です。
-4K ディスプレイ モード中、UI は引き続き元の解像度(1080p など)で表示され、4K にアップスケールされますが、
-{@link android.view.SurfaceView} オブジェクトではコンテンツをネイティブの解像度で表示する場合があります。
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">テーマ化可能な ColorStateLists</h2>
-<p>M Preview を実行する端末で、テーマの属性が
-{@link android.content.res.ColorStateList} でサポートされるようになりました。
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} メソッドと
-{@link android.content.res.Resources#getColor(int) getColor()} メソッドは廃止されました。これらの API を呼び出す場合は、代わりに新しい {@code Context.getColorStateList()} メソッドか
-{@code Context.getColor()} メソッドを呼び出します。
-これらのメソッドは、{@link android.support.v4.content.ContextCompat} の v4 appcompat ライブラリにもあります。
-</p>
-
-<h2 id="audio">オーディオ機能</h2>
-
-<p>このプレビューでは、次のように Android でのオーディオ処理が改善されました。 </p>
-<ul>
- <li>新しい {@code android.media.midi} API を使った <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> プロトコルのサポート。
-これらの API を使用して 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>このプレビューでは、ビデオ処理の 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>このプレビューでは、カメラのフラッシュやカメラによる画像の再処理にアクセスするための新しい API が用意されています。
-</p>
-
-<h3 id="flashlight">Flashlight API</h3>
-<p>カメラ端末にフラッシュ ユニットが付属している場合は、{@code CameraManager.setTorchMode()} メソッドを呼び出すことで、カメラ端末を開かずにフラッシュ ユニットのタッチモードのオン/オフを切り替えることができます。
-アプリには、フラッシュ ユニットやカメラ端末のフラッシュの独占所有権はありません。
-トーチモードは、カメラ端末が利用不可になったときや、トーチを付けている他のカメラリソースが利用不可になったときにオフになり、利用できなくなります。
-
-他のアプリでも {@code setTorchMode()} を呼び出してトーチモードをオフにできます。
-最後にトーチモードをオンにしたアプリが閉じられると、トーチモードはオフになります。
-</p>
-
-<p>
-{@code CameraManager.registerTorchCallback()} メソッドを呼び出すことで、トーチモードの状態に関する通知を受けるようコールバックを登録できます。コールバックを初めて登録したときに、現在検知されているすべてのフラッシュ ユニット付きのカメラ端末のトーチモードの状態が即座に呼び出されます。
-
-トーチモードが正常にオン/オフされると、
-{@code CameraManager.TorchCallback.onTorchModeChanged()} メソッドが呼び出されます。</p>
-
-<h3 id="reprocessing">Reprocessing API</h3>
-<p>{@link android.hardware.camera2 Camera2} API は、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 ImageWriter.queueInputImage()} メソッドをバッファコピーなしで呼び出して、{@code ImageFormat.PRIVATE} 画像を直接
-{@code ImageWriter} に渡します。
-</p>
-
-<p>{@code ImageReader} クラスで {@code android.graphics.ImageFormat.PRIVATE} 形式の画像ストリームがサポートされるようになりました。
-これにより、アプリが
-{@code ImageReader} 出力画像の循環的な画像のキューを維持でき、1 つ以上の画像を選択して、それらをカメラの再処理用に
-{@code ImageWriter} に送ることができます。</p>
-
-<h2 id="afw">Android for Work の機能</h2>
-<p>このプレビューには、次のような Android for Work 用の新しい API が含まれています。</p>
-<ul>
- <li><strong>企業の専用端末の制御の強化:</strong>デバイス オーナーは次の設定を制御でき、企業の専用端末を管理しやすくなります。
-
-
- <ul>
- <li>
-{@code DevicePolicyManager.setKeyguardEnabledState()} メソッドを使ったキーガードの無効化と有効化。</li>
- <li>
-{@code DevicePolicyManager.setStatusBarEnabledState()} メソッドを使ったステータスバー(クイック設定、通知、Google Now を起動するスワイプアップのジェスチャ)の無効化と有効化。
-</li>
- <li>{@link android.os.UserManager} の定数 {@code DISALLOW_SAFE_BOOT} を使ったセーフブートの無効化と有効化。
-</li>
- <li>
-{@link android.provider.Settings.Global} の定数 {@code STAY_ON_WHILE_PLUGGED_IN} を使った電源接続時の画面オフの回避。</li>
- </ul>
- </li>
- <li><strong>デバイス オーナーによるアプリのサイレント インストールとアンインストール:</strong>デバイス オーナーでは、{@link android.content.pm.PackageInstaller} API を使って、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 日間保留したりできます。
-
-さらに、管理者はアップデートを実行する時間枠を、キオスク端末が使用されていない時間帯などに設定できます。
-利用可能なシステムアップデートがある場合、システムは Work Policy Controller アプリにシステムアップデートのポリシーがあるかどうかを確認し、それに基づいて動作します。
-
-
-</li>
-<li>
-<strong>代理証明書のインストール:</strong>プロファイルやデバイス オーナーで、サードパーティ アプリが次の {@link android.app.admin.DevicePolicyManager} 証明書の管理 API を呼び出す権限を付与できるようになりました。
-
-
-<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>デバイス オーナーをプロビジョニングする際、
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} バンドルを設定して、ファクトリー リセット保護(FRP)をロック解除するようパラメータを構成できます。
-NFC プログラマー アプリでは、端末が FRP のロック解除するようリセットされ、端末がプロビジョニングされた後にこれらのパラメータを提供でき、事前に Google アカウントを設定しておく必要はありません。
-
-これらのパラメータを修正しない場合、FRP は続行し、事前にアクティブ化された Google の資格情報なしで端末がアクティベートされないようにします。
-
-
-<p>さらに、Google Play サービスでアプリの制限を設定することで、デバイス オーナーは FRP のロック解除用の別の Google アカウントを指定して、端末でアクティベートされたアカウントを置き換えることができます。
-</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>プロファイルやデバイス オーナーでは、新しい
-{@code android.app.usage.NetworkStatsManager} メソッドを使用して、<strong>[設定] > [データ]</strong> に表示されるデータ使用の統計を照会できます。
-プロファイル オーナーには、管理するプロファイルのデータを照会するパーミッションが自動的に付与され、デバイス オーナーは管理されたプライマリ ユーザーの使用データへのアクセス権が付与されます。
-
-</li>
-<li><strong>実行時パーミッションの管理:</strong>
-<p>プロファイルやデバイス オーナーは、
-{@code DevicePolicyManager.setPermissionPolicy()} を使用するすべてのアプリケーションのすべての実行時の要求に対するパーミッション ポリシーを設定でき、通常のとおりユーザーにパーミッションを付与するよう要求する、自動的に付与する、パーミッションをサイレントに拒否する、のいずれかを行うことができます。
-
-後者のポリシーが設定されている場合、ユーザーはプロファイルやデバイス オーナーによって選択された内容を <strong>[設定]</strong> にあるアプリのパーミッション画面で修正できません。
-
-</p></li>
-<li><strong>設定の VPN:</strong>VPN アプリは、<strong>[設定] > [その他] > [VPN]</strong> に表示されます。さらに、VPN の使用に関する通知は、その VPN の構成状況によるものになります。
-
-
-プロファイル オーナーの場合、通知は VPN が マネージド プロファイル、個人プロファイル、または両方のどれに構成されているかによって、それ固有のものになります。
-デバイス オーナーの場合、通知は VPN が端末全体に構成されているかどうかによって、それ固有のものになります。
-</li>
-<li><strong>ワーク ステータスの通知:</strong>マネージド プロファイルからのアプリのアクティビティがフォアグラウンドにある場合は、ステータスバーのブリーフケース アイコンが表示されます。
-さらに、端末がマネージド プロファイルのアプリのアクティビティに直接ロック解除されている場合、ユーザーがワーク プロファイル内にいることがトースト通知で表示されます。
-
-
-</li>
-</ul>
-
-<p class="note">
- M Developer Preview のすべての API の変更点の詳細については、<a href="{@docRoot}preview/download.html">API Differences Report</a> をご覧ください。
-</p>
diff --git a/docs/html-intl/intl/ja/preview/backup/index.jd b/docs/html-intl/intl/ja/preview/backup/index.jd
deleted file mode 100644
index b558cdd..0000000
--- a/docs/html-intl/intl/ja/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=アプリの自動バックアップ
-page.tags=バックアップ, previewresources, androidm
-page.keywords=バックアップ,自動バックアップ,プレビュー
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本書の内容</h2>
- <ol>
- <li><a href="#overview">概要</a></li>
- <li><a href="#configuring">データのバックアップを設定する</a></li>
- <li><a href="#testing">バックアップ設定をテストする</a></li>
- <li><a href="#issues">既知の問題</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- アプリ内のデータ作成や環境設定は、多大な労力と時間を必要とする作業です。
-端末が破損したり、新しい端末にアップグレードしたりする場合に、そのデータを保持することが、快適な操作性を提供する上で非常に重要です。
-Android M Preview を実行する端末では、アプリデータを Google ドライブに自動的にバックアップすることで、前述のような状況でも快適な操作性を実現できます。
-
-アプリデータは、ユーザーが端末を変更したりアップグレードしたりした場合に自動的に復元されます。
-
-</p>
-
-<p>
- 自動バックアップは、Android M Preview を実行する端末にインストールされているすべてのアプリで有効になっています。追加のアプリコードは必要ありません。
-ユーザーは、自動データ バックアップを使用しないよう選択することもできます。
-また、バックアップするアプリのデータを制限することもできます。
-</p>
-
-<p>
- このドキュメントでは、新しいシステムの動作と、バックアップするアプリデータを指定する方法について説明します。
-
-</p>
-
-<h2 id="overview">概要</h2>
-
-<p>
- 自動バックアップ機能では、アプリがユーザーの端末上に作成するデータを、ユーザーの Google ドライブ アカウントにアップロードして暗号化することで、そのデータを保持します。
-開発者やユーザーにデータ ストレージの費用が発生することはなく、保存されたデータはユーザー個人のドライブ容量にはカウントされません。
-M Preview の期間中、ユーザーは 1 つの Android アプリにつき最大 25 MB までのデータを保存できます。
-
-</p>
-
-<p>
- 自動バックアップは、端末がアイドル中で、電源に接続されていて、Wi-Fi に接続されている場合に、24 時間ごとに実行されます。
-これらの条件を満たしたとき、バックアップ マネージャー サービスが利用可能なすべてのバックアップ データをクラウドにアップロードします。
-ユーザーが新しい端末に切り替えたり、バックアップされたアプリをアンインストールしたり再インストールしたりした場合、復元操作によりバックアップされたデータが新しくインストールされたアプリのデータ ディレクトリにコピーされます。
-
-
-</p>
-
-<p class="note">
- <strong>注:</strong> アプリが以前の <a href="{@docRoot}google/backup/index.html">Android バックアップ サービス</a>を利用している場合、この新しい動作は適用されず、既存のバックアップ動作が引き続き適用されます。
-
-
-</p>
-
-
-<h3 id="auto-exclude">自動的に除外されたデータファイル</h3>
-
-<p>
- 一時ファイルやキャッシュなど、バックアップする必要のないアプリデータもあるため、自動バックアップ サービスではデフォルトで一部のデータ ファイルを除外します。
-
-</p>
-
-<ul>
- <li>{@link android.content.Context#getCacheDir
- getCacheDir()} メソッドと {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
- メソッドに参照されるディレクトリ内のファイル。
- </li>
-
- <li>
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- メソッドに参照されるディレクトリ内のものを除く、外部ストレージ内のファイル。
- </li>
-
- <li>
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} メソッドに参照されるディレクトリ内のファイル。
- </li>
-</ul>
-
-<h2 id="configuring">データのバックアップを設定する</h2>
-
-<p>
- 前のセクションの自動除外ファイル一覧にあるものを除いて、M Preview 端末にインストールされたすべてのアプリで作成されるデータがバックアップ対象です。
-そこからさらに、アプリ マニフェストの設定を使用して、アプリからバックアップするデータを制限したり設定したりできます。
-
-</p>
-
-<h3 id="include-exclude">対象データと除外データ</h3>
-
-<p>
- アプリに必要なデータとその保存方法によって、特定のファイルやディレクトリを対象とするか、除外するかの明確なルールが必要になる場合があります。
-自動バックアップ サービスでは、XML 構成ファイルとアプリ マニフェストを使ってそのようなバックアップ ツールを設定できます。
-
-アプリ マニフェストでは、次の例のように、バックアップ スキームの構成ファイルを指定できます。
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- このサンプル コードでは、<code>android:fullBackupContent</code> 属性がアプリの開発プロジェクトの <code>res/xml/</code> ディレクトリにある <code>mybackupscheme.xml</code> という名前の XML ファイルを指定しています。
-
-この構成ファイルには、バックアップ対象とするファイルのルールが含まれています。
-次のサンプル コードは、バックアップから特定のファイルを除外する構成ファイルを示しています。
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- この例のバックアップ構成では、特定のデータベース ファイルのみをバックアップから除外しています。
- それ以外のファイルはすべてバックアップされます。
-</p>
-
-<h4>バックアップ設定の構文</h4>
-
-<p>
- バックアップ サービスの設定では、バックアップに含める、または除外するファイルを指定できます。
-データ バックアップ設定の xml ファイルの構文は次のとおりです。
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- 次のエレメントと属性を使って、バックアップに含める、または除外するファイルを指定できます。
-
-</p>
-
-<ul>
- <li>
- <code><include></code>。システムにデフォルトでアプリのすべてのデータをバックアップさせるのではなく、バックアップするリソースを自身で指定する場合、このエレメントを使用します。
-<code><include></code> タグを指定すると、システムはこのエレメントで<em>指定されたリソースのみ</em>をバックアップします。
-
-
- </li>
-
- <li>
- <code><exclude></code>。バックアップから除外するリソースを指定するには、このエレメントを使用します。
-システムは、このエレメントで指定されたリソース以外のすべてのアプリ データをバックアップします。
-
- </li>
-
- <li>
- <code>domain.</code> バックアップに含める、または除外するリソースのタイプ。この属性を指定する際に有効な値:
-
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>。リソースがアプリのルート ディレクトリにあることを指定します。
- </li>
-
- <li>
- <code>file</code>。
-{@link android.content.Context#getFilesDir getFilesDir()} メソッドで返されるディレクトリ内のリソースに相当します。
- </li>
-
- <li>
- <code>database</code>。
-{@link android.content.Context#getDatabasePath getDatabasePath()} メソッドや
-{@link android.database.sqlite.SQLiteOpenHelper} クラスを使用して返されるデータベースに相当します。
- </li>
-
- <li>
- <code>sharedpref</code>。
-{@link android.content.Context#getSharedPreferences getSharedPreferences()} メソッドで返される
-{@link android.content.SharedPreferences} オブジェクトに相当します。
- </li>
-
- <li>
- <code>external</code>。リソースが外部ストレージにあることを指定し、
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- メソッドで返されるディレクトリ内のファイルに相当します。
- </li>
-
- <li>
- <code>path</code>。バックアップに含める、または除外するリソースへのファイルパス。
-
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">データ バックアップの禁止</h3>
-
-<p>
- マニフェストのアプリ エレメントにある <code>android:allowBackup</code> 属性を <code>false</code> に設定すると、一切のデータを自動バックアップしないように選択できます。
-
-この設定を、次のサンプル コードで示します。
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">バックアップ設定をテストする</h2>
-
-<p>
- バックアップ設定を作成したら、アプリでデータが保存され、正常に復元されることをテストして確認する必要があります。
-
-</p>
-
-
-<h4>バックアップのログの有効化</h4>
-
-<p>
- バックアップで XML ファイルがどのように解析されるかを確認するため、テストのバックアップを実行する前にログ機能を有効にします。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>バックアップのテスト</h4>
-
-<p>手動でバックアップを実行するには、まず次のコマンドを呼び出してバックアップ マネージャーを初期化する必要があります。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- 次に、次のコマンドを使って、アプリのパッケージ名を <code><PACKAGE></code> パラメータで指定して手動でアプリケーションをバックアップします。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>復元のテスト</h4>
-
-<p>
- アプリのバックアップ後に手動で復元を開始するには、アプリのパッケージ名を <code><PACKAGE></code> パラメータで指定します。
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>警告:</b> このアクションを実行すると、アプリが停止し、復元操作を実行する前にデータが消去されます。
-
-</p>
-
-<p>
- アプリをアンインストールしてから再インストールすることで、アプリの復元プロセスを開始します。アプリのインストールが完了すると、アプリデータが自動的にクラウドから復元されます。
-
-</p>
-
-
-<h4>バックアップのトラブルシューティング</h4>
-
-<p>
- 問題が発生した場合は、<strong>[設定] > [バックアップ]</strong>でバックアップをオン/オフに切り替え、端末を工場出荷時の状態にリセットするか、次のコマンドを呼び出して、バックアップ データと関連メタデータを消去できます。
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- <code><TRANSPORT></code> には、<code>com.google.android.gms</code> というプレフィクスが付く必要があります。
- Transport の一覧を取得するには、次のコマンドを呼び出します。
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">既知の問題</h2>
-
-<p>自動バックアップ サービスには、次のような既知の問題があります。</p>
-
-<ul>
- <li><strong>Google Cloud Messaging</strong> - プッシュ通知に Google Cloud Messaging を使用するアプリの場合、Messaging の登録時に返された登録 ID をバックアップすると、復元されたアプリのプッシュ通知が破損することがあるという既知の問題があります。古い登録 ID がバックアップされている場合を除いて、新しい端末へのインストール後は、新しい 登録 ID 用の API を照会することが重要です。
-
-
-
-
-これを回避するには、バックアップ対象ファイルから登録 ID を除外します。
-
- </li>
-</ul>
diff --git a/docs/html-intl/intl/ja/preview/behavior-changes.jd b/docs/html-intl/intl/ja/preview/behavior-changes.jd
deleted file mode 100644
index a7950a1..0000000
--- a/docs/html-intl/intl/ja/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=動作の変更点
-page.keywords=プレビュー,sdk,compatibility
-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">App Standby</a></li>
- </ol>
- </li>
- <li><a href="#behavior-adoptable-storage">追加可能なストレージ端末</a></li>
- <li><a href="#behavior-apache-http-client">Apache HTTP Client の削除</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»</a> </li>
-</ol>
-
-
-<h2>関連ドキュメント</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M Developer Preview API の概要</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview には、新機能以外にもさまざまなシステムの変更点や API の動作の変更点が盛り込まれています。
-このドキュメントでは、アプリ開発において把握しておくべき主な変更点について説明します。
-</p>
-
-<p>過去に Android にアプリを公開したことがある場合は、アプリがこれらの変更による影響を受ける場合があることに注意してください。
-</p>
-
-<h2 id="behavior-runtime-permissions">実行時パーミッション</h1>
-<p>このプレビューでは、アプリのパーミッションを実行時にユーザーが直接管理できる新しいパーミッション モデルが採用されました。
-このモデルによって、ユーザーに対するパーミッションの可視性と制御性が向上し、アプリ開発者にとってはアプリのインストールや自動アップデート プロセスの効率が上がります。ユーザーはインストール済みアプリのパーミッションを個別に付与したり取り消したりできます。
-
- </p>
-
-<p>M Preview を対象としたアプリでは、必ずパーミッションを実行時に確認、要求するようにします。
-アプリにパーミッションが付与されているかどうかを確認するには、新しい {@code Context.checkSelfPermission()} メソッドを呼び出します。
-パーミッションを要求するには、新しい
-{@code Activity.requestPermission()} メソッドを呼び出します。アプリが M を対象としていない場合でも、新しいパーミッション モデルでアプリをテストするようにしてください。
-</p>
-
-<p>アプリで新しいパーミッションをサポートする際の詳細については、Developer Preview ページの
-<a href="{@docRoot}preview/features/runtime-permissions.html">Permissions</a> をご覧ください。
-アプリへの影響を評価する際のヒントについては、<a href="{@docRoot}preview/testing/guide.html#runtime-permissions">Testing Guide</a> をご覧ください。
-</p>
-
-<h2 id="behavior-power">省電力の最適化 </h2>
-<p>このプレビューでは、アイドル中の端末やアプリに対する新しい省電力の最適化機能が採用されています。</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">Wake ロック</a> は無視されます。</li>
-<li>{@link android.app.AlarmManager} クラスを使ってスケジュールされたアラームは無効になりますが、{@link android.app.AlarmManager#setAlarmClock setAlarmClock()} メソッドと {@code AlarmManager.setAndAllowWhileIdle()} を使って設定したアラームは除きます。
-
-</li>
-<li>WiFi スキャンは実行されません。</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">Testing Guide</a> をご覧ください。
- </p>
-
-<h3 id="behavior-app-standby">App Standby</h3>
-<p>このプレビューでは、アクティブに使用されていないアプリをシステムがアイドル状態であるとみなす場合があります。
-システムが次の信号を検出しない場合、一定時間の経過後にアプリはアイドル状態であるとみなされます。
-</p>
-
-<ul>
-<li>アプリがユーザーによって明示的に起動された。</li>
-<li>アプリのプロセスが現在フォアグラウンドにある(アクティビティかフォアグラウンド サービスとしてか、他のアクティビティかフォアグラウンド サービスによって使用されている)。
-</li>
-<li>アプリがロック画面や通知トレイに表示される通知を生成する。
-</li>
-<li>ユーザーが、アプリに最適化が適用されないよう <strong>[設定]</strong> で明示的に指定する。
-</li>
-</ul>
-
-<p>端末が電源に接続されていない場合、アイドル中のみなされたアプリのネットワーク アクセスは無効になり、同期とジョブは保留されます。
-端末が電源に接続されると、アプリのネットワーク アクセスは許可され、保留中のすべてのジョブと同期が実行されます。
-端末が長時間アイドル状態の場合、アイドル中のアプリは 1 日 1 回程度ネットワーク アクセスが許可されます。
-</p>
-
-<p>この機能をテストするには、M Preview を実行する端末を開発マシンに接続して、次のコマンドを呼び出します。
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</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>アプリで App Standby をテストする方法のヒントについては、
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">Testing Guide</a> をご覧ください。
- </p>
-
-<h2 id="behavior-adoptable-storage">追加可能なストレージ端末</h2>
-<p>
-このプレビューでは、SD カードなどの外部ストレージ端末を<em>追加</em>できます。外部ストレージ端末を追加すると、端末が内部ストレージのように動作するよう暗号化とフォーマットが行われます。
-この機能によって、アプリとアプリの個人データをストレージ端末間で移動できるようになります。
-アプリを移動する際、システムはマニフェストの
-<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 On-The-Go(OTG)ケーブルで Android 端末に接続された USB ドライブの追加を有効にして、次のコマンドを実行します。
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Apache HTTP Client の削除</h2>
-<p>このプレビューでは、Apache HTTP クライアントのサポートが削除されました。アプリでこのクライアントを使用していて、Android 2.3(API レベル 9)以上を対象としている場合は、代わりに {@link java.net.HttpURLConnection} クラスを使用します。
-
-この API は透過的データ圧縮と応答のキャッシュによってネットワーク使用を軽減し、電源の消費を最小化するため、効率性が向上します。
-Apache HTTP API を引き続き使用するには、まず {@code build.gradle} ファイルで次のコンパイル時の依存関係を宣言する必要があります。
-
-</p>
-<pre>
-android {
- useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android は、OpenSSL から
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> ライブラリに移行しています。
-アプリで Android NDK を使用している場合は、{@code libcrypto.so} や {@code libssl.so} など、NDK API の一部でない暗号化ライブラリにリンクしないでください。
-これらのライブラリは パブリック API ではなく、リリースや端末に対する通知なしで変更されたり、中断したりする可能性があります。また、セキュリティ上の脆弱性を露呈する場合もあります。
-
-代わりに、ネイティブ コードを変更して JNI 経由で Java の暗号化 API を呼び出すか、希望の暗号化ライブラリに静的リンクします。
-
-</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 Support Library</a> revision 22.2 を使用している場合、フローティング ツール バーに下方互換性はなく、デフォルトで appcompat が代わりに {@link android.view.ActionMode} オブジェクトを制御することに注意してください。
-
-これにより、フローティング ツール バーは表示されなくなります。
-{@link android.support.v7.app.AppCompatActivity} で
-{@link android.view.ActionMode} がサポートされるようにするには、
-{@code android.support.v7.app.AppCompatActivity.getDelegate()} を呼び出して、返された
-{@link android.support.v7.app.AppCompatDelegate} オブジェクトで
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} を呼び出し、 入力パラメータを {@code false} に設定します。
-この呼び出して、{@link android.view.ActionMode} オブジェクトの制御がフレームワークに戻ります。
-M Preview を実行する端末ではフレームワークによる
-{@link android.support.v7.app.ActionBar} やフローティング ツール バー モードのサポートが可能ですが、M Preview 以前の端末では
-{@link android.support.v7.app.ActionBar} モードのみがサポートされます。</p>
-
-<h2 id="behavior-keystore">Android キーストロークの変更点</h2>
-<p>このプレビューでは、
-<a href="{@docRoot}training/articles/keystore.html">Android Keystore プロバイダ</a>による DSA のサポートがなくなります。
-ECDSA は引き続きサポートされます。</p>
-
-<p>停止時に暗号化を必要としないキーが、ロック画面の(ユーザーや端末の管理者などによる)無効時やリセット時に削除されなくなりました。
-停止時に暗号化を必要とするキーは、これらのイベント時に削除されます。
-</p>
-
-<h2 id="behavior-network">Wi-Fi とネットワークの変更点</h2>
-
-<p>このプレビューでは、Wi-Fi API とネットワーク API の動作に次のような変更点が追加されました。</p>
-<ul>
-<li>オブジェクトの作成者である場合のみ、アプリで{@link android.net.wifi.WifiConfiguration} オブジェクトの状態を変更できます。
-ユーザーや他のアプリによって作成された
-{@link android.net.wifi.WifiConfiguration} オブジェクトは変更、削除できません。
-</li>
-<li>
-以前は、
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} で
-{@code disableAllOthers=true} 設定を使ってアプリから端末を特定の Wi-Fi ネットワークに接続させた場合、端末はセルラー データなどの他のネットワークから切断されていました。
-このプレビューでは、端末が他のネットワークから切断されないようになりました。アプリの {@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>このプレビューでは、カメラ サービスの共有リソースへのアクセスモデルが、以前の "先着順" モデルから、"優先度順" に変更されました。
-
-この動作の変更には、次のようなものがあります。</p>
-<ul>
-<li>カメラ端末を開いて構成するなど、カメラのサブシステム リソースへのアクセスは、クライアント アプリケーション プロセスの "優先度" に基づいて与えられます。
-通常、ユーザーに表示されているアクティビティやフォアグラウンドにあるアクティビティのあるアプリケーション プロセスの優先度が最も高くなり、カメラ リソースの取得や使用の信頼性が高まります。
-
-</li>
-<li>優先度の低いアプリでアクティブなカメラ クライアントは、より優先度の高いアプリケーションがカメラを使おうとした際に使用が中断される場合があります。
-廃止された {@link android.hardware.Camera} API では、使用が中断されたクライアントに
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} が呼び出されます。
-
-{@link android.hardware.camera2 Camera2} API では、使用が中断されたクライアントに
-{@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()} メソッドを使って入力パラメータを {@code true} に設定します。
-
-
-
-
-アプリで
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat ライブラリ</a>や
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview ライブラリ</a>を使用する場合は、これらのライブラリの最新バージョンを使用するようアプリをアップデートする必要があります。
-アップデートしない場合は、XML から参照するカスタム クラスがアップデートされていて、クラス コンストラクタがアクセス可能であることを確認しておく必要があります。
-</p>
-
-<p>このプレビューでは、動的リンクの動作がアップデートされました。動的リンクでは、ライブラリの {@code soname} とそのパス(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-public bug 6670</a>)の違いを認識でき、{@code soname} が実装されています。
-
-
-以前動作していたアプリで間違った {@code DT_NEEDED} エントリを持つもの(ビルドマシンのファイル システムの絶対パスなど)は、読み込み時に失敗する場合があります。
-</p>
-
-<p>{@code dlopen(3) RTLD_LOCAL} フラグは正常に実装されました。
-{@code RTLD_LOCAL} はデフォルトのため、
-{@code RTLD_LOCAL} を明示的に使用しない {@code dlopen(3)} への呼び出しは影響を受けます(アプリで明示的に {@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 は破損しているとみなされます。
-コンテンツが一部でも削除された場合は、APK の再署名が必要になります。
-</p>
-
-<h2 id="behavior-afw">Android for Work の変更点</h2>
-<p>このプレビューには、次のような Android for Work に関する動作の変更点が含まれています。</p>
-<ul>
-<li><strong>個人のコンテキストでの仕事用の連絡先</strong>ユーザーが過去の通話履歴を表示したときに、Google Dialer
-Call Log に仕事用の連絡先が表示されるようになりました。{@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} を {@code true} に設定すると、Google Dialer Call Log に仕事用プロファイルの連絡先は表示されなくなります。
-
-{@code DevicePolicyManager.setBluetoothContactSharingDisabled()} を {@code false} に設定した場合のみ、Bluetooth 経由で端末に仕事用の連絡先と個人用の連絡先を表示できます。
-
-デフォルトでは、{@code true} に設定されています。
-
-</li>
-<li><strong>WiFi 設定の削除:</strong>プロファイル オーナーによって追加された WiFi 設定(@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} メソッドへの呼び出しなどを介して)は、その仕事用プロファイルが削除されると同時に削除されます。
-
-</li>
-<li><strong>WiFi 設定のロック:</strong>アクティブなデバイス オーナーによって作成された WiFi 設定は、ユーザーが修正したり削除したりできなくなりました。
-ユーザーに {@link android.os.UserManager} 定数
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} が設定されていない限り、ユーザー自身の WiFi 設定を作成、修正することはできます。
-</li>
-<li><strong>Google アカウントの追加経由での Work Policy Controller のダウンロード:</strong>Work Policy Controller(WPC)アプリ経由で管理する必要のある Google アカウントがマネージド コンテキスト外で端末に追加されると、アカウントの追加フローでユーザーに適切な WPC をインストールするよう要求します。この動作は、初期の端末のセットアップ ウィザードでの
-<strong>[設定]> [アカウント]</strong> で追加されるアカウントにも適用されます。
-
-
-</li>
-<li><strong>特定の DevicePolicyManager API の動作の変更点: </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/ja/preview/download.jd b/docs/html-intl/intl/ja/preview/download.jd
deleted file mode 100644
index 67b1bc4..0000000
--- a/docs/html-intl/intl/ja/preview/download.jd
+++ /dev/null
@@ -1,359 +0,0 @@
-page.title=ダウンロード
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">Android Preview SDK のコンポーネントをダウンロード、インストールする前に、次の利用規約に同意する必要があります。
-</p>
-
- <h2 class="norule">利用規約</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-以下は、Android SDK Preview の使用許諾契約です(以下「本契約」)。
-
-1.はじめに
-
-1.1 Android SDK Preview(以下、本契約で「Preview」という。具体的には利用可能な場合には Android システム ファイル、パッケージ型 API、Preview ライブラリ ファイルを含む)は、本契約の規定に従ってライセンス許可されます。本契約では、デベロッパーの Preview の使用に関して、デベロッパーと Google の間で法的拘束力のある契約を結びます。
-
-1.2 「Android」とは、Android オープン ソース プロジェクト(http://source.android.com/ にて随時更新)にて利用可能な、端末向けの Android ソフトウェア スタックを意味します。
-
-1.3 「Google」とは、1600 Amphitheatre Parkway, Mountain View, CA 94043, United States に主たる事業所を有するデラウェア州法人である Google Inc. を意味します。
-
-2.本契約の同意
-
-2.1 Preview を使用するには、まず本契約に同意する必要があります。本契約に同意しない場合は Preview を使用できません。
-
-2.2 同意するかまたは Preview を使用するためにクリックすると、本契約に同意したことになります。
-
-2.3 米国またはその他の国(デベロッパーが居住している国かまたはデベロッパーが Preview を使用する国を含む)の法律により Preview の使用を禁止されている人である場合、Preview を使用することも、使用許諾契約に同意することもできません。
-
-2.4 雇用主またはその他の事業体を代表または代理して本契約に拘束されることに同意し Preview を企業または組織の内部で使用する場合、担当者の雇用主またはその他の事業体を本契約に法的に拘束する完全な法的権限を有していることを表明および保証するものとします。担当者が必要な権限を有していない場合は、担当者の雇用主またはその他の事業体を代表または代理して、本契約に同意することも、Preview を使用することもできません。
-
-3.Google Preview ライセンス
-
-3.1 本契約の規定に従い、Google は Android プラットフォーム上で実行するアプリケーションの開発に Preview を個人的にもしくは企業または組織の内部で使用するための、ロイヤリティ フリーな、譲渡不可で、非排他的な、サブライセンス不可の、限定された、取り消し可能なライセンスを付与するものとします。
-
-3.2 Preview に関するすべての法的権利、所有権、利益(Preview に含まれる知的財産権を含む)は Google またはサードパーティが所有するものとします。「知的財産権」とは、特許法、著作権法、営業秘密法、商標法、不当競争防止法に基づいて発生するすべての権利、およびその他のすべての所有権を意味します。デベロッパーに明示的に付与されていない権利は、すべて Google が所有します。
-
-3.3 本契約で明示的に許可されている目的以外においては、Preview を使用できません。当該のサードパーティのライセンスで必要とされる場合を除き、デベロッパーは、(a) Preview または Preview の一部をコピー(バックアップ目的を除く)、修正、改造、再配布、逆コンパイル、リバース エンジニアリング、逆アセンブルまたは派生物の作成、または(b)モバイル ハンドセットまたは個人用 PC 以外のハードウェア端末への Preview の読み込み、Preview と他のソフトウェアとの結合、または Preview の一部を組み込んだソフトウェアや端末の配布はできません。
-
-3.4 デベロッパーは、Android の断片化につながるような行為をしないことに同意します。これには、Preview から派生したソフトウェア開発キットの配布、作成への参加、宣伝を含みます(ただし必ずしもこれらには限定されません)。
-
-3.5 オープンソース ソフトウェア ライセンス下でライセンス付与された Preview のコンポーネントの使用、複製、配布は、本契約ではなく、そのオープンソース ソフトウェアのライセンスに準拠するものとします。デベロッパーは、許諾されるすべての権利下で、そのようなオープンソース ソフトウェア ライセンスに対して、優良ライセンシーのままでいることに同意し、そのような権利を終了、停止、または違反する可能性のあるいかなる行為も差し控えることに同意するものとします。
-
-3.6 デベロッパーは、Google が提供する Preview の形式および性質は事前の通知なしに変更される場合があり、今後リリースされる Preview のバージョンでは、以前のバージョンの Preview で開発されたアプリケーションとの互換性がない可能性があることに同意します。デベロッパーは、Google が事前の通知なく、Google の単独の裁量でデベロッパーまたはユーザーへの Preview(または Preview 内の一部の機能)の提供を(恒久的または一時的に)停止する場合があることに同意します。
-
-3.7 本契約のいかなる部分も、Google のいかなる商標名、商標、サービスマーク、ロゴ、ドメイン名、またはその他のブランド識別表示を使用する権利もデベロッパーに付与するものではありません。
-
-3.8 デベロッパーは、Preview に添付または収録されているすべての知的財産権に関する通知(著作権および商標の通知を含む)の削除、隠ぺい、改ざんを行わないことに同意します。
-
-4.デベロッパーによる Preview の使用
-
-4.1 Google は、本契約に基づき Preview を使用してデベロッパーが開発したソフトウェア アプリケーションに関して、デベロッパー(またはデベロッパーのライセンサー)からいかなる権利、所有権、または利益(当該アプリケーションに含まれる知的財産権を含む)も取得するものではないことに同意します。
-
-4.2 デベロッパーは、Preview を(a)本契約、および(b)該当する司法管轄区における適用される法律、規則、または一般に認められた慣行またはガイドライン(米国またはその他の該当国におけるデータまたはソフトウェアの輸出入に関する法律を含む)で認められている目的にのみ使用することに同意します。
-
-4.3 Preview を使用してアプリケーションを開発する場合、デベロッパーはユーザーのプライバシーおよび法的権利を保護することに同意します。ユーザーからデベロッパーにユーザー名、パスワード、またはその他のログイン情報または個人情報が提供される場合、デベロッパーは、情報がデベロッパーのアプリケーションに提供されることをユーザーに認識させ、当該ユーザーについてプライバシーに関する法的に十分な通知および保護を行わなければなりません。デベロッパーのアプリケーションに個人情報または秘密情報が保存される場合、この保存は保護された方法で行われなければなりません。ユーザーからデベロッパーのアプリケーションに Google アカウントの情報が提供された場合、デベロッパーのアプリケーションでは、ユーザーが許可したタイミングで、かつユーザーが許可した限定された目的にのみ、当該情報を使用してユーザーの Google アカウントにアクセスすることが認められるものとします。
-
-4.4 デベロッパーは、Preview に関して、第三者(Google、およびあらゆる携帯電話会社を含むが、これらに限定されない)のサーバー、ネットワーク、またはその他の財産またはサービスへの妨害、中断、損害、または許可されていない態様でのアクセスとなる行為(そのような行為に該当する対象製品の開発または販売 / 配布を含む)に関与しないことに同意します。
-
-4.5 デベロッパーは、デベロッパーが Android および Android のアプリケーションを介して作成、送信、表示するデータ、コンテンツ、リソース、および自身の行為の結果(Google に発生する可能性のあるあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.6 デベロッパーは、本契約、適用される第三者の契約もしくは利用規約、または適用される法律もしくは規則に基づく自身の義務に違反したこと、および当該違反の結果(Google または第三者に発生したあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.7 Preview は開発中であり、デベロッパーによるテスティングやフィードバックは開発プロセスの重要な一部となります。デベロッパーは、Preview の使用により、一部の機能の実装が開発中であると認識し、Preview が安定したリリースの完全な機能性を持つことに依存すべきでないことを認識するものとします。本 Preview は、公式の Android SDK のリリース後はサポート対象でなくなるため、デベロッパーは、Preview を使用するいかなるアプリケーションも公然と配布または引き渡さないことに同意するものとします。
-
-5.デベロッパーの資格情報
-
-5.1 デベロッパーは、Google が発行した、またはデベロッパー自身で選択した、自身のデベロッパー用資格情報の秘密を保持する責任を負うこと、および自身のデベロッパー用資格情報のもとで開発されたすべてのアプリケーションについて単独で責任を負うことに同意します。
-
-6.プライバシーおよび情報
-
-6.1 Google は、Preview の継続的な技術革新と改良のために、ソフトウェアから特定の使用状況統計情報(一意識別子、関連する IP アドレス、ソフトウェアのバージョン番号、Preview のどのツール/サービスがどのように使用されているかに関する情報を含むが、これらに限定されない)を収集できます。この情報が収集される前に、Preview に通知が表示され、デベロッパーの同意が求められます。デベロッパーが同意しない場合は、情報は収集されません。
-
-6.2 収集されるデータは、Preview の改良のために集約された形で精査され、Google のプライバシー ポリシー(http://www.google.com/policies/privacy/)に従って管理されます。
-
-7.第三者のアプリケーション
-
-7.1 デベロッパーが、Preview を使用して第三者が開発したアプリケーションを実行する、あるいは第三者から提供されたデータ、コンテンツ、リソースにアクセスする場合、デベロッパーは、Google がそれらのアプリケーション、データ、コンテンツ、リソースについて責任を負わないことに同意します。デベロッパーは、そのような第三者のアプリケーションを介してアクセスするすべてのデータ、コンテンツ、リソースについては、それらを生成した者が単独で責任を負うものであり、Google はそれらの第三者のアプリケーション、データ、コンテンツ、またはリソースの使用もしくはアクセスによって生じたあらゆる損失および損害について一切責任を負わないことを理解します。
-
-7.2 デベロッパーは、そのような第三者のアプリケーションを介して表示されるデータ、コンテンツ、リソースは、提供者(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。デベロッパーは、当該所有者からの明確な許可がない限り、それらのデータ、コンテンツ、リソース(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-7.3 デベロッパーは、そのような第三者のアプリケーション、データ、コンテンツまたはリソースの使用が、デベロッパーと当該第三者間の別の規約に従うものであることを認識するものとします。
-
-8.Google API の使用
-
-8.1 Google API
-
-8.1.1 API を使用して Google からデータを取得する場合、デベロッパーは、そのデータは、Google またはデータを提供する事業体(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。そのような API の使用は追加の利用規約に従うものとします。デベロッパーは、当該の利用規約による許可がない限り、そのデータ(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-8.1.2 デベロッパーは、API を使用して Google からユーザーのデータを取得する場合、ユーザーが明示的に同意した場合のみ、およびユーザーが許可したタイミングとその目的にのみ、データを取得できることを理解し、同意します。
-
-9.本契約の終了
-
-9.1 本契約は、下記の規定に従ってデベロッパーまたは Google のいずれかによって解約されるまで、継続して適用されるものとします。
-
-9.2 デベロッパーが本契約の解約を希望する場合は、Preview および関連するデベロッパー資格情報の使用を停止することで、契約を終了するものとします。
-
-9.3 Google は、理由の有無にかかわらず、書面で通知することでいつでもデベロッパーとの本契約を解約することができます。
-
-9.4 本契約は事前の通知またはその他の措置なく、次のうち早い方に自動的に終了します。
-(A)Google が、デベロッパーが居住している国またはデベロッパーがサービスを使用する国での Preview または Preview の一部の配布を停止したとき。
-(B)Google が Android SDK の最終バージョンをリリースしたとき。
-
-9.5 本契約が終了すると、本契約で付与されていたライセンスは終了し、デベロッパーは速やかに Preview のすべての使用を停止するものとし、第 10 条、第 11 条、第 12 条、第 14 条の規定は無期限に効力を有するものとします。
-
-10.免責事項
-
-10.1 デベロッパーは、デベロッパーによる Preview の使用はデベロッパー自身の責任において行うものであること、および Preview は「現状有姿」かつ「提供可能な限りにおいて」、Google からのいかなる種類の保証もなく提供されるものであることを明示的に理解し、これに同意します。
-
-10.2 デベロッパーによる Preview および Preview の使用を通じてダウンロードまたはその他の方法で取得されたマテリアルの使用は、デベロッパー自身の裁量および責任において行うものであり、当該使用の結果として生じるデベロッパーのコンピュータ システムもしくはその他の端末への損害またはデータの喪失についての責任はデベロッパーが単独で負います。前述を制限することなく、Preview は安定したリリースではなく、コンピュータやその他の端末の利用の完全な回復不可能な損失を含む、重大な損害を引き起こす可能性のあるエラー、欠陥、およびセキュリティ上の脆弱性が含まれている可能性があることを理解します。
-
-10.3 Google はまた、商品性、特定目的への適合性、および権利侵害がないことの黙示的な保証および条件を含む(ただしこれらに限定されない)、明示的か黙示的かを問わずあらゆる種類のすべての保証および条件を明示的に否定します。
-
-11.責任の制限
-
-11.1 デベロッパーは、Google、その子会社および関連会社、ならびにそのライセンサーが、デベロッパーに発生した直接損害、間接損害、偶発的損害、特別損害、結果的損害、または懲罰的損害(データの喪失を含む)について、Google またはその代表者が当該損失が発生する可能性について告知されていたかどうか、または知っていたはずであるかどうかにかかわらず、いかなる責任法理のもとでもデベロッパーに対して責任を負わないことを明示的に理解し、これに同意します。
-
-12.補償
-
-12.1 法律で認められる最大限の範囲内において、デベロッパーは、(a)デベロッパーが Preview を使用したこと、および(b)デベロッパーが Preview で開発したアプリケーションが他者のいかなる知的財産権を侵害していること、または他者の名誉を毀損している、もしくは他者のパブリシティ権もしくはプライバシー権を侵害していること、および(c)デベロッパーが本契約に違反したことから発生したあらゆる申し立て、普通法上の訴訟、衡平法上の訴訟、または法的手続き、ならびにあらゆる損失、責任、損害、費用、および経費(合理的な弁護士報酬を含む)について、Google、その関連会社、ならびに当該各社の取締役、役員、従業員、代理人を防御し、補償し、免責することに同意します。
-
-13.契約の変更
-
-13.1 Google は、Preview の新しいバージョンを配布することにより、いつでも本契約を変更することができます。変更が生じた場合、Google は、Preview の提供ウェブサイト上に使用許諾契約の改訂版を公開します。
-
-14.法的一般条項
-
-14.1 本契約は、デベロッパーと Google の間の法的な合意のすべてを表し、デベロッパーによる Preview の使用(別の契約下で Google が提供するサービスを除く)に適用され、Preview に関するデベロッパーと Google の間のあらゆる事前の合意に完全に取って代わるものです。
-
-14.2 デベロッパーは、Google が本契約に定める(または適用される法律のもとで Google が享受できる)法的な権利または救済措置を行使または執行しなかった場合でも、Google の権利が正式に放棄されたとはみなされないこと、および Google が以後も引き続き当該権利および救済措置を行使または執行できることに同意します。
-
-14.3 本件について判断を下す管轄権を有する司法裁判所によって、本契約のいずれかの条項が無効と判断された場合、当該条項は、本契約の残りの部分に影響を与えることなく本契約から削除されるものとします。本契約の残りの条項は、以後も引き続き有効かつ執行可能であるものとします。
-
-14.4 デベロッパーは、Google が親会社となっている各グループ企業が、本契約の第三受益者となること、および当該企業が、当該企業に利益(または受益権)を付与する本契約の条項を直接執行する、また当該条項に依拠する権利を有することを了承し、これに同意します。上記以外のいかなる人または法人も、本契約の第三受益者とはならないものとします。
-
-14.5 輸出規制。Preview は、米国輸出管理法令の対象です。デベロッパーは、Preview に適用されるすべての国内および国際の輸出管理法令に従わなければなりません。これらの法律には、仕向け地、ユーザー、および最終用途に関する制限が含まれます。
-
-14.6 デベロッパーは、Google から事前に書面で承認を得ずに、本契約を譲渡または移転することはできません。また、そのような承認を得ずに計画された譲渡はすべて無効になります。デベロッパーは、Google から事前に書面で承認を得ずに、本契約に基づく自身の責任または義務を他者に委任してはなりません。
-
-14.7 本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連するすべての申し立ては、米国カリフォルニア州の抵触法を除いて、カリフォルニア州法に準拠するものとします。デベロッパーおよび Google は、本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連する法的事項の解決について、米国カリフォルニア州サンタクララ郡に所在の連邦裁判所または州立裁判所が専属管轄権を有することに合意します。上記にかかわらず、デベロッパーは、Google が任意の司法管轄区において差し止め命令による救済(または同等の緊急法的救済)を求める申し立てを行うことが認められることに同意します。
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">上記の利用規約を読み、同意します。</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本書の内容</h2>
- <ol>
- <li><a href="#sdk">Preview SDK</a></li>
- <li><a href="#docs">デベロッパー ドキュメント</a></li>
- <li><a href="#images">ハードウェアのシステム イメージ</a></li>
- </ol>
-
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- Android M Preview SDK には、アプリとプラットフォームの次期リリースで提供される新しい API とのテストに役立つ開発ツール、Android システム ファイル、ライブラリ ファイルが含まれています。
-このドキュメントでは、アプリのテスト用にダウンロードできる Preview のコンポーネントを入手する方法について説明します。
-
-</p>
-
-
-<h2 id="sdk">Preview SDK</h2>
-
-<p>
- Preview SDK <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK マネージャー</a>経由でダウンロードできます。Preview SDK のダウンロードと設定の詳細については、<a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Set Up the Preview SDK</a> をご覧ください。
-
-</p>
-
-
-<h2 id="docs">デベロッパー ドキュメント</h2>
-
-<p>
- デベロッパー ドキュメントのダウンロード パッケージでは、詳細な Preview の API リファレンス情報や API の比較レポートが提供されます。
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-<h2 id="images">ハードウェアのシステム イメージ</h2>
-
-<p>
- これらのシステム イメージでは、テスト用に物理端末にプラットフォームのプレビュー バージョンをインストールできます。
-端末にこれらのイメージを 1 つ以上設定すると、アプリをインストールして、プラットフォームの次期バージョンでアプリがどのように動作するかをテストできます。
-端末にシステム イメージをインストールするプロセスでは、<em>端末からすべてのデータが削除</em>されるため、システム イメージのインストール前にデータをバックアップする必要があります。
-
-
-</p>
-
-<p class="warning">
- <b>警告:</b> 次の Android システム イメージはプレビュー版であり、今後変更される可能性があります。デベロッパーによるシステム イメージの使用は、Android SDK Preview 使用許諾契約に準拠するものとします。
-Android Preview システム イメージは安定したリリースではなく、お使いのコンピュータ システム、端末、データに影響を与える可能性のあるエラーや欠陥が含まれている場合があります。
-
-プレビュー版の Android システム イメージは工場出荷版の OS と同等のテストを受けておらず、お使いの電話やインストールされているサービス、アンインストールの動作停止を引き起こす場合があります。
-
-
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">端末にイメージをインストールする</h3>
-
-<p>
- テスト用に端末イメージを使用するには、互換性のある端末にインストールする必要があります。次の手順に従って、システム イメージをインストールします。
-
-</p>
-
-<ol>
- <li>この一覧の中からいずれかのシステム イメージ パッケージをダウンロードして、解凍します。</li>
- <li>保持するデータを端末からバックアップします。</li>
- <li>
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- の手順に従って端末にイメージをフラッシュします。</li>
-</ol>
-
-<p class="note">
- <strong>注:</strong> 開発用端末に Preview のシステム イメージをフラッシュすると、OTA アップデートを通じて次のプレビュー リリースに自動的にアップグレードされます。
-
-</p>
-
-<h3 id="revertDevice">端末を工場出荷時の仕様に戻す</h3>
-
-<p>
- Preview をアンインストールして、工場出荷時の仕様に戻すには、
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> にアクセス
-して、端末にフラッシュするイメージをダウンロードします。同じページの手順に従って端末にイメージをフラッシュします。
-
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/ja/preview/features/app-linking.jd b/docs/html-intl/intl/ja/preview/features/app-linking.jd
deleted file mode 100644
index 92da0b42..0000000
--- a/docs/html-intl/intl/ja/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=App Links
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking,deeplinks,intents
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本書の内容</h2>
- <ol>
- <li><a href="#web-assoc">ウェブサイトの関連を宣言する</a></li>
- <li><a href="#verfy-links">App Link の検証を要求する</a></li>
- <li><a href="#user-manage">App Link 設定を管理する</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android インテント システムは、アプリでコンテンツや要求を処理できるようにする柔軟なメカニズムです。
- 複数のアプリが、それぞれのインテント フィルタに一致する URI パターンを宣言できます。デフォルトのローンチ ハンドラを持たないウェブリンクをユーザーがクリックしたとき、一致するインテント フィルタが宣言されているアプリの一覧から選択するダイアログがプラットフォームによってユーザーに表示されます。
-
-
-</p>
-
-<p>
- Android M Developer Preview でサポートされる App Links では、既存のリンク処理が改善され、アプリ開発者が所有するウェブドメインとアプリを関連付けられるようになりました。
-デベロッパーがこの関連を作成すると、プラットフォームが特定のウェブリンクの処理に使用するデフォルトのアプリを自動的に決めることができ、ユーザーにアプリを選択させる操作をスキップできます。
-
-
-</p>
-
-
-<h2 id="web-assoc">ウェブサイトの関連付けを宣言する</h2>
-
-<p>
- ウェブサイトのオーナーは、アプリのリンクを設定するための関連を宣言する必要があります。サイトのオーナーは、ドメインのよく知られた場所で {@code statements.json} という名前の JSON ファイルをホストすることで、アプリとの関係を宣言します。
-
-
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>注:</strong>
- M Developer Preview の間、JSON ファイルは http プロトコルを介して検証されます。プラットフォームの正式リリースでは、ファイルは暗号化された https プロトコルで検証されます。
-
-</p>
-
-<p>
- この JSON ファイルは、このドメイン下の URL のデフォルトのハンドラとして使用する必要のある Android アプリを示します。
-アプリは、次のフィールドに基づいて識別されます。
-</p>
-
-<ul>
- <li>{@code package_name}:アプリのマニフェストで宣言されたパッケージ名。</li>
-
- <li>{@code sha256_cert_fingerprints}:アプリの署名証明書の SHA256 のフィンガープリント。
- Java Keytool を使用して、次のコマンドでフィンガープリントを生成できます。
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- 次のファイル一覧は、
-{@code statements.json} ファイルのコンテンツと形式の例を示しています。
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">App Link の検証を要求する</h2>
-
-<p>
- アプリから、インテント フィルタのデータ エレメントのホスト名で定義されたアプリのリンクを、それぞれのウェブドメインでホストされる {@code statements.json} ファイルに対してプラットフォームが自動的に検証するよう要求できます。
-
-アプリリンクの検証を要求するには、次のマニフェスト コード スニペットのように {@code android:autoVerify}
- 属性をマニフェスト内の目的のインテント フィルタに追加します。
-
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- {@code android:autoVerify} 属性がアプリ マニフェストに存在する場合、プラットフォームはアプリのインストール時にアプリのリンクを検証しようとします。
-プラットフォームがアプリのリンクを正常に検証できない場合、アプリはウェブリンクの処理に適したアプリとして設定されません。
-次回ユーザーがいずれかのリンクを開いたとき、プラットフォームはユーザーに再度ダイアログを表示します。
-
-
-</p>
-
-<p class="note">
- <strong>注:</strong> テスト時に、ユーザーがシステムの設定アプリを使ってサポートされているリンクを開くアプリを明示的に有効にしていると、誤検出が原因で検証が失敗する場合があります。この場合、ダイアログは表示されず、リンクは直接アプリに送られますが、これは検証が成功したからではなく、ユーザーの設定に基づいて動作したからです。
-
-
-
-</p>
-
-
-<h2 id="user-manage">App Link 設定を管理する</h2>
-
-<p>
- ユーザーが希望する方法で URL を処理するように、ユーザー側でアプリのリンク設定を変更できます。アプリのリンクは、システムの設定アプリの <strong>[設定] > [アプリ] > [アプリ情報] > [デフォルトでの起動]</strong> で確認、管理できます。
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ja/preview/features/runtime-permissions.jd
deleted file mode 100644
index f582756..0000000
--- a/docs/html-intl/intl/ja/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-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>アプリのターゲットが M Preview SDK の場合、インストール時ではなく実行時に、パーミッションを付与するようユーザーに求めます。
-</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>アプリ</strong>] > <i>[app_name]</i> > [<strong>パーミッション</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> Preview リリースの場合、M Preview SDK に SDK の最小バージョンを設定して Preview SDK でコンパイルする必要があります。
-つまり、Developer Preview 中は従来のプラットフォームでそのようなアプリをテストできません。
-
-
-</p>
-
-<h3 id="perms-vs-intents">パーミッションとインテント</h3>
-
-<p>
- 多くの場合、アプリがタスクを実行するには 2 つの方法から選択できます。
-アプリ自体が操作を実行するパーミッションを要求できます。
-アプリでインテントを使うようにして、別のアプリがそのタスクを実行するようにすることもできます。
-
-</p>
-
-<p>
- たとえば、端末のカメラで写真を撮る機能がアプリに必要だとします。
-アプリは <code>android.permission.CAMERA</code> パーミッションをリクエストでき、それによりアプリが直接カメラにアクセスできるようになります。
-
-そのとき、アプリはカメラの API を使ってカメラを制御し、写真を撮ります。
-このアプローチにより、アプリが写真のプロセスを完全に制御し、カメラの UI をアプリに組み込むことができます。
-
-
-</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>操作を実行するとき、アプリによってユーザーの操作感が完全に制御されます。
-ただし、そのような幅広い制御により、適切な UI を設計する必要があるため、タスクが複雑化します。
-
- </li>
-
- <li>操作を初めて実行するときに、ユーザーに一度だけパーミッションの付与を求めるメッセージが表示されます。
-その後、アプリはユーザーからの介入は必要とせずに操作を実行できます。
-ただし、ユーザーがパーミッションを付与しない(または後でパーミッションを取り消す)場合、アプリは操作を一切実行できなくなります。
-
-
- </li>
-</ul>
-
-<p>
- インテントを使う場合:
-</p>
-
-<ul>
- <li>操作用に UI を設計する必要はありません。インテントを処理するアプリでは UI が提供されますが、これはユーザーの操作感を制御できないことを意味します。
-
-ユーザーはこれまでに見たことのないアプリと相互操作することになります。
-
- </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>
- Preview リリースの場合、<code>minSdkVersion</code> を <code>"MNC"</code> に設定して Preview SDK でコンパイルする必要があります。
-
-</p>
-
-<h3 id="m-only-perm">
- M Preview のみに対するパーミッションの設計
-</h3>
-
-<p>
- アプリ マニフェストで新しい <code><uses-permission-sdk-m></code> 要素を使って、M Developer Preview のみで必要なパーミッションを表示できます。
-このようにしてパーミッションを宣言すると、アプリを以前の端末にインストールする場合はユーザーにメッセージが表示されないか、アプリにパーミッションが付与されません。<code><uses-permission-sdk-m></code> 要素を使うと、新しいパーミッションを追加してインストールをアップデートするときにパーミッションの付与を強制せずにアプリのバージョンがアップデートされます。
-
-
-
-
-
-
-</p>
-
-<p>
- M Developer Preview を使ってアプリが端末で実行されている場合、<code><uses-permission-sdk-m></code> は <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> と同じように動作します。
-
-
- アプリをインストールするとき、パーミッションの付与を求めるメッセージは表示されず、アプリは必要なときにパーミッションを要求します。
-
-</p>
-
-<h3 id="prompting">
- パーミッションについてのダイアログを表示する
-</h3>
-
-<p>
- アプリで新しい M Developer Preview パーミッション モデルが使われている場合、M Preview を実行している端末でアプリを初めて起動するとき、すべての権限を付与する必要はありません。
-
-その代わりに、アプリは必要なときにパーミッションを要求します。
-アプリがパーミッションを要求すると、ユーザーにダイアログが表示されます。
-
-</p>
-
-<p>
- SDK 22 以降がインストールされた端末でアプリを実行する場合、アプリでは以前のパーミッション モデルが使われます。
-ユーザーがアプリをインストールすると、アプリがそのマニフェストで要求するすべてのパーミッションの付与を求めるメッセージが表示されます。ただし、<code><uses-permission-sdk-m></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>
-@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>
- アプリがすべてのパーミッションの状況下で確実に正しく動作することをテストしてください。
-M Preview SDK とともに、新しい <a href="{@docRoot}tools/help/adb.html">Android デバッグ ブリッジ(adb)</a>コマンドが導入され、試す必要のあるあらゆるパーミッション設定でアプリをテストできます。
-
-
-
-</p>
-
-<h3>
- 新しい adb コマンドとオプション
-</h3>
-
-<p>
- M Preview SDK Platform-tools では、アプリがパーミッションをどう処理するかをテストするための、いくつかの新しいコマンドが導入されました
-
-</p>
-
-<h4>
- パーミッション付きでインストールする
-</h4>
-
-<p>
- <a href="{@docRoot}tools/help/adb.html#move"><code>adb
- install</code></a> コマンドの新しい <code>-g</code> オプションを使ってアプリをインストールし、そのマニフェストにリストされるすべてのパーミッションを付与できます。
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g <path_to_apk>
-</pre>
-
-<h4>
- パーミッションの付与と取り消し
-</h4>
-
-<p>
- 新しい ADB <a href="{@docRoot}tools/help/adb.html#pm">Package Manager(pm)</a>コマンドを使って、インストールされているアプリにパーミッションを付与したり取り消したりできます。この機能は自動化されたテストに役立ちます。
-
-
-</p>
-
-<p>
- パーミッションを付与するには、Package Manager の <code>grant</code> コマンドを使います。
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant <package_name> <permission_name>
-</pre>
-
-<p>
- たとえば、com.example.myapp パッケージ パーミッションを付与してオーディオを録音するには、このコマンドを使います。
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
- パーミッションを取り消すには、Package Manager の <code>revoke</code> コマンドを使います。
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke <package_name> <permission_name>
-</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>
- アプリ対して 1 つ以上のパーミッションが必須である場合もあります。その場合は、アプリの起動後すぐに、すべてのパーミッションを要求することが合理的である場合があります。
-
-たとえば、カメラアプリを作成する場合、アプリは端末のカメラにアクセスする必要があります。
-アプリを初めて起動するときにカメラの使用についてのパーミッションを求められても驚かないはずです。
-
-ただし、同じアプリにユーザーの連絡先と写真を共有する機能もある場合は、最初の起動時にパーミッションを要求<em>しない</em>方が無難です。
-
-その代わりに、ユーザーが「共有」機能を使うまで待ち、そのときにパーミッションを要求します。
-
-</p>
-
-<p>
- アプリにチュートリアルが含まれる場合は、チュートリアルのシーケンスの最後で、アプリに必須のパーミッションを要求する方が合理的です。
-
-</p>
-
-<h3 id="bp-explain">
- パーミッションが必要な理由を説明する
-</h3>
-
-<p>
- <code>requestPermissions()</code> を呼び出すとき、システムによって表示されるパーミッション ダイアログにはアプリが必要としているパーミッションは表示されますが、理由は表示されません。
-
-これによりユーザーが困惑する場合もあります。
- <code>requestPermissions()</code> を呼び出す前に、アプリがパーミッションを必要としている理由をユーザーに説明するのはよい方法です。
-
-</p>
-
-<p>
- たとえば、カメラアプリでは、位置情報サービスを使って写真に位置情報タグを付けられるようにする場合があります。
-通常のユーザーは、写真に位置情報が含まれる場合があることを認識していない可能性があり、なぜカメラアプリで位置情報が必要なのか困惑する可能性があります。
-
-この場合、アプリが <code>requestPermissions()</code> を呼び出す<em>前</em>に、この機能についてユーザーに知らせることをお勧めします。
-
-
-</p>
-
-<p>
- その方法として、これらの要求をアプリのチュートリアルに組み込むこともできます。チュートリアルでは、アプリの各機能を順番に表示できるので、必要なパーミッションを説明できます。
-
-たとえば、カメラアプリのチュートリアルでは、「連絡先と写真を共有する」機能について説明し、ユーザーの連絡先を参照するためにアプリにパーミッションが必要であることをユーザーに知らせることができます。
-
-
-その後、アプリは <code>requestPermissions()</code> を呼び出して、ユーザーにそのアクセスを求めることができます。
-もちろん、すべてのユーザーがチュートリアルに従うわけではないため、アプリの通常操作中にパーミッションを確認して要求することも必要です。
-
-
-</p>
diff --git a/docs/html-intl/intl/ja/preview/index.jd b/docs/html-intl/intl/ja/preview/index.jd
deleted file mode 100644
index e44a42a..0000000
--- a/docs/html-intl/intl/ja/preview/index.jd
+++ /dev/null
@@ -1,71 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M Developer Preview</h1>
- <p class="dac-hero-description">
- 次期バージョンの Android に向けて準備しましょう。Nexus 5、6、9、Nexus Player でアプリをテストします。
-<strong>実行時パーミッション</strong>、 <strong>Doze</strong>、<strong>App Standby</strong> 省電力機能、新しい <strong>サポート テクノロジー</strong>などの新機能をご覧ください。
-
-
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- スタートガイド
- </a><br>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">リソース</h1>
- <div class="dac-section-subtitle">
- Android M 向けにアプリを用意する際に役立つ必須情報をご提供します。
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- 問題の報告
- </a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- Join G+ コミュニティ
- </a>
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/ja/preview/license.jd b/docs/html-intl/intl/ja/preview/license.jd
deleted file mode 100644
index 1e29b52..0000000
--- a/docs/html-intl/intl/ja/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=使用許諾契約
-
-@jd:body
-
-<p>
-Android SDK Preview をインストールする前に、次の利用規約に同意する必要があります。
-以下に記載するとおり、これは、Android SDK のプレビュー バージョンであり、変更される可能性があります。デベロッパーご自身の責任においてご使用ください。Android SDK Preview は安定したリリースではなく、お使いのコンピュータ システム、端末、データに深刻な影響を与える可能性のあるエラーまたは欠陥が含まれている場合があります。
-</p>
-
-<p>
-以下は、Android SDK Preview の使用許諾契約です(以下「本契約」)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1.はじめに
-
-1.1 Android SDK Preview(以下、本契約で「Preview」という。具体的には利用可能な場合には Android システム ファイル、パッケージ型 API、Preview ライブラリ ファイルを含む)は、本契約の規定に従ってライセンス許可されます。本契約では、デベロッパーの Preview の使用に関して、デベロッパーと Google の間で法的拘束力のある契約を結びます。
-
-1.2 「Android」とは、Android オープン ソース プロジェクト(http://source.android.com/ にて随時更新)にて利用可能な、端末向けの Android ソフトウェア スタックを意味します。
-
-1.3 「Google」とは、1600 Amphitheatre Parkway, Mountain View, CA 94043, United States に主たる事業所を有するデラウェア州法人である Google Inc. を意味します。
-
-2.本契約の同意
-
-2.1 Preview を使用するには、まず本契約に同意する必要があります。本契約に同意しない場合は Preview を使用できません。
-
-2.2 同意するかまたは Preview を使用するためにクリックすると、本契約に同意したことになります。
-
-2.3 米国またはその他の国(デベロッパーが居住している国かまたはデベロッパーが Preview を使用する国を含む)の法律により Preview の使用を禁止されている人である場合、Preview を使用することも、使用許諾契約に同意することもできません。
-
-2.4 雇用主またはその他の事業体を代表または代理して本契約に拘束されることに同意し Preview を企業または組織の内部で使用する場合、担当者の雇用主またはその他の事業体を本契約に法的に拘束する完全な法的権限を有していることを表明および保証するものとします。担当者が必要な権限を有していない場合は、担当者の雇用主またはその他の事業体を代表または代理して、本契約に同意することも、Preview を使用することもできません。
-
-3.Google Preview ライセンス
-
-3.1 本契約の規定に従い、Google は Android プラットフォーム上で実行するアプリケーションの開発に Preview を個人的にもしくは企業または組織の内部で使用するための、ロイヤリティ フリーな、譲渡不可で、非排他的な、サブライセンス不可の、限定された、取り消し可能なライセンスを付与するものとします。
-
-3.2 Preview に関するすべての法的権利、所有権、利益(Preview に含まれる知的財産権を含む)は Google またはサードパーティが所有するものとします。「知的財産権」とは、特許法、著作権法、営業秘密法、商標法、不当競争防止法に基づいて発生するすべての権利、およびその他のすべての所有権を意味します。デベロッパーに明示的に付与されていない権利は、すべて Google が所有します。
-
-3.3 本契約で明示的に許可されている目的以外においては、Preview を使用できません。当該のサードパーティのライセンスで必要とされる場合を除き、デベロッパーは、(a) Preview または Preview の一部をコピー(バックアップ目的を除く)、修正、改造、再配布、逆コンパイル、リバース エンジニアリング、逆アセンブルまたは派生物の作成、または(b)モバイル ハンドセットまたは個人用 PC 以外のハードウェア端末への Preview の読み込み、Preview と他のソフトウェアとの結合、または Preview の一部を組み込んだソフトウェアや端末の配布はできません。
-
-3.4 デベロッパーは、Android の断片化につながるような行為をしないことに同意します。これには、Preview から派生したソフトウェア開発キットの配布、作成への参加、宣伝を含みます(ただし必ずしもこれらには限定されません)。
-
-3.5 オープンソース ソフトウェア ライセンス下でライセンス付与された Preview のコンポーネントの使用、複製、配布は、本契約ではなく、そのオープンソース ソフトウェアのライセンスに準拠するものとします。デベロッパーは、許諾されるすべての権利下で、そのようなオープンソース ソフトウェア ライセンスに対して、優良ライセンシーのままでいることに同意し、そのような権利を終了、停止、または違反する可能性のあるいかなる行為も差し控えることに同意するものとします。
-
-3.6 デベロッパーは、Google が提供する Preview の形式および性質は事前の通知なしに変更される場合があり、今後リリースされる Preview のバージョンでは、以前のバージョンの Preview で開発されたアプリケーションとの互換性がない可能性があることに同意します。デベロッパーは、Google が事前の通知なく、Google の単独の裁量でデベロッパーまたはユーザーへの Preview(または Preview 内の一部の機能)の提供を(恒久的または一時的に)停止する場合があることに同意します。
-
-3.7 本契約のいかなる部分も、Google のいかなる商標名、商標、サービスマーク、ロゴ、ドメイン名、またはその他のブランド識別表示を使用する権利もデベロッパーに付与するものではありません。
-
-3.8 デベロッパーは、Preview に添付または収録されているすべての知的財産権に関する通知(著作権および商標の通知を含む)の削除、隠ぺい、改ざんを行わないことに同意します。
-
-4.デベロッパーによる Preview の使用
-
-4.1 Google は、本契約に基づき Preview を使用してデベロッパーが開発したソフトウェア アプリケーションに関して、デベロッパー(またはデベロッパーのライセンサー)からいかなる権利、所有権、または利益(当該アプリケーションに含まれる知的財産権を含む)も取得するものではないことに同意します。
-
-4.2 デベロッパーは、Preview を(a)本契約、および(b)該当する司法管轄区における適用される法律、規則、または一般に認められた慣行またはガイドライン(米国またはその他の該当国におけるデータまたはソフトウェアの輸出入に関する法律を含む)で認められている目的にのみ使用することに同意します。
-
-4.3 Preview を使用してアプリケーションを開発する場合、デベロッパーはユーザーのプライバシーおよび法的権利を保護することに同意します。ユーザーからデベロッパーにユーザー名、パスワード、またはその他のログイン情報または個人情報が提供される場合、デベロッパーは、情報がデベロッパーのアプリケーションに提供されることをユーザーに認識させ、当該ユーザーについてプライバシーに関する法的に十分な通知および保護を行わなければなりません。デベロッパーのアプリケーションに個人情報または秘密情報が保存される場合、この保存は保護された方法で行われなければなりません。ユーザーからデベロッパーのアプリケーションに Google アカウントの情報が提供された場合、デベロッパーのアプリケーションでは、ユーザーが許可したタイミングで、かつユーザーが許可した限定された目的にのみ、当該情報を使用してユーザーの Google アカウントにアクセスすることが認められるものとします。
-
-4.4 デベロッパーは、Preview に関して、第三者(Google、およびあらゆる携帯電話会社を含むが、これらに限定されない)のサーバー、ネットワーク、またはその他の財産またはサービスへの妨害、中断、損害、または許可されていない態様でのアクセスとなる行為(そのような行為に該当する対象製品の開発または販売 / 配布を含む)に関与しないことに同意します。
-
-4.5 デベロッパーは、デベロッパーが Android および Android のアプリケーションを介して作成、送信、表示するデータ、コンテンツ、リソース、および自身の行為の結果(Google に発生する可能性のあるあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.6 デベロッパーは、本契約、適用される第三者の契約もしくは利用規約、または適用される法律もしくは規則に基づく自身の義務に違反したこと、および当該違反の結果(Google または第三者に発生したあらゆる損失および損害を含む)について、自身が単独で責任を負うこと(および Google がこれについてデベロッパーまたはいかなる第三者に対しても一切責任を負わないこと)に同意します。
-
-4.7 Preview は開発中であり、デベロッパーによるテスティングやフィードバックは開発プロセスの重要な一部となります。デベロッパーは、Preview の使用により、一部の機能の実装が開発中であると認識し、Preview が安定したリリースの完全な機能性を持つことに依存すべきでないことを認識するものとします。本 Preview は、公式の Android SDK のリリース後はサポート対象でなくなるため、デベロッパーは、Preview を使用するいかなるアプリケーションも公然と配布または引き渡さないことに同意するものとします。
-
-5.デベロッパーの資格情報
-
-5.1 デベロッパーは、Google が発行した、またはデベロッパー自身で選択した、自身のデベロッパー用資格情報の秘密を保持する責任を負うこと、および自身のデベロッパー用資格情報のもとで開発されたすべてのアプリケーションについて単独で責任を負うことに同意します。
-
-6.プライバシーおよび情報
-
-6.1 Google は、Preview の継続的な技術革新と改良のために、ソフトウェアから特定の使用状況統計情報(一意識別子、関連する IP アドレス、ソフトウェアのバージョン番号、Preview のどのツール/サービスがどのように使用されているかに関する情報を含むが、これらに限定されない)を収集できます。この情報が収集される前に、Preview に通知が表示され、デベロッパーの同意が求められます。デベロッパーが同意しない場合は、情報は収集されません。
-
-6.2 収集されるデータは、Preview の改良のために集約された形で精査され、Google のプライバシー ポリシー(http://www.google.com/policies/privacy/)に従って管理されます。
-
-7.第三者のアプリケーション
-
-7.1 デベロッパーが、Preview を使用して第三者が開発したアプリケーションを実行する、あるいは第三者から提供されたデータ、コンテンツ、リソースにアクセスする場合、デベロッパーは、Google がそれらのアプリケーション、データ、コンテンツ、リソースについて責任を負わないことに同意します。デベロッパーは、そのような第三者のアプリケーションを介してアクセスするすべてのデータ、コンテンツ、リソースについては、それらを生成した者が単独で責任を負うものであり、Google はそれらの第三者のアプリケーション、データ、コンテンツ、またはリソースの使用もしくはアクセスによって生じたあらゆる損失および損害について一切責任を負わないことを理解します。
-
-7.2 デベロッパーは、そのような第三者のアプリケーションを介して表示されるデータ、コンテンツ、リソースは、提供者(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。デベロッパーは、当該所有者からの明確な許可がない限り、それらのデータ、コンテンツ、リソース(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-7.3 デベロッパーは、そのような第三者のアプリケーション、データ、コンテンツまたはリソースの使用が、デベロッパーと当該第三者間の別の規約に従うものであることを認識するものとします。
-
-8.Google API の使用
-
-8.1 Google API
-
-8.1.1 API を使用して Google からデータを取得する場合、デベロッパーは、そのデータは、Google またはデータを提供する事業体(あるいは代理の第三者または事業体)が所有する知的財産権で保護されている場合があることを認識するものとします。そのような API の使用は追加の利用規約に従うものとします。デベロッパーは、当該の利用規約による許可がない限り、そのデータ(全体または一部)の変更、貸与、賃貸、担保、配布または派生物の作成を行うことはできません。
-
-8.1.2 デベロッパーは、API を使用して Google からユーザーのデータを取得する場合、ユーザーが明示的に同意した場合のみ、およびユーザーが許可したタイミングとその目的にのみ、データを取得できることを理解し、同意します。
-
-9.本契約の終了
-
-9.1 本契約は、下記の規定に従ってデベロッパーまたは Google のいずれかによって解約されるまで、継続して適用されるものとします。
-
-9.2 デベロッパーが本契約の解約を希望する場合は、Preview および関連するデベロッパー資格情報の使用を停止することで、契約を終了するものとします。
-
-9.3 Google は、理由の有無にかかわらず、書面で通知することでいつでもデベロッパーとの本契約を解約することができます。
-
-9.4 本契約は事前の通知またはその他の措置なく、次のうち早い方に自動的に終了します。
-(A)Google が、デベロッパーが居住している国またはデベロッパーがサービスを使用する国での Preview または Preview の一部の配布を停止したとき。
-(B)Google が Android SDK の最終バージョンをリリースしたとき。
-
-9.5 本契約が終了すると、本契約で付与されていたライセンスは終了し、デベロッパーは速やかに Preview のすべての使用を停止するものとし、第 10 条、第 11 条、第 12 条、第 14 条の規定は無期限に効力を有するものとします。
-
-10.免責事項
-
-10.1 デベロッパーは、デベロッパーによる Preview の使用はデベロッパー自身の責任において行うものであること、および Preview は「現状有姿」かつ「提供可能な限りにおいて」、Google からのいかなる種類の保証もなく提供されるものであることを明示的に理解し、これに同意します。
-
-10.2 デベロッパーによる Preview および Preview の使用を通じてダウンロードまたはその他の方法で取得されたマテリアルの使用は、デベロッパー自身の裁量および責任において行うものであり、当該使用の結果として生じるデベロッパーのコンピュータ システムもしくはその他の端末への損害またはデータの喪失についての責任はデベロッパーが単独で負います。前述を制限することなく、Preview は安定したリリースではなく、コンピュータやその他の端末の利用の完全な回復不可能な損失を含む、重大な損害を引き起こす可能性のあるエラー、欠陥、およびセキュリティ上の脆弱性が含まれている可能性があることを理解します。
-
-10.3 Google はまた、商品性、特定目的への適合性、および権利侵害がないことの黙示的な保証および条件を含む(ただしこれらに限定されない)、明示的か黙示的かを問わずあらゆる種類のすべての保証および条件を明示的に否定します。
-
-11.責任の制限
-
-11.1 デベロッパーは、Google、その子会社および関連会社、ならびにそのライセンサーが、デベロッパーに発生した直接損害、間接損害、偶発的損害、特別損害、結果的損害、または懲罰的損害(データの喪失を含む)について、Google またはその代表者が当該損失が発生する可能性について告知されていたかどうか、または知っていたはずであるかどうかにかかわらず、いかなる責任法理のもとでもデベロッパーに対して責任を負わないことを明示的に理解し、これに同意します。
-
-12.補償
-
-12.1 法律で認められる最大限の範囲内において、デベロッパーは、(a)デベロッパーが Preview を使用したこと、および(b)デベロッパーが Preview で開発したアプリケーションが他者のいかなる知的財産権を侵害していること、または他者の名誉を毀損している、もしくは他者のパブリシティ権もしくはプライバシー権を侵害していること、および(c)デベロッパーが本契約に違反したことから発生したあらゆる申し立て、普通法上の訴訟、衡平法上の訴訟、または法的手続き、ならびにあらゆる損失、責任、損害、費用、および経費(合理的な弁護士報酬を含む)について、Google、その関連会社、ならびに当該各社の取締役、役員、従業員、代理人を防御し、補償し、免責することに同意します。
-
-13.契約の変更
-
-13.1 Google は、Preview の新しいバージョンを配布することにより、いつでも本契約を変更することができます。変更が生じた場合、Google は、Preview の提供ウェブサイト上に使用許諾契約の改訂版を公開します。
-
-14.法的一般条項
-
-14.1 本契約は、デベロッパーと Google の間の法的な合意のすべてを表し、デベロッパーによる Preview の使用(別の契約下で Google が提供するサービスを除く)に適用され、Preview に関するデベロッパーと Google の間のあらゆる事前の合意に完全に取って代わるものです。
-
-14.2 デベロッパーは、Google が本契約に定める(または適用される法律のもとで Google が享受できる)法的な権利または救済措置を行使または執行しなかった場合でも、Google の権利が正式に放棄されたとはみなされないこと、および Google が以後も引き続き当該権利および救済措置を行使または執行できることに同意します。
-
-14.3 本件について判断を下す管轄権を有する司法裁判所によって、本契約のいずれかの条項が無効と判断された場合、当該条項は、本契約の残りの部分に影響を与えることなく本契約から削除されるものとします。本契約の残りの条項は、以後も引き続き有効かつ執行可能であるものとします。
-
-14.4 デベロッパーは、Google が親会社となっている各グループ企業が、本契約の第三受益者となること、および当該企業が、当該企業に利益(または受益権)を付与する本契約の条項を直接執行する、また当該条項に依拠する権利を有することを了承し、これに同意します。上記以外のいかなる人または法人も、本契約の第三受益者とはならないものとします。
-
-14.5 輸出規制。Preview は、米国輸出管理法令の対象です。デベロッパーは、Preview に適用されるすべての国内および国際の輸出管理法令に従わなければなりません。これらの法律には、仕向け地、ユーザー、および最終用途に関する制限が含まれます。
-
-14.6 デベロッパーは、Google から事前に書面で承認を得ずに、本契約を譲渡または移転することはできません。また、そのような承認を得ずに計画された譲渡はすべて無効になります。デベロッパーは、Google から事前に書面で承認を得ずに、本契約に基づく自身の責任または義務を他者に委任してはなりません。
-
-14.7 本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連するすべての申し立ては、米国カリフォルニア州の抵触法を除いて、カリフォルニア州法に準拠するものとします。デベロッパーおよび Google は、本契約あるいは本契約に基づくデベロッパーと Google の関係から発生または関連する法的事項の解決について、米国カリフォルニア州サンタクララ郡に所在の連邦裁判所または州立裁判所が専属管轄権を有することに合意します。上記にかかわらず、デベロッパーは、Google が任意の司法管轄区において差し止め命令による救済(または同等の緊急法的救済)を求める申し立てを行うことが認められることに同意します。
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ja/preview/overview.jd b/docs/html-intl/intl/ja/preview/overview.jd
deleted file mode 100644
index c5390ef..0000000
--- a/docs/html-intl/intl/ja/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-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
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<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、Nexus Player(TV 向け)やエミュレータでアプリをテストしましょう。
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 最新プラットフォーム コード
- </h5>
-
- <p>
- プレビューで複数のアップデートが提供されますので、最新プラットフォームの変更に応じてテストできます。
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- OTA でのアップデート
- </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/">Issue Tracker</a> で問題を報告し、フィードバックをお送りください。
- <a href="http://g.co/dev/AndroidMDevPreview">M Developer コミュニティ</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 は 5 月 28 日から最終の Android M SDK まで実行されます。Android M SDK はまもなく、2015 年第三四半期に予定されている正式公開の前にリリースされます。
-
-
-</p>
-
-<p>
- 開発の主なマイルストーンごとにテスト端末へアップデートを配信する予定としています。
- 暫定マイルストーンは以下のとおりです。
-</p>
-
-<ul>
- <li>
- <strong>Preview 1</strong>(初期プレビュー リリース、5 月下旬)
- </li>
-
- <li>
- <strong>Preview 2</strong>(6 月下旬/7 月上旬)
- </li>
-
- <li>
- <strong>Preview 3</strong>(最終近く、7 月下旬)
- </li>
-</ul>
-
-<p>
- アップデートは第三四半期後半に予定されている<strong>最終 SDK</strong> で終了します。最終版では新しい Android に対する正式な API や最終的なシステム動作や機能が提供されます。
-
-
-</p>
-
-<p>
- Android M でのテストや開発に際しては、Preview アップデートがリリースされるたびに<strong>開発環境を最新に保つ</strong>ことを強くお勧めします。
-
- プロセスをより容易にするため、既に Preview ビルドがインストールされた端末に<strong>無線経由でアップデート(OTA)</strong>を配信します。また手動でダウンロードして展開できるシステム イメージもご提供します。
-
-
-</p>
-<p class="note">
- <strong>注:</strong> 最終 SDK とシステム イメージは OTA では配信できません。代わりにテスト端末に<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 では、ご利用のアプリをさまざまな画面サイズ、ネットワーク、テクノロジー、CPU や GPU チップセット、ハードウェア設計でテストするために必要なあらゆるものを備えています。
-
-
-</p>
-
-<h4>
- SDK ツール
-</h4>
-
-<p>
- 各コンポーネントは <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> の SDK Manager でダウンロードできます。
-</p>
-
-<ul>
- <li>M Developer Preview <strong>SDK ツール</strong>
- </li>
-
- <li>M Developer Preview <strong>エミュレータ システム イメージ</strong>(32 ビット版と 64 ビット版)
-
- </li>
-
- <li>M Developer Preview <strong>Android TV 版エミュレータ システム イメージ</strong>(32 ビット版)
-
- </li>
-</ul>
-
-<h4>
- ハードウェアのシステム イメージ
-</h4>
-
-<p>
- Nexus 端末向けハードウェア システム イメージは、<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>(AndroidTV)“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">Testing Guide</a> と <a href="behavior-changes.html">Behavior Changes</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 Issue Tracker</a> は、<strong>主なフィードバック チャンネル</strong>としてご利用になれます。
-
-バグやパフォーマンスの問題、一般的なフィードバックなど Issue Tracker からご連絡いただけます。
-また、<a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">既知の問題</a>
-やその回避策をご確認いただけます。
- </li>
-
- <li><a href="http://g.co/dev/AndroidMDevPreview">Android M Developer コミュニティ</a>は Google+ のコミュニティで、Android M を使っている<strong>他のデベロッパーとつながる</strong>ことができます。Android M に関する現象や考えを共有したり、疑問点を解消したりできます。
-
-
-
- </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
- 対象、プレビュー API、公開
-</h2>
-
-<p>
- Android M Developer Preview は開発リリースのみであり、<strong>標準 API レベルはありません</strong>。
-アプリのテストで互換性の問題は除外する場合(強く推奨します)、アプリの<code><a href=
- "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code> を <code>“MNC”</code> に設定することで M Developer Preview を対象にできます。
-
-
-
-</p>
-
-<p>
- Android M Developer Preview では<strong>プレビュー API</strong> を配信しています。現在 2015 年度第三四半期に予定されている最終 SDK がリリースされるまで、API は正式版ではありません。
-
-つまり、時間がたつにつれて <strong>API の細かな変更</strong>が見込まれます(特にプログラムの最初の数週間)。
-
-Android M Developer Preview でアップデートがあればその都度変更の概要をご提供します。
-
-</p>
-
-<p class="note">
- プレビュー API は変更される可能性がありますが、実行時パーミッションや省電力機能などのシステムの基幹にかかわる機能には変更はありませんので、すぐにテストしていただけます。
-
-
-</p>
-
-<p>
- 公開に関して、Google Play では <strong>M Developer Preview 対象アプリは公開できません</strong>。
-Android M 最終 SDK が利用可能になれば正式な Android M API レベルを対象にして、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">Behavior Changes</a> で新しい機能やご自分のアプリへの影響についてご確認ください。
-
-特に、<a href="{@docRoot}preview/features/runtime-permissions.html">実行時パーミッション</a> モデルや省電力機能、自動バックアップ機能についてお確かめください。
-
-
- </li>
-
- <li><a href="{@docRoot}preview/setup-sdk.html">Setting up the Preview SDK</a> の手順に従い、ご利用の環境をセットアップしてテスト端末を構成してください。
-
-
- </li>
-
- <li><a href="https://developers.google.com/android/nexus/images">コピー手順</a>に従い、最新の M Developer Preview システム イメージを Nexus 5、6、9、Nexus Player にコピーします。
-
-1 度開発端末に Preview 環境をコピーすると、アップデートが無線経由(OTA)で配信されます。</a>
-
- </li>
-
- <li><a href="{@docRoot}preview/download.html#docs">M Preview API リファレンス</a>や<a href="{@docRoot}preview/samples.html">M Preview サンプル</a>をダウンロードして、新しい API の機能についてさらに学び、ご自分のアプリで活用する方法についてご確認ください。
-
-
-
- </li>
-
- <li><a href="http://g.co/dev/AndroidMDevPreview">Android M Developer コミュニティ</a>に参加して最新のニュースを入手し、Preview に取り組んでいる他のデベロッパーとつながってください。
-
-
- </li>
-</ol>
-
-<p>
- Android M Developer Preview プログラムへのご参加ありがとうございます。
-</p>
diff --git a/docs/html-intl/intl/ja/preview/samples.jd b/docs/html-intl/intl/ja/preview/samples.jd
deleted file mode 100644
index 6c44f4d..0000000
--- a/docs/html-intl/intl/ja/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=サンプル
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- 以下のコードサンプルは、M Developer Preview 用に提供しています。サンプルを Android Studio でダウンロードするには、<b>[File] > [Import Samples]</b> メニュー オプションを選択します。
-
-</p>
-
-<p class="note">
- <strong>注:</strong> 以下のダウンロード可能なプロジェクトは、Gradle と Android Studio でご利用いただくために提供しています。
-
-</p>
-
-
-<h3 id="RuntimePermissions">実行時パーミッション</h3>
-
-<p>
- Android M では、システムのパーミッションの仕組みが変わります。ユーザーは、パーミッション要求の承認をインストール時ではなく、実行時に求められるようになります。
-このサンプルでは、このパーミッションの要求方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">GitHub でサンプルを入手</a></p>
-
-<h3 id="ConfirmCredentials">資格情報の確認</h3>
-
-<p>
- このサンプルでは、アプリで端末の資格情報を認証手段として使用する方法を紹介しています。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">GitHub でサンプルを入手</a>
-</p>
-
-<h3 id="FingerprintDialog">指紋ダイアログ</h3>
-
-<p>
- このサンプルでは、ユーザーを認証するために登録された指紋をアプリで識別する方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">GitHub でサンプルを入手</a></p>
-
-<h3 id="AutomaticBackup">アプリの自動バックアップ</h3>
-
-<p>
- Android M では、アプリの設定の自動バックアップが導入されました。このサンプルでは、設定のバックアップを管理するためにアプリにフィルタリング ルールを追加する方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">GitHub でサンプルを入手</a></p>
-
-<h3 id="CameraRaw">Camera 2 Raw</h3>
-
-<p>
- このサンプルでは、<code>Camera2</code> API を使用して、RAW カメラバッファをキャプチャし、<code>DNG</code> ファイルとして保存する方法を紹介しています。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">GitHub でサンプルを入手</a></p>
-
-<h3 id="ActiveNotification">アクティブ通知</h3>
-
-<p>
- このサンプルでは、その時点でアプリに表示されている通知の数を <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a> を使って調べる方法を紹介しています。
-
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">GitHub でサンプルを入手</a></p>
diff --git a/docs/html-intl/intl/ja/preview/setup-sdk.jd b/docs/html-intl/intl/ja/preview/setup-sdk.jd
deleted file mode 100644
index b4fe2e0..0000000
--- a/docs/html-intl/intl/ja/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Preview SDK のセットアップ
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本書の内容</h2>
- <ol>
- <li><a href="#get-as13">Android Studio 1.3 を入手する</a></li>
- <li><a href="#get-sdk">Preview SDK を入手する</a></li>
- <li><a href="#create-update">プロジェクトを作成または更新する</a></li>
- <li><a href="#setup-test">テスト用にセットアップする</a></li>
- </ol>
- </div>
-</div>
-
-<p>M Developer Preview SDK は、Android SDK Manager から入手できます。このドキュメントは、Android SDK Manager の使用方法やプロジェクトの作成方法などの Android アプリ開発についての知識をお持ちの方を対象にしています。
-
-Android アプリを初めて開発する場合は、まず <a href="{@docRoot}training/basics/firstapp/index.html">Building Your First App</a> のトレーニング レッスンをご覧ください。</a>
-
-</p>
-
-<h2 id="get-as13">Android Studio 1.3 を入手する</h2>
-
-<p>Developer Preview は、現在プレビュー段階にある Android Studio 1.3 に最適化されています。
-Preview SDK をご使用になる場合は、Android Studio 1.3 のプレビュー版をインストールすることをお勧めします。
-</p>
-
-<p class="caution"><strong>注意:</strong> Android Studio 1.3 の Canary プレビューは、現在も開発中です。
-メインの開発用マシンを Developer Preview のテストに使用する場合、テスト用に 2 つ目の Android Studio をインストールできます。
-
-</p>
-
-<p>Android Studio 1.3 プレビューをインストールするには: </p>
-
-<ol>
- <li><a href="{@docRoot}tools/studio/index.html">Android Studio</a> をダウンロードして起動します。
-
- </li>
-
- <li>[<strong>Settings</strong>] ウィンドウを開きます(Windows では、 <strong>[File] > [Settings]</strong> を選択すると開くことができます)。
-<strong>[Appearance & Behavior] > [System Settings] > [Updates]</strong> を選択します。
-
-
-
- <p class="aside">OSX では、Android Studio の [<strong>Preferences</strong>] ウィンドウで、[<strong>Appearance & Behavior</strong>] パネルを見つけることができます。
-
-</p>
- </li>
-
- <li> [<strong>Updates</strong>] パネルで、<strong>[Automatically check updates for:] に
-[Canary Channel]</strong> を選択します。
- </li>
-
- <li>[<strong>Updates</strong>] パネルで、[<strong>Check Now</strong>] を選択して最新の Canary ビルドの有無を確認します。
-メッセージが表示されたら、最新の Canary ビルドをダウンロードしてインストールします。
-
- </li>
-</ol>
-
-<h2 id="get-sdk">Preview SDK を入手する</h2>
-
-<p>開発環境に Preview SDK コンポーネントを追加するには: </p>
-
-<ol>
- <li>Android Studio 1.3 プレビューを起動します。
- </li>
-
- <li>[<strong>Settings</strong>] ウィンドウを開きます(Windows では、 <strong>[File] > [Settings]</strong> を選択すると開くことができます)。
-<strong>[Appearance & Behavior] > [System Settings] > [Updates]</strong> を選択します。
-
-
-
- <p class="aside">OSX では、Android Studio の [<strong>Preferences</strong>] ウィンドウで、[<strong>Appearance & Behavior</strong>] パネルを見つけることができます。
-
-</p>
- </li>
-
- <li>[<strong>Updates</strong>] パネルで、<strong>[Automatically check updates for:] に
-[Canary Channel]</strong> を、<strong>[Automatically check updates for Android SDK:] に
-[Preview Channel]</strong> を選択します。
- </li>
-
- <li>[<strong>Android SDK Manager</strong>] を起動します。(Android Studio 1.3 では、SDK Manager はスタンドアロン アプリケーションではなくなり Android Studio に統合されました。)
-
-
- </li>
-
- <li>[<strong>Platforms</strong>] セクションで、[<strong>Android MNC Preview</strong>] を選択します。
-
- </li>
-
- <li>[<strong>Tools</strong>] セクションで、最新の Android [<strong>SDK Tools</strong>]、[<strong>Platform-tools</strong>]、[<strong>Build-tools</strong>] を選択します。
-
-
- </li>
-
- <li>[<strong>Install packages</strong>] をクリックし、すべてのパッケージの使用許諾契約に同意します。
-
- </li>
-
- <li>[<strong>Settings</strong>] ウィンドウを開き、<strong>[Appearance & Behavior] > [System Settings] > [Android SDK]</strong> を選択し、M Developer Preview がインストールされていることを確認します。
-
-</li>
-
- <li>[<strong>Android SDK</strong>] パネルで、[<strong>SDK Platforms</strong>] を選択します。
-[<strong>Android MNC Preview</strong>] が [<em>Installed</em>] と表示されているはずです。
-また、[<strong>SDK Tools</strong>] タブを開き、最新のツールがインストールされていることを確認します。
-
-
- </li>
-</ol>
-<p>上記の手順を完了すると、開発環境でプレビュー コンポーネントを利用できるようになります。
- </p>
-
-
-<h2 id="create-update">プロジェクトを作成または更新する</h2>
-
-<p>
- プレビュー API を使用するには、プレビュー コンポーネントを使用するために開発プロジェクトを作成または更新する必要があります。
-
-</p>
-
-
-<h3 id="create">新しいプロジェクトを作成する</h3>
-
-<p>
- Preview SDK を使用してプロジェクトを作成するときには、Android Studio を使用することをお勧めします。<a href="{@docRoot}sdk/installing/create-project.html">Creating a Project</a> に記載されている手順に従い、プロジェクト ウィザードで [<em>Form Factors</em>] 画面が表示されるまで操作を進めます。
-
-次に、以下の手順に従い、Preview SDK 用に構成されたプロジェクトを作成します。
-
-</p>
-
-<ul>
- <li>[<strong>Phone and Tablet</strong>] をチェックします。</li>
- <li>[<strong>Minimum SDK</strong>] で、[<strong>MNC: Android M (Preview)</strong>] を選択します。
-</li>
-</ul>
-
-
-<h3 id="update">既存のプロジェクトを更新する</h3>
-
-<p>
- 既存のプロジェクトを使用する場合は、プロジェクト構成を変更してプレビュー API を有効にする必要があります。開発環境で、モジュールの <code>build.gradle</code> ファイルを開き、次のように値を設定します。
-
-
-</p>
-
-<ul>
- <li><code>compileSdkVersion</code> に <code>'android-MNC'</code> を設定します。</li>
- <li><code>minSdkVersion</code> に <code>'MNC'</code> を設定します。</li>
- <li><code>targetSdkVersion</code> に <code>'MNC'</code> を設定します。</li>
-</ul>
-
-
-<h2 id="setup-test">テスト用にセットアップする</h2>
-
-<p>
- Preview SDK でアプリをテストするには、プレビュー版のプラットフォームを使用して構成した端末または仮想端末が必要です。
-互換端末をお持ちの場合、テスト用にプレビュー プラットフォームをインストールできます。
-互換端末をお持ちでない場合は、テスト用に仮想端末を構成できます。
-</p>
-
-<h3 id="setup-device">物理端末をセットアップする</h3>
-
-<p>
- Nexus 5、Nexus 6、Nexus 9、Android TV をお持ちの場合は、アプリのテスト用にこれらの端末にプレビュー システム イメージをインストールできます。Android Virtual Device Manager ツールを使用すると、Android Studio 内から仮想端末をプレビュー版のプラットフォームでセットアップできます。
-
-
-
-</p>
-
-<p class="caution">
- <strong>重要:</strong> 端末にプレビュー イメージをインストールすると、<em>端末からすべてのデータが削除されます</em>。そのため、プレビュー イメージをインストールする前にすべてのデータをバックアップする必要があります。
-
-</p>
-
-<h3 id="setupAVD">仮想端末をセットアップする</h3>
-
-<p>
- Android Virtual Device Manager ツールを使用すると、Android Studio 内からプレビュー版のプラットフォームで仮想端末をセットアップできます。
-
-</p>
-
-<p>AVD マネージャーで AVD を作成するには: </p>
-
-<ol>
- <li><a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>の説明に従って、開発環境に Preview SDK をインストールします。
-
-</li>
- <li><a href="{@docRoot}tools/devices/managing-avds.html">Managing AVDs with AVD Manager</a> の手順に従います。
-
-以下の設定を使用します。
- <ul>
- <li><strong>端末:</strong> Nexus 5、Nexus 6、Nexus 9、Android TV</li>
- <li><strong>対象:</strong>
- Android M (Preview) - API Level M</li>
- <li><strong>ABI:</strong> x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- テスト用の仮想端末の作成についての詳細は、<a href="{@docRoot}tools/devices/index.html">Managing Virtual Devices</a> をご覧ください。
-</p>
diff --git a/docs/html-intl/intl/ja/preview/testing/guide.jd b/docs/html-intl/intl/ja/preview/testing/guide.jd
deleted file mode 100644
index b70e04d..0000000
--- a/docs/html-intl/intl/ja/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=テストガイド
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=プレビュー リソース,Android M,テスト,パーミッション
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本書の内容</h2>
- <ol>
- <li><a href="#runtime-permissions">パーミッションをテストする</a></li>
- <li><a href="#doze-standby">Doze と App Standby をテストする</a></li>
- <li><a href="#ids">自動バックアップと端末識別子</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android M Developer Preview を利用すると、次期バージョンのプラットフォームでアプリが動作するか確認できます。
-Android M Developer Preview には、<a href="{@docRoot}preview/api-overview.html">API の概要</a>と<a href="{@docRoot}preview/behavior-changes.html">動作の変更点</a>に記載されているように、アプリに影響を与える可能性のある多くの API と動作の変更が含まれています。
-
-Android M Developer Preview でアプリをテストする時には、アプリの良好な使用感を確保するために、システムのいくつかの変更点に特に注意する必要があります。
-
-
-</p>
-
-<p>
- このガイドでは、アプリで Android M Developer Preview の機能の何をどのようにテストすればよいか説明します。以下の機能は、アプリの動作に大きな影響を与える可能性があるので、優先してテストする必要があります。
-
-
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">パーミッション</a>
- </li>
- <li><a href="#doze-standby">Doze と App Standby</a>
- </li>
- <li><a href="#ids">自動バックアップと端末識別子</a></li>
-</ul>
-
-<p>
- テスト用のプレビュー システム イメージを使用した端末または仮想端末のセットアップ方法の詳細については、<a href="{@docRoot}preview/setup-sdk.html">Preview SDK のセットアップ</a>をご覧ください。
-
-</p>
-
-
-<h2 id="runtime-permissions">パーミッションをテストする</h2>
-
-<p>
- <a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a> モデルの変更により、ユーザーがアプリにパーミッションを付与する方法が変わりました。
-アプリでは、インストール時にすべてのパーミッションを要求するのではなく、実行時に個々のパーミッションをユーザーに要求する必要があります。
-
-これにより、ユーザーは、各アプリのアクティビティをより細かくコントロールできるようになるだけではなく、アプリが各パーミッションを要求する理由をこれまでよりもよく理解できるようになります。
-ユーザーは、いつでもアプリに個別にパーミッションを付与したり、付与したパーミッションを個別に取り消したりできます。
-この機能は、アプリの動作に大きな影響を与える可能性があり、アプリの一部の機能が動作しなくなったり、限定された機能しか使えなくなったりする可能性もあります。
-
-
-</p>
-
-<p class="caution">
- この変更は、アプリがこの新しいバージョンを対象にしているかどうかにかかわらず、この新しいプラットフォーム上で実行されるすべてのアプリに影響します。
-このプラットフォームはレガシーアプリに限定的な互換動作を提供しますが、公式版のプラットフォームのリリースに合わせてアップデート版のアプリを公開できるように、新しいパーミッション モデルに対応させるためのアプリの移行を今から計画することを強くお勧めします。
-
-
-</p>
-
-
-<h3 id="permission-test-tips">テストのヒント</h3>
-
-<p>
- 以下のテストのヒントを活用して、アプリでの新しいパーミッション動作のテストを計画し、実行してください。
-
-</p>
-
-<ul>
- <li>アプリの現在のパーミッションと関連するコードパスを確認します。</li>
- <li>パーミッションで保護されているサービスとデータ間のユーザーフローをテストします。</li>
- <li>付与されたパーミッションと取り消されたパーミッションのさまざまな組み合わせをテストします。</li>
- <li>{@code adb} ツールを使用して、コマンドラインからパーミッションを管理します。
- <ul>
- <li>パーミッションとステータスをグループ化して表示します。
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>以下の構文を使用して 1 つまたは複数のパーミッションを付与または取り消します。<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>アプリでパーミッションを使用しているサービスを分析します。</li>
-</ul>
-
-<h3 id="permission-test-strategy">テスト方針</h3>
-
-<p>
- このパーミッションの変化は、アプリの構造と設計、ユーザーが体験する使用感とフローに影響を与えます。
-アプリの現在のパーミッション利用の状況を調査し、新しいフローの検討を開始する必要があります。
-このプラットフォームの公式リリースは互換動作を提供しますが、互換動作に頼ることなくアプリのアップデートを計画することを強くお勧めします。
-
-
-</p>
-
-<p>
- まずアプリが実際に必要とし使用しているパーミッションを特定してから、パーミッションで保護されたサービスを使用している各コードパスを探してください。
-これには、新しいプラットフォーム上でのテストと、コードの解析が必要です。
-テストでは、アプリの {@code targetSdkVersion} をこのプレビュー版に変えて、実行時パーミッションのオプトインに重点的にテストする必要があります。
-詳細については、<a href="{@docRoot}preview/setup-sdk.html#">Preview SDK のセットアップ</a>をご覧ください。
-
-</p>
-
-<p>
- パーミッションの取り消しと追加のさまざまな組み合わせをテストし、パーミッションに依存するユーザーフローを確認します。
-パーミッションへの依存性が明白または論理的ではない箇所では、依存性を取り除くため、またはパーミッションが必要な理由を明白にするために、フローのリファクタリングまたはコンパートメント化を検討する必要があります。
-
-
-</p>
-
-<p>
- 実行時パーミッションの動作、テスト、ベスト プラクティスについては、Developer Preview ページの<a href="{@docRoot}preview/features/runtime-permissions.html">パーミッション</a>をご覧ください。
-
-
-</p>
-
-
-<h2 id="doze-standby">Doze と App Standby をテストする</h2>
-
-<p>
- 省電力機能である Doze と App Standby により、端末がアイドル状態のときやそのアプリにフォーカスがないときに、アプリが実行できるバックグラウンド処理の量が制限されます。
-システムによってアプリに加えられる可能性のある制限には、ネットワーク アクセスの制限や停止、バックグラウンド タスクの停止、通知の停止、ウェイク リクエストの無視、アラームなどがあります。
-
-これらの省電力のための最適化が行われた状態で確実にアプリが適切に動作するように、これらの省電力状態をシミュレートしてアプリをテストする必要があります。
-
-
-</p>
-
-<h4 id="doze">アプリで Doze をテストする</h4>
-
-<p>アプリで Doze をテストするには: </p>
-
-<ol>
-<li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li>
-<li>端末を開発マシンに接続し、アプリをインストールします。</li>
-<li>アプリを実行し、アクティブ状態のままにします。</li>
-<li>以下のコマンドを実行して、端末の Doze モードへの移行をシミュレートします。
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>端末がアクティブ状態に戻ったときのアプリの動作を観察します。端末が Doze モードから抜けるときに、アプリがスムーズに復帰することを確認します。
-</li>
-</ol>
-
-
-<h4 id="standby">アプリで App Standby をテストする</h4>
-
-<p>アプリで App Standby モードをテストするには: </p>
-
-<ol>
- <li>M Preview のシステム イメージを使用して、ハードウェア端末または仮想端末を構成します。</li>
- <li>端末を開発マシンに接続し、アプリをインストールします。</li>
- <li>アプリを実行し、アクティブ状態のままにします。</li>
- <li>以下のコマンドを実行して、アプリのスタンバイ モードへの移行をシミュレートします。
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>以下のコマンドを使用して、アプリのウェイクをシミュレートします。
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>アプリがウェイク状態に戻ったときのアプリの動作を観察します。アプリがスタンバイ モードからスムーズに復帰することを確認します。
-特に、アプリの通知とバックグラウンド ジョブが想定通りの動作を続けているかを確認する必要があります。
-</li>
-</ol>
-
-<h2 id="ids">アプリの自動バックアップと端末固有識別子</h2>
-
-<p>アプリが、Google Cloud Messaging の登録 ID などの何らかの端末固有の識別子を内部ストレージに保持している場合、<a href="{@docRoot}preview/backup/index.html">アプリの自動バックアップ</a>の説明に従って、そのストレージのロケーションを自動バックアップの対象から除外してください。
-
-
-
- </p>
diff --git a/docs/html-intl/intl/ja/preview/testing/performance.jd b/docs/html-intl/intl/ja/preview/testing/performance.jd
deleted file mode 100644
index 1c3ae02..0000000
--- a/docs/html-intl/intl/ja/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=表示パフォーマンスのテスト
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=パフォーマンス,fps,ツール
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本書の内容</h2>
- <ol>
- <li><a href="#measure">UI のパフォーマンスを測定する</a>
- <ul>
- <li><a href="#aggregate">フレームのデータを集計する</a></li>
- <li><a href="#timing-info">正確なフレーム タイミング情報</a></li>
- <li><a href="#timing-dump">簡易フレーム タイミング ダンプ</a></li>
- <li><a href="#collection-window">データ収集用のウィンドウを制御する</a></li>
- <li><a href="#diagnose">パフォーマンスの低下を診断する</a></li>
- <li><a href="#resources">追加リソース</a></li>
- </ul>
- </li>
- <li><a href="#automate">UI パフォーマンス テストを自動化する</a>
- <ul>
- <li><a href="#ui-tests">UI テストをセットアップする</a></li>
- <li><a href="#automated-tests">自動化された UI テストをセットアップする</a></li>
- <li><a href="#triage">見つけた問題を選別し解決する</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- ユーザー インターフェース(UI)のパフォーマンスをテストすることで、アプリが機能面での要件に合うだけでなく、ユーザーがアプリをスムーズに操作でき、毎秒安定して 60 フレーム(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">why 60fps?</a>)で、フレームのドロップや遅延なしで、言い換えれば<em>ジャンク</em>なしで実行されるようにします。
-
-
-このドキュメントでは、UI のパフォーマンスを測定することができるツールについて説明し、UI パフォーマンスの測定値をテストで活用する方法を提示します。
-
-
-</p>
-
-
-<h2 id="measure">UI のパフォーマンスを測定する</h2>
-
-<p>
- パフォーマンスを改善するには、まずシステムのパフォーマンスを測定し、次にパイプラインのさまざまな箇所で発生している問題を診断し識別する必要があります。
-
-
-</p>
-
-<p>
- <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> は端末上で動作し、システム サービスの状態についての情報をダンプする Android ツールです。
-
-<em>gfxinfo</em> コマンドを dumpsys に渡すと、記録中に実行されたアニメーションのフレームに関連するパフォーマンス情報が logcat に出力されます。
-
-
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- このコマンドは、フレーム タイミング データの複数の異なるバリアントを生成することがあります。
-</p>
-
-<h3 id="aggregate">フレームのデータを集計する</h3>
-
-<p>
- M Preview では、このコマンドは、プロセスの生存期間全体を通して収集したフレームのデータの集計結果を logcat に出力します。
-次に例を示します。
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- これらのデータは、アプリのレンダリングのパフォーマンスと多くのフレームの全体での安定性を大まかに示します。
-
-</p>
-
-
-<h3 id="timing-info">正確なフレーム タイミング情報</h3>
-
-<p>
- M Preview では、gfxinfo のための新しいコマンド、<em>framestats</em> が採用され、最新のフレームのフレーム タイミングのきわめて詳細な情報を提供します。そのため、より正確に問題を追跡しデバッグできるようになります。
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- このコマンドは、アプリによって生成された最新 120 フレームのフレーム タイミング情報を、ナノ秒の精度を持つタイムスタンプを使用して出力します。以下は、adb dumpsys gfxinfo
- <PACKAGE_NAME> framestats による未加工の出力例です。
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- この出力の各行が、アプリによって生成される 1 つのフレームを示します。各ラインは、フレームを生成するパイプラインの各段階で費やされた時間を出力する固定された数の列を持ちます。
-次のセクションでは、各列が何を示しているかも含めて、フォーマットを詳細に説明します。
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats データ形式</h4>
-
-<p>
- データは CSV 形式で出力されるため、お好みのスプレッドシート ツールに簡単に貼り付けたり、スクリプトで簡単に集計して解析したりできます。
-以下のリストは、出力データ列のフォーマットを説明しています。
-すべてのタイムスタンプはナノ秒単位で出力されます。
-</p>
-
-<ul>
- <li>FLAGS
- <ul>
- <li>FLAGS 列が「0」の行には、FRAME_COMPLETED 列から INTENDED_VSYNC 列を引いて計算されたフレームの総処理時間が示されます。
-
- </li>
-
- <li>FLAGS 列が「0」以外の場合、そのフレームは通常のパフォーマンスからの外れ値であると定められているのでその行は無視する必要があります。この場合、レイアウトと描画に 16 ミリ秒よりも長くかかることが想定されています。
-
-これは、以下の原因で起きることがあります。
- <ul>
- <li>ウィンドウのレイアウトが変更された(アプリケーションの最初のフレームの場合や画面が回転された後など)。
-
- </li>
-
- <li>フレームが省略された。この場合、いくつかの値には不適切なタイムスタンプが含まれます。
-たとえば 60 fps よりも速く実行されている場合や、画面上にダーティで終わったものが何もない場合など、フレームは省略することができます。これは必ずしもアプリに問題がある兆候ではありません。
-
-
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>フレームの意図された開始ポイント。この値が VSYNC と異なる場合、vsync 信号にすぐに応答することを阻止する動作が UI スレッド上で発生していたことを意味します。
-
-
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>すべての vsync リスナーとフレームの描画(Choreographer フレーム コールバック、アニメーション、View.getDrawingTime() など)で使用された時間の値。
-
- </li>
-
- <li>VSYNC と VSYNC のアプリケーションへの影響の詳細については、<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">Understanding VSYNC</a> のビデオをご覧ください。
-
-
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>入力キューの最も古い入力イベントのタイムスタンプ。フレームの入力イベントが存在しない場合は、Long.MAX_VALUE。
-
- </li>
-
- <li>この値は、主にプラットフォームの動作のパフォーマンスを示すことを意図しており、アプリのデベロッパーが活用できる場面は限定されます。
-
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>入力キューの最も新しい入力イベントのタイムスタンプ。フレームの入力イベントが存在しない場合は、0。
-
- </li>
-
- <li>この値は、主にプラットフォームの動作のパフォーマンスを示すことを意図しており、アプリのデベロッパーが活用できる場面は限定されます。
-
- </li>
-
- <li>ただし、FRAME_COMPLETED から NEWEST_INPUT_EVENT を引いた値を確認することによって、そのアプリが増やす待ち時間がどれくらいか大まかに知ることができます。
-
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>入力イベントがアプリケーションにディスパッチされるときのタイムスタンプ。
- </li>
-
- <li>この値と ANIMATION_START との間の時間を確認することで、アプリケーションが入力イベントを処理するために費やした時間を測定することができます。
-
- </li>
-
- <li>この値が大きい(> 2 ミリ秒)の場合、View.onTouchEvent() などの入力イベントを処理するためにアプリが長い時間を費やしていることを意味します。これは、この動作の最適化または別のスレッドへの移行が必要なことを示している場合があります。
-
-新しいアクティビティやそれに類するものを起動するクリック イベントなどの一部のシナリオでは、この値が大きいことは想定済みであり許容範囲内です。
-
-
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>Choreographer を使用して登録されたアニメーションが実行されたときのタイムスタンプ。
- </li>
-
- <li>この値と PERFORM_TRANVERSALS_START の間の時間を確認することで、実行中のすべてのアニメーター(ObjectAnimator、ViewPropertyAnimator、共通の遷移となっている Transitions)を評価するのにかかった時間を確認することができます。
-
-
- </li>
-
- <li>この値が大きい(> 2 ミリ秒)の場合、アプリがカスタム アニメーターを記述していないか、また ObjectAnimators がアニメーション化しているのがどの項目かを確認して、それらがアニメーションに適しているかどうか確かめてください。
-
-
- </li>
-
- <li>Choreographer についての詳細は、<a href="https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a> のビデオをご覧ください。
-
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>この値から DRAW_START を引くと、レイアウトと測定のフェーズが完了するまでにかかる時間を知ることができます(スクロールまたはアニメーションの間は、この時間がゼロに近いことが望ましいことにご注意ください)。
-
-
- </li>
-
- <li>レンダリング パイプラインのレイアウトと測定のフェーズについての詳細は、<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">Invalidations, Layouts and Performance</a> のビデオをご覧ください。
-
-
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>performTraversals の描画のフェーズが開始された時間。これは、無効化されているビューのディスプレイ リストを記録する開始ポイントです。
-
- </li>
-
- <li>この値と SYNC_START の間の時間は、ツリー内のすべての無効化されているビュー上で View.draw() を呼び出すのにかかった時間を示します。
-
- </li>
-
- <li>描画モデルに関する詳細は、<a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Hardware Acceleration</a> または <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">Invalidations, Layouts and Performance</a> のビデオをご覧ください。
-
-
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>描画の同期フェーズが開始された時間。
- </li>
-
- <li>この値と ISSUE_DRAW_COMMANDS_START の間の時間が非常に大きい場合(> 0.4 ミリ秒またはこれに近い値)、通常は、GPU にアップロードする必要がある多くの新しい Bitmaps が描画されたこと意味します。
-
-
- </li>
-
- <li>同期フェーズについての詳細は、<a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">Profile GPU Rendering</a> のビデオをご覧ください。
-
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>ハードウェア レンダラーが、GPU への描画コマンドの発行を開始した時間。
- </li>
-
- <li>この値と FRAME_COMPLETED の間の時間により、そのアプリがどれくらいの量の GPU 作業を生じさせているのか大まかに知ることができます。
-オーバードローが多すぎたりまたはレンダリング効果が不十分だったりという問題がある場合は、この時間にあらわれます。
-
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>eglSwapBuffers が呼び出された時間。プラットフォーム作業関連以外では、あまり重要ではない値です。
-
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>すべてが完了した時間です。そのフレームを処理するのにかかった時間の合計は、FRAME_COMPLETED から INTENDED_VSYNC を引くと計算できます。
-
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- このデータは、別の方法でも使用できます。たとえば、さまざまな遅延バケットでのフレームの処理にかかった時間(FRAME_COMPLETED - INTENDED_VSYNC)の分布を示す下記のヒストグラムは、単純ですが役に立ちます。
-
-このグラフを一目見るだけで、大部分のフレームは 16 ミリ秒の限界線(赤色の線)を大きく下回った良好な状態であるけれども、いくつかのフレームが限界線を著しく上回っていることがわかります。
-
-ヒストグラムで時間の経過に伴う変化を確認することで、大規模な変化が起きているのか、新しい外れ値が作成されているのか知ることができます。
-また、データに含まれる多くのタイムスタンプに基づいて、入力待ち時間、レイアウトにかかった時間、その他のこれに類する興味を引く指標をグラフにできます。
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">簡易フレーム タイミング ダンプ</h3>
-
-<p>
- [開発者向けオプション] で [<strong>GPUレンダリングのプロフィール作成</strong>] を [<strong>adb shell dumpsys gfxinfo</strong>] に設定すると、<code>adb shell dumpsys gfxinfo</code> コマンドにより、最新の 120 フレームのタイミング情報が、いくつかの異なるカテゴリに分かれて、タブ区切りで出力されます。
-
-
-このデータは、描画パイプラインのどの部分の処理が遅いのかを大まかに知るのに役に立ちます。
-
-</p>
-
-<p>
- 上記の <a href="#fs-data-format">framestats</a> と同様に、お好みのスプレッドシート ツールに簡単に貼り付けたり、スクリプトで簡単に集計し解析したりできます。
-
-以下のグラフは、アプリによって生成された多くのフレームが時間を費やした箇所の内訳を示しています。
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- このグラフは、gfxinfo を実行し、出力結果をコピーし、スプレッドシート アプリケーションに貼り付け、データを積み上げ棒グラフにしたものです。
-
-</p>
-
-<p>
- 各縦棒は、アニメーションの 1 フレームを示し、その高さはそのフレームを処理するのにかかるミリ秒の数を示しています。
-また、縦棒の色分けされた各部分は、レンダリング パイプラインの各段階を示しています。これにより、ボトルネックを生んでいる可能性があるのはアプリケーションのどの箇所か確認できます。
-
-レンダリング パイプラインとその最適化方法に関する詳細は、<a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">Invalidations, Layouts and Performance</a> のビデオをご覧ください。
-
-
-</p>
-
-
-<h3 id="collection-window">データ収集用のウィンドウを制御する</h3>
-
-<p>
- Framestats と簡易フレーム タイミングの両方とも、非常に短いウィンドウを通じて、約 2 秒相当のレンダリングについてデータを収集しています。
-たとえば、収集するデータを特定のアニメーションだけに限定したい場合、このタイミング データ収集用ウィンドウを正確にコントロールするには、すべてのカウンタをリセットし収集したデータを集計します。
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- これは、ダンプ コマンドとあわせて使用することもでき、フレームの 2 秒未満のウィンドウを続けてキャプチャしながら、通常の流れで収集しリセットできます。
-
-
-</p>
-
-
-<h3 id="diagnose">パフォーマンスの低下を診断する</h3>
-
-<p>
- パフォーマンスの低下を見つけることは、問題を見つけだし、アプリケーションの状態を良好に維持するための最初のステップです。
-ただし、dumpsys は、ただ問題の存在とその相対的な深刻度を明らかにするだけです。
-さらに、パフォーマンスの問題の具体的な原因を突き止め、解決するための適切な方法を見つける必要があります。
-それには、<a href="{@docRoot}tools/help/systrace.html">systrace</a> ツールを利用することをお勧めします。
-
-</p>
-
-
-<h3 id="resources">追加リソース</h3>
-
-<p>
- Android のレンダリング パイプラインの仕組み、一般的な問題、それらの問題の修正方法についての詳細は、以下の資料が役に立ちます。
-
-
-</p>
-
-<ul>
- <li>Rendering Performance 101
- </li>
- <li>Why 60fps?
- </li>
- <li>Android UI and the GPU
- </li>
- <li>Invalidations Layouts and performance
- </li>
- <li>Analyzing UI Performance with Systrace
- </li>
-</ul>
-
-
-<h2 id="automate">UI パフォーマンス テストを自動化する</h2>
-
-<p>
- UI パフォーマンスのテスト手法の 1 つに、対象のアプリ上で一連のユーザー操作を人間のテスターに実行してもらい、目視でジャンクを探すかツール主体の手法を使用して長い時間を費やしてジャンクを見つけるかのいずれかの方法をとるというものがあります。
-
-ただし、この人の力による方法は危険を伴います。フレームレートの変化に気付く能力は、人によって大きく異なります。また、この方法は、多くの時間が必要で単調で退屈なものであり、ミスも起こりがちです。
-
-
-</p>
-
-<p>
- より効率的な手法は、自動化された UI テストにより主要なパフォーマンス指標のログを取って解析することです。
-Android M Developer Preview には、アプリケーションのアニメーションに対するジャンクの量と深刻度を簡単に確認することができ、現在のパフォーマンスを確認し将来のパフォーマンス目標を実現するための適切なプロセスを構築するために使用できる新しいログ記録機能が含まれています。
-
-
-
-</p>
-
-<p>
- このドキュメントでは、この新しいログ機能によるデータを使用してパフォーマンス テストを自動化するための手法について紹介します。
-
-</p>
-
-<p>
- この手法には、鍵となるアクションが 2 つあります。何をどのようにテストするかということを明確にすることと、自動化されたテスト環境をセットアップし管理することです。
-
-
-</p>
-
-
-<h3 id="ui-tests">UI テストをセットアップする</h3>
-
-<p>
- 自動化されたテストを実行する前に、テストの仕様や必要になる可能性があるものを適切に把握するために、いくつかの大まかな決定をしておくことが重要です。
-
-</p>
-
-<h4>
- テストする重要なアニメーションやフローを明確にする
-</h4>
-
-<p>
- パフォーマンスの低さがユーザーの目に最も多く触れるのは、アニメーションのスムーズさが失われる場合です。
-そのため、どのタイプの UI アクションをテストするか決めるときに、ユーザーが最もよく見る重要なアニメーションまたはユーザーの使用感にとって最も重要なアニメーションにフォーカスすると効果があります。
-
-以下にいくつかの一般的なシナリオをご紹介します。
-</p>
-
-<ul>
- <li>プライマリ ListView または RecyclerView のスクロール
- </li>
-
- <li>非同期処理待ちサイクル中のアニメーション
- </li>
-
- <li>ビットマップを読み込んだり操作したりするアニメーション
- </li>
-
- <li>アルファブレンドを含むアニメーション
- </li>
-
- <li>キャンバスを使用して描画するカスタムビュー
- </li>
-</ul>
-
-<p>
- チームのエンジニア、デザイナー、プロダクト マネージャーと連携して、テスト範囲のこれらの重要な製品アニメーションの優先順位を決めてください。
-
-</p>
-
-<h4>
- 将来の目標を決め、実現を目指す
-</h4>
-
-<p>
- 具体的なパフォーマンス目標を明確にし、その目標に合わせてテストを作成しデータを収集することが重要な場合もあります。
-次に例を示します。
-</p>
-
-<ul>
- <li>詳細を知るために、初めて UI パフォーマンスの追跡を開始したいだけですか。
- </li>
-
- <li>将来発生する可能性のあるパフォーマンスの低下を防止したいですか。
- </li>
-
- <li>現在のフレームのスムーズ度合いは 90% で、今四半期中に 98 % にしたいと考えていますか。
- </li>
-
- <li>現在のフレームのスムーズ度合い 98% を低下させたくないと考えていますか。
- </li>
-
- <li>ローエンド端末でのパフォーマンスを改善することが目標ですか。
- </li>
-</ul>
-
-<p>
- 上記のすべての場合で、複数のバージョンのアプリケーションでのパフォーマンスを示すヒストリカル トラッキングが必要です。
-
-</p>
-
-<h4>
- テストする端末を明確にする
-</h4>
-
-<p>
- アプリケーションのパフォーマンスは、そのアプリケーションが実行される端末によって異なります。端末によっては、メモリが少なく、GPU のパワーが低く、CPU チップが遅いものもあります。
-つまり、あるハードウェアでスムーズに実行できるアニメーションが別のハードウェアではうまく実行できなかったり、さらに悪い場合は、パイプラインの別の箇所にボトルネックを生んだりすることになります。
-
-そのため、このようなハードウェアの違いに対処するために、最新のハイエンド端末と、ローエンド端末、タブレットなどの幅広い端末を選んでテストを実行する必要があります。
-
-さまざまな CPU 性能、RAM、画面密度、サイズ等の端末を用意してください。
-ハイエンド端末でうまくいったテストが、ローエンド端末では失敗することがあります。
-
-</p>
-
-<h4>
- UI のテストの基本的なフレームワーク
-</h4>
-
-<p>
- <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> や <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> といったツールが、ユーザーがアプリケーション内を移動する動作を自動処理にするために用意されています。
-
-これらは、端末でのユーザーの操作を模倣するシンプルなフレームワークです。
-これらのフレームワークを使用するには、一連のユーザー アクションを実行する独自のスクリプトを作成して、端末上で実行します。
-
-
-</p>
-
-<p>
- <code>dumpsys gfxinfo</code> と、これらの自動化されたテストを組み合わせることで、テストを実行できる再現可能なシステムを簡単に作成して、特定の条件でのパフォーマンス情報を測定できます。
-
-
-</p>
-
-
-<h3 id="automated-tests">自動化された UI テストをセットアップする</h3>
-
-<p>
- UI テストを実行する機能と、1 つのテストからデータを集めるためのパイプラインを用意したら、次の重要なステップは、複数の端末で、そのテストを複数回実行でき、開発チームの解析用にパフォーマンス データを集計できるフレームワークを用意することです。
-
-
-
-</p>
-
-<h4>
- テスト自動化のためのフレームワーク
-</h4>
-
-<p>
- UI テストのフレームワーク(<a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> など)は、対象の端末やエミュレータ上で直接実行されます。
-<em>dumpsys gfxinfo</em> によるパフォーマンス情報の収集はホストマシンによって行われますが、コマンドの送信は ADB を通じて行われます。
-これらの別々に分かれている処理の自動化を橋渡しするために、<a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> フレームワークは開発されました。このフレームワークは、ホストマシンで動作するスクリプティング システムで、接続されている端末にコマンドを発行できるとともに、それらの端末からデータを受け取ることもできます。
-
-
-
-</p>
-
-<p>
- UI パフォーマンス テストの適切な自動化のためのスクリプトを作成することで、少なくとも、以下のタスクを MonkeyRunner を利用して実行することが可能になります。
-
-</p>
-
-<ul>
- <li>対象の端末(1 台または複数台)またはエミュレータに任意の APK をロードして起動する
- </li>
-
- <li>UI Automator UI テストを起動して、実行できるようにする
- </li>
-
- <li><em>dumpsys gfxinfo</em>を通じて情報を収集する。<em></em>
- </li>
-
- <li>情報を集計し、デベロッパーに役に立つ形で表示する。
- </li>
-</ul>
-
-
-<h3 id="triage">見つけた問題を選別し解決する</h3>
-
-<p>
- 問題のパターンまたはパフォーマンスの低下を確認したら、次に必要なことは問題の解決方法を見つけその方法を実行することです。
-その自動化されたテスト フレームワークがフレームの正確なタイミングの内訳を保存している場合、最近行われたコードやレイアウトの疑わしい変更を調べたり(パフォーマンスが低下している場合)、手作業での調査に切り替えたときにシステムのどの箇所を解析するか絞り込んだりするのに役立ちます。
-
-
-手作業での調査は、まず <a href="{@docRoot}tools/help/systrace.html">systrace</a> から開始することをお勧めします。systrace は、システムのレンダリング パイプラインのすべての段階、すべてのスレッド、コア、およびテスト担当者が定義したカスタム イベントについての正確なタイミング情報を表示します。
-
-
-</p>
-
-<h4>
- 一時的なタイミングを適切にプロファイリングする
-</h4>
-
-<p>
- レンダリング パフォーマンスのタイミングを取得し測定することには困難を伴います。
-これらの数値は、その本質として、決定的なものではなく、多くの場合、システムの状態、利用可能なメモリ量、サーマル・スロットリング、その地域に最後に日照があった時間などに応じて変動します。
-
-つまり同じテストを 2 度実行した場合、近似するが完全に同じではない、わずかに異なる結果が出ることがあるということです。
-
-
-</p>
-
-<p>
- この方法で適切にデータを集めプロファイリングするには、同じテストを複数回実行し、結果を平均値または中間値として集計します(以下では、この処理を「バッチ」と記載します)。これにより、テストのパフォーマンスの大まかな数字を、正確なタイミングを必要とすることなく取得できます。
-
-
-
-</p>
-
-<p>
- バッチは、コード変更の合間にも、それらの変更がパフォーマンスにもたらす相対的な影響を確認するために使用できます。
-変更前のバッチの平均フレームレートが変更後のバッチよりも大きい場合、通常、WRT パフォーマンスが全面的に改善したと言えます。
-
-
-</p>
-
-<p>
- つまり、自動化された UI テストでは、この考え方を取り入れることと、テスト中に発生する可能性のある異常を把握しておくことが必要です。
-たとえば、アプリケーションのパフォーマンスが、そのアプリケーションではなく何らかの端末の問題により突然低下した場合、通常時のタイミングを取得するためにバッチを再度実行した方がよいことがあります。
-
-
-
-</p>
-
-<p>
- それでは、測定値を意味のあるものにするには、何回テストを実行すればよいでしょうか。少なくとも 10 回は必要であり、50 回や 100 回などのように回数が多いほど正確な結果が得られます(もちろん、時間と正確さはトレードオフの関係にあります)。
-
-
-</p>
diff --git a/docs/html-intl/intl/ko/preview/api-overview.jd b/docs/html-intl/intl/ko/preview/api-overview.jd
deleted file mode 100644
index aac9a44..0000000
--- a/docs/html-intl/intl/ko/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-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">블루투스 스타일러스 지원</a></li>
- <li><a href="#ble-scanning">블루투스 저전력 스캔 개선</a></li>
- <li><a href="#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">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">M 미리 보기에 대한 API 레벨 22 »</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 개발자 미리 보기에서는 다가오는 Android 플랫폼 릴리스를 미리 볼 수 있도록 하였습니다. 이 릴리스는 사용자와 앱 개발자를 위한 여러 가지 새 기능을 제공합니다.
-
- 이 문서에서는 가장 중요한 API를 몇 가지 소개합니다.</p>
-
-<p>M 개발자 미리 보기는 <strong>개발자 얼리 어답터</strong>와 <strong>테스터</strong>를 위해 마련된 것입니다.
- Android 프레임워크가 나아갈 방향에 영향을 미치는 데 관심이 있으시다면, <a href="{@docRoot}preview/setup-sdk.html">M 개발자 미리 보기를 시도해 보시고</a> 피드백을 보내주세요!
-
-
-</p>
-
-<p class="caution"><strong>주의:</strong> M 개발자 미리 보기를 사용하는 앱을 Google Play 스토어에 게시하지 마세요.
-</p>
-
-<p class="note"><strong>참고:</strong> 이 문서에서 종종 언급하는 클래스와 메서드 중에는 아직 <a href="{@docRoot}">developer.android.com</a>에서 참조 자료로 이용할 수 없는 것도 있습니다.
- 이와 같은 API 요소는 이 문서에서 {@code code style}로 형식 지정되어 있습니다(하이퍼링크 없이).
- 이러한 요소에 대한 임시 API 관련 문서가 필요한 경우, <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>이 미리 보기는 더욱 강력한 앱 연결을 제공하여 Android의 인텐트 시스템을 한층 강화합니다. 이 기능을 사용하면 앱을 본인이 소유한 웹 도메인과 연관시킬 수 있습니다.
- 플랫폼은 이 연관 관계를 근거로 특정한 웹 링크를 처리하는 데 사용할 기본 앱을 결정할 수 있고 사용자에게 앱을 선택하라는 메시지를 건너뛸 수 있습니다. 이 기능을 구현하는 방법을 알아보려면 <a href="{@docRoot}preview/features/app-linking.html">앱 연결</a>을 참조하세요.
-
-
-
-
-<h2 id="backup">앱용 자동 백업</h2>
-<p>시스템에서 이제 앱에 대한 완전한 데이터 백업과 복원을 자동으로 수행합니다. 이 동작은 앱 대상 지정 M 미리 보기에 대한 기본으로 활성화되며, 추가 코드를 전혀 추가하지 않아도 됩니다.
- 사용자가 Google 계정을 삭제하면 계정의 백업 데이터도 함께 삭제됩니다.
- 이 기능의 작동 원리와 파일 시스템에서 백업 내용 구성하는 방법에 대해 알아보려면 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>을 참조하세요.
-
-</p>
-
-<h2 id="authentication">인증</h2>
-<p>이 미리 보기에서는 사용자를 인증할 때 지원되는 기기에서 지문 스캔을 사용하도록 해주는 새로운 API를 제공합니다. 또한 기기 잠금 해제 메커니즘(예: 화면 잠금 비밀번호)을 사용해 사용자의 마지막 인증 시간을 확인할 수도 있습니다.
-
- 이러한 API는 <a href="{@docRoot}training/articles/keystore.html">Android Keystore 시스템</a>과 함께 사용하세요.
-</p>
-
-<h3 id="fingerprint-authentication">지문 인증</h3>
-
-<p>지문 스캔을 통해 사용자를 인증하려면 새로운 {@code android.hardware.fingerprint.FingerprintManager} 클래스의 인스턴스를 가져와 {@code FingerprintManager.authenticate()} 메서드를 호출하세요.
-
- 앱이 지문 센서가 있는 호환되는 기기에서 실행되고 있어야 합니다.
- 지문 인증 흐름에 대한 사용자 인터페이스를 앱에 구현해야 하며, UI에 표준 Android 지문 아이콘을 사용해야 합니다. 이 Android 지문 아이콘({@code c_fp_40px.png})은 <a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">샘플 앱</a>에 포함되어 있습니다. 지문 인증을 사용하는 앱을 여러 개 개발하는 경우, 각 앱이 사용자의 지문을 따로따로 인증해야 한다는 사실을 명심하세요.
-
-
-
-
-</p>
-
-<p>앱에서 이 기능을 사용하려면 우선 매니페스트에 {@code USE_FINGERPRINT} 권한을 추가해야 합니다.
-</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>지문 인증의 앱 구현을 확인하려면, <a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">지문 대화 샘플</a>을 참조하세요.
-
-</p>
-
-<p>이 기능을 테스트하는 경우, 다음 단계를 따르면 됩니다.</p>
-<ol>
-<li>아직 Android SDK 도구 수정 버전 24.3을 설치합니다(설치하지 않은 경우).</li>
-<li>에뮬레이터에 새 지문을 등록하려면 <strong>설정 > 보안 > 지문</strong>으로 이동한 다음, 등록 지침을 따르면 됩니다.
-</li>
-<li>에뮬레이터를 사용하여 지문 터치 이벤트를 에뮬레이트하되 다음 명령을 사용하세요.
- 잠금 화면이나 앱에서 지문 터치 이벤트를 에뮬레이트할 때에도 같은 명령을 사용합니다.
-
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>Windows에서는 {@code telnet 127.0.0.1 <emulator-id>}에 뒤이어 {@code finger touch <finger_id>}를 실행해야 할 수도 있습니다.
-
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">확인 자격 증명</h3>
-<p>앱에서 사용자를 인증할 때 해당 사용자가 기기를 마지막으로 잠금 해제한 시간을 근거로 할 수 있습니다. 이 기능을 사용하면 사용자가 앱에 따라 각기 다른 비밀번호를 기억할 필요가 없어지고, 개발자는 자신만의 인증 사용자 인터페이스를 구현하지 않아도 됩니다.
-
- 앱에서 이 기능을 사용하려면 사용자 인증에 대한 공개 또는 비밀 키 구현과 함께 사용해야 합니다.
-</p>
-
-<p>사용자를 성공적으로 인증한 다음 같은 키를 재사용하기 위한 시간 초과 기간을 설정하려면, 새로운 {@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} 메서드를 호출하세요. {@link javax.crypto.KeyGenerator} 또는 {@link java.security.KeyPairGenerator}를 설정할 때 사용하면 됩니다.
-
-
-
- 현재 이 기능은 대칭형 암호화 작동에 맞게 작동합니다.
-</p>
-
-<p>재인증 대화창을 과도하게 표시하는 것을 삼가세요. 우선 앱에서 암호화 객체 사용을 시도해보고, 제한 시간이 만료되면 {@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} 메서드를 사용해 앱 내에서 해당 사용자를 재인증하면 됩니다.
-
-
-
-</p>
-
-<p>이 기능의 앱 구현을 확인하려면, <a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">확인 자격 증명 샘플</a>를 참조하세요.
-
-</p>
-
-<h2 id="direct-share">직접 공유</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>이 미리 보기에서는 사용자가 공유 기능을 간편하고 신속하게 이용할 수 있도록 해주는 API를 제공합니다. 이제 앱에서 특정 액티비티를 시작하는 <em>직접 공유 대상</em>을 정의할 수 있습니다. 이와 같은 직접 공유 대상은 <em>공유</em> 메뉴를 통해 사용자에게 노출됩니다.
-
- 이 기능을 사용하면 사용자가 다른 앱 내의 대상(예: 연락처)에 대해 콘텐츠를 공유할 수 있습니다.
- 예를 들어, 직접 공유 대상이 다른 소셜 네트워크 앱에서 액티비티를 시작하면 사용자가 해당 앱에 있는 특정 친구나 커뮤니티와 콘텐츠를 공유할 수 있습니다.
-
-</p>
-
-<p>직접 공유 대상을 활성화하려면 반드시 {@code android.service.}
- <br>
-{@code chooser.ChooserTargetService} 클래스를 확장하는 클래스를 정의해야 합니다. 매니페스트에서 {@code ChooserTargetService}를 선언하고
- 해당 선언 내에서 {@code BIND_CHOOSER_TARGET_SERVICE} 권한을 지정하고 {@code SERVICE_INTERFACE} 작업으로 인텐트 필터를 지정합니다.
-
-</p>
-<p>다음 예는 매니페스트에서 {@code ChooserTargetService}를 선언할 수 있는 방법입니다.
-</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>{@code ChooserTargetService}에 노출하고자 하는 액티비티마다 {@code <meta-data>} 요소를 하나씩 추가하고, 앱 매니페스트에 {@code "android.service.chooser.chooser_target_service"} 이름을 추가합니다.
-
-
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">음성 상호작용</h2>
-<p>
-이 미리 보기에서 제공하는 새로운 음성 상호작용 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>
-이 미리 보기에서는 사용자가 도우미를 통해 앱에 참여하게 하는 새로운 방식을 제시합니다. 이 기능을 사용하려면, 사용자가 현재 컨텍스트를 사용하기 위해 도우미를 활성화해야 합니다.
- 일단 활성화하고 나면 <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">블루투스 스타일러스 지원</h2>
-<p>이 미리 보기에서는 블루투스 스타일러스를 사용하는 사용자 입력에 대한 지원을 개선하여 제공합니다. 사용자는 전화기나 태블릿을 호환되는 블루투스 스타일러스와 페어링하고 이에 연결할 수 있습니다.
- 연결된 동안 터치 스크린에서 가져온 위치 정보가 스타일러스에서 가져온 압력 및 버튼 정보와 합쳐져 하나의 터치 스크린을 사용할 때보다 훨씬 폭넓은 표현을 제공합니다.
-
- 앱이 스타일러스 버튼 누르기를 수신 대기하고 보조 작업을 수행하도록 하려면, 액티비티에 새로운 {@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 미리 보기를 대상으로 삼는 앱의 경우, {@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">블루투스 저전력 스캔 개선</h2>
-<p>
-앱이 블루투스 저전력 스캔을 수행하는 경우, 새로운 {@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} 메서드를 사용해 콜백에 알림을 원하는 시점을 지정할 수 있습니다.즉, 정해진 {@link android.bluetooth.le.ScanFilter}에 일치하는 광고 패킷을 처음 찾았을 때와 이것을 일정한 시간 동안 확인하지 못했을 때에만 콜백에 알리도록 하면 됩니다.
-
-
-
- 스캔 기능에 대해 이런 식으로 접근하면 이전 버전의 플랫폼에서 제공되었던 것에 비해 훨씬 전력 효율적입니다.
-
-</p>
-
-<h2 id="hotspot">핫스팟 2.0 릴리스 1 지원</h2>
-<p>
-이 미리 보기에서는 Nexus 6 및 Nexus 9 기기에서의 핫스팟 2.0 릴리스 1 사양에 대한 지원을 추가합니다. 앱에 핫스팟 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} 속성이 감지된 네트워크가 핫스팟 2.0 액세스 지점을 나타내는지 여부를 알려줍니다.
-
-
-
-</p>
-
-<h2 id="4K-display">4K 디스플레이 모드</h2>
-<p>이제 플랫폼에서 앱이 호환되는 하드웨어에서 디스플레이 해상도를 4K 렌더링으로 업그레이드하도록 요청할 수 있습니다.
- 현재의 물리적 해상도를 쿼리하려면 새로운 {@code android.view.Display.Mode} API를 사용할 수 있습니다.
- UI가 더 낮은 논리적 해상도에서 그려졌고 더 큰 물리적 해상도에 맞춰 확장된 경우, {@code Display.Mode.getPhysicalWidth()} 메서드가 반환하는 물리적 해상도가 {@link android.view.Display#getSize(android.graphics.Point) getSize()}가 보고하는 논리적 해상도와 다를 수 있다는 점을 유의하세요.
-
-
-</p>
-
-<p>앱이 실행되는 중에 시스템에 물리적 해상도를 변경하도록 요청할 수도 있습니다. 앱의 창에서 {@code WindowManager.LayoutParams.preferredDisplayModeId} 속성을 설정하면 됩니다.
- 이 기능은 4K 디스플레이 해상도로 전환하고자 하는 경우 무척 유용합니다.
- 4K 디스플레이 모드에서 UI는 계속 원래 해상도(예: 1080p)에서 렌더링되며 4K로 확장되지만, {@link android.view.SurfaceView} 객체는 원래 해상도에서 콘텐츠를 표시할 수 있습니다.
-
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">테마 지정 가능 ColorStateLists</h2>
-<p>이제 M 미리 보기를 실행하는 기기에 대해 테마 속성이 {@link android.content.res.ColorStateList}에서 지원됩니다.
- {@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>이 미리 보기에서는 Android에서의 오디오 처리에 개선점을 더했습니다. </p>
-<ul>
- <li><a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> 프로토콜을 지원하는 새로운 {@code android.media.midi} API를 추가했습니다.
- 이와 같은 API를 사용하면 MIDI 이벤트를 전송 및 수신할 수 있습니다.
-</li>
- <li>새 {@code android.media.AudioRecord.Builder} 및 {@code android.media.AudioTrack.Builder} 클래스를 추가하여 각각 디지털 오디오 캡처와 재생 객체를 생성하고, 오디오 소스와 싱크 속성을 구성하여 시스템 기본 설정을 재정의하도록 하였습니다.
-
-</li>
- <li>오디오 및 입력 기기를 연관시키기 위한 API Hook이 추가되었습니다. 이것은 특히 앱이 사용자에게 게임 컨트롤러 또는 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>이 미리 보기에서는 비디오 처리 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>이 미리 보기에는 다음과 같은 새 API를 제공하여 카메라의 플래시에 액세스하고 이미지를 재처리하는 카메라에 액세스할 수 있도록 했습니다.
-</p>
-
-<h3 id="flashlight">Flashlight API</h3>
-<p>카메라 기기에 플래시 장치가 있는 경우, {@code CameraManager.setTorchMode()} 메서드를 호출하여 카메라 기기를 열지 않고도 플래시 장치의 Torch 모드를 켜거나 끌 수 있습니다.
- 앱에는 플래시 장치 또는 카메라 기기에 대한 독점적인 소유권이 없습니다.
- Torch 모드는 꺼져 있다가 카메라 기기를 이용할 수 없게 될 때마다 이용 불가능한 상태가 되고, Torch 모드를 켜진 상태로 유지하던 다른 카메라 리소스를 이용할 수 없게 되면 이용 불가능하게 됩니다.
-
- 다른 앱도 {@code setTorchMode()}를 호출하여 Torch 모드를 끌 수 있습니다.
- Torch 모드를 켠 마지막 앱이 종료되면 Troch 모드도 꺼집니다.
-</p>
-
-<p>Torch 모드 상태에 대해 알림을 받기 위한 콜백을 등록하려면 {@code CameraManager.registerTorchCallback()} 메서드를 호출하면 됩니다.
- 콜백을 처음 등록하면 그 즉시, 현재 알려진 모든 카메라 기기(플래시 장치가 있는)의 Torch 모드 상태와 함께 호출됩니다.
-
- Torch 모드가 성공적으로 켜지거나 꺼지면 {@code CameraManager.TorchCallback.onTorchModeChanged()} 메서드가 불려나옵니다.
-</p>
-
-<h3 id="reprocessing">재처리 API</h3>
-<p>{@link android.hardware.camera2 Camera2} API를 확장하여 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 ImageWriter.queueInputImage()} 메서드를 호출하여 {@code ImageFormat.PRIVATE} 이미지를 {@code ImageWriter}에 직접 전달하면 됩니다.
-
-</p>
-
-<p>이제 {@code ImageReader} 클래스가 {@code android.graphics.ImageFormat.PRIVATE} 형식 이미지 스트림을 지원합니다.
- 이로써 앱이 {@code ImageReader} 출력 이미지의 원형 이미지 대기열을 유지하고 하나 이상의 이미지를 선택하여 이들을 {@code ImageWriter}에 보내 카메라 재처리를 할 수 있습니다.
-
-</p>
-
-<h2 id="afw">Android for Work 기능</h2>
-<p>이 미리 보기에는 다음과 같은 Android for Work에 대한 새 API가 포함되어 있습니다.</p>
-<ul>
- <li><strong>회사 소유, 일회용 기기 제어 능력 향상:</strong> 이제 기기 소유자가 다음과 같은 설정을 제어하여 회사 소유, 일회용(COSU) 기기 관리를 한층 개선할 수 있습니다.
-
-
- <ul>
- <li>키가드를 비활성화하거나 다시 활성화하려면 {@code DevicePolicyManager.setKeyguardEnabledState()} 메서드를 사용하세요.
-</li>
- <li>상태 표시줄(빠른 설정, 알림과 Google Now를 시작하는 탐색 스와이프 업 동작 포함)을 비활성화하거나 다시 활성화하려면 {@code DevicePolicyManager.setStatusBarEnabledState()} 메서드를 사용하세요.
-
-</li>
- <li>안전 부팅을 비활성화하거나 다시 활성화하려면 {@link android.os.UserManager} 상수 {@code DISALLOW_SAFE_BOOT}를 사용하세요.
-</li>
- <li>플러그인 상태에서 화면이 꺼지지 않도록 방지하려면 {@link android.provider.Settings.Global} 상수 {@code STAY_ON_WHILE_PLUGGED_IN}을 사용하세요.
-</li>
- </ul>
- </li>
- <li><strong>기기 소유자의 앱 자동 설치 및 설치 제거:</strong> 이제 기기 소유자가 애플리케이션을 자동으로 설치하고 제거할 수 있습니다. 업무용 Google Play와는 따로 {@link android.content.pm.PackageInstaller} API를 사용하면 됩니다.
-
- 이제 사용자 상호작용 없이도 앱을 가져오고 설치하는 기기 소유자를 통해 기기를 프로비저닝할 수 있습니다.
- 이 기능은 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> 이제 프로필 또는 기기 소유자가 타사 앱에 권한을 부여하여 다음과 같은 {@link android.app.admin.DevicePolicyManager} 인증서 관리 API를 호출할 수 있습니다.
-
-
-<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> 기기 소유자를 프로비저닝하는 경우, 이제 {@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} 번들을 설정하여 공장 재설정 보호(FRP)를 잠금 해제하는 데 사용되는 매개변수를 구성할 수 있습니다.
-
- 이와 같은 매개변수는 기기를 재설정하여 FRP를 잠금 해제하도록 하고 기기를 프로비저닝하기로 한 다음에 NFC 프로그래머 앱이 제공할 수 있으며, 이전에 구성한 Google 계정도 필요하지 않습니다.
-
- 이와 같은 매개변수를 수정하지 않으면 FRP가 제자리에 유지되어 이전에 활성화한 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> 새로운 {@code android.app.usage.NetworkStatsManager} 메서드를 사용하여 이제 프로필 또는 기기 소유자가 <strong>설정 > 데이터</strong>에 표시되는 데이터 사용량 통계를 쿼리할 수 있습니다.
-
- 프로필 소유자에게는 자신이 관리하는 프로필에서 데이터를 쿼리할 권한이 자동으로 부여되는 반면, 기기 소유자의 경우에는 관리된 기본 사용자의 사용량 데이터에 대한 액세스 권한이 주어집니다.
-
-</li>
-<li><strong>런타임 권한 관리:</strong>
-<p>프로필 또는 기기 소유자는 모든 애플리케이션의 모든 런타임 요청에 대해 권한 정책을 설정할 수 있습니다. {@code DevicePolicyManager.setPermissionPolicy()}를 사용해 사용자에게 정상적으로 권한을 부여하라는 메시지를 표시하거나, 자동으로 권한을 허용하거나 해당 권한을 자동으로 거부하도록 할 수도 있습니다.
-
-
- 후자의 정책이 설정된 경우, 사용자는 앱의 <strong>설정</strong> 내에 있는 권한 화면 안에서 프로필 또는 기기 소유자가 선택한 내용을 수정할 수 없습니다.
-
-</p></li>
-<li><strong>설정 VPN:</strong> 이제 VPN 앱이 <strong>설정 > 더 보기 > VPN</strong>에 표시됩니다. 이외에도, VPN 사용량에 수반되는 알림은 이제 VPN 구성 방식만 구체적으로 다루게 되었습니다.
-
-
- 프로필 소유자의 경우, 이러한 알림은 VPN이 관리된 프로필에 대해 구성되었는지, 아니면 개인 프로필에 구성되었거나 둘 모두에 구성되었는지 여부에 한정됩니다.
- 기기 소유자의 경우, 이 알림은 VPN이 기기 전체에 대해 구성되었는지 여부만 나타냅니다.
-</li>
-<li><strong>작업 상태 알림:</strong> 이제 관리된 프로필에서 온 앱에 전경에 있는 액티비티가 있을 때마다 상태 표시줄 서류가방 아이콘이 나타납니다.
- 또한, 기기가 관리된 프로필 내 앱의 액티비티에 대해 직접 잠금 해제된 경우, 알림 메시지가 표시되어 사용자에게 지금 작업 프로필 내에 있다는 사실을 알려주기도 합니다.
-
-
-</li>
-</ul>
-
-<p class="note">
- M 개발자 미리 보기의 모든 API 변경 내용에 대한 상세한 정보는 <a href="{@docRoot}preview/download.html">API 차이점 보고서</a>를 참조하세요.
-</p>
diff --git a/docs/html-intl/intl/ko/preview/backup/index.jd b/docs/html-intl/intl/ko/preview/backup/index.jd
deleted file mode 100644
index b3952d5..0000000
--- a/docs/html-intl/intl/ko/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=앱용 자동 백업
-page.tags=backup, previewresources, androidm
-page.keywords=백업, 자동 백업, 미리 보기
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>이 문서의 내용</h2>
- <ol>
- <li><a href="#overview">개요</a></li>
- <li><a href="#configuring">데이터 백업 구성</a></li>
- <li><a href="#testing">백업 구성 테스트</a></li>
- <li><a href="#issues">알려진 문제</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- 사용자는 앱 내에서 데이터를 생성하고 기본 설정을 설정하는 데 상당한 시간과 노력을 들이는 경우가 빈번합니다.
- 사용자가 고장 난 기기를 교체하거나 새것으로 업그레이드하면 그러한 데이터를 보존해 두는 것이 훌륭한 사용자 환경을 보장하는 데 중요한 부분을 차지합니다.
- Android M 미리 보기 시스템에서 실행되는 기기는 이러한 상황에서 사용자에게 좋은 환경을 보장하는 데 도움을 주기 위해 앱 데이터를 Google Drive에 자동으로 백업합니다.
-
- 이런 앱 데이터는 사용자가 기기를 바꾸거나 업그레이드하면 자동으로 복원됩니다.
-
-</p>
-
-<p>
- 자동 백업 기능은 Android M 미리 보기에서 실행되는 기기에 설치된 모든 앱에 활성화되어 있습니다. 달리 앱 코드를 추가하지 않아도 됩니다.
- 시스템은 사용자에게 자동 데이터 백업에서 옵트아웃할 수도 있습니다.
- 앱에서 어떤 데이터를 백업할지 제한하는 쪽을 선택할 수도 있습니다.
-</p>
-
-<p>
- 이 문서에서는 새로운 시스템 동작과 앱에 대해 어느 데이터를 백업할지 지정하는 방법을 설명합니다.
-
-</p>
-
-<h2 id="overview">개요</h2>
-
-<p>
- 자동 백업 기능은 앱이 사용자 기기에서 생성한 데이터를 보존하기 위해 해당 데이터를 사용자의 Google Drive 계정에 업로드하고 암호화합니다.
- 데이터 저장에 대해 개발자나 사용자에게 아무런 요금도 부과하지 않고, 저장된 데이터는 사용자 개인의 Drive 할당량을 사용한 것으로 감안하지 않습니다.
- M 미리 보기 시행 기간 중 사용자는 Android 앱 한 개당 최대 25MB까지 저장할 수 있습니다.
-
-</p>
-
-<p>
- 자동 백업은 24시간마다 한 번씩, 기기가 유휴 상태일 때, 충전 중일 때 및 Wi-Fi 네트워크에 연결될 때마다 수행합니다.
- 이러한 조건에 부합하면 백업 관리자 서비스가 이용 가능한 모든 백업 데이터를 클라우드에 업로드합니다.
- 사용자가 새 기기로 전환하거나 백업된 앱을 제거했다가 다시 설치하면 복원 작업이 백업된 데이터를 새로 설치된 앱의 데이터 디렉터리 안에 복사합니다.
-
-
-</p>
-
-<p class="note">
- <strong>참고:</strong> 레거시 <a href="{@docRoot}google/backup/index.html">Android 백업 서비스</a>를 이용하는 앱의 경우, 이 새 동작이 적용되지 않고 기존 백업 동작이 평소처럼 작동합니다.
-
-
-</p>
-
-
-<h3 id="auto-exclude">자동으로 배제된 데이터 파일</h3>
-
-<p>
- 데이터 중에는 예를 들어 임시 파일과 캐시 등 백업하지 않아도 되는 것도 있습니다. 따라서 자동 백업 서비스는 특정 데이터 파일을 기본적으로 배제합니다.
-
-</p>
-
-<ul>
- <li>디렉터리 내의 파일 중 {@link android.content.Context#getCacheDir
- getCacheDir()} 및 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
- 메서드로 참조되는 파일.
- </li>
-
- <li>외부 저장소에 위치한 파일 중(디렉터리에 상주하는 것이 아닌 한)
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- 메서드로 참조되는 파일.
- </li>
-
- <li>디렉터리에 위치한 파일 중
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 메서드로 참조되는 파일.
- </li>
-</ul>
-
-<h2 id="configuring">데이터 백업 구성</h2>
-
-<p>
- M 미리 보기 기기에 설치된 앱이 생성한 데이터는 모두 백업됩니다. 다만 이전 섹션에서 나열한 자동으로 배제되는 파일만은 예외입니다.
- 앱에서 어느 데이터를 백업할지 좀 더 상세하게 제한하고 구성하려면 앱 매니페스트에 있는 설정을 사용하면 됩니다.
-
-</p>
-
-<h3 id="include-exclude">데이터 포함 또는 배제</h3>
-
-<p>
- 앱에 필요한 데이터가 무엇이며 어떤 식으로 저장하는지에 따라 특정 파일이나 디렉터리를 포함 또는 배제하기 위해 특정한 규칙을 설정해야 할 수 있습니다.
- 자동 백업 서비스는 이러한 백업 규칙 설정을 지원하는 데 XML 구성 파일과 앱 매니페스트를 사용하는 방식을 씁니다.
-
- 앱 매니페스트에서는 다음 예에서 표시된 것처럼 백업 구성표 구성 파일을 지정하면 됩니다.
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- 이 예시 코드에서는 <code>android:fullBackupContent</code> 특성이 XML 파일을 나타냅니다. 이는 앱 개발 프로젝트의 <code>res/xml/</code> 디렉터리 내에 위치하며, 일명 <code>mybackupscheme.xml</code>이라고 합니다.
-
- 이 구성 파일에는 어느 파일이 백업되는지에 대한 규칙이 포함되어 있습니다.
- 다음 예시 코드는 특정 파일을 백업에서 배제하는 구성 파일을 나타낸 것입니다.
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- 이 예에서의 백업 구성은 특정 데이터베이스 파일만 백업되지 않게 배제합니다.
- 나머지 파일은 모두 백업됩니다.
-</p>
-
-<h4>백업 구성 구문</h4>
-
-<p>
- 백업 서비스 구성을 사용하면 구체적으로 어느 파일을 백업에 포함시키고 백업에서 배제할지 지정할 수 있게 해줍니다.
- 데이터 백업 구성 XML 파일에 사용되는 구문은 다음과 같습니다.
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- 다음의 요소와 특성을 사용하면 어느 파일을 백업에 포함시키거나 백업에서 배제할지 지정할 수 있게 해줍니다.
-
-</p>
-
-<ul>
- <li>
- <code><include></code>. 이 요소는 일련의 리소스를 백업하기로 지정하는 경우 사용하십시오. 시스템이 기본적으로 앱 안의 모든 데이터를 백업하는 대신 이 방식을 쓰면 됩니다.
- 예를 들어 <code><include></code> 태그를 지정하면 시스템은 이 요소로 <em>지정된 리소스만</em> 백업합니다.
-
-
- </li>
-
- <li>
- <code><exclude></code>. 이 요소는 일련의 리소스를 백업에서 배제하기로 지정하는 데 사용하세요.
- 시스템이 앱 안의 모든 데이터를 백업하되, 이 요소로 지정된 리소스만 제외합니다.
-
- </li>
-
- <li>
- <code>domain.</code> 백업에 포함시키거나 백업에서 배제하고자 하는 리소스 유형입니다. 이 특성에 대해 지정할 수 있는 유효한 값에는 다음과 같은 것들이 있습니다.
-
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>. 리소스가 앱의 루트 디렉터리에 있음을 나타냅니다.
- </li>
-
- <li>
- <code>file</code>. 디렉터리 내에 있는 리소스 중
- {@link android.content.Context#getFilesDir getFilesDir()} 메서드에 의해 반환된 것에 상응합니다.
- </li>
-
- <li>
- <code>database</code>.
- {@link android.content.Context#getDatabasePath getDatabasePath()} 메서드에 의해, 또는
- {@link android.database.sqlite.SQLiteOpenHelper} 클래스를 사용하여 반환된 데이터베이스에 상응합니다.
- </li>
-
- <li>
- <code>sharedpref</code>. {@link android.content.Context#getSharedPreferences getSharedPreferences()}
- 메서드에 의해 반환된 {@link android.content.SharedPreferences} 객체에
- 상응합니다.
- </li>
-
- <li>
- <code>external</code>. 리소스가 외부 저장소에 있으며, 디렉터리 내의 파일 중 {@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 메서드에 의해 반환된 것에 상응합니다.
-
-
- </li>
-
- <li>
- <code>path</code>. 백업에 포함시키거나 백업에서 배제하고자 하는 리소스로 이어지는 파일 경로입니다.
-
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">데이터 백업 금지하기</h3>
-
-<p>
- 앱 데이터 중 어떤 것이라도 자동 백업을 방지하기로 선택할 수도 있습니다. 매니페스트의 앱 요소에서 <code>android:allowBackup</code> 특성을 <code>false</code>로 설정하면 됩니다.
-
- 이 설정은 다음 예시 코드로 설명해 놓았습니다.
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">백업 구성 테스트</h2>
-
-<p>
- 백업 구성을 만들었으면 앱이 데이터를 저장하고 제대로 복구되는지 확인하기 위해 테스트해보는 것이 좋습니다.
-
-</p>
-
-
-<h4>백업 로깅 활성화</h4>
-
-<p>
- 백업 기능이 XML 파일을 구문 분석하는 방법을 결정하는 데 도움이 되는 방법으로 테스트 백업을 수행하기 전에 로깅을 활성화하는 방안이 있습니다.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>백업 테스트</h4>
-
-<p>수동으로 백업을 실행하려면, 우선 다음과 같은 명령을 호출하여 백업 관리자를 초기화해야 합니다.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- 다음으로, 다음과 같은 명령을 사용하여 애플리케이션을 수동으로 백업하되 앱의 패키지 이름을 <code><PACKAGE></code> 매개변수로 지정합니다.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>복구 테스트</h4>
-
-<p>
- 앱 데이터를 백업한 다음 수동으로 복구를 시작하려면, 다음 명령을 호출하되, 앱에 대한 패키지 이름을 <code><PACKAGE></code> 매개변수로 지정하십시오.
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>경고:</b> 이 작업을 수행하면 앱이 중지되고 복구 작업을 수행하기 전에 데이터를 지워버립니다.
-
-</p>
-
-<p>
- 앱의 복구 프로세스를 시작하려면 앱을 제거했다가 다시 설치하면 됩니다. 앱 데이터는 앱 설치가 완료되면 클라우드에서 자동으로 복원됩니다.
-
-</p>
-
-
-<h4>백업 문제 해결</h4>
-
-<p>
- 문제에 직면하면 백업 데이터와 관련 메타데이터를 지우면 됩니다. 그러려면 <strong>설정 > 백업</strong>에서 백업을 껐다가 켜거나, 기기를 공장 재설정하거나 아니면 다음의 명령을 호출하십시오.
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- <code><TRANSPORT></code> 값이 <code>com.google.android.gms</code>로 접두사가 붙어있어야 합니다.
- 전송 목록을 가져오려면 다음과 같은 명령을 호출하면 됩니다.
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">알려진 문제</h2>
-
-<p>다음은 자동 백업 서비스에 대해 알려진 문제입니다.</p>
-
-<ul>
- <li><strong>Google Cloud 메시지</strong> - 푸시 알림에 Google Cloud 메시지를 사용하는 앱의 경우, Google Cloud 메시지 등록에 의해 반환된 등록 ID를 백업하면 복원된 앱에 대한 푸시 알림을 끊게 되는 문제가 알려져 있습니다. 새 기기에 설치된 다음에는 새 등록 ID에 대하여 API를 쿼리하는 것이 중요합니다. 이것은 기존 등록 ID가 백업된 경우는 해당되지 않습니다.
-
-
-
-
- 이 문제를 피하려면 백업된 파일 집합에서 등록 ID를 배제하십시오.
-
- </li>
-</ul>
diff --git a/docs/html-intl/intl/ko/preview/behavior-changes.jd b/docs/html-intl/intl/ko/preview/behavior-changes.jd
deleted file mode 100644
index fa95070..0000000
--- a/docs/html-intl/intl/ko/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-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">Apache HTTP 클라이언트 제거</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">M 미리 보기에 대한 API 레벨 22 »</a> </li>
-</ol>
-
-
-<h2>참고 항목</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M 개발자 미리 보기 API 개요</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 개발자 미리 보기에는 새로운 기능 및 특징과 더불어 다양한 시스템 변경과 API 동작 변경 내용이 포함되어 있습니다.
- 이 문서에서는 개발자 여러분이 숙지해야 하고 앱을 개발할 때 감안해야 하는 몇 가지 주요 변경 내용을 소개하겠습니다.
-</p>
-
-<p>이전에 Android용 앱을 게시한 적이 있는 경우, 이와 같은 플랫폼 변경으로 인해 앱이 영향을 받을 수 있다는 점을 유의하세요.
-</p>
-
-<h2 id="behavior-runtime-permissions">런타임 권한</h1>
-<p>이 미리 보기에서는 새 권한 모델을 소개합니다. 여기에서는 이제 사용자가 런타임에 직접 앱 권한을 관리할 수 있게 됩니다.
- 이 모델을 사용하면 사용자에게 개선된 가시성과 권한에 대한 제어권을 부여하는 한편 앱 개발자에게는 설치와 자동 업데이트 과정을 간소화해줍니다. 사용자는 설치된 여러 앱에 대해 따로따로 권한을 허용하거나 취소할 수 있습니다.
-
- </p>
-
-<p>M 미리 보기를 대상으로 하는 앱을 개발하는 경우, 권한 확인과 요청은 런타임에 해야 합니다.
- 앱에 어떤 권한이 허용되었는지 판단하려면, 새로운 {@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>이 미리 보기에서는 유휴 상태의 기기 및 앱에 대한 새로운 절전 최적화 기능을 소개합니다.</p>
-
-<h3 id="behavior-doze">Doze</h3>
-<p>기기의 플러그가 뽑히고 화면이 꺼진 채로 일정 시간 동안 변화 없는 상태로 유지되면, <em>Doze</em> 상태로 들어갑니다. 이 상태에서는 기기가 시스템을 절전 모드 상태로 유지하려 시도합니다.
- 이 모드에서 기기는 정기적으로 잠시 동안 정상 작동을 재개하여 앱 동기화가 일어날 수 있도록 하고 보류된 작업이 있으면 시스템이 이를 수행할 수 있도록 합니다.
-
-</p>
-
-<p>앱이 Doze 상태에 있는 동안 다음과 같은 제한 사항이 적용됩니다.</p>
-<ul>
-<li>네트워크 액세스가 비활성화됩니다. 다만 앱이 우선 순위가 높은 Google Cloud 메시지 Tickle을 받을 때는 예외입니다.
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">절전 모드 해제 잠금</a>이 무시됩니다.</li>
-<li>{@link android.app.AlarmManager} 클래스로 일정이 예약된 알람이 비활성화됩니다. 다만 {@link android.app.AlarmManager#setAlarmClock setAlarmClock()} 메서드 및 {@code AlarmManager.setAndAllowWhileIdle()}로 설정한 알람은 예외입니다.
-
-</li>
-<li>WiFi 스캔을 수행하지 않습니다.</li>
-<li>동기화 어댑터와 {@link android.app.job.JobScheduler}의 동기화와 작업 실행이 금지됩니다.
-</li>
-</ul>
-</p>
-<p>기기가 Doze 모드를 종료하면 보류되어 있던 작업과 동기화를 모두 실행합니다.</p>
-<p>이 기능을 테스트하려면 개발 머신에 M 미리 보기를 실행하는 기기를 연결하여 다음과 같은 명령을 호출하면 됩니다.
-
-</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 메시지</a> 릴리스에서는 개발자에게 우선 순위가 높은 메시지를 지정하게 해줍니다.
-
-
- 앱이 우선 순위가 높은 GCM 메시지를 수신하면 이 앱에는 기기가 Doze 모드에 있더라도 잠시 네트워크 액세스가 허용됩니다.
-
-</p>
-
-<p>앱에서 Doze를 테스트하는 방법에 대한 팁은 <a href="{@docRoot}preview/testing/guide.html#doze-standby">테스트 가이드</a>를 참조하세요.
-
- </p>
-
-<h3 id="behavior-app-standby">앱 대기 모드</h3>
-<p>이 미리 보기에서는 시스템이 보기에 앱이 활성 사용 중이 아닌 경우 해당 앱은 유휴 상태라고 판별할 수 있습니다.
- 일정 시간이 지나면 앱이 유휴 상태인 것으로 간주되는데, 시스템이 다음과 같은 신호 중 하나를 감지하는 경우는 예외입니다.
-</p>
-
-<ul>
-<li>사용자가 명시적으로 앱을 시작했습니다.</li>
-<li>앱에 현재 전경에 있는 프로세스가 있습니다(액티비티 또는 전경 서비스 중 하나의 형태로, 또는 다른 액티비티나 전경 서비스가 사용 중인 상태로).
-</li>
-<li>앱이 알림을 생성하여 사용자가 그것을 잠금 화면에서 보거나 알림 트레이에서 확인합니다.
-</li>
-<li><strong>설정</strong>을 통해 사용자가 명시적으로 앱이 최적화에서 면제되도록 요청합니다.
-</li>
-</ul>
-
-<p>기기의 플러그가 뽑혀 있는 경우, 유휴 상태인 것으로 간주된 앱은 자신의 네트워크 액세스를 비활성화하고 동기화와 작업을 일시 중단시킵니다.
- 기기가 전원 공급 장치에 연결되면 이와 같은 앱에 네트워크 액세스가 허용되며 보류 중이었던 작업과 동기화를 모두 실행할 수 있습니다.
- 기기가 오랜 시간 동안 유휴 상태인 경우, 유휴 앱에는 하루에 한 번 정도 네트워크 액세스가 허용됩니다.
-</p>
-
-<p>이 기능을 테스트하려면 개발 머신에 M 미리 보기를 실행하는 기기를 연결하여 다음과 같은 명령을 호출하면 됩니다.
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</pre>
-
-<p class="note"><strong>참고:</strong> 다가오는 <a href="https://developers.google.com/cloud-messaging/" class="external-link">Google Cloud 메시지</a>(GCM) 릴리스에서는 개발자에게 우선 순위가 높은 메시지를 지정할 수 있습니다.
-
-
- 앱이 우선 순위가 높은 GCM 메시지를 수신하면 이 앱에는 앱이 유휴 상태에 있더라도 잠시 네트워크 액세스가 허용됩니다.
-
-</p>
-
-<p>앱에서 앱 대기 모드를 테스트하는 방법에 대한 팁은 <a href="{@docRoot}preview/testing/guide.html#doze-standby">테스트 가이드</a>를 참조하세요.
-
- </p>
-
-<h2 id="behavior-adoptable-storage">채택 가능한 저장소 기기</h2>
-<p>
-이 미리 보기에서는 사용자가 SD 카드와 같은 외부 저장소 기기를 <em>채택</em>할 수 있습니다. 외부 저장소 기기를 채택하면 기기를 암호화하고 포맷하여 내부 저장소처럼 작동하도록 합니다.
- 이 기능을 사용하면 사용자가 앱과 해당 앱의 비공개 데이터를 여러 저장소 기기 사이에서 이동시킬 수 있습니다.
- 앱을 이동시키는 경우, 시스템은 매니페스트의 <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>개발자 미리 보기에서 이 기능을 디버그하려면, 다음 명령을 실행하여 USB On-The-Go(OTG) 케이블을 통해 Android 기기에 연결된 USB 드라이브 채택을 활성화하면 됩니다.
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Apache HTTP 클라이언트 제거</h2>
-<p>이 미리 보기에서는 Apache HTTP 클라이언트에 대한 지원을 제거합니다. 앱이 이 클라이언트를 사용하고 Android 2.3(API 레벨 9) 이상을 대상으로 하는 경우, {@link java.net.HttpURLConnection} 클래스를 대신 사용하세요.
-
- 이는 투명한 압축과 응답 캐싱을 통해 네트워크 사용량을 줄이고 전력 소모를 최소화하기 때문에 API가 더 효율적입니다.
- Apache HTTP API를 계속 사용하려면 우선 다음과 같은 컴파일-시간 종속성을 {@code build.gradle} 파일에서 선언해야 합니다.
-
-</p>
-<pre>
-android {
- useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android는 OpenSSL에서 <a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> 라이브러리로 옮겨갑니다.
-
- 앱에서 Android NDK를 사용하는 경우, NDK API의 일부분이 아닌 암호화 라이브러리에 대해 링크를 연결하지 마세요(예:{@code libcrypto.so} 및 {@code libssl.so}).
- 이러한 라이브러리는 공개 API가 아니며, 여러 릴리스와 기기에 걸쳐 통보 없이 변경되거나 중단될 수 있으며 스스로를 보안 취약점에 노출시킬 수도 있습니다.
-
- 대신에 원래 코드를 수정하여 JNI를 통해 Java 암호화 API를 호출하도록 하거나, 직접 선택한 암호화 라이브러리에 대해 정적으로 연결하도록 하세요.
-
-</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를 사용하는 경우, 부동 도구 모음은 이전 버전과 호환되지 않으며 AppCompat이 기본적으로 {@link android.view.ActionMode} 객체의 제어권을 넘겨받는다는 점을 유의하세요.
-
-
- 이렇게 하면 부동 도구 모음이 표시되지 않도록 방지합니다. {@link android.support.v7.app.AppCompatActivity}에서 {@link android.view.ActionMode}를 활성화하려면, {@code android.support.v7.app.AppCompatActivity.getDelegate()}를 호출한 다음 {@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()}를 반환된 {@link android.support.v7.app.AppCompatDelegate} 객체에서 호출하고 입력 매개변수를 {@code false}로 설정하세요.
-
-
-
-
-
- 이 호출은 {@link android.view.ActionMode} 객체의 제어권을 프레임워크에 돌려줍니다.
- M 미리 보기를 실행하는 기기에서 이렇게 하면 프레임워크가 {@link android.support.v7.app.ActionBar} 또는 부동 도구 모음 모드를 지원할 수 있고, 한편 M 미리 보기 이전 기기에서는 {@link android.support.v7.app.ActionBar} 모드만 지원됩니다.
-
-</p>
-
-<h2 id="behavior-keystore">Android 키노트 변경</h2>
-<p>이 미리 보기에서는 <a href="{@docRoot}training/articles/keystore.html">Android 키노트 제공자</a>가 더 이상 DSA를 지원하지 않습니다.
-
- ECDSA는 여전히 지원됩니다.</p>
-
-<p>휴식 중일 때 암호화가 필요하지 않은 키도 보안 잠금 화면이 비활성화되거나 재설정될 때(예: 사용자가 또는 기기 관리자가 재설정) 더 이상 삭제되지 않습니다.
- 휴식 중일 때 암호화가 필요한 키는 이러한 이벤트 중에 삭제됩니다.
-</p>
-
-<h2 id="behavior-network">Wi-Fi 및 네트워킹 변경</h2>
-
-<p>이 미리 보기에서는 Wi-Fi와 네트워킹 API에 다음과 같은 동작 변경을 도입합니다.</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} 설정으로 사용하면 기기가 셀룰러 데이터와 같은 다른 네트워크에서는 연결을 해제했습니다.
-
-
- 이 미리 보기에서는 기기가 그러한 다른 네트워크에서 더 이상 연결을 해제하지 않습니다. 앱의 {@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>이 미리 보기에서는 카메라 서비스에서 공유된 리소스에 액세스하는 모델이 이전의 "선착순" 액세스 모델에서 바뀌어 우선 순위가 높은 프로세스를 선호하는 액세스 모델로 변경되었습니다.
-
- 서비스 동작에 대한 변경 내용은 다음과 같습니다.</p>
-<ul>
-<li>카메라 하위 시스템 리소스(카메라 기기 열기 및 구성하기 포함)에 대한 액세스 권한은 클라이언트 애플리케이션 프로세스의 "우선 순위"를 기반으로 부여됩니다.
- 대개는 사용자에게 표시되는 액티비티 또는 전경 액티비티가 있는 애플리케이션 프로세스에 높은 우선 순위가 부여되어 카메라 리소스 획득과 사용에 좀 더 신뢰감을 더합니다.
-
-</li>
-<li>우선 순위가 낮은 앱에 대한 활성 카메라 클라이언트는 우선 순위가 더 높은 애플리케이션이 카메라를 사용하려 시도하면 "제거"될 수 있습니다.
- 사용이 중단된 {@link android.hardware.Camera} API의 경우, 이 때문에 {@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}가 제거된 클라이언트에 대해 호출되는 결과를 초래합니다.
-
-
- {@link android.hardware.camera2 Camera2} API에서는 제거된 클라이언트에 대해 {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}가 호출됩니다.
-
-</li>
-<li>적절한 카메라 하드웨어를 갖춘 기기에서는 별도의 애플리케이션 프로세스가 각자 따로따로 열려 동시에 각기 다른 카메라 기기를 사용할 수 있습니다.
- 하지만 여러 프로세스를 사용하는 경우 동시에 액세스하면 열려 있는 카메라 기기 모두의 성능 또는 기능이 대폭 저하되는 결과를 유발했었는데, 이런 경우도 이제 카메라 서비스가 감지하여 허용하지 않게 됩니다.
-
- 이러한 변경으로 인해, 같은 카메라 기기에 직접 액세스하려 시도하는 앱이 없는 경우에도 우선 순위가 낮은 클라이언트를 "제거"하는 결과를 초래할 수도 있습니다.
-
-
-</li>
-<li>
-현재 사용자를 변경하면 앱 내에서 이전 사용자 계정이 소유하는 활성 카메라 클라이언트를 제거하는 결과를 유발할 수 있습니다.
- 카메라에 대한 액세스는 현재 기기 사용자가 소유한 사용자 프로필에게만 국한됩니다. 이것은 실제로 예를 들면, 사용자가 다른 계정으로 전환하면 "Guest" 계정은 카메라 시스템을 사용하는 실행 중인 프로세스에서 나갈 수 없게 된다는 뜻입니다.
-
-
-</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()} 메서드를 호출하되 입력 매개변수를 {@code true}로 설정한 상태로 사용합니다.
-
-
-
-
-
- 앱이 <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 AppCompat 라이브러리</a> 또는 <a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 RecyclerView 라이브러리</a>를 사용하는 경우, 앱을 업데이트하여 이러한 라이브러리의 최신 버전을 사용하도록 해야 합니다.
-
-
- 그렇지 않으면, XML에서 참조되는 모든 사용자 지정 클래스가 업데이트되도록 확인하여 그 클래스 생성자에 액세스할 수 있도록 해야 합니다.
-</p>
-
-<p>이 미리 보기에서는 동적 링커의 동작을 업데이트합니다. 동적 링커는 이제 라이브러리의 {@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>이제 {@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>이 미리 보기에는 Android for Work에 대해 다음과 같은 동작 변경을 포함합니다.</p>
-<ul>
-<li><strong>업무용 연락처를 개인적인 맥락에서 이용.</strong> 이제 Google 다이얼러 통화 기록에서 사용자가 이전 통화 목록을 볼 때 업무용 연락처를 표시합니다. {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()}를 {@code true}로 설정하면 Google 다이얼러 통화 기록에서 업무용 프로필 연락처를 숨길 수 있습니다.
-
-
- {@code DevicePolicyManager.setBluetoothContactSharingDisabled()}를 {@code false}로 설정했을 때에만 블루투스를 통해 기기에 업무용 연락처를 개인용 연락처와 함께 표시합니다.
-
- 이것은 기본적으로 {@code true}로 설정되어 있습니다.
-
-</li>
-<li><strong>WiFi 구성 제거:</strong> 프로필 소유자가 추가한 WiFi 구성(예를 들어 {@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} 메서드로의 호출을 통해)은 이제 해당 작업 프로필이 삭제되면 함께 제거됩니다.
-
-</li>
-<li><strong>WiFi 구성 잠금:</strong> 이제 활성 기기 소유자가 생성한 WiFi 구성이라면 사용자는 임의의 구성을 수정 또는 삭제할 수 없습니다.
- 사용자는 여전히 본인의 WiFi 구성을 생성하고 수정할 수 있습니다. 해당 사용자에 대해 {@link android.os.UserManager} 상수 {@link android.os.UserManager#DISALLOW_CONFIG_WIFI}가 설정되지만 않았으면 됩니다.
-
-</li>
-<li><strong>Google 계정 추가를 통해 작업 정책 컨트롤러 다운로드:</strong> 작업 정책 컨트롤러(WPC) 앱을 통해 관리해야 하는 Google 계정이 관리된 맥락을 벗어나 기기에 추가되는 경우, 이제 추가 계정 흐름이 사용자에게 메시지를 표시하여 적절한 WPC를 설치하도록 합니다. 이 동작은 최초 기기 설정 마법사의 <strong>설정 > 계정</strong>을 통해서 추가되는 계정에도 적용됩니다.
-
-
-
-</li>
-<li><strong>특정 DevicePolicyManager API 동작에 적용된 변경:</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/ko/preview/download.jd b/docs/html-intl/intl/ko/preview/download.jd
deleted file mode 100644
index ff9dd7e..0000000
--- a/docs/html-intl/intl/ko/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=다운로드
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">Android 미리 보기 SDK의 구성 요소를 다운로드하고 설치하기 전에 우선 다음과 같은 사용 약관에 동의해야 합니다.
-</p>
-
- <h2 class="norule">사용 약관</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-이것은 Android SDK 미리 보기 라이선스 계약서입니다(이하 "라이선스 계약").
-
-1. 개요
-
-1.1 Android SDK 미리 보기(본 라이선스 계약에서는 "미리 보기"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 미리 보기 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 미리 보기 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
-
-1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
-
-1.3 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
-
-2. 라이선스 계약에 동의
-
-2.1 이 미리 보기를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 미리 보기를 사용해서는 안 됩니다.
-
-2.2 수락을 클릭하고/거나 미리 보기를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
-
-2.3 미국법 또는 현재 거주 중이거나 미리 보기를 사용하는 국가를 포함하여 다른 국가의 법에 따라 미리 보기를 받는 것이 금지된 경우, 미리 보기를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
-
-2.4 회사 또는 단체 내에서 내부적으로 미리 보기를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 미리 보기를 사용할 수 없습니다.
-
-3. Google이 허하는 미리 보기 라이선스
-
-3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 로열티 없고 양도 불가능하며 비독점적이고 2차 인가를 불허하며, 한정되고 무효화할 수 있는 미리 보기 사용 권한을 허용하여 회사 또는 조직 내에서 개인적 또는 내부적으로 사용할 수 있도록 합니다. 이는 Android 플랫폼에서 실행되는 애플리케이션을 개발할 목적으로만 사용해야 합니다.
-
-3.2 계약자는 SDK에 존재하는 지적 재산권을 포함한 SDK에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다 "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법상 존재하는 모든 권리 및 기타 모든 재산권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
-
-3.3 본 라이선스 계약에 명시적으로 허용된 용도 외에는 미리 보기를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 미리 보기의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 미리 보기의 일부를 로드하거나, 미리 보기의 일부를 다른 소프트웨어와 결합하거나 미리 보기의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
-
-3.4 계약자는 미리 보기에서 파생된 소프트웨어 개발 키트의 배포, 이러한 키트 생성에 참여 또는 홍보를 포함하되 이에 국한되지 않고, Android의 단편화를 야기하는 어떠한 행동도 취하지 않을 것임에 동의합니다.
-
-3.5 오픈 소스 소프트웨어 라이선스에 의거한 미리 보기 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다.
-
-3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 미리 보기에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-4. 계약자의 미리 보기 사용
-
-4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 미리 보기를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
-
-4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 미리 보기를 사용하고 애플리케이션을 작성하는 것에 동의합니다.
-
-4.3 계약자는 일반 대중 사용자를 대상으로 미리 보기를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
-
-4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 미리 보기를 이용하지 않을 것임을 동의합니다.
-
-4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.7 이 미리 보기는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. 미리 보기를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 미리 보기가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 미리 보기를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 미리 보기는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다.
-
-5. 계약자의 개발자 자격 증명
-
-5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
-
-6. 개인정보 보호정책 및 정보
-
-6.1 미리 보기를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, 미리 보기에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 미리 보기는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
-
-6.2 수집된 데이터는 모두 취합된 형태로 미리 보기 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
-
-7. 제3자 애플리케이션
-
-7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 미리 보기를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
-
-7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
-
-7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
-
-8. Google API 사용
-
-8.1 Google Data API
-
-8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
-
-8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
-
-9. 라이선스 계약 종료
-
-9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
-
-9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, 미리 보기 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
-
-9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
-
-9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
-(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 미리 보기 또는 미리 보기의 특정 부분 제공을 중지하는 경우 및
-(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
-
-9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 미리 보기 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
-
-10. 면책 조항
-
-10.1 계약자는 미리 보기 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 미리 보기를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
-
-10.2 미리 보기 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
-
-14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
-
-14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
-
-14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
-
-14.5 수출 규제. 미리 보기는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 미리 보기에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
-
-14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다.
-
-14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">본인은 상기 사용 약관을 읽었으며 이에 동의합니다.</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>이 문서의 내용</h2>
- <ol>
- <li><a href="#sdk">미리 보기 SDK</a></li>
- <li><a href="#docs">개발자 관련 문서</a></li>
- <li><a href="#images">하드웨어 시스템 이미지</a></li>
- </ol>
-
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- Android M 미리 보기 SDK에는 개발 도구, Android 시스템 파일 및 라이브러리 파일이 포함되어 있어 앱을 테스트하고 플랫폼의 다음 릴리스에 도입되는 새 API를 테스트하는 데 유용합니다.
- 이 문서에서는 미리 보기의 다운로드할 수 있는 구성 요소를 가져와 앱을 테스트하는 방법에 대해 설명합니다.
-
-</p>
-
-
-<h2 id="sdk">미리 보기 SDK</h2>
-
-<p>
- 미리 보기 SDK는 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>를 통해 다운로드할 수 있습니다. 미리 보기 SDK를 다운로드하고 구성하는 데 관한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">미리 보기 SDK 설정하기</a>를 참조하십시오.
-
-</p>
-
-
-<h2 id="docs">개발자 관련 문서</h2>
-
-<p>
- 개발자 관련 문서 다운로드 패키지에서는 자세한 API 참조 정보와 미리 보기에 대한 API 차이점 보고서를 제공합니다.
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-
-<h2 id="images">하드웨어 시스템 이미지</h2>
-
-<p>
- 이러한 시스템 이미지를 사용하면 물리적인 기기에서 플랫폼의 미리 보기 버전을 설치하여 테스트할 수 있게 해줍니다.
- 이러한 이미지 중 한 가지로 기기를 구성하면, 앱을 설치하고 테스트하여 앱이 플랫폼의 다음 버전에서 어떤 성능을 보일지 확인할 수 있습니다.
- 기기에 시스템 이미지를 설치하는 과정은<em>기기에서 모든 데이터를 제거하므로</em>, 시스템 이미지를 설치하기에 앞서 데이터를 백업하는 것이 좋습니다.
-
-
-</p>
-
-<p class="warning">
- <b>경고:</b> 다음 Android 시스템 이미지는 미리 보기이며 사정에 따라 변동될 수 있습니다. 이러한 시스템 이미지를 사용할 때에는 Android SDK 미리 보기 라이선스 계약을 따라야 합니다.
- Android 미리 보기 시스템 이미지는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 손상을 초래할 수 있습니다.
-
- 미리 보기 Android 시스템 이미지는 공장 OS와 같은 테스트를 거치며 전화기 및 설치된 서비스와 애플리케이션의 작동이 중단되는 결과를 낳을 수 있습니다.
-
-
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">기기에 이미지 설치</h3>
-
-<p>
- 기기 이미지를 테스트용으로 사용하려면, 이를 호환되는 기기에 설치해야만 합니다. 시스템 이미지를 설치하려면 아래의 지침을 따르십시오.
-
-</p>
-
-<ol>
- <li>여기 목록에 나열된 시스템 이미지 중 하나를 다운로드하여 압축을 해제합니다.</li>
- <li>기기에서 보존하고자 하는 데이터를 모두 백업합니다.</li>
- <li>이미지를 기기에 플래시하려면 <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>에 있는 지침을 따릅니다.
-
-</li>
-</ol>
-
-<p class="note">
- <strong>참고:</strong> 일단 개발 기기에 미리 보기 시스템 이미지를 플래시하고 나면 이것은 OTA(over-the-air) 업데이트를 통해 다음 미리 보기 릴리스에 맞춰 자동으로 업그레이드됩니다.
-
-</p>
-
-<h3 id="revertDevice">기기를 공장 사양으로 되돌리기</h3>
-
-<p>
- 미리 보기의 설치를 제거하고 기기를 공장 사양으로 되돌리고자 하는 경우, <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a>를 방문하여 기기에 플래시하고자 하는 이미지를 다운로드하십시오.
-
- 해당 페이지에 있는 지침을 따라 기기에 이미지를 플래시하면 됩니다.
-
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/ko/preview/features/app-linking.jd b/docs/html-intl/intl/ko/preview/features/app-linking.jd
deleted file mode 100644
index 0e23801..0000000
--- a/docs/html-intl/intl/ko/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=앱 링크
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking, 딥 링크, 인텐트
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>이 문서의 내용</h2>
- <ol>
- <li><a href="#web-assoc">웹사이트 연관 선언</a></li>
- <li><a href="#verfy-links">앱 링크 확인 요청</a></li>
- <li><a href="#user-manage">앱 링크 설정 관리</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android 인텐트 시스템은 유연한 메커니즘이라 앱이 콘텐츠와 요청을 처리할 수 있습니다.
- 여러 개의 앱이 자신의 인텐트 필터에서 모두 일치하는 URI 패턴을 선언할 수 있습니다. 사용자가 기본 시작 처리자가 없는 웹 링크를 클릭하는 경우 플랫폼이 대화창을 표시하여 해당 사용자가 일치하는 인텐트 필터를 선언한 앱 목록에서 선택 할 수 있습니다.
-
-
-</p>
-
-<p>
- Android M 개발자 미리 보기에서는 앱 링크에 대한 지원을 도입합니다. 이를 통해 앱 개발자들이 앱을 본인이 소유한 웹 도메인과 연관시켜 기존의 링크 처리를 한 단계 개선합니다.
- 개발자가 이 연관 관계를 생성하면 플랫폼이 특정 웹 링크를 처리하는 데 사용된 기본 앱을 알아서 판단하여 사용자에게 물어보는 과정을 건너뛸 수 있습니다.
-
-
-</p>
-
-
-<h2 id="web-assoc">웹사이트 연관 선언</h2>
-
-<p>
- 웹사이트 소유자가 앱 링크를 설정하려면 앱과의 연관 관계를 선언해야 합니다. 사이트 소유자는 앱에 대한 이러한 관계를 선언하는 데 JSON 파일을 호스팅하는 방식을 씁니다. 일명 {@code statements.json}이라는 파일을 도메인에서 잘 알려진 위치에 선언합니다.
-
-
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>참고:</strong>
- M 개발자 미리 보기 기간 중에는 JSON 파일을 http 프로토콜을 통해 확인합니다. 플랫폼이 공식적으로 출시되면 이 파일을 암호화된 https 프로토콜에서 확인하게 됩니다.
-
-</p>
-
-<p>
- 이 JSON 파일은 이 도메인 아래에서 URL에 대한 기본 처리자로 사용되어야 하는 Android 앱을 나타냅니다.
- 이것이 앱을 식별하는 기반은 다음과 같은 필드입니다.
-</p>
-
-<ul>
- <li>{@code package_name}: 앱의 매니페스트에 선언된 패키지 이름입니다.</li>
-
- <li>{@code sha256_cert_fingerprints}: 앱의 서명 인증서의 SHA256 지문입니다.
- Java keytool을 사용하여 이 지문을 생성하려면 다음과 같은 명령을 사용십시오.
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- 다음 파일 목록은
-{@code statements.json} 파일의 콘텐츠와 형식을 예를 들어 나타낸 것입니다.
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">앱 링크 확인 요청</h2>
-
-<p>
- 앱은 플랫폼에 자신의 인텐트 필터의 데이터 요소 내에서 호스트 이름으로 정의된 모든 앱 링크를 자동으로 확인해달라고 요청할 수 있습니다. 이때 비교 대상은 각각의 웹 도메인에서 호스팅된 {@code statements.json} 파일입니다.
-
- 앱 링크 확인을 요청하려면 매니페스트에서 원하는 인텐트 필터 각각에 {@code android:autoVerify}
-특성을 하나씩 추가하면 됩니다. 다음 매니페스트 코드 조각에 나타낸 내용을 참고하십시오.
-
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- 앱 매니페스트에 {@code android:autoVerify} 특성이 있으면, 플랫폼은 앱이 설치된 시점에 앱 링크를 확인하려 시도합니다.
- 플랫폼이 앱 링크를 성공적으로 확인하지 못하면 해당 앱은 웹 링크를 처리하기 위한 기본 설정 앱으로 설정되지 않습니다.
- 다음번에 사용자가 그런 링크 중 하나를 열면, 플랫폼은 사용자에게 메시지를 표시하는 방식으로 변경합니다.
-
-
-</p>
-
-<p class="note">
- <strong>참고:</strong> 테스트 중에는 확인에 실패하고 나서 거짓 긍정 결과가 나올 가능성이 있지만, 사용자가 앱에 물어보지 않고 지원되는 링크를 열도록 명시적으로 활성화해 놓았고 이때 시스템 설정 앱을 사용한 경우, 대화창이 표시되지 않고 링크는 개발자 본인의 앱으로 이동하지만 이는 순전히 사용자 설정 때문이고 확인이 성공해서가 아닙니다.
-
-
-
-</p>
-
-
-<h2 id="user-manage">앱 링크 설정 관리</h2>
-
-<p>
- 사용자가 앱 링크 설정을 변경하여 URL을 본인이 선호하는 방식으로 처리하도록 할 수 있습니다. 앱 링크를 검토하고 관리하려면 <strong>설정 > 앱 > 앱 정보 > 기본으로 열기</strong> 아래의 시스템 설정 앱에서 하면 됩니다.
-
-
-</p>
diff --git a/docs/html-intl/intl/ko/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ko/preview/features/runtime-permissions.jd
deleted file mode 100644
index 20c5232..0000000
--- a/docs/html-intl/intl/ko/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-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>앱이 M 미리 보기 SDK를 대상으로 하는 경우, 앱은 사용자에게 설치 시점이 아닌 런타임에 권한을 허용하도록 메시지를 표시합니다.
-</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 개발자 미리 보기에서는 새로운 앱 권한 모델을 소개하여 사용자가 앱을 설치하고 업그레이드하는 과정을 간소화할 수 있습니다.
- M 미리 보기에서 실행되는 앱이 새 권한 모델을 지원하는 경우, 사용자가 앱을 설치하거나 업그레이드할 때 아무런 권한을 허용하지 않아도 됩니다. 그 대신, 앱이 필요할 때마다 권한을 요청하고 시스템이 사용자에게 해당 권한을 요청하는 대화창을 표시합니다.
-
-
-
-
-</p>
-
-<p>
- 앱이 새 권한 모델을 지원하는 경우, Android 이전 버전을 실행하는 기기에서도 설치 및 실행할 수 있는 것은 변하지 않습니다. 이 경우, 그러한 기기의 기존 권한 모델을 사용합니다.
-
-
-</p>
-
-<h2 id="overview">
- 개요
-</h2>
-
-<p>
- M 개발자 미리 보기에서는 플랫폼에 새로운 권한 모델을 도입합니다.
- 이 새로운 모델의 주요 구성 요소를 다음과 같이 요약해 보았습니다.
-</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 개발자 미리 보기를 대상으로 하는 경우, <em>반드시</em> 새 권한 모델을 사용해야 합니다.
-
-</p>
-
-<p>
- M 개발자 미리 보기 시작 시점에는 Google 앱 중에 새 권한 모델을 완전히 구현하지 않는 앱도 있습니다.
- Google은 이러한 앱을 M 개발자 미리 보기를 시행하면서 시간을 두고 업데이트하여 권한 설정/해제 설정을 제대로 사용하도록 할 예정입니다.
-
-
-</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>앱 ></strong>
-
- <i>app_name</i> <strong>> 권한</strong>을 선택하면 됩니다. 이 앱은 계속해서 런타임에 권한을 확인하고 필요한 경우 해당 권한을 요청해야 합니다.
-
-
-</p>
-
-<h3 id="compatibility">
- 이전 및 이후 버전과의 호환성
-</h3>
-
-<p>
- 앱이 M 개발자 미리 보기를 대상으로 하지 않더라도, 앱은 M 미리 보기 기기에서도 기존 권한 모델을 계속 사용합니다.
- 사용자가 앱을 설치하면 시스템이 사용자에게 앱의 매니페스트에 목록으로 표시된 권한을 모두 허용하도록 요청합니다.
-
-
-</p>
-
-<p class="note">
- <strong>참고:</strong> M 개발자 미리 보기를 실행하는 기기에서는 사용자가 어느 앱에 대해서든(레거시 앱 포함) 앱의 설정 화면에서 권한을 끌 수 있습니다.
-
- 사용자가 레거시 앱에 대한 권한을 끄면, 시스템이 자동으로 적절한 기능을 비활성화합니다.
- 앱이 해당 권한을 필요로 하는 작업을 수행하려 시도한다고 해도 그 작업이 반드시 예외를 발생시키는 것은 아닙니다.
-
- 그 대신에 빈 데이터 세트를 반환하거나 오류를 신호하거나, 기타 예기치 못한 동작을 선보일 수 있습니다.
- 예를 들어 권한 없이 캘린더를 쿼리하면 해당 메서드가 빈 데이터 세트를 반환합니다.
-
-</p>
-
-<p>
- M 미리 보기를 실행하지 않는 기기에서 새 권한 모델을 사용하는 앱을 설치하면 시스템은 해당 앱을 다른 앱과 똑같이 다룹니다. 즉, 설치 시점에 시스템에 사용자에게 선언된 권한 모두를 허용하도록 요청합니다.
-
-
-
-</p>
-
-<p class="note">
- <strong>참고:</strong> 미리 보기 릴리스에서는 최소 SDK 버전을 M 미리 보기 SDK로 설정해야 미리 보기 SDK와 컴파일할 수 있습니다.
- 즉, 개발자 미리 보기 시행 중에는 그러한 앱을 기존 플랫폼에서 테스트할 수 없다는 뜻입니다.
-
-
-</p>
-
-<h3 id="perms-vs-intents">권한과 인텐트 비교</h3>
-
-<p>
- 대부분의 경우, 앱에게 어떤 작업을 수행하도록 하려면 두 가지 방식 중 하나를 선택할 수 있습니다.
- 첫째로 앱이 작업을 직접 수행하도록 권한을 요청할 수 있습니다.
- 또는, 앱에 인텐트를 사용하도록 하여 또 다른 앱이 해당 작업을 수행하도록 할 수 있습니다.
-
-</p>
-
-<p>
- 예를 들어 앱이 기기 카메라로 사진을 촬영할 수 있어야 한다고 가정합시다.
- 그러면 앱은 <code>android.permission.CAMERA</code> 권한을 요청할 수 있습니다. 이렇게 하면 앱이 카메라에 직접 액세스할 수 있습니다.
-
- 그런 다음 앱이 카메라 API를 사용하여 카메라를 제어하고 사진을 촬영합니다.
- 이 방식을 사용하면 앱에 사진 촬영 과정에 대해 완전한 제어권을 부여하고, 카메라 UI를 앱에 통합할 수 있습니다.
-
-
-</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>개발자가 직접 작업을 수행하는 경우 본인의 앱이 사용자 환경을 완전히 제어합니다.
- 다만, 그렇게 포괄적인 제어권을 가지면 적절한 UI를 디자인해야 하므로 작업이 복잡해집니다.
-
- </li>
-
- <li>사용자에게 권한을 부여하라는 메시지는 작업을 처음 수행할 때만 표시됩니다.
- 그 다음부터는 앱이 사용자로부터 더 이상의 상호작용을 요청하지 않아도 작업을 수행할 수 있습니다.
- 다만, 사용자가 해당 권한을 허용하지 않는 경우(또는 나중에 취소하는 경우), 앱은 해당 작업을 수행할 수 없게 됩니다.
-
-
- </li>
-</ul>
-
-<p>
- 인텐트를 사용하는 경우:
-</p>
-
-<ul>
- <li>작업을 위해 UI를 디자인하지 않아도 됩니다. 이는 인텐트를 처리하는 앱이 UI를 제공하기 때문입니다. 하지만, 이것은 즉 개발자에게 사용자 환경에 대한 제어권이 전혀 없다는 뜻이기도 합니다.
-
- 사용자는 어쩌면 개발자가 본 적도 없는 앱과 상호작용하고 있을지 모릅니다.
-
- </li>
-
- <li>사용자에게 해당 작업에 대한 기본 앱이 없는 경우, 시스템은 사용자에게 앱을 선택하라는 메시지를 표시합니다. 사용자가 기본 처리기를 지정하지 않으면 해당 작업을 수행할 때마다 추가 대화창을 거쳐야 할 수도 있습니다.
-
-
-
- </li>
-</ul>
-
-<h2 id="coding">런타임 권한에 대한 코딩</h2>
-
-<p>
- 새로운 M 개발자 미리 보기를 대상으로 앱을 개발하는 경우, 새 권한 모델을 사용해야 합니다.
- 이는 즉, 매니페스트에 필요한 권한을 선언하는 것 말고도 런타임에 자신이 해당 권한을 가지고 있는지도 확인해야 하며, 그러한 권한을 이미 가지고 있지 않으면 권한을 요청해야 한다는 뜻입니다.
-
-
-
-</p>
-
-<h3 id="enabling">
- 새 권한 모델 활성화하기
-</h3>
-
-<p>
- 새로운 M 개발자 미리 보기 권한 모델을 활성화하려면 앱의 <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 미리 보기 전용 권한 지정하기
-</h3>
-
-<p>
- 새 <code><uses-permission-sdk-m></code> 요소를 앱 매니페스트에 사용하여 권한이 M 개발자 미리 보기에서만 필요하다는 것을 나타낼 수 있습니다.
- 권한을 이런 식으로 선언하면 앱이 이전 버전의 기기에 설치될 때마다 시스템에서 사용자에게 메시지를 표시하지도 않고 앱에 권한을 허용하지도 않습니다. <code><uses-permission-sdk-m></code> 요소를 사용하면 새 권한을 앱의 업데이트된 버전에 추가하면서도 사용자가 업데이트를 설치할 때 권한을 허용하라고 강제로 시키지 않아도 됩니다.
-
-
-
-
-
-
-</p>
-
-<p>
- 앱이 M 개발자 미리 보기를 갖춘 기기에서 실행되는 경우, <code><uses-permission-sdk-m></code>은 <code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code>과 똑같이 동작합니다.
-
-
- 시스템은 사용자가 앱을 설치할 때 권한을 허용하라는 메시지를 표시하지 않고, 앱이 필요할 때마다 권한을 요청하게 됩니다.
-
-</p>
-
-<h3 id="prompting">
- 권한에 대한 메시지 표시하기
-</h3>
-
-<p>
- 앱이 새로운 M 개발자 미리 보기 권한 모델을 사용하는 경우, 앱이 M 미리 보기에서 실행되는 기기에서 처음 시작되었을 때 사용자에게 모든 권한을 허용하도록 요청하지 않습니다.
-
- 대신, 앱은 필요할 때마다 권한을 요청합니다.
- 앱이 권한을 요청하면 시스템이 사용자에게 대화창으로 표시합니다.
-
-</p>
-
-<p>
- 앱이 SDK 22 이하를 탑재한 기기에서 실행되는 경우, 앱은 기존 권한 모델을 사용합니다.
- 사용자가 앱을 설치하면 앱이 자신의 매니페스트에서 요청하는 모든 권한을 허용하라는 메시지가 표시되는데, 이때 <code><uses-permission-sdk-m></code>이라는 레이블이 붙은 권한은 예외입니다.
-
-
-</p>
-
-<h4 id="check-platform">앱이 실행되는 플랫폼 확인</h4>
-
-<p>
- 이 권한 모델은 M 개발자 미리 보기를 실행하는 기기에서만 지원됩니다.
- 이러한 메서드 중에서 호출하려면 앱은 우선 {@link android.os.Build.VERSION#CODENAME Build.VERSION.CODENAME} 값을 확인하여 자신이 어느 플랫폼에서 실행 중인지 확인해야 합니다.
-
-
- 기기가 M 개발자 미리 보기에서 실행 중인 경우, {@link android.os.Build.VERSION#CODENAME CODENAME}은 <code>"MNC"</code>입니다.
-
-</p>
-
-<h4 id="check-for-permission">앱에 필요한 권한이 있는지 확인</h4>
-
-<p>사용자가 권한을 필요로 하는 무언가를 하려고 시도하면, 앱은 자신이 현재 이 작업을 수행하는 데 필요한 권한을 가지고 있는지 확인합니다.
- 이렇게 하기 위해 앱은 <code>Context.checkSelfPermission( )</code>을 호출합니다.
-
-<i>permission_name</i> 사용자가 앱의 권한을 언제든 취소할 수 있기 때문에 앱은 사용자가 해당 권한을 이미 허용했다는 것을 알고 있더라도 확인 작업을 수행해야 합니다.
-
-
- 예를 들어, 사용자가 사진 촬영 앱을 사용하고자 한다면 앱은 <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>
-@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 개발자 미리 보기를 대상으로 삼고 앱을 개발하는 경우, 이 앱이 권한을 적절하게 처리하는지 테스트해보아야 합니다.
- 앱이 실행될 때 특정 권한을 가지고 있다고 가정해서는 안 됩니다.
- 앱을 처음 시작할 때에는 아무런 권한도 없을 가능성이 높고, 사용자가 언제든 권한을 취소하거나 복원할 수 있기 때문입니다.
-
-
-</p>
-
-<p>
- 앱을 테스트하여 모든 권한 관련 상황에서 제대로 작동하는지 확인하는 것이 좋습니다.
- M 미리 보기 SDK에서는 새로운 <a href="{@docRoot}tools/help/adb.html">Android 디버그 브리지(adb)</a> 명령을 제공하여 여러분이 시도해 보아야 하는 권한 설정이 무엇이든 앱을 테스트할 수 있도록 하였습니다.
-
-
-
-</p>
-
-<h3>
- 새로운 adb 명령 및 선택 사항
-</h3>
-
-<p>
- M 미리 보기 SDK 플랫폼 도구에서는 여러 가지 새로운 명령을 제공하여 앱이 권한을 처리하는 방식을 테스트해볼 수 있습니다.
-
-</p>
-
-<h4>
- 권한으로 설치
-</h4>
-
-<p>
- <a href="{@docRoot}tools/help/adb.html#move"><code>adb
- install</code></a> 명령의 새로운 <code>-g</code> 선택 항목을 사용하면 앱을 설치하고 해당 앱의 매니페스트에 목록으로 표시된 모든 권한을 허용합니다.
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g <path_to_apk>
-</pre>
-
-<h4>
- 권한 허용 및 취소
-</h4>
-
-<p>
- 새로운 ADB <a href="{@docRoot}tools/help/adb.html#pm">패키지 관리자(pm)</a> 명령을 사용하면 설치된 앱에 권한을 허용하고 취소할 수 있습니다. 이 기능은 자동화 설정에서 유용하게 쓰일 수 있습니다.
-
-
-</p>
-
-<p>
- 권한을 허용하려면, 패키지 관리자의 <code>grant</code> 명령을 사용하세요.
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant <package_name> <permission_name>
-</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 <package_name> <permission_name>
-</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/ko/preview/index.jd b/docs/html-intl/intl/ko/preview/index.jd
deleted file mode 100644
index 9d0e040..0000000
--- a/docs/html-intl/intl/ko/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M 개발자 미리 보기
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M 개발자 미리 보기</h1>
- <p class="dac-hero-description">
- Android의 다음 버전을 만나볼 준비가 되셨습니까? 여러분의 앱을 Nexus 5, 6, 9 및 Player에서 테스트해보십시오.
- 새로운 내용은 무엇인지 둘러보십시오. <strong>런타임 권한</strong>, <strong>Doze</strong> 및 <strong>앱 대기 모드</strong> 절전 기능, 새로 나온 <strong>지원 기술</strong>, 이외에도 많은 것이 있습니다.
-
-
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- 지금 시작하세요!
-</a><br>
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">리소스</h1>
- <div class="dac-section-subtitle">
- 앱을 Android M에 대비시키는 데 유용한 중요 정보입니다.
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- 문제 보고
-</a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- G+ 커뮤니티 가입
-</a>
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/ko/preview/license.jd b/docs/html-intl/intl/ko/preview/license.jd
deleted file mode 100644
index 71c9d45..0000000
--- a/docs/html-intl/intl/ko/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=라이선스 계약
-
-@jd:body
-
-<p>
-Android SDK 미리보기를 시작하려면 우선 다음과 같은 사용 약관에 동의해야 합니다. 아래에 설명한 바와 같이, 이것은 Android SDK의 미리 보기 버전이며 변경될 가능성이 있고 이를 사용하는 위험 부담은 계약자 본인에게 있음을 유의하십시오.
- Android SDK 미리보기는 안정된 릴리스가 아니며, 오류나 결함이 들어있을 수 있고 이 때문에 컴퓨터 시스템, 기기 및 데이터에 심각한 손상을 초래할 수 있습니다.
-</p>
-
-<p>
-이것은 Android SDK 미리 보기 라이선스 계약서입니다(이하 "라이선스 계약").
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. 개요
-
-1.1 Android SDK 미리 보기(본 라이선스 계약에서는 "미리 보기"라고 칭하며, 구체적으로 Android 시스템 파일, 패키지 API 및 미리 보기 라이브러리 파일이 이용 가능한 경우 및 이용 가능하게 전환된 경우 이를 포함한 것을 가리킴)는 본 라이선스 계약 조건에 따라 계약자에게 사용을 허여합니다. 본 라이선스 계약은 미리 보기 사용과 관련하여 계약자와 Google 간에 법적 구속력이 있는 계약을 체결합니다.
-
-1.2 "Android"는 기기를 위한 Android 소프트웨어 스택을 의미합니다. 이는 http://source.android.com/ URL에 위치하며 수시로 업데이트되는 Android 오픈 소스 프로젝트에서 제공됩니다.
-
-1.3 "Google"은 미국 1600 Amphitheatre Parkway, Mountain View, CA 94043에 본사를 두고 있는 델라웨어주 법인인 Google Inc.를 의미합니다.
-
-2. 라이선스 계약에 동의
-
-2.1 이 미리 보기를 사용하려면, 먼저 라이선스 계약에 동의해야 합니다. 이 라이선스 계약에 동의하지 않고 미리 보기를 사용해서는 안 됩니다.
-
-2.2 수락을 클릭하고/거나 미리 보기를 사용하면 본 라이선스 계약 조건에 동의하는 것으로 간주됩니다.
-
-2.3 미국법 또는 현재 거주 중이거나 미리 보기를 사용하는 국가를 포함하여 다른 국가의 법에 따라 미리 보기를 받는 것이 금지된 경우, 미리 보기를 사용할 수 없으며 본 라이선스 계약을 수락할 수 없습니다.
-
-2.4 회사 또는 단체 내에서 내부적으로 미리 보기를 사용하며 고용주 또는 기타 단체를 대신하여 본 라이선스 계약 준수에 동의하는 경우, 계약자의 고용주나 그 단체에 본 라이선스 계약에 대한 구속력을 부여할 수 있는 모든 법적 권한을 계약자가 갖고 있음을 진술하고 보증합니다. 구속력을 부여할 수 있는 법적 권한이 없을 경우, 고용주 또는 기타 단체를 대신하여 본 라이선스 계약에 동의하거나 미리 보기를 사용할 수 없습니다.
-
-3. Google이 허하는 미리 보기 라이선스
-
-3.1 본 라이선스 계약의 조건에 따라 Google은 계약자에게 로열티 없고 양도 불가능하며 비독점적이고 2차 인가를 불허하며, 한정되고 무효화할 수 있는 미리 보기 사용 권한을 허용하여 회사 또는 조직 내에서 개인적 또는 내부적으로 사용할 수 있도록 합니다. 이는 Android 플랫폼에서 실행되는 애플리케이션을 개발할 목적으로만 사용해야 합니다.
-
-3.2 계약자는 SDK에 존재하는 지적 재산권을 포함한 SDK에 대한 모든 법적인 권리, 소유권 및 이익이 Google 또는 제3자에게 있음에 동의합니다 "지적 재산권"은 모든 특허법, 저작권법, 영업비밀법, 상표법상 존재하는 모든 권리 및 기타 모든 재산권을 의미합니다. Google은 계약자에게 명시적으로 부여하지 않은 모든 권리를 보유합니다.
-
-3.3 본 라이선스 계약에 명시적으로 허용된 용도 외에는 미리 보기를 사용할 수 없습니다. 해당 제3자 라이선스 요건이 허용하는 범위를 제외하고 계약자는 미리 보기의 일부분을 (a) 복사(백업 목적 제외), 수정, 개작, 재배포, 역컴파일, 리버스 엔지니어링, 분해하거나 이를 통해 파생물을 생성하거나 (b) 개인 컴퓨터를 제외한 모바일 단말기 또는 기타 모든 하드웨어 기기에 미리 보기의 일부를 로드하거나, 미리 보기의 일부를 다른 소프트웨어와 결합하거나 미리 보기의 일부가 통합된 일체의 소프트웨어나 기기를 배포해서는 안 됩니다.
-
-3.4 계약자는 미리 보기에서 파생된 소프트웨어 개발 키트의 배포, 이러한 키트 생성에 참여 또는 홍보를 포함하되 이에 국한되지 않고, Android의 단편화를 야기하는 어떠한 행동도 취하지 않을 것임에 동의합니다.
-
-3.5 오픈 소스 소프트웨어 라이선스에 의거한 미리 보기 구성요소의 사용, 재생산, 배포에는 본 라이선스 계약이 아닌, 해당 오픈 소스 소프트웨어 라이선스의 조건이 적용됩니다. 계약자는 허용된 모든 권한 하에서 그러한 오픈 소스 소프트웨어 라이선스에 관해 충실한 피허가자로서의 자세를 견지할 것이며 그러한 권한을 종료, 일시 중단 또는 침해하는 행위를 삼갈 것을 동의합니다.
-
-3.6 계약자는 Google이 제공하는 SDK의 형태 및 특성이 사전 통지 없이 변경될 수 있음에 동의하며, 이전 버전의 미리 보기에서 개발된 애플리케이션이 이후 버전의 SDK와 호환되지 않을 수 있음에 동의합니다. 계약자는 계약자 또는 사용자에게 사전 통지 없이 SDK(또는 SDK에 포함된 기능) 제공을(영구적 또는 일시적으로) 중단할 수 있는 권한이 Google에게 있음에 동의합니다.
-
-3.7 본 라이선스 계약은 계약자에게 Google의 상표명, 상표, 서비스 표시, 로고, 도메인 이름, 기타 독특한 브랜드 특징에 대한 사용 권한을 부여하지 않습니다.
-
-3.8 계약자는 SDK에 부착되어 있거나 포함되어 있는 모든 소유권 고지 사항(저작권 및 상표 고지 사항 포함)을 제거, 변경 또는 불분명하게 만들지 않을 것에 동의합니다.
-
-4. 계약자의 미리 보기 사용
-
-4.1 Google은 본 라이선스 계약의 어떤 조항도 계약자(또는 계약자의 사용 허가자)가 미리 보기를 사용하여 개발한 소프트웨어 애플리케이션에 대한 권리, 소유권 또는 이익, 그리고 해당 애플리케이션에 존재하는 모든 지적 재산권을 부여하지 않는다는 점에 동의합니다.
-
-4.2 계약자는 (a) 본 라이선스 계약 그리고 (b) 모든 준거법, 규정 또는 관련 관할권 내에서 일반적으로 수용되는 관행 또는 지침(미국 또는 기타 관련 국가로/에서의 데이터 또는 소프트웨어 수출과 관련된 모든 법률 포함)에서 허용하는 용도에 한하여 미리 보기를 사용하고 애플리케이션을 작성하는 것에 동의합니다.
-
-4.3 계약자는 일반 대중 사용자를 대상으로 미리 보기를 사용하여 애플리케이션을 개발하는 경우, 해당 사용자의 프라이버시 및 법적 권리를 보호하는 것에 동의합니다. 사용자가 계약자에게 사용자 이름, 비밀번호 또는 기타 로그인 정보나 개인 정보를 제공하는 경우, 계약자는 제공된 정보가 자신의 애플리케이션에 제공된다는 사실을 사용자에게 알려야 하며, 반드시 법적으로 적절한 개인정보 보호정책 고지 및 보호를 해당 사용자에게 제공해야 합니다. 애플리케이션에서 사용자가 제공한 개인정보나 민감한 정보를 저장하는 경우, 이를 안전하게 처리해야 합니다. 사용자들이 애플리케이션에 Google 계정 정보를 제공하는 경우, 애플리케이션은 해당 사용자의 Google 계정에 액세스하는 목적으로만, 그리고 각 사용자가 허용한 범위 내의 한정된 목적으로만 이러한 정보를 사용해야 합니다.
-
-4.4 계약자는 Google 또는 기타 모든 타사의 서버, 네트워크 또는 기타 모든 재산 또는 서비스를 허가 없이 방해, 교란, 손상 또는 액세스하는 애플리케이션의 개발 또는 배포를 포함한 하등의 행위에 미리 보기를 이용하지 않을 것임을 동의합니다.
-
-4.5 계약자는 자신이 Android 및/또는 Android용 애플리케이션을 통해 생성, 전송 또는 표시하는 모든 데이터, 콘텐츠 또는 리소스 그리고 그로 인한 결과(Google이 입을 수 있는 모든 피해나 손실 포함)에 대해 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.6 계약자는 본 라이선스 계약, 모든 해당 제3자 계약 또는 서비스 약관, 또는 모든 준거법 또는 규정에 의거한 계약자 의무 위반, 그리고 그로 인한 결과(Google 또는 제3자가 입을 수 있는 모든 피해나 손실 포함)에 전적으로 책임이 있다는 것(그리고 Google은 계약자 또는 모든 제3자에 대한 책임이 없다는 것)에 동의합니다.
-
-4.7 이 미리 보기는 현재 개발 단계에 있으며, 계약자의 테스트와 피드백은 그러한 개발 과정에 중요한 부분을 차지합니다. 미리 보기를 사용함으로써 계약자는 일부 기능의 구현은 아직 개발 중인 상태이며 미리 보기가 안정된 릴리스처럼 완벽하게 기능할 것이라 믿고 사용해서는 안 된다는 점을 인지하는 것으로 간주합니다. 계약자는 이 미리 보기를 사용한 애플리케이션을 공개적으로 배포 또는 배송하지 않기로 동의합니다. 이 미리 보기는 공식 Android SDK가 출시된 이후에는 더 이상 지원되지 않기 때문입니다.
-
-5. 계약자의 개발자 자격 증명
-
-5.1 계약자는 Google이 발급했거나 자신이 선택한 모든 개발자 자격 증명에 대한 기밀성을 유지할 책임이 있으며 계약자의 개발자 자격 증명 하에 개발된 모든 애플리케이션에 대한 전적인 책임이 있음에 동의합니다.
-
-6. 개인정보 보호정책 및 정보
-
-6.1 미리 보기를 지속적으로 혁신하고 개선하기 위해, Google은 고유 식별자, 관련 IP 주소, 소프트웨어 버전 번호, 미리 보기에서 사용 중인 도구 및/또는 서비스와 도구의 사용법에 대한 정보를 포함하되 이에 국한되지 않고 소프트웨어에서 특정 사용량 통계 정보를 수집할 수 있습니다. 그러한 정보를 수집하기 전에 미리 보기는 계약자에게 이를 통지하고 동의를 구할 것입니다. 계약자가 동의하지 않을 경우 정보를 수집하지 않습니다.
-
-6.2 수집된 데이터는 모두 취합된 형태로 미리 보기 개선을 위해 검토되며, Google의 개인정보 보호정책에 따라 유지 관리됩니다. 이 정보는 http://www.google.com/policies/privacy/를 참조하십시오.
-
-7. 제3자 애플리케이션
-
-7.1 제3자가 개발한 애플리케이션을 실행하거나 제3자가 제공한 데이터, 콘텐츠 또는 리소스에 액세스하기 위해 미리 보기를 사용하는 경우, 계약자는 Google이 그러한 애플리케이션, 데이터, 콘텐츠 또는 리소스에 대한 책임이 없음에 동의합니다. 계약자는 그러한 제3자 애플리케이션을 통해 자신이 액세스한 모든 데이터, 콘텐츠 또는 리소스에 대한 책임은 그것을 만든 사람에게 있음에 동의합니다. 또한 계약자가 그러한 모든 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스를 사용하거나 액세스함으로써 비롯된 모든 피해나 손실에 대한 책임이 Google에게 없음에 동의합니다.
-
-7.2 그러한 제3자 애플리케이션을 통해 계약자에게 제공된 데이터, 콘텐츠 그리고 리소스는 그것을 제공한 제공자(또는 제공자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 유의해야 합니다. 그러한 데이터, 콘텐츠 또는 리소스(전부 또는 일부)를 수정, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다. 단, 관련 소유자로부터 그러한 작업을 수행해도 좋다는 허락을 받은 경우에는 예외입니다.
-
-7.3 계약자는 그러한 제3자 애플리케이션, 데이터, 콘텐츠 또는 리소스의 사용은 계약자와 관련 제3자 간에 체결하는 별도의 계약 조건의 적용을 받는다는 것을 인정합니다.
-
-8. Google API 사용
-
-8.1 Google Data API
-
-8.1.1 Google에서 데이터를 검색하기 위해 API를 사용하는 경우, 그러한 데이터가 Google 또는 데이터를 제공하는 당사자(또는 당사자를 대신하는 기타 개인 또는 기업)가 소유한 지적 재산권에 의해 보호될 수 있음을 인정합니다. 그러한 API를 사용하는 경우, 추가적인 서비스 약관의 적용을 받을 수 있습니다. 관련 서비스 약관에 허용되지 않은 한, 그러한 데이터(전부 또는 일부)를 변경, 임대, 리스, 대여, 판매, 배포하거나 이를 기반으로 파생물을 생성해서는 안 됩니다.
-
-8.1.2 Google에서 사용자 데이터를 검색하기 위해 API를 사용하는 경우, 계약자는 사용자로부터 명시적인 동의를 얻은 경우에 한하여, 그리고 해당 사용자가 허용한 범위 내의 한정된 목적으로만 데이터를 검색해야 합니다.
-
-9. 라이선스 계약 종료
-
-9.1 본 라이선스 계약은 계약자 또는 Google에 의해 아래와 같은 조건 하에 종료될 때까지 계속 적용됩니다.
-
-9.2 계약자가 라이선스 계약을 종료하고자 하는 경우, 미리 보기 및 관련 개발자 자격 증명 일체의 사용을 중단하는 것으로 그러한 의사를 피력할 수 있습니다.
-
-9.3 Google은 언제든 이유 여하를 불문하고 계약자에게 통고하여 라이선스 계약을 종료할 수 있습니다.
-
-9.4 본 라이선스 계약은 통보 또는 여타의 행위 없이도 자동으로 종료됩니다. 이에 해당되려면 다음과 같은 조건이 수반되어야 합니다.
-(A) Google이 계약자가 거주하는 국가 또는 계약자가 서비스를 사용하는 지역에서 미리 보기 또는 미리 보기의 특정 부분 제공을 중지하는 경우 및
-(B) Google이 Android SDK의 최종 릴리스 버전을 발행하는 경우.
-
-9.5 본 라이선스 계약이 종료되면 라이선스 계약으로 계약자에게 허용한 라이선스가 취소되며, 이에 따라 계약자는 미리 보기 사용을 즉시 모두 중단해야 하고 제 10, 11, 12 및 14절의 조항이 기한 없이 유지됩니다.
-
-10. 면책 조항
-
-10.1 계약자는 미리 보기 이용에 대한 위험 부담이 전적으로 본인에게 있으며, Google이 일체의 보증 없이 미리 보기를 "있는 그대로" 그리고 "이용 가능한" 상태로 제공한다는 것을 분명히 이해하고 동의합니다.
-
-10.2 미리 보기 이용 및 이용 과정에서 다운로드하거나 얻게 되는 모든 자료를 사용하는 것은 본인의 재량에 따르며 이에 대한 위험 부담이 전적으로 본인에게 있으며, 그러한 사용으로 인해 발생하는 컴퓨터 시스템 또는 다른 기기의 손상 또는 데이터 손실에 대한 책임은 전적으로 본인에게 있습니다. 전술한 조항을 제한하지 않는 범위 내에서 계약자는 미리 보기가 안정된 릴리스가 아니며 오류, 결함 및 보안 취약성이 포함되어 있을 수 있어 그 결과로 중대한 손상을 유발할 수 있다는 점을 이해하는 것으로 간주합니다. 여기에는 계약자의 컴퓨터 시스템 또는 기타 기기의 완전하고 돌이킬 수 없는 손실도 포함됩니다.
-
-10.3 더 나아가, Google은 상품성, 특정 목적에 대한 적합성 및 비침해의 묵시적 보증 등을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 종류의 보증 및 조건을 명시적으로 부인합니다.
-
-11. 책임 한계
-
-11.1 계약자는 계약자에게 발생할 수 있는 직접, 간접, 부수적, 특별, 결과적 또는 징벌적 손해에 대해 그 어떤 책임 이론에 근거해서도 Google, 해당 자회사, 계열사 및 사용 허가자가 어떠한 책임도 지지 아니함을 분명히 이해하고 동의합니다. 이러한 손해에는 Google 또는 해당 대리자가 이러한 손실 발생 가능성에 대해 통지를 받았거나 이러한 사항을 인식했는지에 상관없이 모든 데이터 손실이 포함됩니다.
-
-12. 면책
-
-12.1 법률에 의해 허용되는 최대한의 범위 안에서 계약자는 (a) 미리 보기 사용, (b) 계약자가 미리 보기에서 개발한 일체의 애플리케이션에서 초래된 모든 사람의 저작권, 상표, 영업비밀, 트레이드 드레스, 특허 또는 기타 지적 재산권의 침해, 또는 어떤 사람의 명예를 훼손하거나 초상권 또는 개인정보 보호정책을 침해함 또는 (C)계약자 본인이 본 라이선스 계약을 위반함으로써 발생하거나 생기는 모든 청구, 조치, 소송 또는 절차, 그리고 모든 손실, 책임, 손해, 경비(합리적인 변호사 비용 포함)로부터 Google을 옹호하고, 면책시키고, Google이 손해를 입지 않도록 하는 데 동의합니다.
-
-13. 라이선스 계약 변경
-
-13.1 미리 보기의 새로운 버전을 배포할 때, Google은 본 라이선스 계약의 내용을 변경할 수 있습니다. 그러한 변경이 이뤄진 경우, Google은 미리 보기가 제공되는 웹사이트에 새로운 라이선스 계약 버전을 게재할 것입니다.
-
-14. 일반 법적 조건
-
-14.1 본 라이선스 계약은 계약자와 Google 간의 모든 법적 계약을 구성하며, 계약자의 미리 보기 사용을 규제하고(별도의 서면 계약을 통해 Google이 계약자에게 제공하는 모든 서비스는 제외), 미리 보기와 관련하여 이전에 계약자와 Google이 맺은 모든 계약을 완전히 대체합니다.
-
-14.2 계약자는 Google이 라이선스 계약에 포함된(또는 관련 법률에 의해 Google이 향유하는) 법적 권리 또는 구제수단을 행사하거나 집행하지 않더라도, Google이 권리를 공식적으로 포기한 것으로 간주하지 않으며, Google이 계속해서 그러한 권리 또는 구제수단을 이용할 수 있음에 동의합니다.
-
-14.3 본 라이선스 계약의 조항이 무효라고 이 사안에 관한 판결을 할 수 있는 관할권을 가진 법원이 판결할 경우, 그 조항은 라이선스 계약의 나머지 조항에 영향을 미치지 않는 형태로 라이선스 계약에서 제거됩니다. 본 라이선스 계약의 나머지 조항은 여전히 유효하며 집행 가능합니다.
-
-14.4 계약자는 Google이 모회사가 되는 회사 그룹에 속한 각 회사가 본 라이선스 계약의 제3수익자이며, 그러한 다른 회사들이 그들에게 이익(또는 유리한 권리)을 부여하는 본 라이선스 계약의 모든 조항을 직접 행사하고 적용할 수 있는 권리를 가진다는 데 동의합니다. 그 외에는 다른 어떤 개인이나 회사도 본 라이선스 계약의 제3수익자가 될 수 없습니다.
-
-14.5 수출 규제. 미리 보기는 미국의 수출법과 규정의 적용을 받습니다. 계약자는 미리 보기에 적용되는 모든 국내 및 국제 수출법과 규정을 준수해야 합니다. 그러한 법에는 수출 대상국, 최종 사용자 및 최종 용도에 대한 제한이 포함됩니다.
-
-14.6 계약자 또는 Google은 상대 당사자의 사전 서면 승인 없이 본 라이선스 계약에서 부여된 권리를 제3자에게 양도하거나 이전할 수 없으며, 그러한 승인 없이 이루어진 양도 시도는 모두 무효입니다. 계약자는 Google의 사전 승인 없이 본 라이선스 계약 상의 책임 또는 의무를 위임할 수 없습니다.
-
-14.7 본 라이선스 계약, 그리고 본 라이선스 계약 상의 계약자와 Google의 관계는 법률 조항 간의 충돌과는 무관하게 캘리포니아주법에 의한 규제를 받습니다. 계약자와 Google은 본 라이선스 계약으로부터 발생하는 모든 법적 문제 해결을 캘리포니아주 산타 클라라(Santa Clara) 카운티 내에 소재한 전속 관할 법원에 의뢰하는 것에 동의합니다. 위 규정에도 불구하고, 계약자는 Google이 여전히 모든 관할권에서 강제 구제책(또는 동등한 유형의 긴급 법적 구제)을 신청할 수 있음에 동의합니다.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ko/preview/overview.jd b/docs/html-intl/intl/ko/preview/overview.jd
deleted file mode 100644
index 04febc7..0000000
--- a/docs/html-intl/intl/ko/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=프로그램 개요
-page.metaDescription=Android M 개발자 미리 보기를 시작하신 여러분, 환영합니다. 이 프로그램은 Android의 다음 버전에 대해 앱을 테스트하고 최적화하는 데 필요한 모든 것을 제공해 드립니다.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<p>
- <strong>Android M 개발자 미리 보기</strong>를 시작하신 여러분, 환영합니다. 이 프로그램은 Android의 다음 버전에 대해 앱을 테스트하고 최적화하는 데 필요한 모든 것을 제공해 드립니다.
-
- 이 프로그램은 무료이며, M 개발자 미리 보기 도구만 다운로드하면 시작하실 수 있습니다.
-
-</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(TV용)와 에뮬레이터에서 앱을 실행하고 테스트해 보세요.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 최신 플랫폼 코드
- </h5>
-
- <p>
- 미리 보기 시행 중에 여러 번의 업데이트를 제공할 예정입니다. 이로써 여러분은 항상 최신 플랫폼 변경에 대해 테스트할 수 있습니다.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 업데이트를 OTA로 전달
- </h5>
-
- <p>
- 일단 기기를 최초 미리 보기에 플래시하고 나면 OTA로 업데이트를 받을 수 있습니다.
-
- </p>
- </div>
- </div>
-
- <div class="cols">
-
-
- <div class="col-4of12">
- <h5>
- 새 동작 및 기능
- </h5>
-
- <p>
- 작업을 일찍 시작하여 새 런타임 권한 모델과 절전 기능 등 새로운 플랫폼 동작을 지원합니다.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 개발자가 보고한 문제에 대한 우선 순위 창
- </h5>
-
- <p>
- Google에서는 처음 몇 주 동안 개발자가 보고한 문제에 우선 순위를 부여할 예정입니다. 가능한 빨리 테스트하고 피드백을 보내 주세요.
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 피드백 및 지원
- </h5>
-
- <p>
- 문제를 보고하고 Google의 <a href="https://code.google.com/p/android-developer-preview/">문제 추적기</a>를 사용해 피드백을 보내 주세요.
- <a href="http://g.co/dev/AndroidMDevPreview">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 개발자 미리 보기는 5월 28일부터 최종 Android M SDK가 출시될 때까지 실행됩니다. 최종 버전은 2015년 3사분기 중으로 예정된 공개 릴리스 직전에 출시할 계획입니다.
-
-
-</p>
-
-<p>
- 개발 중 중요 단계에 다다를 때마다 여러분의 테스트 기기를 위해 업데이트를 전달해 드리겠습니다.
- 잠정적인 중요 단계는 다음과 같습니다.
-</p>
-
-<ul>
- <li>
- <strong>미리 보기 1</strong>(최초 미리 보기 릴리스, 5월 말)
- </li>
-
- <li>
- <strong>미리 보기 2</strong>(6월 말/7월 초)
- </li>
-
- <li>
- <strong>미리 보기 3</strong>(최종 버전 출시 직전, 7월 말)
- </li>
-</ul>
-
-<p>
- 이러한 업데이트는 <strong>최종 SDK</strong>(3사분기 후반)로 막을 내릴 것이며, 이것으로 Android 새 버전에 대한 공식 API뿐만 아니라 최종 시스템 동작 및 기능도 제공하게 됩니다.
-
-
-</p>
-
-<p>
- Android M에서 테스트와 개발을 수행하는 동안 미리 보기 업데이트가 출시되는 것에 맞춰 <strong>개발 환경을 최신 상태로 유지</strong>할 것을 강력히 권장합니다.
-
- 이 과정을 보다 단순화하기 위해 이미 미리 보기 빌드에 플래시한 기기에는 <strong>OTA(over-the-air) 업데이트</strong>를 제공할 예정이며, 이외에도 수동으로 다운로드하고 플래시할 수 있는 시스템 이미지도 제공할 계획입니다.
-
-
-</p>
-<p class="note">
- <strong>참고:</strong> 최종 SDK와 시스템 이미지는 OTA로 전달할 수 없습니다. 그 대신 개발자 본인의 테스트 기기에서 <strong>수동으로 플래시</strong>해야 합니다.</strong>
-
-
-</p>
-
-<p>
- 미리 보기 업데이트를 이용할 수 있게 될 때마다 <a href="http://android-developers.blogspot.com/">Android 개발자 블로그</a>, 해당 사이트 및 <a href="http://g.co/dev/AndroidMDevPreview">Android M 개발자 커뮤니티</a>를 통해서 알려드릴 것입니다.
-
-
-</p>
-
-<h2 id="preview_tools">
- 미리 보기 내용
-</h2>
-
-<p>
- M 개발자 미리 보기에는 기존 앱을 여러 가지 화면 크기, 네트워크 기술, CPU/GPU 칩세트 및 하드웨어 아키텍처에서 테스트하는 데 필요한 모든 것이 포함되어 있습니다.
-
-
-</p>
-
-<h4>
- SDK 도구
-</h4>
-
-<p>
- 이러한 구성 요소는 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>에서 SDK Manager를 통해 다운로드할 수 있습니다.
-</p>
-
-<ul>
- <li>M 개발자 미리 보기 <strong>SDK 도구</strong>
- </li>
-
- <li>M 개발자 미리 보기 <strong>에뮬레이터 시스템 이미지</strong>(32비트 및 64비트)
-
- </li>
-
- <li>M 개발자 미리 보기 <strong>Android TV용 에뮬레이터 시스템 이미지</strong>(32비트)
-
- </li>
-</ul>
-
-<h4>
- 하드웨어 시스템 이미지
-</h4>
-
-<p>
- Nexus 기기에 대한 다음과 같은 하드웨어 시스템 이미지는 <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>
- 다음과 같은 관련 문서 리소스는 미리 보기에 대해 익히는 데 유용합니다.
-</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 개발자 미리 보기의 현재 버전에 대해 변경 내용 참고 사항과 차이점 보고서 등 관련 정보를 확인할 수 있습니다.
-
- </li>
-</ul>
-
-<h4>
- 지원 리소스
-</h4>
-
-<p>
- M 개발자 미리 보기에서 테스트하고 개발하는 데 유용한 지원 리소스를 소개합니다.
-
-</p>
-
-<ul>
- <li><a href="https://code.google.com/p/android-developer-preview/">M 개발자 미리 보기 문제 추적기</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+ 커뮤니티로, 여기에서 여러분은 Android M을 가지고 작업하는 <strong>다른 개발자들과 이야기</strong>를 나눌 수 있습니다. 서로의 의견이나 아이디어를 나누고 Android M 관련 질문에 대한 대답을 찾을 수도 있습니다.
-
-
-
- </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
- 대상 지정, 미리 보기 API 및 게시
-</h2>
-
-<p>
- Android M 개발자 미리 보기는 개발 전용 릴리스이며 <strong>표준 API 레벨이 없습니다</strong>.
- 앱을 테스트하기 위해 호환성 동작에서 옵트아웃하고자 하는 경우(강력히 권장함), M 개발자 미리 보기를 대상으로 지정하면 됩니다. 앱의 <code><a href=
- "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>을 <code>“MNC”</code>로 지정하세요.
-
-
-
-</p>
-
-<p>
- Android M 개발자 미리 보기에서는 <strong>미리 보기 API</strong>를 제공합니다. —이 API는 최종 SDK가 출시될 때까지 공식적인 버전으로 인정되지 않습니다. 최종 SDK 릴리스는 현재 2015년 삼사분기 무렵으로 예정되어 있습니다.
-
- 이는 즉, 시간이 지나면서 <strong>사소한 API 변경</strong>이 있을 것이라는 점을 예상해야 한다는 뜻입니다. 특히 프로그램 초반 몇 주 동안은 유의해야 합니다.
-
- Android M 개발자 미리 보기를 업데이트할 때마다 변경 내용을 요약해서 제공해 드릴 것입니다.
-
-</p>
-
-<p class="note">
- 미리 보기 API는 변경될 수 있지만, 런타임 권한과 절전 기능과 같은 기본 시스템 동작은 안정적이며 지금 바로 테스트 가능한 상태입니다.
-
-
-</p>
-
-<p>
- 게시에 관해서는, Google Play에서는 <strong>M 개발자 미리 보기를 대상으로 삼는 앱의 게시를 방지합니다.</strong>
- Android M 최종 SDK를 이용할 수 있게 되면 공식 Android M API 레벨을 대상으로 지정할 수 있고, 그때 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 설정</a>과 테스트 기기를 구성하는 데 관련된 지침을 따르세요.
-
-
- </li>
-
- <li><a href="https://developers.google.com/android/nexus/images">플래시 지침</a>을 따라 최신 M 개발자 미리 보기 시스템 이미지를 Nexus 5, 6, 9 및 Player에 플래시하세요.
-
- 일단 개발 기기를 플래시하고 나면, 미리 보기 업데이트가 OTA(over-the-air) 업데이트를 통해 전달됩니다.</a>
-
- </li>
-
- <li><a href="{@docRoot}preview/download.html#docs">M 미리 보기 API 참조</a>와 <a href="{@docRoot}preview/samples.html">M 미리 보기 샘플</a>을 다운로드하면 새로운 API 기능과 앱에서 그러한 기능을 사용하는 방법에 대해 좀 더 자세히 파악할 수 있습니다.
-
-
-
- </li>
-
- <li><a href="http://g.co/dev/AndroidMDevPreview">Android M 개발자 커뮤니티</a>에 가입하여 최신 소식을 알아보고, 새 플랫폼으로 작업하는 다른 개발자들과 이야기를 나눠보세요.
-
-
- </li>
-</ol>
-
-<p>
- Android M 개발자 미리 보기 프로그램에 참가해 주셔서 대단히 감사합니다!
-</p>
diff --git a/docs/html-intl/intl/ko/preview/samples.jd b/docs/html-intl/intl/ko/preview/samples.jd
deleted file mode 100644
index aeb8fc2..0000000
--- a/docs/html-intl/intl/ko/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=샘플
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- 다음 코드 샘플은 M 개발자 미리 보기를 위해 제공된 것입니다. Android Studio에서 샘플을 다운로드하려면 <b>파일 > 샘플 가져오기</b> 메뉴 옵션을 선택하십시오.
-
-</p>
-
-<p class="note">
- <strong>참고:</strong> 이러한 다운로드 가능한 프로젝트는 Gradle 및 Android Studio와 함께 쓰도록 만들어진 것입니다.
-
-</p>
-
-
-<h3 id="RuntimePermissions">런타임 권한</h3>
-
-<p>
- Android M은 시스템 권한이 작동하는 방식을 확 바꾸어 놓습니다. 사용자는 설치 중이 아니라 런타임에 권한 요청을 승인해 달라는 요청을 받습니다.
- 이 샘플은 이와 같은 권한을 요청하는 방법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">GitHub에서 가져오기</a></p>
-
-<h3 id="ConfirmCredentials">확인 자격 증명</h3>
-
-<p>
- 이 샘플은 앱에서 기기 자격 증명을 인증 방법으로 사용하는 법을 나타낸 것입니다.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">GitHub에서 가져오기</a>
-</p>
-
-<h3 id="FingerprintDialog">지문 대화창</h3>
-
-<p>
- 이 샘플은 앱에서 사용자를 인증하기 위해 등록된 지문을 인식하는 방법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">GitHub에서 가져오기</a></p>
-
-<h3 id="AutomaticBackup">앱용 자동 백업</h3>
-
-<p>
- Android M은 앱 설정에서 사용할 수 있는 자동 백업을 도입합니다. 이 샘플은 설정 백업을 관리하기 위해 앱에 필터링 규칙을 추가하는 방법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">GitHub에서 가져오기</a></p>
-
-<h3 id="CameraRaw">카메라 2 RAW</h3>
-
-<p>
- <code>Camera2</code> API를 사용해 RAW 카메라 버퍼를 캡처하고 이를 <code>DNG</code> 파일로 저장하는 법을 나타낸 것입니다.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">GitHub에서 가져오기</a></p>
-
-<h3 id="ActiveNotification">활성 알림</h3>
-
-<p>
- 이 샘플은 <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>를 사용하여 앱이 현재 표시하고 있는 알림 수가 몇 개인지 알게 되는 원리를 나타낸 것입니다.
-
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">GitHub에서 가져오기</a></p>
diff --git a/docs/html-intl/intl/ko/preview/setup-sdk.jd b/docs/html-intl/intl/ko/preview/setup-sdk.jd
deleted file mode 100644
index cf3084b..0000000
--- a/docs/html-intl/intl/ko/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=미리 보기 SDK 설정하기
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>이 문서의 내용</h2>
- <ol>
- <li><a href="#get-as13">Android Studio 1.3 가져오기</a></li>
- <li><a href="#get-sdk">미리 보기 SDK 가져오기</a></li>
- <li><a href="#create-update">프로젝트 생성 또는 업데이트</a></li>
- <li><a href="#setup-test">테스트를 위해 설정</a></li>
- </ol>
- </div>
-</div>
-
-<p>M 개발자 미리 보기 SDK는 Android SDK Manager에서 이용할 수 있습니다. 이 문서에서는 독자 여러분이 Android 앱 개발, 예를 들어 Android SDK Manager 사용이나 프로젝트 생성 등에 익숙하다고 가정합니다.
-
- Android를 처음 사용하시는 경우, 우선 <a href="{@docRoot}training/basics/firstapp/index.html">첫 앱 구축하기</a> 학습 단원부터 참조하십시오.</a>
-
-</p>
-
-<h2 id="get-as13">Android Studio 1.3 가져오기</h2>
-
-<p>개발자 미리 보기는 역시 미리 보기 상태인 Android Studio 1.3과 함께 사용하는 것이 가장 좋습니다.
- Android Studio 1.3의 미리 보기 버전을 설치하여 미리 보기 SDK 작업에 사용하는 것을 적극 추천합니다.
-</p>
-
-<p class="caution"><strong>주의:</strong> Android Studio 1.3의 카나리아 미리 보기는 아직도 활발히 개발 중인 상태입니다.
- 기본 개발 머신을 사용하여 개발자 미리 보기를 테스트하는 경우, 두 번째 Android Studio 설치를 하나 더 생성해 테스트에 사용하면 됩니다.
-
-</p>
-
-<p>Android Studio 1.3 미리 보기를 설치하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
- <li><a href="{@docRoot}tools/studio/index.html">Android Studio</a>를 다운로드하여 시작합니다.
-
- </li>
-
- <li><strong>설정</strong> 창을 엽니다(또는 Windows의 경우 <strong>파일 > 설정</strong>을 선택해도 됩니다).
- <strong>외관 및 동작 > 시스템 > 설정 > 업데이트</strong> 패널을 선택하십시오.
-
-
-
- <p class="aside">OSX의 경우, <strong>외관 및 동작</strong> 패널은 Android Studio의 <strong>기본 설정</strong> 창에 있습니다.
-
-</p>
- </li>
-
- <li> <strong>업데이트</strong> 패널에서 <strong>다음에 대해 업데이트 자동 확인:
- Canary 채널</strong>이라는 선택 사항을 선택합니다.
- </li>
-
- <li><strong>업데이트</strong> 패널에서 <strong>지금 확인</strong>을 선택하여 최신 카나리아 빌드를 확인합니다.
- 메시지가 표시되면 빌드를 다운로드하고 설치하십시오.
-
- </li>
-</ol>
-
-<h2 id="get-sdk">미리 보기 SDK 가져오기</h2>
-
-<p>개발 환경에 미리 보기 SDK 구성 요소를 추가하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
- <li>Android Studio 1.3 미리 보기를 시작합니다.
- </li>
-
- <li><strong>설정</strong> 창을 엽니다(또는 Windows의 경우 <strong>파일 > 설정</strong>을 선택해도 됩니다).
- <strong>외관 및 동작 > 시스템 > 설정 > 업데이트</strong> 패널을 선택하십시오.
-
-
-
- <p class="aside">OSX의 경우, <strong>외관 및 동작</strong> 패널은 Android Studio의 <strong>기본 설정</strong> 창에 있습니다.
-
-</p>
- </li>
-
- <li><strong>업데이트</strong> 패널에서 <strong>다음에 대해 업데이트 자동 확인:
- Canary 채널</strong> 및 <strong>Android SDK에 대한 업데이트 자동 확인:
- 미리 보기 채널</strong> 선택 사항을 선택합니다.
- </li>
-
- <li><strong>Android SDK Manager</strong>를 시작합니다 (Android Studio 1.3에서는 SDK Manager가 독립 실행형 애플리케이션이 아니고 Android Studio에 통합되어 있습니다).
-
-
- </li>
-
- <li><strong>플랫폼</strong> 섹션 아래에서 <strong>Android MNC 미리 보기</strong>를 선택하십시오.
-
- </li>
-
- <li><strong>도구</strong> 섹션에서 최신 Android <strong>SDK 도구</strong>, <strong>플랫폼-도구</strong>, 및 <strong>빌드-도구</strong>를 선택합니다.
-
-
- </li>
-
- <li><strong>패키지 설치</strong>를 클릭하고 패키지 전체에 대해 라이선스 사용 계약을 수락합니다.
-
- </li>
-
- <li>M 개발자 미리 보기가 설치되었는지 확인하려면 <strong>설정</strong> 창을 열고 <strong>외관 및 동작 > 시스템 설정 > Android SDK</strong> 패널을 선택하면 됩니다.
-
-</li>
-
- <li><strong>Android SDK</strong> 패널에서 <strong>SDK 플랫폼</strong> 탭을 선택합니다.
- <strong>Android MNC 미리 보기</strong>가 <em>설치됨</em> 아래 목록으로 나열되어 있는 것이 정상입니다.
- 또한, <strong>SDK 도구</strong> 탭을 열어 최신 도구가 설치되었는지 확인하십시오.
-
-
- </li>
-</ol>
-<p>이러한 단계를 완료하고 나면 미리 보기 구성 요소를 본인의 개발 환경에서 이용할 수 있습니다.
- </p>
-
-
-<h2 id="create-update">프로젝트 생성 또는 업데이트</h2>
-
-<p>
- 미리 보기 API를 사용하려면 개발 프로젝트를 하나 생성하거나 업데이트하여 미리 보기 구성 요소를 사용해야 합니다.
-
-</p>
-
-
-<h3 id="create">새 프로젝트 생성하기</h3>
-
-<p>
- 미리 보기로 프로젝트를 생성하려면 Android Studio를 사용할 것을 권장합니다. <a href="{@docRoot}sdk/installing/create-project.html">프로젝트 생성하기</a>에 설명되어 있는 단계를 쭉 따라가다 보면 프로젝트 마법사의 <em>폼 팩터</em> 화면에 도달합니다.
-
- 그러면 다음과 같은 단계를 따라 미리 보기에 맞게 구성된 프로젝트를 생성하면 됩니다.
-
-</p>
-
-<ul>
- <li><strong>전화기 및 태블릿</strong>을 확인합니다.</li>
- <li><strong>MNC: Android M(미리 보기)</strong>를 선택합니다. 이것은 <strong>최소 SDK</strong> 안에 있습니다.
-</li>
-</ul>
-
-
-<h3 id="update">기존 프로젝트 업데이트</h3>
-
-<p>
- 기존 프로젝트의 경우, 미리 보기 API를 활성화하려면 프로젝트 구성을 수정해야 합니다. 개발 환경에서 본인의 모듈에 대한 <code>build.gradle</code> 파일을 열고 다음의 값을 다음과 같이 설정합니다.
-
-
-</p>
-
-<ul>
- <li><code>compileSdkVersion</code>을 <code>'android-MNC'</code>로 설정</li>
- <li><code>minSdkVersion</code>을 <code>'MNC'</code>로 설정</li>
- <li><code>targetSdkVersion</code>을 <code>'MNC'</code>로 설정</li>
-</ul>
-
-
-<h2 id="setup-test">테스트를 위해 설정</h2>
-
-<p>
- 앱을 미리 보기로 테스트하려면 플랫폼의 미리 보기 버전으로 구성한 기기 또는 가상 기기가 있어야 합니다.
- 호환되는 기기를 가지고 있으면 미리 보기 플랫폼을 설치하여 테스트에 쓰면 됩니다.
- 그렇지 않은 경우, 가상 기기를 구성하여 테스트에 사용할 수도 있습니다.
-</p>
-
-<h3 id="setup-device">물리적 기기 설정</h3>
-
-<p>
- Nexus 5, Nexus 6, Nexus 9 또는 Android TV를 가지고 있는 경우, 이들 기기에 미리 보기 시스템 이미지를 설치하여 앱을 테스트하는 데 쓸 수 있습니다. 플랫폼의 미리 보기 버전으로 가상 기기를 설정하려면 Android Studio 내에서 해당 버전을 다운로드하면 됩니다. 이때 Android 가상 기기 관리자 도구를 사용하십시오.
-
-
-
-</p>
-
-<p class="caution">
- <strong>중요:</strong> 기기에 미리 보기 이미지를 설치하면 <em>기기에서 모든 데이터를 제거하므로</em>, 미리 보기 이미지를 설치하기에 앞서 데이터를 모두 백업하는 것이 좋습니다.
-
-</p>
-
-<h3 id="setupAVD">가상 기기 설정</h3>
-
-<p>
- 플랫폼의 미리 보기 버전으로 가상 기기를 설정하려면 Android Studio 내에서 해당 버전을 다운로드하면 됩니다. 이때 Android 가상 기기 관리자 도구를 사용하십시오.
-
-</p>
-
-<p>AVD Manager로 AVD를 생성하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
- <li><a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정하기</a>에 설명된 바에 따라 개발 환경에 미리 보기 SDK를 설치합니다.
-
-</li>
- <li><a href="{@docRoot}tools/devices/managing-avds.html">AVD Manager로 AVD 관리하기</a>에 나온 단계를 따르십시오.
-
- 다음과 같은 설정을 사용하면 됩니다.
- <ul>
- <li><strong>기기:</strong> Nexus 5, Nexus 6, Nexus 9 또는 Android TV</li>
- <li><strong>대상:</strong>
- Android M(미리 보기) - API 레벨 M</li>
- <li><strong>ABI:</strong> x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- 테스트를 위해 가상 기기를 생성하는 데 대한 자세한 정보는 <a href="{@docRoot}tools/devices/index.html">가상 기기 관리하기</a>를 참조하십시오.
-</p>
diff --git a/docs/html-intl/intl/ko/preview/testing/guide.jd b/docs/html-intl/intl/ko/preview/testing/guide.jd
deleted file mode 100644
index 7f17071..0000000
--- a/docs/html-intl/intl/ko/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=테스트 가이드
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>이 문서의 내용</h2>
- <ol>
- <li><a href="#runtime-permissions">권한 테스트</a></li>
- <li><a href="#doze-standby">Doze 및 앱 대기 모드 테스트</a></li>
- <li><a href="#ids">자동 백업 및 기기 식별자</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android M 개발자 미리 보기에서는 앱이 플랫폼의 다음 버전에서 제대로 작동할 것인지 확인해볼 기회를 부여합니다.
- 이 미리 보기에는 앱에 영향을 미칠 수 있는 수많은 API와 동작 변경 내용이 포함되어 있습니다.이 내용은 <a href="{@docRoot}preview/api-overview.html">API 개요</a>와 <a href="{@docRoot}preview/behavior-changes.html">동작 변경</a>에 설명해 놓았습니다.
-
- 미리 보기로 앱을 테스트할 때에는 사용자에게 좋은 환경을 제공하기 위해 개발자 여러분이 꼭 주안점을 두어야 할 몇 가지 특정한 시스템 변경 내용이 있습니다.
-
-
-</p>
-
-<p>
- 이 가이드는 앱에서 테스트할 미리 보기 기능은 어떤 것이고, 테스트 방법은 어떤지에 대해 설명한 것입니다. 이와 같은 특정 미리 보기 기능을 먼저 테스트하는 것이 좋습니다. 이들은 앱의 동작에 미치는 영향이 클 가능성이 높기 때문입니다.
-
-
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">권한</a>
- </li>
- <li><a href="#doze-standby">Doze 및 앱 대기 모드</a>
- </li>
- <li><a href="#ids">자동 백업 및 기기 식별자</a></li>
-</ul>
-
-<p>
- 테스트용 미리 보기 시스템 이미지로 기기 또는 가상 기기를 설정하는 방법에 대한 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html">미리 보기 SDK 설정하기</a>를 참조하십시오.
-
-</p>
-
-
-<h2 id="runtime-permissions">권한 테스트</h2>
-
-<p>
- 새로운 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 모델은 사용자가 여러분의 앱에 권한을 할당하는 방법을 바꿔 놓습니다.
- 설치 절차 중에 모든 권한을 허용하는 것이 아니라, 앱이 런타임에 사용자에게 각각의 권한을 요청해야 합니다.
-
- 사용자 입장에서는 이러한 동작으로 각 앱의 액티비티에 대해 더 세분화된 제어권을 행사할 수 있을 뿐만 아니라 이 앱이 어째서 특정한 권한을 요청하고 있는 것인지 맥락을 더 잘 이해할 수 있게 되기도 합니다.
- 사용자는 언제든 앱에 개별적으로 권한을 허용할 수 있고, 이를 취소할 수도 있습니다.
- 미리 보기의 이러한 기능은 앱의 동작에 영향을 미칠 가능성이 가장 높고, 앱의 몇 가지 기능이 작동하지 않도록 막거나 저하된 상태로 작동하게 할 수도 있습니다.
-
-
-</p>
-
-<p class="caution">
- 이 변경 내용은 새 플랫폼에서 실행되는 모든 앱에 영향을 비치며, 새 플랫폼 버전을 대상으로 하지 않는 앱도 예외가 아닙니다.
- 레거시 앱에 대해 플랫폼이 제한된 호환성 동작을 제공하기는 하지만, 지금 바로 새 권한 모델로 앱의 마이그레이션 계획을 시작하는 편이 좋습니다. 플랫폼이 공식적으로 출시될 때에 맞춰 앱의 업데이트된 버전을 게시하는 것을 목표로 하십시오.
-
-
-</p>
-
-
-<h3 id="permission-test-tips">테스트 팁</h3>
-
-<p>
- 다음은 새 권한 동작에 대해 앱 테스트를 계획하고 실행하는 데 유용한 몇 가지 테스트 팁입니다.
-
-</p>
-
-<ul>
- <li>앱의 현재 권한과 관련된 코드 경로를 확인합니다.</li>
- <li>권한 보호된 서비스 및 데이터 전반에 걸친 사용자 흐름을 테스트합니다.</li>
- <li>허용된/취소된 권한을 여러 가지로 조합하여 테스트합니다.</li>
- <li>명령줄에서 권한을 관리할 때 {@code adb} 도구를 사용합니다.
- <ul>
- <li>권한과 상태를 그룹별로 목록으로 나열합니다.
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>하나 이상의 권한을 다음과 같은 구문을 사용하여 허용하거나 취소합니다.<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>권한을 사용하는 서비스에 대해 앱을 분석해봅니다.</li>
-</ul>
-
-<h3 id="permission-test-strategy">테스트 전략</h3>
-
-<p>
- 권한을 변경하면 앱의 구조와 디자인은 물론 사용자 환경과, 개발자가 사용자에게 제공하는 흐름에도 영향을 미칩니다.
- 앱의 현재 권한 사용 내용을 평가한 다음 제공하고자 하는 새로운 흐름을 계획하기 시작해야 합니다.
- 플랫폼의 공식 릴리스에서 호환성 동작을 제공할 예정이지만, 이와 같은 동작에만 의존하지 말고 앱 업데이트를 계획하는 것이 좋습니다.
-
-
-</p>
-
-<p>
- 앱이 실제로 필요로 하고 사용하는 권한을 확인한 다음, 권한 보호된 서비스를 사용하는 여러 가지 코드 경로를 찾습니다.
- 이렇게 하려면 새 플랫폼에서 여러 가지로 조합한 테스트를 거치고 코드 분석을 통해야 합니다.
- 테스트에서는 런타임 권한에 옵트인하는 것에 주안점을 두는 것이 좋습니다. 앱의 {@code targetSdkVersion}을 미리 보기 버전으로 변경하세요.
- 자세한 정보는 <a href="{@docRoot}preview/setup-sdk.html#">미리 보기 SDK 설정하기</a>를 참조하십시오.
-
-</p>
-
-<p>
- 불러내고 추가한 여러 가지 권한들을 다양하게 조합해서 테스트해보면 권한에 좌우되는 사용자 흐름을 강조할 수 있습니다.
- 종속성이 분명하지 않거나 논리적인 경우, 리팩터링을 고려해 보거나 해당 흐름을 구분하여 종속성을 제거, 또는 해당 권한이 왜 필요한지 분명히 하는 방안을 고려해야 합니다.
-
-
-</p>
-
-<p>
- 런타임 권한의 동작, 테스트 및 모범 사례에 대한 자세한 정보는 <a href="{@docRoot}preview/features/runtime-permissions.html">권한</a> 개발자 미리 보기 페이지를 참조하십시오.
-
-
-</p>
-
-
-<h2 id="doze-standby">Doze 및 앱 대기 모드 테스트</h2>
-
-<p>
- Doze 및 앱 대기 모드의 절전 기능은 기기가 유휴 상태에 있을 때 또는 사용자가 앱에 초점을 맞추고 있지 않을 때 앱이 수행할 수 있는 배경 처리의 양을 제한합니다.
- 시스템이 앱에 부과할 수 있는 제한 사항에는 네트워크 액세스를 제한하거나 없애기, 배경 작업을 일시 중지시키기, 알림 일시 중지, 절전 모드 해제 및 알람 요청 무시 등이 포함됩니다.
-
- 이러한 절전 기능에 앱이 적절히 동작하도록 확실히 해 두려면 이와 같은 저전력 상태를 시뮬레이트하여 앱을 테스트해보아야 합니다.
-
-
-</p>
-
-<h4 id="doze">앱에서 Doze 테스트하기</h4>
-
-<p>앱으로 Doze 기능을 테스트하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
-<li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</li>
-<li>기기를 개발 머신에 연결시키고 앱을 설치합니다.</li>
-<li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
-<li>기기가 Doze 모드에 들어가는 것을 시뮬레이트하려면 다음 명령을 실행하십시오.
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>기기가 다시 활성화되면 앱이 어떻게 동작하는지 살펴보십시오. 기기가 Doze 모드를 종료할 때 정상적으로 복구되는지 확인해야 합니다.
-</li>
-</ol>
-
-
-<h4 id="standby">앱에서 앱 대기 모드 테스트하기</h4>
-
-<p>앱으로 앱 대기 모드를 테스트하려면 다음과 같이 하면 됩니다.</p>
-
-<ol>
- <li>하드웨어 기기 또는 가상 기기를 M 미리 보기 시스템 이미지로 구성합니다.</li>
- <li>기기를 개발 머신에 연결시키고 앱을 설치합니다.</li>
- <li>앱을 실행시킨 다음 활성 상태로 그냥 둡니다.</li>
- <li>앱이 대기 모드에 들어가는 것을 시뮬레이트하려면 다음 명령을 실행하십시오.
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>앱이 절전 모드 해제되는 상태를 시뮬레이트하려면 다음 명령을 사용하면 됩니다.
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>앱이 절전 모드에서 해제되면서 어떻게 동작하는지 살펴보십시오. 대기 모드에서 정상적으로 복구되는지 확인해야 합니다.
- 특히, 앱의 알림과 배경 작업이 계속 예상했던 대로 기능하는지 확인해야 합니다.
-</li>
-</ol>
-
-<h2 id="ids">앱용 자동 백업 및 기기별 식별자</h2>
-
-<p>앱이 내부 저장소에서 각 기기에 따라 다른 식별자를 유지하는 경우(예: Google Cloud 메시지 등록 ID), 모범 사례를 따라 저장소 위치를 자동 백업에서 배제해야 합니다. 이 내용은 <a href="{@docRoot}preview/backup/index.html">앱용 자동 백업</a>에 설명되어 있습니다.
-
-
-
- </p>
diff --git a/docs/html-intl/intl/ko/preview/testing/performance.jd b/docs/html-intl/intl/ko/preview/testing/performance.jd
deleted file mode 100644
index ce2bf27..0000000
--- a/docs/html-intl/intl/ko/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=표시 성능 테스트
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=성능, FPS, 도구
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>이 문서의 내용</h2>
- <ol>
- <li><a href="#measure">UI 성능 측정</a>
- <ul>
- <li><a href="#aggregate">프레임 상태 집계</a></li>
- <li><a href="#timing-info">정확한 프레임 타이밍 정보</a></li>
- <li><a href="#timing-dump">단순한 프레임 타이밍 덤프</a></li>
- <li><a href="#collection-window">상태 수집 창 제어</a></li>
- <li><a href="#diagnose">성능 저하 진단</a></li>
- <li><a href="#resources">추가 리소스</a></li>
- </ul>
- </li>
- <li><a href="#automate">UI 성능 테스트 자동화</a>
- <ul>
- <li><a href="#ui-tests">UI 테스트 설정</a></li>
- <li><a href="#automated-tests">자동화된 UI 테스트 설정</a></li>
- <li><a href="#triage">관측된 문제 심사 및 수정</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- 사용자 인터페이스(UI) 성능 테스트를 수행하면 앱이 기능적인 요건에 부합할 뿐만 아니라 사용자가 앱과 부드럽고 매끈하게 상호작용하며 초당 60 프레임의 일관된 속도로(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">왜 60fps일까요?</a>) 생략되거나 지연된 프레임, 또는 전문 용어로 <em>jank</em>(프레임이 넘어가는 현상)가 없이 실행되게 보장할 수 있습니다.
-
-
- 이 문서에서는 UI 성능을 측정하는 데 사용할 수 있는 몇 가지 도구를 설명하고, 테스트 방법에 UI 성능 측정법을 통합하는 데 쓰이는 접근법을 보여드립니다.
-
-
-</p>
-
-
-<h2 id="measure">UI 성능 측정</h2>
-
-<p>
- 성능을 개선하려면 우선 시스템의 성능을 측정할 수 있는 능력부터 갖추고, 그 다음에 파이프라인의 여러 부분에서 나올 수 있는 다양한 문제를 진단하고 식별해야 합니다.
-
-
-</p>
-
-<p>
- <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em>는 Android 도구의 일종으로 기기에서 실행되면서 시스템 서비스의 상태에 대한 흥미로운 정보를 덤프하는 역할을 합니다.
-
- <em>gfxinfo</em> 명령을 dumpsys에 전달하면 기록 단계 중에 발생하는 애니메이션 프레임과 관련된 성능 정보가 담긴 logcat으로 출력을 제공합니다.
-
-
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- 이 명령은 프레임 타이밍 데이터의 서로 다른 변형을 여러 개 작성할 수 있습니다.
-</p>
-
-<h3 id="aggregate">프레임 상태 집계</h3>
-
-<p>
- M 미리 보기에서 이 명령은 프레임 데이터의 집계된 분석을 logcat으로 출력합니다. 이는 프로세스의 전 수명을 통틀어 수집한 것입니다.
- 예를 들면 다음과 같습니다.
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- 이와 같은 높은 레벨의 통계는 레벨이 높을 때 앱의 렌더링 성능을 나타내며, 이외에도 여러 프레임에 걸친 앱의 안정성을 나타내기도 합니다.
-
-</p>
-
-
-<h3 id="timing-info">정확한 프레임 타이밍 정보</h3>
-
-<p>
- M 미리 보기에서는 gfxinfo에 사용할 수 있는 새 명령어를 도입했습니다. 바로 <em>framestats</em>로, 이는 최근 프레임으로부터 극히 상세한 프레임 타이밍 정보를 제공하여 문제를 더욱 정확하게 추적하고 디버그할 수 있습니다.
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- 이 명령은 프레임 타이밍 정보를 나노초 타임스탬프로 출력하며, 그 출처는 앱이 만든 마지막 120개의 프레임입니다. 아래는 adb dumpsys gfxinfo
- <PACKAGE_NAME> framestats에서 가져온 원시 출력을 예로 나타낸 것입니다.
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- 이 출력의 각 줄은 앱이 만든 프레임을 나타냅니다. 각 줄에는 정해진 숫자의 열이 있으며 이 열은 프레임 제작 파이프라인의 각 단계에서 소요한 시간을 나타냅니다.
- 다음 섹션에서는 각 열이 무엇을 나타내는지 등, 이 형식에 대해 좀 더 자세히 다뤄보겠습니다.
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats 데이터 형식</h4>
-
-<p>
- 데이터 블록은 CSV 형식으로 출력되기 때문에 이를 개발자가 선택한 스프레드시트 도구에 붙여넣거나 수집해서 스크립트로 구문 분석하기 등의 작업이 매우 단도직입적입니다.
- 다음 표는 출력 데이터 열의 형식을 설명한 것입니다.
- 타임스탬프는 모두 나노초 단위입니다.
-</p>
-
-<ul>
- <li>플래그
- <ul>
- <li>플래그 열에 '0'이 기재되어 있는 행의 경우, 총 프레임 시간을 계산하려면 FRAME_COMPLETED 열에서 INTENDED_VSYNC 열을 빼면 됩니다.
-
- </li>
-
- <li>이것이 0이 아니면 그 행은 무시해야 합니다. 해당 프레임이 정상 성능의 이상값인 것으로 판별되었기 때문이며, 여기에서는 레이아웃과 그리기에 16ms 이상이 걸릴 것으로 예상됩니다.
-
- 다음은 이런 일이 일어나는 몇 가지 이유입니다.
- <ul>
- <li>창 레이아웃이 변경되었습니다(애플리케이션의 첫 프레임 또는 한 회 회전 이후).
-
- </li>
-
- <li>프레임을 건너뛰었을 가능성도 있습니다. 이 경우 몇몇 값에 가비지 타임스탬프가 있을 것입니다.
- 프레임을 건너뛰는 것은 해당 프레임이 60fps를 초과하는 경우 또는 화상에 나타난 것 중 아무 것도 변한 것이 없을 때 등이며, 이는 반드시 앱에 문제가 있음을 나타내는 징후는 아닙니다.
-
-
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>프레임에 대한 원래 의도한 시작 지점입니다. 이 값이 VSYNC와 다른 경우, UI 스레드에서 발생한 작업이 있어 이것이 vsync 신호에 적절한 시간 내에 응답하지 못하도록 한 것입니다.
-
-
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>Vsync 수신기 전체와 프레임에 대한 드로잉에서 사용된 시간 값입니다.(Choreographer 프레임 콜백, 애니메이션, View.getDrawingTime() 등)
-
- </li>
-
- <li>VSYNC와 이것이 애플리케이션에 미치는 영향에 대해 더 자세히 알아보려면 <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">VSYNC 이해하기</a> 비디오를 확인하십시오.
-
-
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>입력 대기열에서 가장 오래된 입력 이벤트의 타임스탬프 또는 프레임에 대한 입력 이벤트가 없는 경우 Long.MAX_VALUE입니다.
-
- </li>
-
- <li>이 값은 기본적으로 플랫폼 작업을 위해 의도된 것이며 앱 개발자에게는 한정된 정도로 유용한 값입니다.
-
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>입력 대기열에서 가장 최근 입력 이벤트의 타임스탬프 또는 프레임에 대한 입력 이벤트가 없는 경우 Long.MAX_VALUE입니다.
-
- </li>
-
- <li>이 값은 기본적으로 플랫폼 작업을 위해 의도된 것이며 앱 개발자에게는 한정된 정도로 유용한 값입니다.
-
- </li>
-
- <li>다만 앱이 얼마나 긴 대기 시간을 추가하고 있는지를 대략적으로 알아볼 수는 있습니다. (FRAME_COMPLETED - NEWEST_INPUT_EVENT)를 살펴보면 됩니다.
-
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>입력 이벤트가 애플리케이션에 발송된 시점의 타임스탬프입니다.
- </li>
-
- <li>이것과 ANIMATION_START 사이의 시간을 보면 애플리케이션이 입력 이벤트를 처리하느라 보낸 시간을 측정할 수 있습니다.
-
- </li>
-
- <li>이 숫자가 크면(2ms 초과) 이는 앱이 입력 이벤트를 처리하느라 보기 드물게 긴 시간을 소요한다는 뜻입니다. 예를 들어 View.onTouchEvent()는 이 작업을 최적화해야 하거나 다른 스레드로 오프로드해야 한다는 뜻일 수 있습니다.
-
- 다른 시나리오도 몇 가지 있을 수 있다는 점을 유의하십시오. 예를 들어 새 액티비티를 시작하는 클릭 이벤트나 그와 비슷한 것의 경우, 이 숫자가 클 것을 예상하고 받아들일 수 있습니다.
-
-
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>Choreographer에 등록된 애니메이션이 실행된 시점의 타임스탬프입니다.
- </li>
-
- <li>이것과 PERFORM_TRANVERSALS_START 사이의 시간을 보면 실행 중인 애니메니터 전체((ObjectAnimator, ViewPropertyAnimator 및 Transitions가 보편적인 것들임)를 평가하는 데 시간이 얼마나 걸렸는지 판단할 수 있습니다.
-
-
- </li>
-
- <li>이 숫자가 크면(2ms 초과), 앱이 사용자 지정 애니메이터를 작성한 적이 있는지 확인하십시오. 아니면 ObjectAnimators가 애니메이션 효과를 실행하는 필드가 어느 것인지 알아보고 이들이 애니메이션에 대해 적절한지 확인해야 합니다.
-
-
- </li>
-
- <li>Choreographer에 대한 자세한 정보는 <a href="https://developers.google.com/events/io/sessions/325418001">버터거나 나쁘거나(For Butter or Worse)</a> 비디오를 참조하십시오.
-
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>이 값에서 DRAW_START를 빼면 레이아웃과 측정 단계를 완료하는 데 얼마나 걸렸는지 추출할 수 있습니다(스크롤 또는 애니메이션 중에는 이 값이 0에 가까울 것이라는 예상이 나와야 한다는 점을 유의하십시오).
-
-
- </li>
-
- <li>렌더링 파이프라인의 측정 및 레이아웃 단계에 대한 자세한 정보는 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">무효화, 레이아웃 및 성능</a> 비디오를 참조하십시오.
-
-
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>PerformTraversals의 그리기 단계가 시작된 시점입니다. 이것은 무효화된 모든 보기의 표시 목록을 기록하는 시작 지점입니다.
-
- </li>
-
- <li>이것과 SYNC_START 사이의 시간이 트리의 모든 무효화된 보기에서 View.draw()를 호출하는 데 걸린 시간입니다.
-
- </li>
-
- <li>드로잉 모델에 대한 자세한 정보는 <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">하드웨어 가속</a> 또는 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">무효화, 레이아웃 및 성능</a> 비디오를 참조하십시오.
-
-
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>드로잉의 동기화 단계가 시작된 시점입니다.
- </li>
-
- <li>이것과 ISSUE_DRAW_COMMANDS_START 사이의 시간이 상당히 큰 값인 경우(0.4ms 초과 또는 그와 유사), 일반적으로 새로운 비트맵이 많이 그려져서 이를 GPU에 업로드해야 한다는 뜻입니다.
-
-
- </li>
-
- <li>동기화 단계에 대해 더 자세히 알아보려면 <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">프로필 GPU 렌더링</a> 비디오를 참조하십시오.
-
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>하드웨어 렌더러가 GPU에 드로잉 명령을 발행하기 시작한 시점입니다.
- </li>
-
- <li>이것과 FRAME_COMPLETED 사이의 시간을 보면 앱이 얼마나 많은 GPU 작업을 생성하고 있는지 대략적으로 알 수 있습니다.
- Overdraw가 너무 많거나 렌더링 효과가 비효율적인 것 등의 문제가 여기에 나타납니다.
-
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>EglSwapBuffers가 호출된 시점으로, 플랫폼 작업 외에는 비교적 흥미롭지 않습니다.
-
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>모두 끝났습니다! 이 프레임에 작업하느라 소요된 총 시간을 계산하려면 FRAME_COMPLETED - INTENDED_VSYNC를 수행하면 됩니다.
-
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- 이 데이터는 여러 가지 방법으로 사용할 수 있습니다. 한 가지 단순하면서도 유용한 시각화는 프레임 시간의 분배(FRAME_COMPLETED - INTENDED_VSYNC)를 여러 가지 대기 시간 버킷에서 표시한 히스토그램을 예로 들 수 있습니다. 아래 그림을 참조하십시오.
-
- 이 그래프를 보면 한 눈에 대부분의 프레임이 아주 양호했다는 것을 알아볼 수 있습니다. 대부분 16ms 최종 기한(빨간색으로 표시)보다 한참 아래에 있지만, 최종 기한을 크게 넘어선 프레임도 몇 개 있습니다.
-
- 이 히스토그램에서 시간 경과에 따른 변화를 살펴보면 대규모 이동이나 새 이상값이 생성되는 것을 확인할 수 있습니다.
- 이외에도 데이터 내의 수많은 타임스탬프를 근거로 입력 대기 시간, 레이아웃에서 보낸 시간 또는 여타 비슷한 흥미로운 메트릭도 그래프로 표현할 수 있습니다.
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">단순한 프레임 타이밍 덤프</h3>
-
-<p>
- <strong>프로필 GPU 렌더링</strong>이 개발자 옵션에서 <strong>adb 셸의 dumpsys gfxinfo</strong>로 설정된 경우, <code>adb shell dumpsys gfxinfo</code> 명령이 가장 최근의 120개 프레임에 대한 타이밍 정보를 출력하되, 몇 개의 서로 다른 카테고리로 나누어 탭으로 구분된 값을 담아 표현합니다.
-
-
- 이 데이터를 사용하면 드로잉 파이프라인의 어떤 부분이 레벨이 높을 때 느려지는지 나타내는 데 유용합니다.
-
-</p>
-
-<p>
- 위의 <a href="#fs-data-format">framestats</a>와 마찬가지로, 이것을 개발자가 선택한 스프레드시트 도구에 붙여넣거나 수집해서 스크립트로 구문 분석하는 작업은 매우 단도직입적입니다.
-
- 다음 그래프는 앱이 생성한 수많은 프레임이 어디에서 시간을 보내는지 분석한 내용을 표시한 것입니다.
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- Gfxinfo를 실행한 결과, 그 출력을 복사하여 이를 스프레드시트 애플리케이션에 붙여넣은 다음 데이터를 누적 가로 막대형 그래프로 나타내는 것입니다.
-
-</p>
-
-<p>
- 각 세로 막대는 애니메이션 한 프레임을 나타냅니다. 그 막대의 높이가 해당 애니메이션 프레임을 계산하는 데 걸린 밀리초 수를 나타냅니다.
- 막대에서 색이 지정된 각 세그먼트는 렌더링 파이프라인의 각기 다른 단계를 나타내므로, 개발자는 이것을 보고 애플리케이션의 어떤 부분이 병목 현상을 유발하고 있는지 확인할 수 있습니다.
-
- 렌더링 파이프라인을 잘 이해하고 이에 맞게 최적화하는 법에 대한 자세한 내용은 <a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">무효화 레이아웃 및 성능</a> 비디오를 참조하십시오.
-
-
-</p>
-
-
-<h3 id="collection-window">상태 수집 창 제어</h3>
-
-<p>
- Framestats와 단순한 프레임 타이밍은 양쪽 모두 아주 짧은 시간 범위 동안 데이터를 수집합니다. 렌더링 약 2초에 상당하는 시간입니다.
- 이 시간 범위를 정확하게 제어하려면(예: 데이터를 특정 애니메이션에 제한), 카운터를 모두 초기화한 다음 수집한 통계를 집계하면 됩니다.
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- 이 방법은 명령 자체를 덤프하는 방법과 함께 써서 정기적인 간격을 두고 수집과 초기화를 반복하여 계속해서 2초 미만의 프레임 창을 캡처하도록 하는 데 쓰일 수도 있습니다.
-
-
-</p>
-
-
-<h3 id="diagnose">성능 저하 진단</h3>
-
-<p>
- 성능이 저하된 것을 알아내는 것은 문제를 추적하고 애플리케이션의 건강 상태를 높은 수준으로 유지 관리하는 데 좋은 첫 단계입니다.
- 그러나 dumpsys는 문제의 존재 여부와 상대적인 심각도만 식별하는 데 그치지 않습니다.
- 각 성능 문제의 제각기 다른 원인을 진단하고 이를 해결하기 위해 적절한 방법을 찾아야 하는 것은 변하지 않습니다.
- 이를 위해, <a href="{@docRoot}tools/help/systrace.html">systrace</a> 도구를 사용하는 것을 적극적으로 추천합니다.
-
-</p>
-
-
-<h3 id="resources">추가 리소스</h3>
-
-<p>
- Android의 렌더링 파이프라인의 작동 원리나 여기에서 마주칠 수 있는 보편적인 문제와 그 해결 방법에 대한 자세한 정보를 원하시면, 다음 리소스 중 몇 가지를 유용하게 쓸 수 있습니다.
-
-
-</p>
-
-<ul>
- <li>렌더링 성능의 기초
- </li>
- <li>왜 60fps일까요?
- </li>
- <li>Android UI와 GPU
- </li>
- <li>무효화 레이아웃 및 성능
- </li>
- <li>Systrace로 UI 성능 분석하기
- </li>
-</ul>
-
-
-<h2 id="automate">UI 성능 테스트 자동화</h2>
-
-<p>
- UI 성능 테스트에 대한 한 가지 관점은 그저 인간 테스터가 대상 앱에서 일련의 사용자 작업을 수행하도록 하는 것입니다. 그러면서 육안으로 jank가 있는지 살펴보든가, 아니면 오랜 시간을 들여 도구 중심적인 관점으로 jank를 찾아내는 것입니다.
-
- 하지만 이와 같은 수동식 방법은 위험 투성이입니다. 프레임 속도 변화를 인지하는 사람의 능력에는 개인차가 극명하고, 시간도 오래 걸릴 뿐더러 지루하고 오류가 발생할 가능성이 높습니다.
-
-
-</p>
-
-<p>
- 보다 효율적인 접근 방식은 자동화된 UI 테스트로부터 가져온 주요 성능 메트릭을 기록하고 분석하는 것입니다.
- Android M 개발자 미리 보기에는 새로운 로깅 기능이 포함되어 있어 애플리케이션 애니메이션의 jank의 양과 심각도를 판별하기 쉽고, 이를 사용해 현재 성능을 판단하고 앞으로의 성능 목표를 추적하기 위해 철저한 프로세스를 구축할 수도 있습니다.
-
-
-
-</p>
-
-<p>
- 이 글에서는 그러한 데이터를 사용하여 성능 테스트를 자동화하는 데 권장되는 방안을 찬찬히 알려드립니다.
-
-</p>
-
-<p>
- 이것은 주로 두 가지 주요 작업으로 나뉘어 있습니다. 첫째로 무엇을 테스트할지, 어떻게 테스트할지를 확인합니다. 그런 다음 두 번째로 자동화된 테스트 환경을 설정하고 유지 관리하는 것입니다.
-
-
-</p>
-
-
-<h3 id="ui-tests">UI 테스트 설정</h3>
-
-<p>
- 자동화된 테스트를 시작하기 전에 우선 몇 가지 수준 높은 결정을 내려야 합니다. 그래야 테스트 공간과 스스로에게 필요한 부분을 제대로 숙지할 수 있습니다.
-
-</p>
-
-<h4>
- 테스트할 주요 애니메이션/흐름 알아내기
-</h4>
-
-<p>
- 성능이 불량한 것이 사용자에게 가장 눈에 띄는 것은 애니메이션이 원활히 작동하지 않을 때라는 점을 명심하십시오.
- 따라서, 테스트할 UI 작업 유형을 식별할 때에는 사용자가 가장 많이 접하게 되는 애니메이션이나 사용자 환경에 가장 중요한 것에 주안점을 두면 유용합니다.
-
- 예를 들어 다음은 이처럼 식별하는 데 유용하게 쓰일 수 있는 몇 가지 보편적인 시나리오입니다.
-</p>
-
-<ul>
- <li>기본 ListView 또는 RecyclerView를 스크롤링
- </li>
-
- <li>비동기 대기 주기 동안 표시되는 애니메이션
- </li>
-
- <li>비트맵 로딩/조작이 들어 있을 수 있는 모든 애니메이션
- </li>
-
- <li>알파 혼합이 포함된 애니메이션
- </li>
-
- <li>Canvas로 사용자 지정 보기 드로잉
- </li>
-</ul>
-
-<p>
- 팀 구성원인 엔지니어, 디자이너와 제품 관리자와 협력하여 이와 같이 테스트 대상 범위에 넣어야 하는 주요 제품 애니메이션의 우선 순위를 지정하십시오.
-
-</p>
-
-<h4>
- 앞으로의 목표를 정의하고 그것을 추적하기
-</h4>
-
-<p>
- 레벨이 높을 때에는 특정한 성능 목표를 알아내고 테스트 작성에 집중하며, 그에 관한 데이터를 수집하는 것이 매우 중요할 수 있습니다.
- 예를 들면 다음과 같습니다.
-</p>
-
-<ul>
- <li>처음에만 UI 성능을 추적하여 좀 더 자세히 알아보기만 했으면 합니까?
- </li>
-
- <li>앞으로 마주치게 될 성능 저하를 방지하고자 합니까?
- </li>
-
- <li>지금은 매끄러운 프레임 비율이 약 90% 정도이지만 이번 사분기 내에 98%까지 올리고자 합니까?
- </li>
-
- <li>지금 매끄러운 프레임이 약 98%이고 성능이 저하되지 않기를 바랍니까?
- </li>
-
- <li>저사양 기기에서 성능을 개선하는 것이 목표입니까?
- </li>
-</ul>
-
-<p>
- 이 모든 경우, 애플리케이션의 여러 버전에 걸쳐 성능을 나타내주는 사용 기록 추적을 수행하는 것이 좋습니다.
-
-</p>
-
-<h4>
- 테스트할 기기 정하기
-</h4>
-
-<p>
- 애플리케이션의 성능은 어느 기기에서 실행되는지에 따라 여러 가지로 달라집니다. 메모리 용량이 적고 GPU 파워가 딸리거나 CPU 칩 속도가 느린 기기도 있습니다.
- 이는 즉 한 가지 하드웨어 세트에서는 잘 작동하는 애니메이션이 다른 곳에서는 그렇지 않을 수도 있다는 뜻입니다. 더 나쁜 경우로는 파이프라인의 서로 다른 부분에서 병목 현상이 일어나는 결과를 초래할 수도 있습니다.
-
- 따라서, 사용자가 볼 수도 있는 이러한 변형을 감안하기 위해 테스트를 실행할 기기를 여러 가지로 선택하는 것이 중요합니다. 최신 고사양 기기, 저사양 기기, 태블릿 등 양쪽 측면을 모두 고려하십시오.
-
- CPU 성능, RAM, 화면 밀도, 크기 등의 변형을 잘 살피십시오.
- 고사양 기기를 통과하는 테스트가 저사양 기기에서는 실패할 수도 있습니다.
-
-</p>
-
-<h4>
- UI 테스트의 기본 프레임워크
-</h4>
-
-<p>
- <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>와 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> 등의 도구 스위트는 개발자의 애플리케이션을 통과하는 사용자의 동작을 자동화하는 데 도움이 되도록 구축된 것입니다.
-
- 이들은 단순한 프레임워크로, 사용자와 기기의 상호작용을 흉내 냅니다.
- 이러한 프레임워크를 사용하려면, 사실상 개발자가 나름의 고유한 스크립트를 생성해야 합니다. 이는 일련의 사용자-동작을 통해 실행되고, 이를 기기 자체에서 재생합니다.
-
-
-</p>
-
-<p>
- 이렇게 자동화된 테스트를 여러 가지로 조합하여 <code>dumpsys gfxinfo</code>와 함께 사용하면 재현 가능한 시스템을 재빨리 만들어내 테스트를 실행하고 해당 조건 하에서 성능 정보를 측정할 수 있습니다.
-
-
-</p>
-
-
-<h3 id="automated-tests">자동화된 UI 테스트 설정</h3>
-
-<p>
- UI 테스트를 실행할 수 있게 되고, 한 번의 테스트로부터 데이터를 수집할 파이프라인을 갖추게 되면 다음으로 중요한 단계는 해당 테스트를 여러 번, 여러 기기에 걸쳐 실행하고 그 결과 도출된 성능 데이터를 집계하여 개발 팀이 한층 더 상세하게 분석할 수 있게 해주는 프레임워크를 채택하는 것입니다.
-
-
-
-</p>
-
-<h4>
- 테스트 자동화를 위한 프레임워크
-</h4>
-
-<p>
- UI 테스트 프레임워크(예: <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)는 대상 기기/에뮬레이터에서 직접 실행된다는 점에 주목할 만한 가치가 있습니다.
- 반면 <em>dumpsys gfxinfo</em>에 의해 완료되는 성능 수집 정보는 호스트 머신이 구동하여 ADB를 통해 명령을 전송합니다.
- 이러한 각각의 항목 자동화를 연결하는 데 도움을 주기 위해 <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 프레임워크가 개발되었습니다. 이것은 호스트 머신에서 실행되는 스크립팅 시스템으로, 일련의 연결된 기기에 명령을 발행하기도 하고 이들로부터 데이터를 수신할 수도 있습니다.
-
-
-
-</p>
-
-<p>
- UI 성능 테스트를 제대로 자동화하기 위해 최소한의 수준으로 일련의 스크립트를 구축하는 경우, 다음과 같은 작업을 수행하기 위해 monkeyRunner를 활용할 수 있어야 합니다.
-
-</p>
-
-<ul>
- <li>원하는 APK를 대상 기기(하나 이상일 수 있음) 또는 에뮬레이터에 로드하여 시작합니다.
- </li>
-
- <li>UI Automator UI 테스트를 시작하고 실행되도록 허용하십시오.
- </li>
-
- <li><em>dumpsys gfxinfo</em><em></em>를 통해 성능 정보를 수집합니다.
- </li>
-
- <li>정보를 집계하고 이를 다시 유용한 방식으로 표시해 개발자에게 보여줍니다.
- </li>
-</ul>
-
-
-<h3 id="triage">관측된 문제 심사 및 수정</h3>
-
-<p>
- 문제의 패턴이나 성능 저하를 확인했으면, 다음 단계는 해결 방법을 알아내어 적용합니다.
- 자동화된 테스트 프레임워크가 프레임에 대해 정확한 타이밍 분석을 유지하는 경우, 최근의 의심스러운 코드/레이아웃 변경 내용을 꼼꼼히 훑어보거나(성능 저하의 경우) 수동 조사로 전환했을 때 시스템의 어느 부분을 분석할지 범위를 좁히는 데 도움이 될 수 있습니다.
-
-
- 수동 조사의 경우, <a href="{@docRoot}tools/help/systrace.html">systrace</a>부터 시작하는 것이 좋습니다. 이렇게 하면 렌더링 파이프라인의 모든 단계, 시스템에 있는 모든 스레드와 코어는 물론 개발자가 정의한 사용자 지정 이벤트 마커 일체에 대해 정확한 타이밍 정보를 나타내주기 때문입니다.
-
-
-</p>
-
-<h4>
- 임시 타이밍을 적절하게 프로파일링하기
-</h4>
-
-<p>
- 렌더링 성능에서 타이밍을 가져와 이를 측정하는 데 수반되는 몇 가지 어려움을 알아두는 것이 중요합니다.
- 이와 같은 숫자는 본래 결정적인 것이 아니고 시스템 상태, 이용 가능한 메모리 용량, 열 제한 및 개발자가 사는 지역에 태양 플레어가 마지막으로 영향을 미친 시점 등에 따라 변동폭이 큽니다.
-
- 요점은 같은 테스트를 두 번 실행하면서 서로 근사치이지만 완전히 똑같지는 않은, 약간 다른 숫자를 얻어내는 데 있습니다.
-
-
-</p>
-
-<p>
- 이런 식으로 데이터를 제대로 수집하고 프로파일링한다는 것은 같은 테스트를 여러 번 거듭 실행하면서 얻어지는 결과를 평균 또는 중간값(너무 복잡해지니 이것을 '배치(batch)'라고 부르기로 합시다)으로 누적한다는 것을 뜻합니다. 이렇게 하면 테스트 성과를 대략적으로 어림잡을 수 있으면서 정확한 타이밍은 없어도 됩니다.
-
-
-
-</p>
-
-<p>
- 이러한 배치를 코드 변경 사이사이에 사용하여 그러한 변경 내용이 성능에 미치는 상대적인 영향을 알아볼 수도 있습니다.
- 변경 전 배치의 평균 프레임 속도가 변경 후 배치에서보다 빠른 경우, 해당 변경에 대해 전반적으로 좋은 WRT 성능을 성취했다는 뜻입니다.
-
-
-</p>
-
-<p>
- 이는 즉 개발자가 수행하는 자동화된 UI 테스트는 모두 이 개념을 감안해야 한다는 뜻이기도 하고, 테스트 중에 일어나는 모든 변칙적인 부분 또한 감안해야 한다는 뜻입니다.
- 예를 들어 애플리케이션 성능이 일종의 기기 문제(본인의 애플리케이션에서 기인한 것이 아님) 때문에 갑자기 뚝 떨어지는 경우라면 해당 배치를 다시 실행하여 조금 덜 혼란스러운 타이밍을 얻어야 할 수도 있습니다.
-
-
-
-</p>
-
-<p>
- 그렇다면 측정값이 의의를 지니려면 테스트를 몇 번이나 수행하는 것이 좋습니까? 최소한 10번은 해야 합니다. 실행 횟수가 50이나 100처럼 커질수록 더욱 정확한 경과를 도출할 수 있습니다(물론, 이제는 정확도와 시간을 맞바꿔야 하는 셈입니다).
-
-
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd
deleted file mode 100644
index 33e8c1f..0000000
--- a/docs/html-intl/intl/pt-br/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=Visão geral da API
-page.keywords=preview,sdk,compatibility
-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>Neste documento
- <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
- <span class="more">mostrar mais</span>
- <span class="less" style="display:none">mostrar menos</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
- <li><a href="#app-linking">Vínculo de aplicativo</a></li>
- <li><a href="#backup">Backup automático para aplicativos</a></li>
- <li><a href="#authentication">Autenticação</a>
- <ol>
- <li><a href="#fingerprint-authentication">Autenticação com impressão digital</a></li>
- <li><a href="#confirm-credential">Confirmação de credencial</a></li>
- </ol>
- </li>
- <li><a href="#direct-share">Compartilhamento direto</a></li>
- <li><a href="#voice-interactions">Interações por voz</a></li>
- <li><a href="#assist">Auxiliar API</a></li>
- <li><a href="#notifications">Notificações</a></li>
- <li><a href="#bluetooth-stylus">Suporte para Bluetooth Stylus</a></li>
- <li><a href="#ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</a></li>
- <li><a href="#hotspot">Suporte a Hotspot 2.0 Release 1</a></li>
- <li><a href="#4K-display">Modo de exibição 4K</a></li>
- <li><a href="#behavior-themeable-colorstatelists">ColorStateLists com tema</a></li>
- <li><a href="#audio">Recursos de áudio</a></li>
- <li><a href="#video">Recursos de vídeo</a></li>
- <li><a href="#camera">Recursos de câmera</a>
- <ol>
- <li><a href="#flashlight">API da lanterna</a></li>
- <li><a href="#reprocessing">Reprocessamento da câmera</a></li>
- </ol>
- </li>
- <li><a href="#afw">Recursos do Android for Work</a></li>
-</ol>
-
-<h2>Diferenças de API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API de nível 22 para M Preview »</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>O M Developer Preview fornece uma visualização avançada no próximo lançamento
- para a plataforma Android, oferecendo novos recursos para desenvolvedores e usuários
-de aplicativos. Este documento fornece uma introdução às APIs mais notáveis.</p>
-
-<p>O M Developer Preview foi feito para <strong>novos desenvolvedores
-adotantes</strong> e <strong>testadores</strong>. Caso tenha interesse
- em influenciar a direção da estrutura do Android,
-<a href="{@docRoot}preview/setup-sdk.html">experimente o M Developer
- Preview</a> e envie-nos feedback!</p>
-
-<p class="caution"><strong>Cuidado:</strong> não publique aplicativos
-que usam o M Developer Preview na Google Play Store.</p>
-
-<p class="note"><strong>Observação:</strong> este documento frequentemente
-menciona classes e métodos que ainda não possuem material de referência disponível em <a href="{@docRoot}">developer.android.com</a>. Esses elementos de API
-são formatados em {@code code style} neste documento (sem hyperlinks). Para a
-documentação de API preliminar destes elementos, faça o download da <a href="{@docRoot}preview/download.html#docs">referência da prévia</a>.</p>
-
-<h3>Alterações importantes de comportamento</h3>
-
-<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado
-pelas alterações na plataforma.</p>
-
-<p>Consulte <a href="behavior-changes.html">alterações de comportamento</a> para obter mais informações.</p>
-
-<h2 id="app-linking">Vínculo de aplicativo</h2>
-<p>Esta prévia aprimora o sistema de intenções do Android fornecendo vínculo de aplicativo mais poderoso.
-Este recurso permite que você associe um aplicativo com um domínio de web próprio. Com base nesta
-associação, a plataforma pode determinar o aplicativo padrão a ser usado para lidar com um link da web
-em particular e ignorar a solicitação aos usuários para selecionar um aplicativo. Para aprender como implementar este aplicativo, consulte
-<a href="{@docRoot}preview/features/app-linking.html">vínculo de aplicativo</a>.
-
-<h2 id="backup">Backup automático para aplicativos</h2>
-<p>O sistema agora realiza backup automático completo de dados e restauração para aplicativos. Este comportamento
-é ativado por padrão para aplicativos com M Preview; não é necessário mais código adicional. Se
-os usuários excluírem as contas da Google, os dados de backup também serão excluídos. Para aprender como este recurso
-funciona e como configurar o backup no sistema do arquivo, consulte
-<a href="{@docRoot}preview/backup/index.html">backup automático para aplicativos</a>.</p>
-
-<h2 id="authentication">Autenticação</h2>
-<p>Esta prévia oferece novas APIs para permitir que você autentique os usuários usando digitalizadores de impressão digital em dispositivos
-suportados e verifique o quão recentemente os usuários autenticaram pela última vez usando o
-mecanismo de desbloqueio por dispositivo (como senha de tela de bloqueio). Use essas APIs em conjunto com
-o <a href="{@docRoot}training/articles/keystore.html">sistema Android Keystore</a>.</p>
-
-<h3 id="fingerprint-authentication">Autenticação com impressão digital</h3>
-
-<p>Para autenticar os usuários por meio de digitalização de impressão digital, adquira uma instância da nova classe
-{@code android.hardware.fingerprint.FingerprintManager} e chame o método
-{@code FingerprintManager.authenticate()}. O aplicativo deve ser executado em um dispositivo
-compatível com sensor de impressão digital. Deve-se implementar a interface do usuário para o fluxo de autenticação
-de impressão digital no aplicativo e usar o ícone de impressão digital padrão do Android na IU.
-O ícone de impressão digital do Android ({@code c_fp_40px.png}) é incluído no
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">aplicativo de exemplo</a>. Caso esteja desenvolvendo vários aplicativos que usam
-autenticação de impressão digital, observe que cada aplicativo deve autenticar a impressão digital do usuário independentemente.
-</p>
-
-<p>Para usar este recurso no aplicativo, adicione primeiro a permissão {@code USE_FINGERPRINT} no
-manifesto.</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>Para ver a implementação do aplicativo da autenticação com impressão digital, consulte o
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">
- exemplo de caixa de diálogo de impressão digital</a>.</p>
-
-<p>Caso esteja testando este recurso, siga estas etapas:</p>
-<ol>
-<li>Instale o Android SDK Tools Revision 24.3, caso ainda não tenha instalado.</li>
-<li>Registre uma nova impressão digital no emulador acessando
-<strong>Configurações > Segurança > Impressão digital</strong> e, em seguida, siga as instruções de registro.</li>
-<li>Use um emulador para emular eventos de toque de dedo com o
-comando a seguir. Use o mesmo comando para emular os eventos de toque de impressão digital na tela de
-bloqueio ou no aplicativo.
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>No Windows, talvez seja necessário executar {@code telnet 127.0.0.1 <emulator-id>} seguido de
-{@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Confirmação de credencial</h3>
-<p>O aplicativo pode autenticar os usuários com base no quão recentemente o dispositivo foi desbloqueado pela última vez. Este
-recurso libera o usuário de ter que lembrar de senhas específicas de aplicativo extras e evita
-a necessidade de implementar a própria interface do usuário de autenticação. O aplicativo deve usar este recurso
-em conjunto com uma implementação de chave secreta ou pública para a implementação de usuário.</p>
-
-<p>Para definir uma duração de tempo limite em que a mesma chave pode ser usada novamente
-após o usuário autenticar, chame o novo método
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
- ao definir um {@link javax.crypto.KeyGenerator} ou
-{@link java.security.KeyPairGenerator}. Este recurso funciona para operações criptográficas
-simétricas.</p>
-
-<p>Evite exibir o diálogo de nova autenticação excessivamente — os aplicativos devem tentar
-usar o objeto criptográfico primeiro e, se o tempo limite expirar, usar o método
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
- para autenticar novamente o usuário dentro do aplicativo.
-</p>
-
-<p>Para ver uma implementação de aplicativo deste recurso, consulte o
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">
-exemplo de confirmação de credencial</a>.</p>
-
-<h2 id="direct-share">Compartilhamento direto</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>Esta prévia fornece as APIs para tornar o compartilhamento intuitivo e rápido para os usuários. É possível
-definir os <em>alvos de compartilhamento direto</em> que iniciam uma atividade específica no aplicativo.
-Esses alvos de compartilhamento direto são expostos aos usuários por meio do menu <em>Compartilhar</em>. Este recurso permite que os usuários
-compartilhem conteúdos aos alvos, como contatos, dentro de outros aplicativos. Por exemplo: o alvo de compartilhamento direto
-pode iniciar uma atividade em outro aplicativo de rede social, o que permite que o usuário compartilhe o conteúdo diretamente
-para um amigo ou comunidade específica neste aplicativo.</p>
-
-<p>Para ativar os alvos de compartilhamento direto, deve-se definir uma classe que estende a classe
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService}. Declare o
-{@code ChooserTargetService} no manifesto. Dentro desta declaração, especifique a permissão
-{@code BIND_CHOOSER_TARGET_SERVICE} e um filtro de intenções na ação
-{@code SERVICE_INTERFACE}.</p>
-<p>O seguinte exemplo mostra como se deve declarar o {@code ChooserTargetService} no
-manifesto.</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>Para cada atividade que quiser expor ao {@code ChooserTargetService}, adicione um elemento
-{@code <meta-data>} com o nome
-{@code "android.service.chooser.chooser_target_service"} no manifesto do aplicativo.
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">Interações por voz</h2>
-<p>
-Esta prévia fornece uma API de interação por voz que, junto com
-<a href="https://developers.google.com/voice-actions/" class="external-link">ações de voz</a>
-, permite a criação de experiências por voz nos aplicativos. Chame o método
-{@code android.app.Activity.isVoiceInteraction()} para determinar se a atividade
-foi iniciada em resposta à ação de voz. Caso tenha sido iniciada, o aplicativo pode usar a classe
-{@code android.app.VoiceInteractor} para solicitar uma confirmação de voz do usuário,
-selecionar a partir de uma lista de opções e muito mais. Para aprender mais sobre a implementação de ações de voz, consulte
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">o site de desenvolvedor de ações de voz</a>.
-</p>
-
-<h2 id="assist">Auxiliar API</h2>
-<p>
-Esta prévia oferece uma nova maneira de usuários se envolverem com os aplicativos com um assistente. Para usar este
-recurso, o usuário deve possibilitar que o assistente use o contexto atual. Quando ativado,
-o usuário pode invocar um assistente dentro de qualquer aplicativo mantendo o botão <strong>Iniciar</strong> pressionado.</p>
-<p>O aplicativo pode optar por não compartilhar o contexto atual com o assistente configurando o sinalizador
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Além do conjunto
-padrão de informações que a plataforma passa ao assistente, o aplicativo pode compartilhar
-informações adicionais usando a nova classe {@code android.app.Activity.AssistContent}.</p>
-
-<p>Para fornecer ao assistente contexto adicional do aplicativo, siga estas etapas:</p>
-
-<ol>
-<li>Implemente a interface {@link android.app.Application.OnProvideAssistDataListener}.</li>
-<li>Registre esta escuta usando
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>Para fornecer informações contextuais específicas da atividade, substitua o retorno de chamada
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()}
- e, opcionalmente, o novo retorno de chamada {@code Activity.onProvideAssistContent()}.
-</ol>
-
-<h2 id="notifications">Notificações</h2>
-<p>Esta prévia adiciona as seguintes alterações de API às notificações:</p>
-<ul>
- <li>Novo nível de filtro {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} que corresponde
-ao modo "não perturbe" de <em>despertadores apenas</em>.</li>
- <li>Novo valor da categoria {@code Notification.CATEGORY_REMINDER} que é usado para distinguir
-lembretes de agendamentos do usuário de outros eventos (
-{@link android.app.Notification#CATEGORY_EVENT}) e despertadores (
-{@link android.app.Notification#CATEGORY_ALARM}).</li>
- <li>Nova classe {@code android.graphics.drawable.Icon} que pode ser anexada às notificações
-por meio dos métodos {@code Notification.Builder.setSmallIcon(Icon)} e
-{@code Notification.Builder.setLargeIcon(Icon)}.</li>
- <li>Novo método {@code NotificationManager.getActiveNotifications()} que permite que os aplicativos
-descubram quais das notificações ainda estão ativas. Para ver uma implementação de aplicativo que usa este recurso,
-consulte o <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">exemplo de notificações ativas</a>.</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Suporte para Bluetooth Stylus</h2>
-<p>Esta prévia fornece um suporte aprimorado para a entrada de usuário usando um Bluetooth Stylus. Os usuários podem
-parear e conectar um Bluetooth Stylus compatível com o telefone ou tablet. Quando conectado, as informações
-de posição da tela tátil são fundidas com as informações de botão e pressão do Stylus
-para fornecer um alcance maior de expressão em comparação à tela tátil sozinha. O aplicativo pode escutar o pressionar
-de botões do Stylus e realizar ações secundárias registrando os novos retornos de chamada
-{@code View.onStylusButtonPressListener} e {@code GestureDetector.OnStylusButtonPressListener}
- na atividade.</p>
-
-<p>Use as constantes e os métodos {@link android.view.MotionEvent} para detectar as interações
-de botão do Stylus:</p>
-<ul>
-<li>Se o usuário toca no Stylus com um botão na tela do aplicativo, o método
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} retorna
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>Para aplicativos com M Preview, o método
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
- retorna {@code MotionEvent.STYLUS_BUTTON_PRIMARY} quando o usuário
-pressiona o botão principal do Stylus. Se o Stylus tiver um segundo botão, o mesmo método retorna
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY} quando o usuário o pressiona. Se o usuário pressiona
-os dois botões simultaneamente, o método retorna os valores com OR juntos (
-{@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li>
-<li>
-Para aplicativos com uma versão de plataforma inferior , o método
-{@link android.view.MotionEvent#getButtonState() getButtonState()} retorna
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (para o pressionar do botão principal do Stylus),
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (para o pressionar do botão secundário do Stylus) ou ambos.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</h2>
-<p>
-Se o aplicativo realizar digitalizações de baixa energia por Bluetooth, é possível usar o novo método
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar
-que você quer que os retornos de chamada sejam notificados apenas quando um pacote de propaganda correspondente ao conjunto
-{@link android.bluetooth.le.ScanFilter} for encontrado primeiro e quando
-ele não for visto por um período. Esta abordagem de digitalização é mais eficiente
-do que a fornecida na versão anterior da plataforma.
-</p>
-
-<h2 id="hotspot">Suporte a Hotspot 2.0 Release 1</h2>
-<p>
-Esta prévia adiciona suporte ao Hotspot 2.0 Release 1 nos dispositivos Nexus 6 e Nexus 9. Para fornecer
-as credenciais de Hotspot 2.0 no aplicativo, use os novos métodos da classe
-{@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} e
-{@code setRealm()}. No objeto {@link android.net.wifi.WifiConfiguration}, é possível definir os campos
-{@link android.net.wifi.WifiConfiguration#FQDN} e {@code providerFriendlyName}.
-A nova propriedade {@code ScanResult.PasspointNetwork} indica se uma rede detectada representa
-um ponto de acesso Hotspot 2.0.
-</p>
-
-<h2 id="4K-display">Modo de exibição 4K</h2>
-<p>A plataforma agora permite que aplicativos solicitem que a resolução seja aprimorada para renderização 4K
-em hardware compatível. Para consultar a resolução física atual, use as novas APIs
-{@code android.view.Display.Mode}. Se a IU for desenhada em uma resolução lógica
-menor e for redimensionada para uma resolução física maior, saiba que a resolução física que o método
-{@code Display.Mode.getPhysicalWidth()} retorna pode ser diferente da resolução
-física informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.</p>
-
-<p>É possível solicitar que o sistema altere a resolução física no aplicativo à medida que ele é executado configurando
-a propriedade {@code WindowManager.LayoutParams.preferredDisplayModeId} da janela do aplicativo. Este
-recurso é útil se quiser alternar para a resolução de exibição 4K. Enquanto estiver no modo de exibição 4K,
-a IU continua a ser renderizada na resolução original (como 1080 p) e é escalonada para 4K, mas os objetos
-{@link android.view.SurfaceView} podem exibir o conteúdo na resolução nativa.</p>
-
-<h2 id="behavior-themeable-colorstatelists">ColorStateLists com tema</h2>
-<p>Os atributos de tema agora são suportados no
-{@link android.content.res.ColorStateList} para dispositivos que executam o M Preview. Os métodos
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} e
-{@link android.content.res.Resources#getColor(int) getColor()} ficaram obsoletos. Caso esteja chamando
-essas APIs, chame os novos métodos {@code Context.getColorStateList()} ou
-{@code Context.getColor()}. Esses métodos também estão disponíveis na biblioteca
-v4 appcompat via {@link android.support.v4.content.ContextCompat}.</p>
-
-<h2 id="audio">Recursos de áudio</h2>
-
-<p>Esta prévia adiciona aprimoramentos ao processamento de áudio no Android, incluindo: </p>
-<ul>
- <li>Suporte para protocolo <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
-, com as novas APIs {@code android.media.midi}. Use essas APIs para enviar e receber eventos
-de MIDI.</li>
- <li>Use as novas classes {@code android.media.AudioRecord.Builder} e {@code android.media.AudioTrack.Builder}
- para criar captura de áudio digital e objetos de reprodução, respectivamente,
-e configure a fonte de áudio e as propriedades do coletor para substituir os padrões do sistema.</li>
- <li>Ganchos de API para associação de dispositivos de entrada e áudio. Isto é particularmente útil se o aplicativo
-permite que os usuários iniciem uma pesquisa de voz a partir de um controle de jogo ou controle remoto para Android
-TV. O sistema invoca o novo retorno de chamada {@code android.app.Activity.onSearchRequested()} quando
-o usuário inicia uma pesquisa. Para determinar se o dispositivo de entrada do usuário tem um microfone integrado, recupere
-o objeto {@link android.view.InputDevice} deste retorno de chamada e, em seguida, chame o novo método
-{@code InputDevice.hasMic()}.</li>
- <li>Novas classes {@code android.media.AudioDevicesManager} que permitem que você
-recupere uma lista completa de todas as fontes e dispositivos de áudio do coletor anexados. Também é possível especificar um objeto
-{@code android.media.OnAudioDeviceConnectionListener} caso queira que o aplicativo seja notificado
-quando um dispositivo de áudio for conectado ou desconectado.</li>
-</ul>
-
-<h2 id="video">Recursos de vídeo</h2>
-<p>Esta prévia adiciona novas capacidades às APIs de processamento de vídeo, incluindo:</p>
-<ul>
-<li>A nova classe {@code android.media.MediaSync} que ajuda os aplicativos a renderizar transmissões
-de vídeo e áudio sincronizadamente. Os buffers de áudio são enviados sem bloqueio e retornados
-por um retorno de chamada. Eles também suportam taxa de reprodução dinâmica.
-</li>
-<li>O novo evento {@code MediaDrm.EVENT_SESSION_RECLAIMED}, que indica que uma sessão aberta pelo aplicativo
-foi recuperada pelo gerenciador de recursos. Se o aplicativo usa sessões de DRM, deve-se
-lidar com este evento e garantir que uma sessão recuperada não seja usada.
-</li>
-<li>O novo código de erro {@code MediaCodec.CodecException.ERROR_RECLAIMED}, que indica que o gerenciador
-de recurso recuperou o recurso de mídia usado pelo codec. Com esta exceção, o codec
-deve ser liberado, como se fosse movido para o estado terminal.
-</li>
-<li>A nova interface {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} para obter
-uma dica do número máximo suportado de instâncias de codec concorrentes.
-</li>
-<li>O novo método {@code MediaPlayer.setPlaybackParams()} para definir a taxa de reprodução de mídia
-para reprodução de movimento lento ou rápido. Ele também estica ou acelera a reprodução de áudio automaticamente
-em conjunto com o vídeo.</li>
-</ul>
-
-<h2 id="camera">Recursos de câmera</h2>
-<p>Esta prévia inclui as seguintes novas APIs para acessar a lanterna da câmera
-e para o reprocessamento da câmera de imagens:</p>
-
-<h3 id="flashlight">API da lanterna</h3>
-<p>Se um dispositivo de câmera tem uma unidade de flash, é possível chamar o método {@code CameraManager.setTorchMode()}
-para ligar ou desligar o modo de tocha da unidade de flash sem abrir o dispositivo da câmera. O aplicativo
-não tem propriedade exclusiva da unidade de flash ou do dispositivo de câmera. O modo de tocha é desativado
-e torna-se indisponível sempre que o dispositivo de câmera estiver indisponível ou quando outros
-recursos de câmera que mantêm a tocha ativada ficam indisponíveis. Outros aplicativos também podem chamar {@code setTorchMode()}
-para desativar o modo de tocha. Quando o aplicativo que ativou o modo
-de tocha for fechado, o modo é desativado.</p>
-
-<p>É possível registrar um retorno de chamada para ser notificado sobre o estado da tocha chamando o método
-{@code CameraManager.registerTorchCallback()}. Na primeira vez que o retorno de chamada é registrado,
-ele é imediatamente chamado com o estado do modo de tocha de todos os dispositivos de câmera conhecidos com
-uma unidade de flash. Se o modo de tocha é ativado ou desativado, o método
-{@code CameraManager.TorchCallback.onTorchModeChanged()} é invocado.</p>
-
-<h3 id="reprocessing">API de reprocessamento</h3>
-<p>A API {@link android.hardware.camera2 Camera2} é estendida para suportar YUV e reprocessamento
-de imagem de formato opaco privado. O aplicativo determina se as capacidades de reprocessamento estão disponíveis
-via {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Se um dispositivo suporta o reprocessamento,
-é possível criar uma sessão de captura de câmera de reprocessamento chamando
-{@code CameraDevice.createReprocessableCaptureSession()} e criando solicitações para o reprocessamento
-do buffer de entrada.</p>
-
-<p>Use a classe {@code ImageWriter} para conectar o fluxo de buffer de entrada à entrada de reprocessamento
-da câmera. Para obter um buffer vazio, siga este modelo de programação:</p>
-
-<ol>
-<li>Chame o método {@code ImageWriter.dequeueInputImage()}.</li>
-<li>Preencha os dados no buffer de entrada.</li>
-<li>Envie o buffer à câmera chamando o método {@code ImageWriter.queueInputImage()}.</li>
-</ol>
-
-<p>Caso esteja usando um objeto {@code ImageWriter} junto com uma imagem
-{@code android.graphics.ImageFormat.PRIVATE}, o aplicativo não poderá acessar os dados
-da imagem diretamente. Em vez disso, passe a imagem {@code ImageFormat.PRIVATE} diretamente ao
-{@code ImageWriter} chamando o método {@code ImageWriter.queueInputImage()} sem nenhuma
-cópia de buffer.</p>
-
-<p>A classe {@code ImageReader} agora suporta as transmissões de imagem
-de formato {@code android.graphics.ImageFormat.PRIVATE}. Este suporte permite que o aplicativo mantenha uma fila de imagem circular de imagens de saída
-{@code ImageReader}, selecione uma ou mais imagens e envie-as para
-{@code ImageWriter} para o reprocessamento de câmera.</p>
-
-<h2 id="afw">Recursos do Android for Work</h2>
-<p>Esta prévia inclui as seguintes novas APIs para Android for Work:</p>
-<ul>
- <li><strong>Controles aprimorados para dispositivos de uso único e pertencentes a empresas:</strong> O dono do dispositivo
-pode controlar as seguintes configurações para aprimorar
-os dispositivos de uso único pertencentes a empresas (COSU):
- <ul>
- <li>Desativar ou reativar a proteção de bloqueio com o método
-{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
- <li>Desativar ou reativar a barra de status (incluindo configurações rápidas,
-notificações e o gesto de arrastar para cima que inicia o Google Now) com o método
-{@code DevicePolicyManager.setStatusBarEnabledState()}.</li>
- <li>Desativar ou reativar inicialização segura com a constante {@link android.os.UserManager}
-{@code DISALLOW_SAFE_BOOT}.</li>
- <li>Evitar que a tela desligue quando conectada com a constante
-{@link android.provider.Settings.Global} {@code STAY_ON_WHILE_PLUGGED_IN}.</li>
- </ul>
- </li>
- <li><strong>Instalação e desinstalação silenciosa de aplicativos pelo dono do dispositivo:</strong> O dono do dispositivo pode agora
-instalar e desinstalar aplicativos silenciosamente usando as APIs {@link android.content.pm.PackageInstaller},
-independente do Google Play for Work. É possível tomar providências para os dispositivos
-por meio de um dono do dispositivo que recupera e instala aplicativos se a interação de usuário. Este recurso é útil para ativar a provisão de um toque
-de telefones públicos ou de outros dispositivos sem a ativação da conta Google.</li>
-<li><strong>Acesso silencioso de certificado empresarial: </strong> Quando um aplicativo chama
-{@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()}
-, antes do usuário receber a solicitação para selecionar um certificado, o perfil ou dono do dispositivo
-pode chamar o método {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} para fornecer
-o alias silenciosamente ao aplicativo da solicitação. Este recurso permite que você forneça acesso de aplicativos gerenciados para certificados
-sem a interação de usuário.</li>
-<li><strong>Aceitação automática de atualizações do sistema.</strong> Ao configurar a política de atualização do sistema com
-{@code DevicePolicyManager.setSystemUpdatePolicy()}, o dono do dispositivo pode aceitar automaticamente a atualização
-do sistema, no caso de um dispositivo público, ou adiar a atualização e evitar
-que ela seja feita pelo usuário por até 30 dias. Além disso, um administrador pode definir uma janela de tempo diária
-em que uma atualização deve ser realizada. Por exemplo: durante os momentos em que um dispositivo público não está em uso. Quando
-uma atualização do sistema está disponível, o sistema verifica se o aplicativo de controlador de política de trabalho definiu uma política de atualização
-do sistema e, portanto, comporta-se de acordo com a definição.
-</li>
-<li>
-<strong>Instalação de certificado delegado:</strong> Um perfil ou dono do dispositivo pode agora fornecer ao aplicativo
-de terceiros a habilidade de chamar essas APIs de gerenciamento
-de certificado de {@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>Proteção de redefinição de fábrica da empresa:</strong> Ao preparar um dono do dispositivo, agora é possível
-configurar parâmetros para desbloquear a proteção de redefinição de fábrica (FRP) configurando o pacote
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Um aplicativo de programador
-NFC pode fornecer estes parâmetros depois que um dispositivo for redefinido para desbloquear o FRP e preparar o dispositivo,
-sem a necessidade da conta Google anteriormente configurada. Caso não modifique esses parâmetros,
-o FRP permanece no local e evita que o dispositivo seja ativado sem as credenciais
-Google anteriormente ativadas.
-<p>Além disso, ao configurar as restrições do aplicativo nos serviços Google, o dono do dispositivo pode especificar contas
-Google alternativas para desbloquear o FRP para substituir as contas ativadas no dispositivo.</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>Rastreamento de uso de dados.</strong> Um perfil ou dono do dispositivo pode agora
-consultar as estatísticas de uso de dados visíveis em <strong>Configurações > Uso de</strong> dados usando os novos métodos
-{@code android.app.usage.NetworkStatsManager}. Os donos de perfis recebem automaticamente
-a permissão para consultar os dados no perfil que gerenciam, enquanto que os donos do dispositivo têm acesso aos dados
-de uso do usuário principal gerenciado.</li>
-<li><strong>Gerenciamento de permissão de tempo de execução:</strong>
-<p>Um perfil ou dono do dispositivo pode definir uma política
-de permissão para todas as solicitações do tempo de execução de todos os aplicativos que usam
-{@code DevicePolicyManager.setPermissionPolicy()}, seja para solicitar ao usuário para conceder
-a permissão como normal ou automaticamente conceder ou negar a permissão silenciosamente. Se a política posterior
-for definida, o usuário não poderá modificar a seleção feita pelo perfil ou dono do dispositivo dentro da tela de permissões
-do aplicativo em <strong>configurações</strong>.</p></li>
-<li><strong>VPN em configurações:</strong> Os aplicativos de VPN agora estão visíveis em
-<strong>Configurações > Mais > VPN</strong>.
-Além disso, as notificações que acompanham o uso de VPN são específicas sobre como essa VPN
-é configurada. Para o dono de um perfil, as notificações são específicas para determinar
-se a VPN é configurada para um perfil gerenciado, um perfil pessoal ou ambos. Para o dono do dispositivo, as notificações
-são específicas para determinar se a VPN é configurada para todo o dispositivo.</li>
-<li><strong>Notificação de estado de trabalho:</strong> Um ícone de pasta da barra de status agora aparece
-sempre que um aplicativo do perfil gerenciado tiver uma atividade no primeiro plano. Além disso, se o usuário é desbloqueado
-diretamente para a atividade de um aplicativo no perfil gerenciado, um aviso é exibido notificando
-ao usuário que ele está dentro do perfil de trabalho.
-</li>
-</ul>
-
-<p class="note">
- Para obter uma vista detalhada de todas as alterações de API no M Developer Preview, consulte o <a href="{@docRoot}preview/download.html">relatório de diferenças de API</a>.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/backup/index.jd b/docs/html-intl/intl/pt-br/preview/backup/index.jd
deleted file mode 100644
index 1ba039b..0000000
--- a/docs/html-intl/intl/pt-br/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Backup automático para aplicativos
-page.tags=backup, previewresources, androidm
-page.keywords=backup, autobackup, preview
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#overview">Visão geral</a></li>
- <li><a href="#configuring">Configurar backup de dados</a></li>
- <li><a href="#testing">Testar configuração de backup</a></li>
- <li><a href="#issues">Problemas conhecidos</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Frenquentemente, os usuários investem muito tempo e esforço para criar dados e configurar preferências
- nos aplicativos. Preservar esses dados para os usuários caso substituam um dispositivo quebrado ou atualizem-se para um novo
- é importante para garantir uma ótima experiência de usuário. Dispositivos que executam o sistema Android M Preview
- ajudam a garantir uma boa experiência para os usuários nessas circunstâncias realizando o backup dos dados do aplicativo
- automaticamente no Google Drive. Os dados do aplicativo são restaurados automaticamente se um usuário alterar ou atualizar um
- dispositivo.
-</p>
-
-<p>
- Os backups automáticos estão ativos para todos os aplicativos instalados nos dispositivos que executam o Android M Preview. Nenhum
- código adicional de aplicativo é necessário. O sistema fornece aos usuários a habilidade de decisão
- sobre os backups automáticos de dados. Também é possível limitar quais dados do aplicativo devem ter o backup.
-</p>
-
-<p>
- Este documento descreve o novo comportamento do sistema e como especificar quais dados terão backup
- para o aplicativo.
-</p>
-
-<h2 id="overview">Visão geral</h2>
-
-<p>
- O recurso de backup automático preserva os dados que o aplicativo cria em um dispositivo de usuário enviando-os
- à conta do Google Drive do usuário e criptografando-os. Não há cobranças para você ou para o usuário
- em relação ao armazenamento de dados e os dados salvos não contam para a cota do Drive pessoal do usuário. Durante
- o período do M Preview, os usuários podem armazenar até 25 MB por aplicativo do Android.
-</p>
-
-<p>
- Os backups automáticos ocorrem a cada 24 horas, quando o dispositivo está ocioso, carregando e conectado
- a uma rede Wi-Fi. Quando esses requisitos são atendidos, o serviço Backup Manager envia todos os dados de backup
- disponíveis à nuvem. Quando um usuário transita para um novo dispositivo, ou desinstala e reinstala
- o aplicativo com backup realizado, uma operação de restauração copia os dados de backup para o diretório de dados
- do aplicativo recém-instalado.
-</p>
-
-<p class="note">
- <strong>Observação:</strong> se o usuário usar o
- <a href="{@docRoot}google/backup/index.html">serviço de Backup do Android</a> de legado, este novo comportamento
- não se aplicará aos trabalhos de comportamento de backup existentes com o normal.
-</p>
-
-
-<h3 id="auto-exclude">Arquivos de dados excluídos automaticamente</h3>
-
-<p>
- Nem todos os dados do aplicativo devem ter backup, como arquivos temporários e de armazenamento em cachê. Portanto, o serviço de backup automático
- exclui determinados arquivos de dados por padrão:
-</p>
-
-<ul>
- <li>Arquivos em diretórios identificados pelos métodos {@link android.content.Context#getCacheDir
- getCacheDir()} e {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-.
- </li>
-
- <li>Arquivos localizados no armazenamento externo, a não ser que estejam no diretório identificado pelo método
- {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-.
- </li>
-
- <li>Arquivos localizados no diretório identificado pelo método
- {@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
- </li>
-</ul>
-
-<h2 id="configuring">Configurar backup de dados</h2>
-
-<p>
- Os dados criados por qualquer aplicativo instalado em um dispositivo M Preview têm backup, exceto
- os arquivos excluídos automaticamente listados na seção anterior. É possível limitar e configurar
- quais dados terão backup no seu aplicativo usando as configurações no manifesto do aplicativo.
-</p>
-
-<h3 id="include-exclude">Incluir ou excluir dados</h3>
-
-<p>
- Dependendo de quais dados o aplicativo precisar e do modo que forem salvos, você precisará definir
- regras específicas para incluir ou excluir determinados arquivos ou diretórios. O serviço de backup automático suporta
- a configuração dessas regras de backup por meio do uso de um arquivo de configuração XML e do
- manifesto do aplicativo. No manifesto do aplicativo, é possível especificar o arquivo de configuração de esquema de backup como exibido
- no seguinte exemplo:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- Neste código de exemplo, o atributo <code>android:fullBackupContent</code> especifica um arquivo XML,
- localizado no diretório <code>res/xml/</code> do projeto de desenvolvimento do aplicativo, chamado
- <code>mybackupscheme.xml</code>. Este arquivo de configuração inclui as regras de quais arquivos terão
- backup. O seguinte código de exemplo mostra um arquivo de configuração que exclui um arquivo específico
- dos backups:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- Esta configuração de backup de exemplo exclui do backup somente um arquivo específico do banco de dados.
- Todos os outros arquivos terão backup.
-</p>
-
-<h4>Sintaxe da configuração de backup</h4>
-
-<p>
- A configuração do serviço de backup permite que você especifique quais arquivos incluir ou excluir do
-backup. A sintaxe para o arquivo XML de configuração de backup de dados é a seguinte:
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- Os seguintes elementos e atributos permitem que você especifique os arquivos que serão incluídos ou excluídos
- do backup:
-</p>
-
-<ul>
- <li>
- <code><include></code>. Use este elemento se quiser especificar um conjunto de recursos
-para o backup, em vez de fazer o sistema realizar o backup de todos os dados no aplicativo por padrão. Ao especificar
- uma tag <code><include></code>, o sistema realiza apenas o backup <em>dos recursos especificados</em>
- com este elemento.
- </li>
-
- <li>
- <code><exclude></code>. Use este elemento para especificar um conjunto de recursos que será excluído
- do backup. O sistema realiza o backup de todos os dados no aplicativo, exceto os recursos especificados
- com este elemento.
- </li>
-
- <li>
- <code>domain.</code> O tipo de recurso que deseja excluir ou incluir no backup. Os valores válidos
- que podem ser especificados para este atributo incluem:
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>. Especifica que o recurso está no diretório raiz do aplicativo.
- </li>
-
- <li>
- <code>file</code>. Corresponde ao recurso no diretório retornado
- pelo método {@link android.content.Context#getFilesDir getFilesDir()}.
- </li>
-
- <li>
- <code>database</code>. Corresponde ao banco de dados retornado
- pelo método {@link android.content.Context#getDatabasePath getDatabasePath()} ou usando
- a classe {@link android.database.sqlite.SQLiteOpenHelper}.
- </li>
-
- <li>
- <code>sharedpref</code>. Corresponde a um objeto {@link android.content.SharedPreferences}
- retornado pelo método {@link android.content.Context#getSharedPreferences getSharedPreferences()}
-.
- </li>
-
- <li>
- <code>external</code>. Especifica que o recurso está no armazenamento externo e corresponde
- a um arquivo no diretório retornado pelo método
- {@link android.content.Context#getExternalFilesDir getExternalFilesDir()}.
- </li>
-
- <li>
- <code>path</code>. O caminho de arquivo para um recurso que deseja excluir ou incluir
- no backup.
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">Proibir backup de dados</h3>
-
-<p>
- É possível optar por evitar backups automáticos de quaisquer dados do aplicativo configurando
- o atributo <code>android:allowBackup</code> para <code>false</code> no elemento do aplicativo
- do manifesto. Esta configuração é ilustrada no seguinte código de exemplo:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">Testar configuração de backup</h2>
-
-<p>
- Ao criar uma configuração de backup, deve-se testá-la para garantir que o aplicativo
- salva os dados e que eles podem ser restaurados corretamente.
-</p>
-
-
-<h4>Ativar registro de backup</h4>
-
-<p>
- Para ajudar a determinar como o recurso de backup analisa o arquivo XML, ative o registro
- antes de realizar um backup de teste:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Teste de backup</h4>
-
-<p>Para executar um backup manualmente, primeiro deve-se inicializar o Backup Manager chamando o seguinte
- comando:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- Em seguida, realiza-se o backup manualmente do aplicativo usando o seguinte comando, especificando o nome
- do pacote para o aplicativo como o parâmetro <code><PACKAGE></code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>Teste de restauração</h4>
-
-<p>
- Para iniciar manualmente uma restauração após o backup dos dados do aplicativo, chame o seguinte comando,
- especificando o nome do pacote para o aplicativo como o parâmetro <code><PACKAGE></code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>Aviso:</b> esta ação impede o aplicativo de apagar os dados antes de realizar
- a operação de restauração.
-</p>
-
-<p>
- Para iniciar o processo de restauração do aplicativo, deve-se desinstalar e reinstalá-lo. Os dados
- do aplicativo são restaurados automaticamente a partir da nuvem quando a instalação do aplicativo for concluída.
-</p>
-
-
-<h4>Resolução de problemas de backups</h4>
-
-<p>
- Caso ocorra problemas, é possível apagar os dados de backup e os metadados associados desativando o backup
- e reativando-o em <strong>Settings (Configurações) > Backup</strong>, redefinindo o dispositivo para as especificações de fábrica, ou
- chamando este comando:
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- O valor <code><TRANSPORT></code> deve ser prefixado por <code>com.google.android.gms</code>.
- Para obter uma lista de transportes, chame o seguinte comando:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Problemas conhecidos</h2>
-
-<p>A seguir estão os problemas conhecidos com o serviço de backup automático:</p>
-
-<ul>
- <li><strong>Google Cloud Messaging</strong> -
- Para aplicativos que usam o Google Cloud Messaging para notificações push, há um problema conhecido
- onde o backup do ID de registro retornado pelo registro do Google Cloud Messaging pode
- desencadear notificações push para o aplicativo restaurado. É importante consultar a API para obter um novo ID de registro
- após a instalação em um novo dispositivo, o que não deve ser o caso se o ID de registro antigo
- tiver backup. Para evitar isto, exclua o ID de registro do conjunto de arquivos
- de backup.
- </li>
-</ul>
diff --git a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd b/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
deleted file mode 100644
index cd99bbd..0000000
--- a/docs/html-intl/intl/pt-br/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-page.title=Mudanças de comportamento
-page.keywords=preview,sdk,compatibility
-sdk.platform.apiLevel=MNC
-@jd:body
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Neste documento</h2>
-
-<ol id="toc44" class="hide-nested">
- <li><a href="#behavior-runtime-permissions">Permissões do tempo de execução</a></li>
- <li><a href="#behavior-power">Otimizações de economia de energia</a>
- <ol>
- <li><a href="#behavior-doze">Soneca</a></li>
- <li><a href="#behavior-app-standby">Aplicativo em espera</a></li>
- </ol>
- </li>
- <li><a href="#behavior-adoptable-storage">Dispositivos de armazenamento adotáveis</a></li>
- <li><a href="#behavior-apache-http-client">Remoção do cliente Apache HTTP</a></li>
- <li><a href="#behavior-audiomanager-Changes">Mudanças no AudioManager</a></li>
- <li><a href="#behavior-test-selection">Seleção de texto</a></li>
- <li><a href="#behavior-keystore">Mudanças no Android Keystore</a></li>
- <li><a href="#behavior-network">Mudanças de rede e Wi-Fi</a></li>
- <li><a href="#behavior-camera">Mudanças no serviço de câmera</a></li>
- <li><a href="#behavior-art-runtime">Tempo de execução de ART</a></li>
- <li><a href="#behavior-apk-validation">Validação de APK</a></li>
- <li><a href="#behavior-afw">Mudanças do Android for Work</a></li>
-</ol>
-
-<h2>Diferenças de API</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API de nível 22 para M Preview »</a> </li>
-</ol>
-
-
-<h2>Veja também</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">Visão geral da API do M Developer Preview</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>Junto com novas capacidades e recursos, o M Developer Preview inclui uma variedade
-de mudanças do sistema e alterações no comportamento da API. Este documento destaca algumas
-das alterações principais que você deve entender e levar em consideração nos aplicativos.</p>
-
-<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado
- pelas alterações na plataforma.</p>
-
-<h2 id="behavior-runtime-permissions">Permissões do tempo de execução</h1>
-<p>Esta prévia introduz um novo modelo de permissões em que os usuários podem gerenciar diretamente
- as permissões do aplicativo no tempo de execução. Este modelo fornece aos usuários uma visibilidade aprimorada e controle sobre permissões,
- ao mesmo tempo em que agiliza os processos de atualização automática e instalação para os desenvolvedores de aplicativos.
-Os usuários podem conceder ou revogar as permissões individualmente para os aplicativos instalados. </p>
-
-<p>Nos aplicativos direcionados para o M Preview, certifique-se de verificar e solicitar as permissões
- no tempo de execução. Para determinar se o aplicativo recebeu uma permissão, chame
- o novo método {@code Context.checkSelfPermission()}. Para solicitar uma permissão, chame o novo método
- {@code Activity.requestPermission()}. Mesmo se o aplicativo não é direcionado para o M,
- deve-se testá-lo sob o novo modelo de permissões.</p>
-
-<p>Para obter mais detalhes sobre o suporte do novo modelo de permissões no aplicativo, consulte a página de prévia de desenvolvedor
-<a href="{@docRoot}preview/features/runtime-permissions.html">
-Permissões</a>. Para obter dicas sobre como avaliar o impacto no aplicativo,
- consulte o <a href="{@docRoot}preview/testing/guide.html#runtime-permissions">guia de teste</a>.</p>
-
-<h2 id="behavior-power">Otimizações de economia de energia</h2>
-<p>Esta prévia introduz novas otimizações de economia de energia para dispositivos e aplicativos ociosos.</p>
-
-<h3 id="behavior-doze">Soneca</h3>
-<p>Se o dispositivo estiver desconectado e parado com a tela desligada por um período,
- o modo <em>Soneca</em> será ativado, onde ele tentará manter o sistema em um estado ocioso. Neste modo,
- os dispositivos retomam as operações normais periodicamente por breves períodos para que a sincronização de aplicativos
- possa ocorrer e para que o sistema possa realizar quaisquer operações pendentes.</p>
-
-<p>As seguintes restrições se aplicam aos aplicativos durante a Soneca:</p>
-<ul>
-<li>O acesso à rede é desativado, a não ser que o aplicativo receba um convite de alta prioridade
- do Google Cloud Messaging.</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">Bloqueios de soneca</a> são ignorados.</li>
-<li>Os despertadores agendados com a classe {@link android.app.AlarmManager} são ignorados,
- exceto os alarmes definidos com o método {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}
- e {@code AlarmManager.setAndAllowWhileIdle()}.</li>
-<li>As verificações de Wi-Fi não são realizadas.</li>
-<li>Sincronizações e trabalhos para os adaptadores de sincronização e {@link android.app.job.JobScheduler}
- não têm permissão para serem executados.</li>
-</ul>
-</p>
-<p>Quando o dispositivo sair do modo soneca, quaisquer sincronizações e trabalhos pendentes são executados.</p>
-<p>É possível testar este recurso conectando o dispositivo executando o M Preview
- à máquina de desenvolvimento e chamando os seguintes comandos:
-</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>Observação</strong>: o próximo lançamento do
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> permite que você designe
- mensagens de alta prioridade. Se o aplicativo recebe mensagens de alta prioridade do GCM,
- um acesso breve à rede é concedido mesmo quando o dispositivo está no modo soneca.
-</p>
-
-<p>Consulte o
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">guia de teste</a> para obter dicas sobre
-como testar a soneca nos aplicativos. </p>
-
-<h3 id="behavior-app-standby">Aplicativo em espera</h3>
-<p>Com esta prévia, o sistema pode determinar quais aplicativos estão em espera quando
-não estão em uso ativo. O aplicativo é considerado em espera após um período, a não ser que o sistema detecte
-algum destes sinais:</p>
-
-<ul>
-<li>O aplicativo foi explicitamente iniciado pelo usuário.</li>
-<li>O aplicativo tem um processo atualmente em primeiro plano (seja uma atividade ou serviço de primeiro plano
- ou esteja em uso por outra atividade ou serviço de primeiro plano).</li>
-<li>O aplicativo gera uma notificação que o usuário vê na tela de bloqueio
- ou na bandeja de notificações.</li>
-<li>O usuário explicitamente pede para que o aplicativo seja liberado das otimizações,
- ajustado em <strong>Settings (Configurações)</strong>.</li>
-</ul>
-
-<p>Se o dispositivo estiver desconectado, o aplicativo considerado ocioso terá o acesso
-à rede desativado e as sincronizações e os trabalhos suspensos. Quando o dispositivo está conectado em uma fonte de alimentação,
- esses aplicativos têm acesso à rede permitido e podem executar quaisquer sincronizações e trabalhos pendentes. Se o dispositivo permanece ocioso por longos períodos,
- os aplicativos ociosos têm acesso à rede permitido aproximadamente uma vez por dia.</p>
-
-<p>É possível testar este recurso conectando o dispositivo executando o M Preview
- à máquina de desenvolvimento e chamando os seguintes comandos:
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</pre>
-
-<p class="note"><strong>Observação</strong>: o próximo lançamento do
-<a href="https://developers.google.com/cloud-messaging/" class="external-link">
-Google Cloud Messaging</a> (GCM) permite que você
-designe mensagens de alta prioridade. Se o aplicativo recebe mensagens de alta prioridade do GCM,
-um acesso breve à rede é concedido mesmo quando o aplicativo está ocioso.
-</p>
-
-<p>Consulte o
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">guia de teste</a> para obter dicas sobre como
-testar a espera dos aplicativos. </p>
-
-<h2 id="behavior-adoptable-storage">Dispositivos de armazenamento adotáveis</h2>
-<p>
-Com esta prévia, os usuários podem <em>adotar</em> dispositivos de armazenamento externo como cartões SD. Adotar um dispositivo
-de armazenamento externo criptografa e formata o dispositivo para agir como um armazenamento interno. Este recurso
-permite que os usuários movam aplicativos e dados privados desses aplicativos entre dispositivos de armazenamento. Ao mover aplicativos,
-o sistema respeita a preferência
-<a href="{@docRoot}guide/topics/manifest/manifest-element.html#install">{@code android:installLocation}</a>
-no manifesto.</p>
-
-<p>Se o aplicativo acessar as seguintes APIs ou campos, saiba que os caminhos de arquivos retornados
-serão alterados dinamicamente quando o aplicativo for movido entre os dispositivos de armazenamento externo e interno.
-Ao compilar caminhos de arquivos, é recomendado que essas APIs sempre sejam chamadas dinamicamente.
-Não use caminhos de arquivo criptografados nem persista em caminhos de arquivo completamente qualificados que foram compilados anteriormente.</p>
-
-<ul>
-<li>Métodos {@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>Campos {@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>Para depurar este recurso na prévia de desenvolvedor, é possível ativar a adoção
-de uma unidade USB que está conectada a um dispositivo Android por meio de um cabo USB On-The-Go (OTG) executando este comando:</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">Remoção do cliente Apache HTTP</h2>
-<p>Esta prévia remove o suporte para o cliente Apache HTTP. Se o aplicativo estiver usando este cliente e for direcionado
-para Android 2.3 (nível da API 9) ou mais recente, use
-a classe {@link java.net.HttpURLConnection}. Esta API é mais eficiente, pois reduz o uso de rede por meio de compressão transparente e armazenamento
-em cachê de respostas, além de minimizar o consumo de energia. Para continuar usando as APIs do Apache HTTP,
-deve-se primeiro declarar a dependência de tempo de compilação no arquivo {@code build.gradle}:
-</p>
-<pre>
-android {
- useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>O Android está mudando da biblioteca OpenSSL para
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
-. Caso esteja usando o Android NDK no aplicativo, não vincule contra bibliotecas criptográficas
-que não fazem parte da API de NDK, como {@code libcrypto.so} e {@code libssl.so}. Estas bibliotecas não são APIs públicas
-e podem mudar ou apresentar erros sem notificar entre liberações e dispositivos.
-Além disso, você pode se expor a vulnerabilidades de segurança. Em vez disso,
-modifique o código nativo para chamar as APIs de criptografia Java via JNI ou para vincular estaticamente
-com relação a uma biblioteca criptográfica de sua escolha.</p>
-
-<h2 id="behavior-audiomanager-Changes">Mudanças no AudioManager</h2>
-<p>Ajustar o volume diretamente ou desativar o áudio de transmissões específicas por meio da classe {@link android.media.AudioManager}
-não são mais recursos suportados. O método {@link android.media.AudioManager#setStreamSolo(int,boolean)
-setStreamSolo()} é obsoleto e deve-se chamar o método
-{@code AudioManager.requestAudioFocus()}. De forma semelhante, o método
-{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} é
-obsoleto; em vez disso, chame o método {@code AudioManager.adjustStreamVolume()}
-e passe o valor da direção de {@code ADJUST_MUTE} ou {@code ADJUST_UNMUTE}.</p>
-
-<h2 id="behavior-test-selection">Seleção de texto</h2>
-
-<img src="{@docRoot}preview/images/text-selection.gif" style="float:right; margin:0 0 20px 30px" width="360" height="640" />
-
-<p>Quando os usuários selecionam o texto no aplicativo, agora é possível exibir ações de seleção de texto como
-<em>Recortar</em>, <em>Copiar</em> e <em>Colar</em> na
-<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">barra de ferramentas flutuante</a>. A implementação da interação do usuário é semelhante ao processo
-da barra de ação contextual, como descrito em
-<a href="{@docRoot}guide/topics/ui/menus.html#CABforViews">
-Ativação do modo de ação contextual para vistas individuais</a>.</p>
-
-<p>Para implementar uma barra de ferramentas flutuante para seleção de texto, faça as seguintes alterações nos aplicativos
-existentes:</p>
-<ol>
-<li>No objeto {@link android.view.View} ou {@link android.app.Activity}, altere as chamadas
-{@link android.view.ActionMode} de
-{@code startActionMode(Callback)} para {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.</li>
-<li>Pegue a implementação existente de {@code ActionMode.Callback} e torne-a uma extensão de
-{@code ActionMode.Callback2}.</li>
-<li>Substitua o método {@code Callback2.onGetContentRect()} para fornecer as coordenadas do conteúdo
-do objeto {@link android.graphics.Rect} (como um retângulo de seleção de texto) na vista.</li>
-<li>Se o posicionamento do retângulo deixar de ser válido e for o único elemento a ser invalidado,
-chame o método {@code ActionMode.invalidateContentRect()}.</li>
-</ol>
-
-<p>Caso esteja usando a <a href="{@docRoot}tools/support-library/index.html">
-biblioteca de suporte Android</a> revisão 22.2, saiba que as barras de ferramentas flutuantes não
-têm compatibilidade com versões anteriores e que o appcompat tem controle sobre os objetos {@link android.view.ActionMode} por
-padrão. Isto evita que barras de ferramentas flutuantes sejam exibidas. Para ativar o suporte de
-{@link android.view.ActionMode} em um
-{@link android.support.v7.app.AppCompatActivity}, chame
-{@code android.support.v7.app.AppCompatActivity.getDelegate()} e, em seguida, chame
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()} no objeto
-{@link android.support.v7.app.AppCompatDelegate} retornado e defina
-o parâmetro de entrada para {@code false}. Esta chamada retorna o controle dos objetos {@link android.view.ActionMode}
-à estrutura. Em dispositivos que são executados no M Preview, isto permite que a estrutura suporte os modos de
-{@link android.support.v7.app.ActionBar} ou de barra de ferramenta flutuante, enquanto que, para dispositivos anteriores ao M Preview,
-somente os modos {@link android.support.v7.app.ActionBar} são suportados.</p>
-
-<h2 id="behavior-keystore">Mudanças no Android Keystore</h2>
-<p>Com esta prévia,
-o <a href="{@docRoot}training/articles/keystore.html">provedor Android Keystore</a> não suporta mais
-DSA. ECDSA ainda é suportado.</p>
-
-<p>As chaves que não exigem criptografia em rest não precisam ser excluídas quando a tela de bloqueio segura
-é desativada ou redefinida (por exemplo, pelo usuário ou por um administrador do dispositivo). As chaves que exigem
-criptografia serão excluídas durante esses eventos.</p>
-
-<h2 id="behavior-network">Mudanças de rede e Wi-Fi</h2>
-
-<p>Esta prévia introduz as seguintes alterações de comportamento nas APIs de rede e Wi-Fi.</p>
-<ul>
-<li>Os aplicativos podem alterar o estado dos objetos {@link android.net.wifi.WifiConfiguration}
-somente se você os tiver criado. Você não tem permissão para modificar nem excluir objetos
-{@link android.net.wifi.WifiConfiguration} criados pelo usuário ou outros aplicativos.
-</li>
-<li>
-Anteriormente, se um aplicativo forçasse o dispositivo a se conectar a uma rede Wi-Fi específica usando
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} com a configuração
-{@code disableAllOthers=true}, o dispositivo desconectava de outras redes,
-como dados de celular. Nesta prévia, o dispositivo não rompe a conexão com outras redes. Se
-o {@code targetSdkVersion} do aplicativo for {@code “20”} ou menor, ele é fixado
-à rede Wi-Fi selecionada. Se o {@code targetSdkVersion} do aplicativo for {@code “21”} ou maior, use
-as APIS de multi-rede (como
-{@link android.net.Network#openConnection(java.net.URL) openConnection()},
-{@link android.net.Network#bindSocket(java.net.Socket) bindSocket()} e o novo método
-{@code ConnectivityManager.bindProcessToNetwork()}) para garantir que o tráfego de rede
-seja enviado na rede selecionada.</li>
-</ul>
-
-<h2 id="behavior-camera">Mudanças no serviço de câmera</h2>
-<p>Nesta prévia, o modelo para acessar recursos compartilhados no serviço de câmera foi alterado
-do antigo modelo de acesso “primeiro a chegar, primeiro a ser atendido” para um modelo de acesso onde
-os processos de alta prioridade são favorecidos. As mudanças no comportamento do serviço incluem:</p>
-<ul>
-<li>Acesso aos recursos do subsistema da câmera, incluindo abertura e configuração de um dispositivo de câmera,
-concedido com base na prioridade do processo do aplicativo do cliente. Processos de aplicativos com atividades
-visíveis ao usuário ou de primeiro plano são geralmente de alta prioridade, tornando a aquisição
-e o uso de recursos da câmera mais dependentes.</li>
-<li>Clientes de câmera ativa para aplicativos de menor prioridade podem ser "despejados" quando
-um aplicativo de alta prioridade tenta usar a câmera. Na API {@link android.hardware.Camera} obsoleta,
-isto resulta em
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()} sendo
-chamado para o cliente despejado. Na API {@link android.hardware.camera2 Camera2}, isto resulta em
-{@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected(android.hardware.camera2.CameraDevice) onDisconnected()}
-sendo chamado para o cliente despejado.</li>
-<li>Em dispositivos com hardware de câmera adequado, processos de aplicativo separados podem
-abrir e usar independentemente os dispositivos de câmera simultaneamente. No entanto, casos de uso de vários processos
-em que o acesso simultâneo causa uma degradação significante de desempenho ou capacidades
-de qualquer um dos dispositivos de câmera abertos agora são detectados e proibidos pelo serviço da câmera. Esta alteração
-pode resultar em "despejos" para clientes de menor prioridade quando nenhum aplicativo está
-tentando acessar o mesmo dispositivo de câmera diretamente.
-</li>
-<li>
-Alterar o usuário atual faz com que os clientes da câmera ativa em aplicativos pertencentes à conta do usuário anterior
-sejam despejados. O acesso à câmera é limitado a perfis de usuário pertencentes ao usuário do dispositivo atual.
-Na prática, isso significa que uma conta de "convidado", por exemplo, não poderá deixar
-processos em execução que usam o subsistema da câmera quando o usuário alternar para uma conta diferente.
-</li>
-</ul>
-
-<h2 id="behavior-art-runtime">Tempo de execução de ART</h2>
-<p>O tempo de execução de ART agora implementa adequadamente as regras de acesso
-para o método {@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()}. Esta
-alteração corrige um problema onde o Dalvik estava verificando as regras de acesso incorretamente em versões anteriores.
-Se o aplicativo usa o método
-{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} e você quer
-substituir as verificações de acesso, chame o método
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} com o parâmetro
-de entrada definido como {@code true}. Se o aplicativo usar a
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">biblioteca v7 appcompat</a> ou a
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">biblioteca v7 recyclerview</a>,
-deve-se atualizá-lo para usar as versões mais recentes dessas bibliotecas. Caso contrário, certifique-se
-de que as classes personalizadas mencionadas a partir do XML sejam atualizadas para que os construtores de classe estejam acessíveis.</p>
-
-<p>Esta prévia atualiza o comportamento do vinculador dinâmico. O vinculador dinâmico agora entende
-a diferença entre um {@code soname} da biblioteca e o seu caminho
-(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-erro público 6670</a>), e a pesquisa por {@code soname}
-agora está implementada. Os aplicativos que anteriormente trabalhavam e têm entradas {@code DT_NEEDED} inválidas
-(geralmente, caminhos absolutos no sistema de arquivo na máquina de programação) podem falhar ao serem carregados.</p>
-
-<p>O sinalizador {@code dlopen(3) RTLD_LOCAL} agora está corretamente implementado. Observe que
-{@code RTLD_LOCAL} é o padrão. Portanto, chamadas para {@code dlopen(3)} que não usam explicitamente
-{@code RTLD_LOCAL} serão afetadas (a não ser que o aplicativo tenha usado explicitamente {@code RTLD_GLOBAL}). Com
-{@code RTLD_LOCAL}, os símbolos não estarão disponíveis para as bibliotecas carregadas por chamadas posteriores a
-{@code dlopen(3)} (o oposto ocorre quando mencionado por entradas {@code DT_NEEDED}).</p>
-</p>
-
-<h2 id="behavior-apk-validation">Validação de APK</h2>
-<p>A plataforma agora realiza validações mais estritas de APKs. Um APK é considerado corrompido se um arquivo
-for declarado no manifesto, mas não estiver presente no próprio APK. Um APK deve ser atribuído novamente se qualquer
-conteúdo for removido.</p>
-
-<h2 id="behavior-afw">Mudanças do Android for Work</h2>
-<p>Esta prévia inclui as seguintes mudanças de comportamento para Android for Work:</p>
-<ul>
-<li><strong>Contatos de trabalho em contextos pessoais.</strong> O registro de chamadas do telefone do Google
-agora exibe os contatos de trabalho quando o usuário visualiza chamadas anteriores.
-A configuração {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} para {@code true} oculta
-os contatos do perfil de trabalho no registro de chamadas do telefone. Os contatos de trabalho podem ser exibidos junto com os contatos pessoais
-aos dispositivos por meio de Bluetooth somente
-se {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} estiver definido como {@code false}. Por
-padrão, ele está definido como {@code true}.
-</li>
-<li><strong>Remoção de configuração Wi-Fi:</strong> as configurações de Wi-Fi adicionadas por um dono de perfil
-(por exemplo, por meio de chamadas para o método
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()}) agora são removidas se esse perfil de trabalho é excluído.</li>
-<li><strong>Bloqueio de configuração Wi-Fi:</strong> qualquer configuração Wi-Fi criada por um dono do dispositivo
-ativo não pode mais ser modificada nem excluída pelo usuário. O usuário ainda pode criar
-e modificar as próprias configurações de Wi-Fi, contanto que a constante {@link android.os.UserManager}
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI} não tenha sido definida por ele.</li>
-<li><strong>Faça o download do Work Policy Controller por meio de uma adição de conta Google:</strong> quando uma conta Google
-que requer um gerenciamento por meio do aplicativo Work Policy Controller (WPC) é adicionada ao dispositivo
-fora de um contexto gerenciado, o fluxo de conta adicionada agora solicita ao usuário para instalar
-o WPC adequado. Este comportamento também se aplica a contas adicionadas por meio de
-<strong>Settings (Configurações) > Accounts (Contas)</strong> no assistente de configuração inicial do dispositivo.</li>
-<li><strong>Alterações aos comportamentos específicos da API DevicePolicyManager:</strong>
-chamar o método {@link android.app.admin.DevicePolicyManager#setCameraDisabled(android.content.ComponentName,boolean) setCameraDisabled()}
-afeta a câmera somente para o usuário que realizou a chamada. Chamá-lo a partir do perfil gerenciado
-não afeta os aplicativos de câmera em execução no usuário principal. Além disso,
-o método {@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures(android.content.ComponentName,int) setKeyguardDisabledFeatures()}
-agora está disponível para donos de perfil, além dos donos do dispositivo. Um dono de perfil pode definir
-estas restrições de proteção de bloqueio:
-<ul>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_TRUST_AGENTS} e
- {@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_FINGERPRINT}, que afetam
- as configurações de proteção de bloqueio para o usuário pai do perfil.</li>
-<li>{@link android.app.admin.DevicePolicyManager#KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS}, que
- afeta somente as notificações geradas por aplicativos no perfil gerenciado.</li>
-</ul>
-</li>
-</ul>
diff --git a/docs/html-intl/intl/pt-br/preview/download.jd b/docs/html-intl/intl/pt-br/preview/download.jd
deleted file mode 100644
index 12ef194..0000000
--- a/docs/html-intl/intl/pt-br/preview/download.jd
+++ /dev/null
@@ -1,360 +0,0 @@
-page.title=Downloads
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">Antes de fazer o download ou instalar componentes do Android Preview
- SDK, você deve concordar com os seguintes termos e condições.</p>
-
- <h2 class="norule">Termos e condições</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença”).
-
-1. Introdução
-
-1.1 O Android SDK Preview (que este Contrato de licença chama de "Preview", incluindo especificamente os arquivos de sistema do Android, APIs integradas e arquivos da biblioteca Preview, se e quando estiverem disponíveis) é licenciado por meio da concordância com os termos deste contrato. O Contrato de licença forma um vínculo contratual legal entre o contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" se refere à pilha de software do Android para dispositivos, conforme disponibilizado no Projeto de código aberto do Android, localizado no URL a seguir: http://source.android.com/, atualizado periodicamente.
-
-1.3 "Google" refere-se à Google Inc, uma corporação de Delaware, com sede em 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
-
-2. Aceitação do Contrato de Licença
-
-2.1 A fim de usar o Preview, é necessário concordar com este Contrato de licença. O uso do Preview é proibido àqueles que não concordam com este Contrato de licença.
-
-2.2 Ao clicar em aceitar e/ou usar o Preview, você concorda com os termos do Contrato de licença
-
-2.3 É proibido o uso do Preview e a aceitação deste contrato pelo indivíduo que tenha impedimento legal sobre o recebimento do Preview sob as leis dos Estados Unidos ou de outros países, incluindo o país de residência ou no qual usa o Preview.
-
-2.4 Se for usar o Preview internamente na empresa ou organização, você deverá concordar com o vínculo com este contrato em nome do empregador ou de outra entidade e declarar e garantir que tem total autoridade legal para tanto. Se você não tem a autoridade necessária, não deve concordar com este contrato nem usar o Preview em nome do empregador ou de outra entidade.
-
-3. Licença do Preview da Google
-
-3.1 Sujeito aos termos do Contrato de licença, a Google confere uma licença limitada, revogável, livre de taxas, intransmissível, não sub-licenciável e não exclusiva para o uso apenas do Preview, pessoal ou internamente dentro da sua empresa ou organização, para fins de desenvolvimento de aplicativos executados na plataforma do Android.
-
-3.2 Você concorda que a Google ou terceiros detêm todos os direitos legais, títulos e interesses relativos ao Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam no Preview. "Direitos de propriedade intelectual" se referem a todo e qualquer direito sob as leis de patentes, de direitos autorais, de segredo comercial, de marca registrada e todos os outros direitos de propriedade. A Google reserva todos os direitos não conferidos expressamente a você.
-
-3.3 O uso do Preview não é autorizado para qualquer finalidade não expressamente permitida por este Contrato de licença. Salvo na extensão exigida por licenças aplicáveis de terceiros, é proibido: (a) copiar (exceto para fins de cópia de segurança), modificar, adaptar, redistribuir, descompilar, fazer engenharia reversa, desmontar ou criar trabalhos derivados do Preview ou qualquer parte dele; ou (b) carregar qualquer parte do Preview em um aparelho celular ou outro dispositivo de hardware, exceto em computador pessoal, combinar qualquer parte do Preview com outros softwares ou distribuir qualquer software ou dispositivo que contenha uma parte do Preview.
-
-3.4 Você concorda que não tomará quaisquer medidas que possam causar ou resultar em fragmentação do Android, incluindo, sem limitar-se, a distribuição e a participação na criação ou na promoção, sob quaisquer formas, de um conjunto de desenvolvimento de software derivado do Preview.
-
-3.5 O uso, a reprodução e a distribuição de componentes do Preview licenciado sob licença de software de código aberto são regidos exclusivamente pelos termos daquela licença de software de código aberto, e não por este Contrato de licença. Você concorda em manter uma licença em bom estado para as licenças de software de código aberto sob todos os direitos concedidos e deter quaisquer ações que possam limitar, suspender ou romper tais direitos.
-
-3.6 Você concorda que a forma e a natureza do SDK que a Google fornece podem mudar sem aviso prévio e que as versões futuras do SDK podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do SDK. Você concorda que a Google pode cessar (permanente ou temporariamente) o fornecimento do Preview (ou quaisquer recursos dentro dele) a você ou a usuários em geral sob critério exclusivo da Google, sem aviso prévio.
-
-3.7 Nada neste Contrato de licença confere o direito de uso de quaisquer nomes comerciais, marcas comerciais, marcas de serviço, logomarcas, nomes de domínios e outros recursos de marcas especiais da Google.
-
-3.8 Você concorda que não removerá, ocultará nem alterará quaisquer observações de direitos de propriedade (incluindo observações de direitos autorais e de marcas registradas) que possam estar afixadas ou contidas no Preview.
-
-4. Uso do Preview por você
-
-4.1 A Google compreende que nada no Contrato de licença dá a ela direito, título nem interesse no usuário (ou em seus licenciadores), sob o presente Contrato de licença, no que tange ao desenvolvimento de aplicativos de software através do uso do Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam nos referidos aplicativos.
-
-4.2 Você concorda em usar o Preview e desenvolver aplicativos somente para as finalidades permitidas por (a) este Contrato de licença e (b) quaisquer leis, normas, diretrizes geralmente aceitas ou orientações aplicáveis nas jurisdições relevantes (incluindo quaisquer leis acerca da exportação e da importação de dados ou softwares nos Estados Unidos ou em outros países relevantes).
-
-4.3 Você concorda que, se usar o Preview para o desenvolvimento de aplicativos, deverá proteger a privacidade e os direitos legais destes usuários. Se nomes de usuário, senhas ou outras informações de acesso ou informações pessoais forem fornecidos ao aplicativo, deve-se informá-los de que tais dados estarão disponíveis para o aplicativo, além de fornecer observações de privacidade e proteção legalmente adequadas a esses usuários. Se o aplicativo armazenar informações pessoais ou confidenciais fornecidas pelos usuários, deve fazê-lo com segurança. Se o usuário fornecer informações da conta do Google, o aplicativo poderá usar essas informações exclusivamente para acessar a conta da Google do usuário quando houver autorização para fazê-lo e para os fins limitados pela autorização.
-
-4.4 Você concorda que não se envolverá em qualquer atividade com o Preview, incluindo o desenvolvimento e a distribuição de um aplicativo que interfira, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) quaisquer dados, conteúdo ou recursos que criar, transmitir ou exibir por meio do Android e/ou de aplicativos do Android e pelas consequências que suas ações (incluindo perda ou dano que a Google possa sofrer) podem gerar.
-
-4.6 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. Ao usar o Preview, você está ciente de que a implementação de alguns recursos ainda estão em desenvolvimento e que não se deve confiar que o Preview tem a funcionalidade completa de uma versão estável. Você concorda em não distribuir nem enviar publicamente quaisquer aplicativos usando este Preview, pois ele não será mais suportado após o lançamento oficial do Android SDK.
-
-5. Suas credenciais de desenvolvedor
-
-5.1 Você é responsável pela manutenção da confidencialidade de quaisquer credenciais de desenvolvedor que possam ser emitidas pela Google ou escolhidas por você e será o único responsável por todos os aplicativos que forem desenvolvidos sob suas credenciais de desenvolvedor.
-
-6. Privacidade e informações
-
-6.1 A fim de inovar e aprimorar continuamente o Preview, a Google pode coletar certas estatísticas de uso do software, incluindo, sem limitar-se, um identificador exclusivo, endereço IP associado, número de versão do software e informações sobre quais ferramentas e/ou serviços no Preview estão sendo usados e como estão sendo usados. Antes de coletar quaisquer dessas informações, o Preview o notificará e buscará seu consentimento. Se você recusar, as informações não serão coletadas.
-
-6.2 Os dados coletados são examinados coletivamente para aprimorar o Preview e são mantidos em conformidade com a Política de privacidade da Google acessível em http://www.google.com/policies/privacy/.
-
-7. Aplicativos de terceiros
-
-7.1 Ao usar o Preview para executar aplicativos desenvolvidos por terceiros ou que acessam dados, conteúdo ou recursos fornecidos por terceiros, você concorda que a Google não é responsável por tais aplicativos, dados, conteúdo ou recursos. Você compreende que quaisquer dados, conteúdo ou recursos passíveis de aceitação por meio de tais aplicativos de terceiros imputam responsabilidade exclusiva ao indivíduo que os originou. A Google não é responsável por qualquer perda ou dano que possa ocorrer como resultado do uso ou acesso de quaisquer aplicativos, dados, conteúdo ou recursos de terceiros.
-
-7.2 Você deve estar ciente de que os dados, conteúdo e recursos apresentados a você por aplicativos de terceiros podem ser protegidos pelos direitos de propriedade intelectual de posse dos fornecedores (ou de outras pessoas ou empresas em seus nomes). Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos detentores de direitos.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-8.1.1 Ao usar qualquer API para recuperar dados da Google, você reconhece que eles podem ser protegidos por direitos de propriedade intelectual de posse da Google ou dos terceiros que fornecem os dados (ou de pessoas ou empresas em nomes deles). O uso de tal API pode estar sujeito a termos de serviço adicionais. Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados baseados nesses dados (na totalidade ou em parte), salvo se permitido pelos termos de serviço pertinentes.
-
-8.1.2 Se você usar qualquer API para recuperar dados de um usuário a partir da Google, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, o usuário conceder permissão para fazê-lo.
-
-9. Rescisão do Contrato de licença
-
-9.1 O Contrato de licença continuará a se aplicar até que ocorra uma rescisão sua ou da Google, como definido abaixo.
-
-9.2 Caso queira rescindir o Contrato de licença, você pode fazer isto cessando o uso do Preview e de qualquer credencial de desenvolvedor relevante.
-
-9.3 A Google pode, a qualquer momento, rescindir o Contrato de licença, com ou sem causa, com uma notificação.
-
-9.4 O Contrato de licença será encerrado automaticamente sem aviso ou outras ações na ocorrência de:
-(A) a Google interromper o fornecimento do Preview ou de determinadas partes do Preview aos usuários no país em que você reside ou de onde o serviço é usado; e
-(B) a Google emitir uma versão de lançamento final do Android SDK.
-
-9.5 Quando o Contrato de licença é rescindido, a licença concedida a você no Contrato de licença é finalizada, todo o uso do Preview será interrompido e as provisões dos parágrafos 10, 11, 12 e 14 deverão permanecer indefinidamente.
-
-10. EXCLUSÕES
-
-10.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE O RISCO DO USO DO PREVIEW É EXCLUSIVAMENTE SEU E QUE O PREVIEW É FORNECIDO NA FORMA EM QUE SE ENCONTRA E COMO DISPONIBILIZADO, SEM GARANTIA DE QUALQUER TIPO DA GOOGLE.
-
-10.2 O USO DO PREVIEW E DE QUALQUER MATERIAL BAIXADO OU OBTIDO DE OUTRO MODO PELO USO DO PREVIEW ESTÁ A SEU CRITÉRIO E RISCO E VOCÊ É O ÚNICO RESPONSÁVEL POR QUALQUER DANO AO SEU SISTEMA OPERACIONAL OU OUTRO DISPOSITIVO OU PELA PERDA DE DADOS QUE RESULTEM DE TAL USO. SEM LIMITAR OS PRECEDENTES, VOCÊ ENTENDE QUE O PREVIEW NÃO É UMA VERSÃO ESTÁVEL E QUE PODE CONTER ERROS, DEFEITOS E VULNERABILIDADES DE SEGURANÇA QUE PODEM RESULTAR EM DANOS SIGNIFICANTES, INCLUINDO A PERDA IRRECUPERÁVEL OU COMPLETA DO USO DO SISTEMA DO COMPUTADOR OU DE OUTROS DISPOSITIVOS.
-
-10.3 A GOOGLE EXCLUI EXPRESSAMENTE TODAS AS GARANTIAS E CONDIÇOES DE QUALQUER TIPO, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS E CONDIÇÕES DE COMERCIALIZAÇÃO IMPLÍCITAS, ADEQUAÇÃO A UMA FINALIDADE PARTICULAR E A NÃO VIOLAÇÃO.
-
-11. LIMITAÇÃO DE RESPONSABILIDADE
-
-11.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE A GOOGLE, SUAS SUBSIDIÁRIAS, AFILIADAS E SEUS LICENCIADORES NÃO SERÃO RESPONSABILIZADOS POR VOCÊ SOB QUALQUER TEORIA DE RESPONSABILIDADE POR QUAISQUER DANOS, SEJAM ELES DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, CONSEQUENCIAIS OU DE EXEMPLO QUE POSSAM INCORRER, INCLUINDO QUALQUER PERDA DE DADOS, INDEPENDENTE DE AVISO À GOOGLE OU A SEUS REPRESENTANTES OU DA NECESSIDADE DE AVISO SOBRE A POSSIBILIDADE DA INCORRÊNCIA DE TAIS PERDAS.
-
-12. Indenização
-
-12.1 Ao limite máximo permitido por lei, você concorda em defender, indenizar e isentar a Google, suas afiliadas e respectivos conselheiros, diretores, empregados e agentes com relação a todas e quaisquer reivindicações, ações, processos ou procedimentos, bem como todas e quaisquer perdas, responsabilidades, danos, custos e despesas (incluindo honorários advocatícios) decorrentes ou provenientes de: (a) seu uso do Preview, (b) qualquer aplicativo desenvolvido no Preview que infrinja direitos de propriedade intelectual de qualquer pessoa, difame qualquer pessoa ou viole seus direitos de publicidade ou privacidade e (c) qualquer não cumprimento deste Contrato de licença.
-
-13. Mudanças no Contrato de licença
-
-13.1 A Google pode realizar mudanças no Contrato de licença à medida que distribui novas versões do Preview. Quando essas mudanças forem realizadas, a Google fará uma nova versão do Contrato de licença disponível no site em que o Preview estiver disponível.
-
-14. Termos legais gerais
-
-14.1 Esse Contrato de licença constitui o contrato legal integral entre você e a Google e rege o uso do Preview (excluindo quaisquer serviços que a Google possa fornecer a você sob um contrato escrito em separado), e substitui inteiramente quaisquer contratos anteriores entre você e a Google em relação ao Preview.
-
-14.2 Você concorda que, se a Google não exercer nem impetrar qualquer direito ou recurso legal que esteja contido no Contrato de licença (ou que a Google detenha direitos nos termos de qualquer lei aplicável), não se considerará esse fato como uma renúncia formal aos direitos da Google e esses direitos ou recursos continuarão disponíveis à Google.
-
-14.3 Se qualquer tribunal de justiça que tiver a competência para decidir sobre esse tema determinar que qualquer cláusula do Contrato de licença é inválida, tal cláusula será removida do contrato sem afetar as cláusulas restantes ou sua vigência. As cláusulas restantes do Contrato de licença continuarão válidas e obrigatórias.
-
-14.4 Você reconhece e concorda que cada membro do grupo de empresas das quais a Google é a empresa controladora deve ser beneficiário terceiro do Contrato de licença e que essas outras empresas terão o poder de aplicar diretamente, e apoiar-se em, qualquer cláusula do Contrato de licença que confira um direito (ou direitos em favor) deles. Além disso, nenhuma outra pessoa nem empresa deve ser beneficiário terceiro do Contrato de licença.
-
-14.5 RESTRIÇÕES DE EXPORTAÇÃO. O PREVIEW ESTÁ SUJEITO ÀS LEIS E NORMAS DE EXPORTAÇÃO DOS ESTADOS UNIDOS. VOCÊ DEVE CUMPRIR TODAS AS LEIS E NORMAS DOMÉSTICAS E INTERNACIONAIS QUE SE APLICAREM AO PREVIEW. ESSAS LEIS INCLUEM RESTRIÇÕES SOBRE DESTINOS, USUÁRIOS FINAIS E USO FINAL.
-
-14.6 O Contrato de licença não pode ser atribuído nem transferido por você sem a aprovação prévia por escrito da Google. Qualquer tentativa de atribuição sem a aprovação será inválida. Você não deve delegar as próprias responsabilidades ou obrigações nos termos do Contrato de licença sem aprovação prévia por escrito da Google.
-
-14.7 O Contrato de licença e sua relação com a Google nos termos do contrato serão regidos pelas leis do estado da Califórnia sem considerar conflitos de disposições legais. Você e a Google concordam em se submeter à competência exclusiva dos tribunais localizados na comarca de Santa Clara, Califórnia, para dirimir quaisquer questões legais decorrentes do Contrato de licença. Não obstante a isso, você concorda que a Google continua habilitada a impetrar medidas cautelares (ou mecanismo legal urgente equivalente) em qualquer jurisdição.
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">Li e concordo com todos os termos e condições expressos acima</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#sdk">Preview SDK</a></li>
- <li><a href="#docs">Documentação do desenvolvedor</a></li>
- <li><a href="#images">Imagens do sistema de hardware</a></li>
- </ol>
-
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- O Android M Preview SDK inclui ferramentas de desenvolvimento, arquivos de sistema do Android e arquivos da biblioteca
- para ajudar você a testar o aplicativo e novas APIs da próxima versão da plataforma. Este documento
- descreve como adquirir os componentes disponíveis para download da prévia para o teste do aplicativo.
-</p>
-
-
-<h2 id="sdk">Preview SDK</h2>
-
-<p>
- O Preview SDK está disponível para download no <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>. Para obter mais informações
- sobre o download e a configuração do Preview SDK, consulte <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Configuração do Preview SDK</a>.
-</p>
-
-
-<h2 id="docs">Documentação do desenvolvedor</h2>
-
-<p>
- O pacote de download da documentação do desenvolvedor fornece informações de referência de API detalhadas e um relatório de diferença de API para a prévia.
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-
-<h2 id="images">Imagens do sistema de hardware</h2>
-
-<p>
- Essas imagens do sistema permitem que você instale uma versão de prévia da plataforma em um dispositivo físico
-para fins de teste. Ao configurar um dispositivo com uma dessas imagens, é possível instalar e testar o aplicativo
- para verificar o seu desempenho na próxima versão da plataforma. O processo de instalação de uma imagem do sistema
- em um dispositivo <em>remove todos os dados do dispositivo</em>. Portanto, deve-se realizar um backup dos dados
- antes de instalar uma imagem do sistema.
-</p>
-
-<p class="warning">
- <b>Aviso:</b> as seguintes imagens do sistema Android são prévias e estão sujeitas a alterações. O uso
- dessas imagens do sistema são governadas pelo Contrato de licença do Android SDK Preview. As imagens do sistema do Android Preview
- não são versões estáveis e podem conter erros e defeitos que podem resultar
- em danos aos sistemas do computador, aos dispositivos e aos dados. As imagens do sistema Android Preview
- não estão sujeitas ao mesmo teste do sistema operacional de fábrica e podem fazer com que o telefone e aplicativos e os serviços
- instalados parem de funcionar.
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">Instalar uma imagem no dispositivo</h3>
-
-<p>
- Para usar uma imagem de dispositivo para testes, deve-se instalá-lo em um dispositivo compatível. Siga
- as instruções abaixo para instalar uma imagem de sistema.
-</p>
-
-<ol>
- <li>Faça o download e descompacte um dos pacotes de imagem do sistema listados aqui.</li>
- <li>Faça um backup dos dados do dispositivo que deseja preservar.</li>
- <li>Siga as instruções em
- <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- para programar em flash a imagem no dispositivo.</li>
-</ol>
-
-<p class="note">
- <strong>Observação:</strong> ao programar em flash a imagem do sistema de prévia no dispositivo de desenvolvimento,
- ele é atualizado automaticamente com o próximo lançamento da prévia por meio de atualizações over-the-air (OTA).
-</p>
-
-<h3 id="revertDevice">Reverter um dispositivo para as especificações de fábrica</h3>
-
-<p>
- Caso queira desinstalar a prévia e reverter o dispositivo para as especificações de fábrica, acesse
- <a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> e
- faça o download da imagem que deseja programar em flash no dispositivo. Siga as instruções nesta página
- para programar em flash a imagem no dispositivo.
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/pt-br/preview/features/app-linking.jd b/docs/html-intl/intl/pt-br/preview/features/app-linking.jd
deleted file mode 100644
index 17a9896..0000000
--- a/docs/html-intl/intl/pt-br/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Links de aplicativos
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=applinking, deeplinks, intents
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#web-assoc">Declarar uma associação de site</a></li>
- <li><a href="#verfy-links">Solicitar verificação de link de aplicativo</a></li>
- <li><a href="#user-manage">Gerenciar configurações de link de aplicativo</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- O sistema de intenções do Android é um mecanismo flexível para possibilitar que aplicativos lidem com conteúdos e solicitações.
- Vários aplicativos podem declarar padrões de URI correspondentes em seus filtros de intenções. Quando um usuário clica em um
- link da web que não tem um manipulador de inicialização padrão, a plataforma pode exibir um diálogo para
- o usuário selecionar entre uma lista de aplicativos que declararam filtros de intenções correspondentes.
-</p>
-
-<p>
- O Android M Developer Preview introduz suporte para links de aplicativos, que aprimora
- a manipulação de links existentes, permitindo que desenvolvedores de aplicativos associem um aplicativo a um domínio da web pertencente a eles. Quando
- os desenvolvedores criam esta associação, a plataforma pode automaticamente determinar o aplicativo padrão usado
- para lidar com um link da web particular e ignorar a solicitação aos usuários.
-</p>
-
-
-<h2 id="web-assoc">Declarar uma associação de site</h2>
-
-<p>
- Os donos de sites da web devem declarar as associações aos aplicativos para estabelecer um link de aplicativo. O dono do site
- declara a relação com um aplicativo hospedando um arquivo JSON chamado {@code statements.json} no
- local bem conhecido no domínio:
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>Observação:</strong>
- durante o período do M Developer Preview, o arquivo JSON é verificado por meio de protocolo http. Para
- o lançamento oficial da plataforma, o arquivo é verificado com o protocolo http criptografado.
-</p>
-
-<p>
- Este arquivo JSON indica o aplicativo do Android que deve ser usado como o manipulador padrão para URLs
- neste domínio. Ele identifica o aplicativo com base nestes campos:
-</p>
-
-<ul>
- <li>{@code package_name}: o nome do pacote declarado no manifesto do arquivo.</li>
-
- <li>{@code sha256_cert_fingerprints}: a impressão digital SHA256 do certificado assinado do aplicativo.
- É possível usar o Java Keytool para gerar a impressão digital usando o seguinte comando:
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- A seguinte lista de arquivos exibe um exemplo de conteúdo e formato
- de um arquivo {@code statements.json}:
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">Solicitar verificação de link de aplicativo</h2>
-
-<p>
- Um aplicativo pode solicitar que a plataforma verifique automaticamente quaisquer links de aplicativo relacionados aos arquivos {@code statements.json}
- hospedados nos respectivos domínios da web que são definidos pelos nomes de host
- nos elementos de dados dos seus filtros de intenções. Para solicitar a verificação de link de aplicativo, adicione um atributo {@code android:autoVerify}
- a cada filtro de intenção desejado no manifesto, como exibido no seguinte fragmento
- de código do manifesto:
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- Quando o atributo {@code android:autoVerify} está presente em um manifesto do aplicativo, a plataforma
- tenta verificar os links do aplicativo quando o aplicativo é instalado. Se a plataforma não conseguir
- verificar os links do aplicativo, o aplicativo não será definido como o aplicativo preferencial para lidar com os links da web. Na próxima vez
- que um usuário tentar abrir um dos links, a plataforma voltará a apresentar ao usuário
- uma caixa de diálogo.
-</p>
-
-<p class="note">
- <strong>Observação:</strong> no teste, há chances de ocorrer um falso positivo se a verificação
- falhar, mas o usuário explicitamente permitiu que o aplicativo abrisse links sem solicitar, usando
- o aplicativo do sistema Settings (Configurações). Neste caso, nenhum diálogo é exibido e o link vai direto para o
- aplicativo, mas somente devido à configuração do usuário, e não porque a verificação foi bem-sucedida.
-</p>
-
-
-<h2 id="user-manage">Gerenciar configurações de link de aplicativo</h2>
-
-<p>
- Os usuários podem alterar as configurações de link de aplicativo para que os URLs sejam tratados da maneira que preferirem. É possível revisar e
- gerenciar os links de aplicativo no aplicativo Settings (Configurações) do sistema, em <strong>Settings (Configurações) > Apps (Aplicativos) > App Info (Informações do aplicativo) >
- Open by default (Abrir por padrão)</strong>.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd b/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd
deleted file mode 100644
index 762e1ae..0000000
--- a/docs/html-intl/intl/pt-br/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=Permissões
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image={@docRoot}preview/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Visualização rápida</h2>
- <ul>
- <li>Se o aplicativo direciona o M Preview SDK, ele indica aos usuários para conceder
- permissões no tempo de execução, em vez de tempo de instalação.</li>
- <li>Os usuários podem revogar as permissões a qualquer momento na tela de configurações
-do aplicativo.</li>
- <li>O aplicativo precisa verificar se tem as permissões necessárias
-sempre que for executado.</li>
- </ul>
-
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#overview">Visão geral</a></li>
- <li><a href="#coding">Codificação para permissões de tempo de execução</a></li>
- <li><a href="#testing">Teste de permissões de tempo de execução</a></li>
- <li><a href="#best-practices">Práticas recomendadas</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>
- O M Developer Preview introduz um novo modelo de permissões de aplicativo
-que agiliza o processo de instalação e atualização de aplicativos para os usuários. Se um aplicativo
- que está sendo executado no M Preview suporta o novo modelo de permissões, o usuário não precisa conceder
- permissões ao instalar ou atualizar o aplicativo. Em vez disso, o aplicativo
- solicita as permissões à medida que precisar e o sistema exibe um diálogo
- ao usuário pedindo a permissão.
-</p>
-
-<p>
- Se um aplicativo suportar o novo modelo de permissões, ele
- ainda poderá ser instalado e executado em versões mais antigas do Android, usando o antigo modelo
- de permissões nesses dispositivos.
-</p>
-
-<h2 id="overview">
- Visão geral
-</h2>
-
-<p>
- Com o M Developer Preview, a plataforma introduz um novo modelo
- de permissões. Eis um resumo dos componentes essenciais deste novo modelo:
-</p>
-
-<ul>
- <li>
- <strong>Declaração de permissões:</strong> O aplicativo declara todas
- as permissões necessárias no manifesto, como nas plataformas anteriores do Android.
- </li>
-
- <li>
- <strong>Grupos de permissão:</strong> As permissões são divididas em
-<em>grupos de permissão</em>, baseados na funcionalidade. Por exemplo: o grupo de permissão
- <code>CONTACTS</code> contém permissões para ler e escrever
- informações de perfil e contatos do usuário.
- </li>
-
- <li>
- <p><strong>Permissões limitadas concedidas no tempo de instalação:</strong> Quando o usuário
- instala ou atualiza o aplicativo, o sistema concede todas
- as permissões que o aplicativo solicita que estão em {@link
- android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}.
- Por exemplo: as permissões de internet e despertador estão em {@link
- android.content.pm.PermissionInfo#PROTECTION_NORMAL PROTECTION_NORMAL}. Portanto,
- as permissões são concedidas automaticamente no tempo de instalação.
- </p>
-
- <p>O sistema pode também conceder as permissões de sistema e assinatura de aplicativo,
- como descrito em <a href="#system-apps">permissões de assinatura
- e aplicativos do sistema</a>. O usuário <em>não</em> é alertado a conceder permissões
- no tempo de instalação.</p>
- </li>
-
- <li>
- <strong>O usuário concede permissões no tempo de execução:</strong> Quando um aplicativo solicita
- uma permissão, o sistema exibe um diálogo ao usuário e, em seguida,
- chama a função de retorno de chamada do aplicativo para notificá-lo se a permissão foi concedida. Se um
- usuário concede uma permissão, o aplicativo recebe todas
- as permissões na área funcional desta permissão que foram declaradas no manifesto do aplicativo.
- </li>
-
-</ul>
-
-<p>
- Este modelo de permissões altera a forma como o aplicativo se comporta diante os recursos
- que precisam de permissões. Eis um resumo das práticas de desenvolvimento que devem
- ser seguidas para ajustar para este modelo:
-</p>
-
-<ul>
-
- <li>
- <strong>Sempre verificar as permissões:</strong> Quando o aplicativo
- precisa realizar uma ação que requer uma permissão, ele deve primeiro verificar
- se já a tem. Caso não tenha, ele solicita
- o concedimento desta permissão.
- </li>
-
- <li>
- <strong>Lidar com falta de permissões dignamente:</strong> Se o aplicativo não
- recebe a permissão adequada, ele deve lidar com a falha de forma limpa.
- Por exemplo, se a permissão é necessária para um recurso adicionado,
- o aplicativo pode desativar este recurso. Se a permissão for essencial
- para que o aplicativo funcione, ele desativará toda sua funcionalidade
- e informará ao usuário que precisa desta permissão.
- </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>Figura 1.</strong> Tela de permissões nas configurações do aplicativo.
- </p>
- </div>
-
- <li>
- <strong>As permissões são revogáveis:</strong> Os usuários podem revogar as permissões
- de um aplicativo a qualquer momento. Se um usuário desativar as permissões de um aplicativo,
- o aplicativo <em>não</em> é notificado. Novamente, o aplicativo deve verificar
- se tem todas as permissões necessárias antes de realizar qualquer ação restrita.
- </li>
-</ul>
-
-<p class="note">
- <strong>Observação:</strong> se um aplicativo direcionar o M Developer Preview, ele
- <em>deve</em> usar o novo modelo de permissões.
-</p>
-
-<p>
- No momento do lançamento do M Developer Preview,
- nem todos os aplicativos Google implementam completamente o novo modelo de permissões. A Google está atualizando estes aplicativos
- durante o curso do M Developer Preview para respeitar adequadamente a configuração
- de alternação de permissões.
-</p>
-
-<p class="note">
- <strong>Observação:</strong> se o aplicativo tiver a própria superfície de API,
- não represente permissões sem antes garantir que o autor da chamada tenha as permissões necessárias
- para acessar esses dados.
-</p>
-
-<h3 id="system-apps">
- Permissões de assinatura e aplicativos do sistema
-</h3>
-
-<p>
- Geralmente, quando um usuário instala um aplicativo, o sistema somente fornece ao aplicativo o
- {@link android.content.pm.PermissionInfo#PROTECTION_NORMAL
- PROTECTION_NORMAL}. No entanto, sob algumas circunstâncias, o sistema concede
- ao aplicativo mais permissões:
-</p>
-
-<ul>
- <li>Se um aplicativo faz parte da imagem do sistema, ele recebe automaticamente
- todas as permissões listadas no manifesto.
- </li>
-
- <li>Se o aplicativo solicitar as permissões no manifesto que está em {@link
- android.content.pm.PermissionInfo#PROTECTION_SIGNATURE PROTECTION_SIGNATURE},
- e estiver assinado com o mesmo certificado que o aplicativo que declarou essas permissões,
- o sistema concederá essas permissões na instalação ao aplicativo
- que fez a solicitação.
- </li>
-</ul>
-
-<p>
- Em ambos os casos, o usuário ainda pode revogar as permissões a qualquer
- momento acessando a tela de <strong>configurações</strong> do sistema e escolhendo <strong>Aplicativos
- ></strong> <i>app_name</i> <strong>> Permissões</strong>. O aplicativo
- deve continuar com a verificação das permissões no tempo de execução e solicitá-las
- se necessário.
-</p>
-
-<h3 id="compatibility">
- Compatibilidade anterior e posterior
-</h3>
-
-<p>
- Se um aplicativo não direciona para o M Developer Preview, ele deve continuar a usar
- o modelo antigo de permissões mesmo nos dispositivos M Preview. Quando o usuário instala
- o aplicativo, o sistema pede para que ele conceda todas as permissões
- listadas no manifesto do aplicativo.
-</p>
-
-<p class="note">
- <strong>Observação:</strong> em dispositivos que são executados no M Developer Preview,
- um usuário pode desativar as permissões para qualquer aplicativo (incluindo aplicativos de legado)
- na tela de configurações do aplicativo. Se um usuário desativa as permissões de um aplicativo de legado, o sistema
- silenciosamente desativa a funcionalidade adequada. Quando um aplicativo tentar realizar
- uma operação que requer esta permissão, a operação não necessariamente causará
- uma exceção. Em vez disso, ele retornará um conjunto de dados vazio,
- sinalizará um erro ou exibirá um comportamento inesperado. Por exemplo, caso queira
- consultar um calendário sem permissão, o método retorna um conjunto de dados vazio.
-</p>
-
-<p>
- Se instalar um aplicativo usando o novo modelo de permissões em um dispositivo
- que não está executando o M Preview,
- o sistema o tratará da mesma forma que qualquer outro aplicativo: o sistema pedirá
- para que o usuário conceda todas as permissões declaradas no momento da instalação.
-</p>
-
-<p class="note">
- <strong>Observação:</strong> para a liberação de prévia, deve-se definir a versão mínima de SDK
- para o M Preview SDK para compilar com o SDK de prévia. Isto significa que você
- não poderá testar tais aplicativos em plataformas mais antigas durante a prévia
- de desenvolvedor.
-</p>
-
-<h3 id="perms-vs-intents">Permissões versus intenções</h3>
-
-<p>
- Em vários casos, é possível escolher entre duas maneiras para que o aplicativo realize
- uma tarefa. É possível fazer com que o aplicativo solicite uma permissão para realizar a operação
- por conta própria. Alternativamente, é possível fazer com que o aplicativo use uma intenção para que outro aplicativo
- realize a tarefa.
-</p>
-
-<p>
- Por exemplo, imagine que o aplicativo precisa da função de tirar fotos com
- a câmera do dispositivo. O aplicativo pode solicitar a permissão
-<code>android.permission.CAMERA</code>, que permite que ele acesse
- a câmera diretamente. O aplicativo então usará as APIs da câmera
- para controlar a câmera e tirar uma foto. Esta abordagem fornece ao aplicativo
- controle completo sobre o processo de fotografia e permite
- que você incorpore a IU da câmera.
-</p>
-
-<p>
- No entanto, caso não precise de tal controle, é possível apenas usar uma intenção {@link
- android.provider.MediaStore#ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE}
- para solicitar uma imagem. Ao iniciar a intenção, o usuário deve escolher
- um aplicativo de câmera (se não houver um aplicativo padrão de câmera)
- para tirar a foto. O aplicativo da câmera retorna a imagem ao método {@link
- android.app.Activity#onActivityResult onActivityResult()} do aplicativo.
-</p>
-
-<p>
- De forma semelhante, caso precise realizar uma ligação,
- acessar os contatos do usuário etc., é possível fazer estas ações criando uma intenção adequada
- ou solicitar a permissão e o acesso aos objetos adequados diretamente. Essas são
- as vantagens e desvantagens de cada abordagem.
-</p>
-
-<p>
- Se usar permissões:
-</p>
-
-<ul>
- <li>O aplicativo tem controle completo sobre a experiência do usuário ao realizar
- a operação. No entanto, esse controle amplo é adicionado à complexidade da tarefa,
- levando em consideração a necessidade de projetar uma IU adequada.
- </li>
-
- <li>O usuário deve fornecer a permissão uma vez: na primeira realização
- da operação. Depois, o aplicativo pode realizar a operação sem
- precisar de mais interações do usuário. No entanto,
- se o usuário não conceder a permissão (ou revogá-la posteriormente),
- o aplicativo não conseguirá realizar a operação.
- </li>
-</ul>
-
-<p>
- Se usar uma intenção:
-</p>
-
-<ul>
- <li>Você não terá que projetar a IU para a operação. O aplicativo que lida com
- a intenção fornece a IU. No entanto, isso significa que você não terá controle
- completo sobre a experiência de usuário. O usuário poderá interagir com um aplicativo
- que você nunca viu.
- </li>
-
- <li>Se o usuário não tem um aplicativo padrão para a operação,
- o sistema pede para que o usuário escolha um aplicativo.
- Se o usuário não designar um manipulador padrão,
- ele terá que acessar uma caixa de diálogo extra sempre que realizar a operação.
- </li>
-</ul>
-
-<h2 id="coding">Codificação para permissões de tempo de execução</h2>
-
-<p>
- Se um aplicativo direciona o novo M Developer Preview, ele deve usar o novo
- modelo de permissões. Isto significa que, além de declarar as permissões necessárias no manifesto,
- deve-se também verificar se o aplicativo
- tem as permissões no tempo de execução e,
- caso ainda não as tenha, solicitá-las.
-</p>
-
-<h3 id="enabling">
- Possibilitar um novo modelo de permissões
-</h3>
-
-<p>
- Para possibilitar o modelo de permissões do M Developer Preview, configure o atributo
-<code>targetSdkVersion</code> do aplicativo para <code>"MNC"</code> e
-<code>compileSdkVersion</code> para <code>"android-MNC"</code>. Isto ativará
- todos os novos recursos de permissão.
-</p>
-
-<p>
- Para a liberação de uma prévia, deve-se definir <code>minSdkVersion</code> para
-<code>"MNC"</code> para compilar com o SDK de prévia.
-</p>
-
-<h3 id="m-only-perm">
- Designar uma permissão somente para o M Preview
-</h3>
-
-<p>
- É possível usar o novo elemento <code><uses-permission-sdk-m></code> no manifesto do aplicativo
- para indicar que uma permissão é necessária apenas no M Developer Preview. Se você
- declarar uma permissão desta maneira, sempre que o aplicativo for instalado
- em um dispositivo mais antigo, o sistema não solicitará ao usuário
- nem concederá a permissão ao aplicativo. Usando o elemento <code><uses-permission-sdk-m></code>
-, é possível adicionar novas permissões
- a versões atualizadas do aplicativo sem forçar os usuários a conceder permissões
- ao instalar a atualização.
-</p>
-
-<p>
- Se o aplicativo está sendo executado em um dispositivo com M Developer Preview, o
-<code><uses-permission-sdk-m></code> se comporta da mesma forma que
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code>.
- O sistema não solicita ao usuário que conceda quaisquer permissões ao instalar o aplicativo
- e o aplicativo solicita as permissões à medida que forem necessárias.
-</p>
-
-<h3 id="prompting">
- Solicitação de permissões
-</h3>
-
-<p>
- Se o aplicativo usa o novo modelo de permissões do M Developer Preview,
- o usuário não recebe solicitações para conceder todas as permissões quando o aplicativo é iniciado pela primeira vez em um dispositivo
- que está sendo executado no M Preview. Em vez disso, o aplicativo solicita as permissões à medida
- que forem necessárias. Quando um aplicativo solicita uma permissão, o sistema exibe uma caixa de diálogo
- ao usuário.
-</p>
-
-<p>
- Se o aplicativo executar em um dispositivo que tem SDK 22 ou inferior,
- ele usará o antigo modelo de permissões. Quando o usuário instala o aplicativo, ele é solicitado a conceder
- todas as permissões que o aplicativo lista no manifesto,
- exceto as permissões que forem marcadas com <code><uses-permission-sdk-m></code>.
-</p>
-
-<h4 id="check-platform">Verifique em qual plataforma o aplicativo está sendo executado</h4>
-
-<p>
- Este modelo de permissões é suportado apenas em dispositivos que estão executando
- o M Developer Preview. Antes de chamar qualquer um destes métodos,
- o aplicativo deve verificar em qual plataforma está sendo executado
- verificando o valor de {@link android.os.Build.VERSION#CODENAME
- Build.VERSION.CODENAME}. Se o dispositivo estiver sendo executado no M Developer Preview,
- {@link android.os.Build.VERSION#CODENAME CODENAME} será <code>"MNC"</code>.
-</p>
-
-<h4 id="check-for-permission">Verifique se o aplicativo tem a permissão necessária</h4>
-
-<p>Quando o usuário tenta fazer algo que requer uma permissão,
- o aplicativo verifica se tem a permissão para realizar esta operação. Para fazer isto,
- o aplicativo chama
- <code>Context.checkSelfPermission(<i>permission_name</i>)</code>. O aplicativo
- deve realizar isto para verificar se sabe que o usuário já concedeu esta permissão,
- levando em consideração que o usuário pode revogar
- as permissões do aplicativo a qualquer momento. Por exemplo,
- se um usuário quiser usar um aplicativo para tirar uma foto, o aplicativo chamará
- <code>Context.checkSelfPermission(Manifest.permission.CAMERA)</code>.</p>
-
-<p class="table-caption" id="permission-groups">
- <strong>Tabela 1.</strong> Permissões e grupos de permissões.</p>
-<table>
- <tr>
- <th scope="col">Grupo de permissões</th>
- <th scope="col">Permissões</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">Solicitar permissões se necessário</h4>
-
-<p>Se o aplicativo já não tem a permissão necessária, ele chama o método
- <code>Activity.requestPermissions(String[], int)</code> para solicitar
- as permissões necessárias. O aplicativo passa
- as permissões que deseja e também um "código de solicitação" do inteiro.
- Este método funciona de forma assíncrona: ele retorna imediatamente e,
- depois que o usuário responde à caixa de diálogo, o sistema chama
- o método de retorno de chamada do aplicativo com os resultados, passando o mesmo "código de solicitação" que o aplicativo passou
- para <code>requestPermissions()</code>.</p>
-
- <p>O seguinte código verifica se o aplicativo tem a permissão
- para ler os contatos do usuário e solicita a permissão, se necessário:</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">Lidar com a resposta de solicitação das permissões</h4>
-
-<p>
- Quando um aplicativo solicita as permissões, o sistema apresenta uma caixa de diálogo
- ao usuário. Quando o usuário responde, o sistema invoca o
- <code>Activity.onRequestPermissionsResult(int, String[], int[])</code>
- do aplicativo, passando a ele a resposta do usuário. O aplicativo precisa substituir este método. O retorno de chamada
- recebe o mesmo código de solicitação passado para
- <code>requestPermissions()</code>. Por exemplo, se um aplicativo solicita o acesso
- <code>READ_CONTACTS</code>, ele pode ter o seguinte
- método de retorno de chamada:
-</p>
-
-<pre>
-@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>Se o usuário concede a permissão, o sistema fornece ao aplicativo todas as permissões
- que o manifesto do aplicativo lista para esta área funcional. Se o usuário negar a solicitação,
- deve-se tomar a ação adequada. Por exemplo, deve-se desativar
- quaisquer ações de menu que dependam desta permissão.
- </li>
-</p>
-
-<p>
- Quando o sistema pede para que o usuário conceda uma permissão, esse usuário tem a opção
- de dizer ao sistema para que não peça esta permissão novamente. Nesse caso,
- quando um aplicativo usa <code>requestPermissions()</code> para solicitar esta permissão,
- o sistema nega imediatamente. Neste caso, o sistema chama
- <code>onRequestPermissionsResult()</code> da mesma forma que faria se o usuário tivesse
- rejeitado explicitamente a solicitação novamente. Por este motivo, o aplicativo
- não pode presumir que uma interação direta com o usuário ocorreu.
-</p>
-
-<h2 id="testing">Teste de permissões de tempo de execução</h2>
-
-
-<p>
- Se o aplicativo for direcionado para o M Developer Preview, deve-se testar
- se ele lida com as permissões corretamente. Não se pode presumir que o aplicativo
- terá qualquer permissão quando executado. Quando o aplicativo é iniciado pela primeira vez,
- é provável que não tenha permissões. O usuário pode revogar e restaurar permissões
- a qualquer momento.
-</p>
-
-<p>
- Deve-se testar o aplicativo para garantir que ele se comporte corretamente em todas
- as situações de permissão. Com o M Preview SDK, fornecemos os novos comandos
- de <a href="{@docRoot}tools/help/adb.html">Android
- Debug Bridge (adb)</a> para possibilitar que o aplicativo seja testado com quaisquer
- configurações de permissões necessárias.
-</p>
-
-<h3>
- Novas opções e comandos adb
-</h3>
-
-<p>
- As ferramentas da plataforma M Preview SDK fornecem vários comandos novos para permitir
- que você teste como o aplicativo lida com permissões.
-</p>
-
-<h4>
- Instalar com permissões
-</h4>
-
-<p>
- É possível usar a nova opção <code>-g</code> do comando <a href="{@docRoot}tools/help/adb.html#move"><code>adb
- install</code></a>, que instala o aplicativo
- e fornece todas as permissões listadas em seu manifesto:
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g <path_to_apk>
-</pre>
-
-<h4>
- Conceder e revogar permissões
-</h4>
-
-<p>
- É possível usar os novos comandos do <a href="{@docRoot}tools/help/adb.html#pm">gerenciador
- de pacotes (pm)</a> de ADB para conceder e revogar as permissões de um aplicativo instalado.
- Esta funcionalidade pode ser útil para testes automatizados.
-</p>
-
-<p>
- Para conceder uma permissão, use o comando <code>grant</code> do gerenciador de pacote:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant <package_name> <permission_name>
-</pre>
-
-<p>
- Por exemplo: para conceder a permissão do pacote com.example.myapp para gravar áudios,
- use este comando:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant com.example.myapp android.permission.RECORD_AUDIO
-</pre>
-
-<p>
- Para revogar uma permissão, use o comando <code>revoke</code> do gerenciador de pacote:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm revoke <package_name> <permission_name>
-</pre>
-
-<h2 id="best-practices">Práticas recomendadas</h2>
-
-<p>
- O novo modelo de permissões fornece aos usuários uma experiência mais suave
- e facilita a instalação de aplicativos, deixando-os mais confortáveis
- com o que os aplicativos estão fazendo. Sugerimos que você siga as práticas recomendadas para aproveitar
- todas as vantagens do novo modelo.
-</p>
-
-
-<h3 id="bp-what-you-need">Peça somente as permissões necessárias</h3>
-
-<p>
- Sempre que você pede uma permissão, o usuário é forçado a tomar uma decisão.
- Se o usuário negar a solicitação, a funcionalidade do aplicativo será reduzida.
- Deve-se minimizar o número de solicitações realizadas.
-</p>
-
-<p>
- Por exemplo: o aplicativo pode frequentemente adquirir a funcionalidade necessária usando
- uma <a href="{@docRoot}guide/components/intents-filters.html">intenção</a> em vez
- de solicitar permissões. Se o aplicativo precisa tirar fotos com a câmera do telefone,
- é possível usar uma intenção {@link
- android.provider.MediaStore#ACTION_IMAGE_CAPTURE
- MediaStore.ACTION_IMAGE_CAPTURE}. Quando o aplicativo executa a intenção,
- o sistema pede para que o usuário escolha um aplicativo de câmera já instalado
- para tirar a foto.
-</p>
-
-<h3 id="bp-dont-overwhelm">
- Não oprima o usuário
-</h3>
-
-<p>
- Se você confrontar o usuário com várias solicitações de permissão de uma só vez,
- é possível que ele se sinta oprimido e saia do aplicativo.
- Em vez disso, deve-se solicitar as permissões somente quando necessário.
-</p>
-
-<p>
- Em alguns casos, uma ou mais permissões podem ser absolutamente essenciais para o aplicativo.
- Nesta situação, faz sentido solicitar todas as permissões assim
- que o aplicativo é iniciado. Por exemplo: se você fizer um aplicativo de fotografia,
- ele precisará de acesso à câmera do dispositivo. Quando o usuário iniciar o aplicativo
- pela primeira vez, ele não se surpreenderá quando receber
- uma solicitação de permissão para usar a câmera. Mas, se o mesmo aplicativo tiver um recurso
- para compartilhar fotos com os contatos do usuário, <em>não</em> se deve
- pedir esta permissão na primeira inicialização. Em vez disso, espere o usuário tentar usar
- o recurso de compartilhamento para pedir a permissão.
-</p>
-
-<p>
- Se o aplicativo fornecer um tutorial, faz sentido solicitar as permissões
- necessárias no final da sequência do tutorial.
-</p>
-
-<h3 id="bp-explain">
- Explique o porquê da necessidade das permissões
-</h3>
-
-<p>
- O diálogo de permissões exibido pelo sistema ao chamar
- <code>requestPermissions()</code> diz quais permissões o aplicativo requer,
- mas não diz o porquê. Em alguns casos, o usuário pode achar isto confuso.
- É uma boa ideia explicar ao usuário o porquê da necessidade das permissões
- para o aplicativo antes de chamar <code>requestPermissions()</code>.
-</p>
-
-<p>
- Por exemplo: um aplicativo de fotografia pode precisar usar serviços de localização
- para poder marcar as fotos geograficamente. Um usuário normal pode não entender que uma foto
- pode conter informações de localização e ficar confuso quando
- o aplicativo de fotografia quiser saber a localização. Portanto, neste caso, é uma boa ideia o aplicativo explicar
- ao usuário sobre este recurso <em>antes</em> de chamar
- <code>requestPermissions()</code>.
-</p>
-
-<p>
- Uma maneira de fazer isto é incorporar estas solicitações em um tutorial do aplicativo. O tutorial pode exibir cada um dos recursos
- do aplicativo e, à medida que fizer isto,
- pode também explicar quais permissões são necessárias. Por exemplo, o tutorial do aplicativo de fotografia
- pode demonstrar os recursos de compartilhamento de fotos com os contatos e,
- em seguida, dizer ao usuário que ele precisa fornecer as permissões
- para que o aplicativo possa visualizar os contatos. O aplicativo pode então chamar <code>requestPermissions()</code> para solicitar
- ao usuário este acesso. É claro que nem todos os usuários seguirão o tutorial.
- Portanto, ainda é necessário verificar e solicitar as permissões durante
- a operação normal do aplicativo.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png
deleted file mode 100644
index a53a33e..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png
deleted file mode 100644
index 87816ff..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/direct-share-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png
deleted file mode 100644
index 77f9982..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png
deleted file mode 100644
index 4749bcf..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/fingerprint-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png
deleted file mode 100644
index 724a6af..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline-crop.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png b/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png
deleted file mode 100644
index e9a339e..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/m-preview-timeline.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png b/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png
deleted file mode 100644
index 87d1cfc..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/perf-test-frame-latency.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png b/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png
deleted file mode 100644
index 589a923..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/perf-test-framestats.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/text-selection.gif b/docs/html-intl/intl/pt-br/preview/images/text-selection.gif
deleted file mode 100644
index 1d82fc6..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/text-selection.gif
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png
deleted file mode 100644
index c3e4e44..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png b/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png
deleted file mode 100644
index 5dcf610..0000000
--- a/docs/html-intl/intl/pt-br/preview/images/work-profile-screen_2x.png
+++ /dev/null
Binary files differ
diff --git a/docs/html-intl/intl/pt-br/preview/index.jd b/docs/html-intl/intl/pt-br/preview/index.jd
deleted file mode 100644
index 172b211..0000000
--- a/docs/html-intl/intl/pt-br/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M Developer Preview</h1>
- <p class="dac-hero-description">
- Prepare-se para a próxima versão do Android. Teste os aplicativos no Nexus 5, 6, 9 e
- Player. Explore o que há de novo — <strong>permissões em tempo de execução</strong>,
- recursos de economia de energia <strong>aplicativo em espera</strong> e <strong>soneca</strong>, novas
- <strong>tecnologias de auxílio</strong> e muito mais.
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Comece!
-</a><br>
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">Recursos</h1>
- <div class="dac-section-subtitle">
- Informações essenciais para ajudar você a preparar os aplicativos para Android M.
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Relate problemas
-</a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- Junte-se à comunidade do G+
-</a>
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/pt-br/preview/license.jd b/docs/html-intl/intl/pt-br/preview/license.jd
deleted file mode 100644
index 9e28b8a..0000000
--- a/docs/html-intl/intl/pt-br/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Contrato de licença
-
-@jd:body
-
-<p>
-Para começar a usar o Android SDK Preview, você deve concordar com os seguintes termos e condições.
-Como descrito abaixo, observe que isto é uma versão de prévia do Android SDK, sujeita a alterações, que deve ser usada a seu risco. O Android SDK Preview não é uma versão estável e pode conter erros e defeitos que podem resultar em danos sérios aos sistemas de computador, aos dispositivos e aos dados.
-</p>
-
-<p>
-Este é o contrato de licença do Android SDK Preview (o “Contrato de Licença”).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Introdução
-
-1.1 O Android SDK Preview (que este Contrato de licença chama de "Preview", incluindo especificamente os arquivos de sistema do Android, APIs integradas e arquivos da biblioteca Preview, se e quando estiverem disponíveis) é licenciado por meio da concordância com os termos deste contrato. O Contrato de licença forma um vínculo contratual legal entre o contratante e a Google em relação ao uso do Preview.
-
-1.2 "Android" refere-se à pilha de software do Android para dispositivos, conforme disponibilizado no Projeto de código aberto do Android, localizado no URL a seguir: http://source.android.com/, atualizado periodicamente.
-
-1.3 "Google" refere-se à Google Inc, uma corporação de Delaware, com sede em 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
-
-2. Aceitação do Contrato de Licença
-
-2.1 A fim de usar o Preview, é necessário concordar com este Contrato de licença. O uso do Preview é proibido àqueles que não concordam com este Contrato de licença.
-
-2.2 Ao clicar em aceitar e/ou usar o Preview, você concorda com os termos do Contrato de licença
-
-2.3 É proibido o uso do Preview e a aceitação deste contrato pelo indivíduo que tenha impedimento legal sobre o recebimento do Preview sob as leis dos Estados Unidos ou de outros países, incluindo o país de residência ou no qual usa o Preview.
-
-2.4 Se for usar o Preview internamente na empresa ou organização, você deverá concordar com o vínculo com este contrato em nome do empregador ou de outra entidade e declarar e garantir que tem total autoridade legal para tanto. Se você não tem a autoridade necessária, não deve concordar com este contrato nem usar o Preview em nome do empregador ou de outra entidade.
-
-3. Licença do Preview da Google
-
-3.1 Sujeito aos termos do Contrato de licença, a Google confere uma licença limitada, revogável, livre de taxas, intransmissível, não sub-licenciável e não exclusiva para o uso apenas do Preview, pessoal ou internamente dentro da sua empresa ou organização, para fins de desenvolvimento de aplicativos executados na plataforma do Android.
-
-3.2 Você concorda que a Google ou terceiros detêm todos os direitos legais, títulos e interesses relativos ao Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam no Preview. "Direitos de propriedade intelectual" se referem a todo e qualquer direito sob as leis de patentes, de direitos autorais, de segredo comercial, de marca registrada e todos os outros direitos de propriedade. A Google reserva todos os direitos não conferidos expressamente a você.
-
-3.3 O uso do Preview não é autorizado para qualquer finalidade não expressamente permitida por este Contrato de licença. Salvo na extensão exigida por licenças aplicáveis de terceiros, é proibido: (a) copiar (exceto para fins de cópia de segurança), modificar, adaptar, redistribuir, descompilar, fazer engenharia reversa, desmontar ou criar trabalhos derivados do Preview ou qualquer parte dele; ou (b) carregar qualquer parte do Preview em um aparelho celular ou outro dispositivo de hardware, exceto em computador pessoal, combinar qualquer parte do Preview com outros softwares ou distribuir qualquer software ou dispositivo que contenha uma parte do Preview.
-
-3.4 Você concorda que não tomará quaisquer medidas que possam causar ou resultar em fragmentação do Android, incluindo, sem limitar-se, a distribuição e a participação na criação ou na promoção, sob quaisquer formas, de um conjunto de desenvolvimento de software derivado do Preview.
-
-3.5 O uso, a reprodução e a distribuição de componentes do Preview licenciado sob licença de software de código aberto são regidos exclusivamente pelos termos daquela licença de software de código aberto, e não por este Contrato de licença. Você concorda em manter uma licença em bom estado para as licenças de software de código aberto sob todos os direitos concedidos e deter quaisquer ações que possam limitar, suspender ou romper tais direitos.
-
-3.6 Você concorda que a forma e a natureza do SDK que a Google fornece podem mudar sem aviso prévio e que as versões futuras do SDK podem ser incompatíveis com aplicativos desenvolvidos em versões anteriores do SDK. Você concorda que a Google pode cessar (permanente ou temporariamente) o fornecimento do Preview (ou quaisquer recursos dentro dele) a você ou a usuários em geral sob critério exclusivo da Google, sem aviso prévio.
-
-3.7 Nada neste Contrato de licença confere o direito de uso de quaisquer nomes comerciais, marcas comerciais, marcas de serviço, logomarcas, nomes de domínios e outros recursos de marcas especiais da Google.
-
-3.8 Você concorda que não removerá, ocultará nem alterará quaisquer observações de direitos de propriedade (incluindo observações de direitos autorais e de marcas registradas) que possam estar afixadas ou contidas no Preview.
-
-4. Uso do Preview por você
-
-4.1 A Google compreende que nada no Contrato de licença da a ela direito, título nem interesse no usuário (ou em seus licenciadores), sob o presente Contrato de licença, no que tange ao desenvolvimento de aplicativos de software através do uso do Preview, incluindo quaisquer direitos de propriedade intelectual que subsistam nos referidos aplicativos.
-
-4.2 Você concorda em usar o Preview e desenvolver aplicativos somente para as finalidades permitidas por (a) este Contrato de licença e (b) quaisquer leis, normas, diretrizes geralmente aceitas ou orientações aplicáveis nas jurisdições relevantes (incluindo quaisquer leis acerca da exportação e da importação de dados ou softwares nos Estados Unidos ou em outros países relevantes).
-
-4.3 Você concorda que, se usar o Preview para o desenvolvimento de aplicativos, deverá proteger a privacidade e os direitos legais dos usuários. Se nomes de usuário, senhas ou outras informações de acesso ou informações pessoais forem fornecidos ao aplicativo, deve-se informá-los de que tais dados estarão disponíveis para o aplicativo, além de fornecer observações de privacidade e proteção legalmente adequadas a esses usuários. Se o aplicativo armazenar informações pessoais ou confidenciais fornecidas pelos usuários, deve fazê-lo com segurança. Se o usuário fornecer informações da conta do Google, o aplicativo poderá usar essas informações exclusivamente para acessar a conta da Google do usuário quando houver autorização para fazê-lo e para os fins limitados pela autorização.
-
-4.4 Você concorda que não se envolverá em qualquer atividade com o Preview, incluindo o desenvolvimento e a distribuição de um aplicativo que interfira, perturbe, danifique ou acesse, de modo não autorizado, servidores, redes ou outras propriedades ou serviços da Google ou qualquer outro terceiro.
-
-4.5 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) quaisquer dados, conteúdo ou recursos que criar, transmitir ou exibir por meio do Android e/ou de aplicativos do Android e pelas consequências que suas ações (incluindo perda ou dano que a Google possa sofrer) podem gerar.
-
-4.6 Você concorda que é exclusivamente responsável por (e que a Google não tem qualquer responsabilidade com você ou terceiro) qualquer violação das obrigações exigidas neste Contrato de licença, qualquer contrato ou termos de serviço aplicáveis a terceiros, qualquer lei ou norma aplicável e pelas consequências (incluindo a perda ou dano que a Google ou qualquer terceiro possa sofrer) de quaisquer violações.
-
-4.7 O Preview está em desenvolvimento e o seu teste e feedback são uma parte importante deste processo. Ao usar o Preview, você está ciente de que a implementação de alguns recursos ainda estão em desenvolvimento e que não se deve confiar que o Preview tem a funcionalidade completa de uma versão estável. Você concorda em não distribuir nem enviar publicamente quaisquer aplicativos usando este Preview, pois ele não será mais suportado após o lançamento oficial do Android SDK.
-
-5. Suas credenciais de desenvolvedor
-
-5.1 Você é responsável pela manutenção da confidencialidade de quaisquer credenciais de desenvolvedor que possam ser emitidas pela Google ou escolhidas por você e será o único responsável por todos os aplicativos que forem desenvolvidos sob suas credenciais de desenvolvedor.
-
-6. Privacidade e informações
-
-6.1 A fim de inovar e aprimorar continuamente o Preview, a Google pode coletar certas estatísticas de uso do software, incluindo, sem limitar-se, um identificador exclusivo, endereço IP associado, número de versão do software e informações sobre quais ferramentas e/ou serviços no Preview estão sendo usados e como estão sendo usados. Antes de coletar quaisquer dessas informações, o Preview o notificará e buscará seu consentimento. Se você recusar, as informações não serão coletadas.
-
-6.2 Os dados coletados são examinados coletivamente para aprimorar o Preview e são mantidos em conformidade com a Política de privacidade da Google acessível em http://www.google.com/policies/privacy/.
-
-7. Aplicativos de terceiros
-
-7.1 Ao usar o Preview para executar aplicativos desenvolvidos por terceiros ou que acessam dados, conteúdo ou recursos fornecidos por terceiros, você concorda que a Google não é responsável por tais aplicativos, dados, conteúdo ou recursos. Você compreende que quaisquer dados, conteúdo ou recursos passíveis de aceitação por meio de tais aplicativos de terceiros imputam responsabilidade exclusiva ao indivíduo que os originou. A Google não é responsável por qualquer perda ou dano que possa ocorrer como resultado do uso ou acesso de quaisquer aplicativos, dados, conteúdo ou recursos de terceiros.
-
-7.2 Você deve estar ciente de que os dados, conteúdo e recursos apresentados a você por aplicativos de terceiros podem ser protegidos pelos direitos de propriedade intelectual de posse dos fornecedores (ou de outras pessoas ou empresas em seus nomes). Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados com base nestes dados, conteúdo ou recursos (na totalidade ou em parte), salvo se houver permissão explícita especificada pelos respectivos detentores de direitos.
-
-7.3 Você reconhece que o uso de tais aplicativos, dados, conteúdo ou recursos de terceiros pode estar sujeito a termos adicionais entre você e o terceiro em questão.
-
-8. Uso de APIs da Google
-
-8.1 APIs da Google
-
-8.1.1 Ao usar qualquer API para recuperar dados da Google, você reconhece que eles podem ser protegidos por direitos de propriedade intelectual de posse da Google ou dos terceiros que fornecem os dados (ou de pessoas ou empresas em nomes deles). O uso de tal API pode estar sujeito a termos de serviço adicionais. Não é permitido modificar, alugar, arrendar, emprestar, vender, distribuir nem criar trabalhos derivados baseados nesses dados (na totalidade ou em parte), salvo se permitido pelos termos de serviço pertinentes.
-
-8.1.2 Se você usar qualquer API para recuperar dados de um usuário a partir da Google, reconhece e concorda que deve recuperar dados somente com consentimento explícito do usuário e somente quando, e para os fins limitados aos quais, o usuário conceder permissão para fazê-lo.
-
-9. Rescisão do Contrato de licença
-
-9.1 O Contrato de licença continuará a se aplicar até que ocorra uma rescisão sua ou da Google, como definido abaixo.
-
-9.2 Caso queira rescindir o Contrato de licença, você pode fazer isto cessando o uso do Preview e de qualquer credencial de desenvolvedor relevante.
-
-9.3 A Google pode, a qualquer momento, rescindir o Contrato de licença, com ou sem causa, com uma notificação.
-
-9.4 O Contrato de licença será encerrado automaticamente sem aviso ou outras ações na ocorrência de:
-(A) a Google interromper o fornecimento do Preview ou de determinadas partes do Preview aos usuários no país em que você reside ou de onde o serviço é usado; e
-(B) a Google emitir uma versão de lançamento final do Android SDK.
-
-9.5 Quando o Contrato de licença é rescindido, a licença concedida a você no Contrato de licença é finalizada, todo o uso do Preview será interrompido e as provisões dos parágrafos 10, 11, 12 e 14 deverão permanecer indefinidamente.
-
-10. EXCLUSÕES
-
-10.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE O RISCO DO USO DO PREVIEW É EXCLUSIVAMENTE SEU E QUE O PREVIEW É FORNECIDO NA FORMA EM QUE SE ENCONTRA E COMO DISPONIBILIZADO, SEM GARANTIA DE QUALQUER TIPO DA GOOGLE.
-
-10.2 O USO DO PREVIEW E DE QUALQUER MATERIAL BAIXADO OU OBTIDO DE OUTRO MODO PELO USO DO PREVIEW ESTÁ A SEU CRITÉRIO E RISCO E VOCÊ É O ÚNICO RESPONSÁVEL POR QUALQUER DANO AO SEU SISTEMA OPERACIONAL OU OUTRO DISPOSITIVO OU PELA PERDA DE DADOS QUE RESULTEM DE TAL USO. SEM LIMITAR OS PRECEDENTES, VOCÊ ENTENDE QUE O PREVIEW NÃO É UMA VERSÃO ESTÁVEL E QUE PODE CONTER ERROS, DEFEITOS E VULNERABILIDADES DE SEGURANÇA QUE PODEM RESULTAR EM DANOS SIGNIFICANTES, INCLUINDO A PERDA IRRECUPERÁVEL OU COMPLETA DO USO DO SISTEMA DO COMPUTADOR OU DE OUTROS DISPOSITIVOS.
-
-10.3 A GOOGLE EXCLUI EXPRESSAMENTE TODAS AS GARANTIAS E CONDIÇOES DE QUALQUER TIPO, EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO LIMITADO A, GARANTIAS E CONDIÇÕES DE COMERCIALIZAÇÃO IMPLÍCITAS, ADEQUAÇÃO A UMA FINALIDADE PARTICULAR E A NÃO VIOLAÇÃO.
-
-11. LIMITAÇÃO DE RESPONSABILIDADE
-
-11.1 VOCÊ COMPREENDE E CONCORDA EXPRESSAMENTE QUE A GOOGLE, SUAS SUBSIDIÁRIAS, AFILIADAS E SEUS LICENCIADORES NÃO SERÃO RESPONSABILIZADOS POR VOCÊ SOB QUALQUER TEORIA DE RESPONSABILIDADE POR QUAISQUER DANOS, SEJAM ELES DIRETOS, INDIRETOS, INCIDENTAIS, ESPECIAIS, CONSEQUENCIAIS OU DE EXEMPLO QUE POSSAM INCORRER, INCLUINDO QUALQUER PERDA DE DADOS, INDEPENDENTE DE AVISO À GOOGLE OU A SEUS REPRESENTANTES OU DA NECESSIDADE DE AVISO SOBRE A POSSIBILIDADE DA INCORRÊNCIA DE TAIS PERDAS.
-
-12. Indenização
-
-12.1 Ao limite máximo permitido por lei, você concorda em defender, indenizar e isentar a Google, suas afiliadas e respectivos conselheiros, diretores, empregados e agentes com relação a todas e quaisquer reivindicações, ações, processos ou procedimentos, bem como todas e quaisquer perdas, responsabilidades, danos, custos e despesas (incluindo honorários advocatícios) decorrentes ou provenientes de: (a) seu uso do Preview, (b) qualquer aplicativo desenvolvido no Preview que infrinja direitos de propriedade intelectual de qualquer pessoa, difame qualquer pessoa ou viole seus direitos de publicidade ou privacidade e (c) qualquer não cumprimento deste Contrato de licença.
-
-13. Mudanças no Contrato de licença
-
-13.1 A Google pode realizar mudanças no Contrato de licença à medida que distribui novas versões do Preview. Quando essas mudanças forem realizadas, a Google fará uma nova versão do Contrato de licença disponível no site em que o Preview estiver disponível.
-
-14. Termos legais gerais
-
-14.1 Esse Contrato de licença constitui o contrato legal integral entre você e a Google e rege o uso do Preview (excluindo quaisquer serviços que a Google possa fornecer a você sob um contrato escrito em separado), e substitui inteiramente quaisquer contratos anteriores entre você e a Google em relação ao Preview.
-
-14.2 Você concorda que, se a Google não exercer nem impetrar qualquer direito ou recurso legal que esteja contido no Contrato de licença (ou que a Google detenha direitos nos termos de qualquer lei aplicável), não se considerará esse fato como uma renúncia formal aos direitos da Google e esses direitos ou recursos continuarão disponíveis à Google.
-
-14.3 Se qualquer tribunal de justiça que tiver a competência para decidir sobre esse tema determinar que qualquer cláusula do Contrato de licença é inválida, tal cláusula será removida do contrato sem afetar as cláusulas restantes ou sua vigência. As cláusulas restantes do Contrato de licença continuarão válidas e obrigatórias.
-
-14.4 Você reconhece e concorda que cada membro do grupo de empresas das quais a Google é a empresa controladora deve ser beneficiário terceiro do Contrato de licença e que essas outras empresas terão o poder de aplicar diretamente, e apoiar-se em, qualquer cláusula do Contrato de licença que confira um direito (ou direitos em favor) deles. Além disso, nenhuma outra pessoa nem empresa deve ser beneficiário terceiro do Contrato de licença.
-
-14.5 RESTRIÇÕES DE EXPORTAÇÃO. O PREVIEW ESTÁ SUJEITO ÀS LEIS E NORMAS DE EXPORTAÇÃO DOS ESTADOS UNIDOS. VOCÊ DEVE CUMPRIR TODAS AS LEIS E NORMAS DOMÉSTICAS E INTERNACIONAIS QUE SE APLICAREM AO PREVIEW. ESSAS LEIS INCLUEM RESTRIÇÕES SOBRE DESTINOS, USUÁRIOS FINAIS E USO FINAL.
-
-14.6 O Contrato de licença não pode ser atribuído nem transferido por você sem a aprovação prévia por escrito da Google. Qualquer tentativa de atribuição sem a aprovação será inválida. Você não deve delegar as próprias responsabilidades ou obrigações nos termos do Contrato de licença sem aprovação prévia por escrito da Google.
-
-14.7 O Contrato de licença e sua relação com a Google nos termos do contrato serão regidos pelas leis do estado da Califórnia sem considerar conflitos de disposições legais. Você e a Google concordam em se submeter à competência exclusiva dos tribunais localizados na comarca de Santa Clara, Califórnia, para dirimir quaisquer questões legais decorrentes do Contrato de licença. Não obstante a isso, você concorda que a Google continua habilitada a impetrar medidas cautelares (ou mecanismo legal urgente equivalente) em qualquer jurisdição.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/pt-br/preview/overview.jd b/docs/html-intl/intl/pt-br/preview/overview.jd
deleted file mode 100644
index e81ccd7..0000000
--- a/docs/html-intl/intl/pt-br/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=Visão geral do programa
-page.metaDescription=Boas-vindas ao Android M Developer Preview, um programa que fornece tudo que é necessário para testar e otimizar os aplicativos para a próxima versão do Android.
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<p>
- Boas-vindas ao <strong>Android M Developer Preview</strong>, um programa que fornece
- tudo que é necessário para testar e otimizar os aplicativos para a próxima versão
- do Android. É de graça e você pode começar agora mesmo: basta fazer
- o download das ferramentas M Developer Preview.
-</p>
-
-<div style="background-color:#eceff1;padding:1em;">
-<div class="wrap">
- <div class="cols">
- <div class="col-4of12">
- <h5>
- Imagens de sistema de emulador e hardware
- </h5>
-
- <p>
- Execute e teste os aplicativos no Nexus 5, 6, 9 e Player (para TV), bem como
- em emuladores.
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Código de plataforma mais recente
- </h5>
-
- <p>
- Nós forneceremos várias atualizações durante a prévia. Portanto, você
- testará de acordo com as alterações mais recentes da plataforma.
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Atualizações entregues por OTA
- </h5>
-
- <p>
- É possível obter atualizações por OTA (over-the-air) ao programar o dispositivo
- em flash para a prévia inicial.
- </p>
- </div>
- </div>
-
- <div class="cols">
-
-
- <div class="col-4of12">
- <h5>
- Novos comportamentos e capacidades
- </h5>
-
- <p>
- Inicie o trabalho cedo para suportar os novos comportamentos da plataforma,
- como novo modelo de permissões de tempo de execução e recursos de economia de energia.
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Janela de prioridades para problemas informados por desenvolvedores
- </h5>
-
- <p>
- Durante as primeiras semanas, nós daremos prioridade aos problemas informados
- por desenvolvedores. Portanto, teste e forneça-nos feedback o quanto antes.
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- Feedback e suporte
- </h5>
-
- <p>
- Informe problemas e dê-nos feedback usando o <a href="https://code.google.com/p/android-developer-preview/">issue tracker</a>.
- Conecte-se a outros desenvolvedores na <a href="http://g.co/dev/AndroidMDevPreview">Comunidade M Developer</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">
- Linha do tempo e atualizações
-</h2>
-<img src="{@docRoot}preview/images/m-preview-timeline-crop.png" alt="Preview program timeline" id="timeline">
-<p>
- O M Developer Preview estará em execução de 28 de maio até o Android M SDK final, que
- disponibilizaremos brevemente antes do lançamento público durante
- o 3º trimestre de 2015.
-</p>
-
-<p>
- Nos marcos de desenvolvimento principais, entregamos atualizações para os dispositivos de teste.
- Os marcos de experiência são
-</p>
-
-<ul>
- <li>
- <strong>Preview 1</strong> (lançamento inicial do Preview, final de maio),
- </li>
-
- <li>
- <strong>Preview 2</strong> (final de junho/início de julho) e
- </li>
-
- <li>
- <strong>Preview 3</strong> (próximo ao final de julho)
- </li>
-</ul>
-
-<p>
- Estas atualizações culminam no <strong>SDK final</strong> (no 3º trimestre),
- que fornecerá APIs oficiais para a nova versão do Android,
- bem como os recursos e comportamentos do sistema final.
-</p>
-
-<p>
- Ao testar e desenvolver no Android M, recomendamos que você <strong>mantenha
- o ambiente de desenvolvimento atualizado</strong> à medida que atualizações do Preview são lançadas.
- Para facilitar o processo, fornecemos <strong>atualizações "over-the-air"
- (OTA)</strong> aos dispositivos já programados em flash para uma versão do Preview, além
- de fornecemos imagens do sistema que estão disponíveis para download e programação em flash manualmente.
-</p>
-<p class="note">
- <strong>Observação:</strong> as imagens do sistema e o SDK final não podem ser entregues
- por OTA. Em vez disso, precisarão ser <strong>programadas em flash manualmente</strong> para
- os dispositivos de teste.</strong>
-</p>
-
-<p>
- Notificaremos você quando as atualizações do Preview estiverem disponíveis por meio do <a href="http://android-developers.blogspot.com/">Blogue de desenvolvedores do Android</a>, além
- deste site
- e da <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M Developer</a>.
-</p>
-
-<h2 id="preview_tools">
- O que há no Preview?
-</h2>
-
-<p>
- O M Developer Preview inclui tudo que é necessário para testar os aplicativos existentes
- em uma variedade de tamanhos de tela, tecnologias de rede, chipsets de CPU/GPU
- e arquiteturas de hardware.
-</p>
-
-<h4>
- Ferramentas SDK
-</h4>
-
-<p>
- É possível fazer o download destes componentes pelo SDK Manager no <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:
-</p>
-
-<ul>
- <li>M Developer Preview <strong>ferramentas SDK</strong>
- </li>
-
- <li>M Developer Preview <strong>imagem do sistema de emulador</strong> (32 bits
-e 64 bits)
- </li>
-
- <li>M Developer Preview <strong>imagem do sistema de emulador para Android TV</strong>
- (32 bits)
- </li>
-</ul>
-
-<h4>
- Imagens do sistema de hardware
-</h4>
-
-<p>
- É possível fazer o download destas imagens de sistema de hardware para dispositivos Nexus a partir
- da <a href="download.html">página de download</a>:
-</p>
-
-<ul>
- <li>
- <strong>Nexus 5</strong> (GSM/LTE) imagem do sistema de dispositivo “hammerhead”
- </li>
-
- <li>
- <strong>Nexus 6</strong> imagem do sistema de dispositivo “shamu”
- </li>
-
- <li>
- <strong>Nexus 9</strong> (Wi-Fi) imagem do sistema de dispositivo “volantis”
- </li>
-
- <li>
- <strong>Nexus Player</strong> (Android TV) imagem do sistema de dispositivo “fugu”
- </li>
-</ul>
-
-<h4>
- Exemplo de código e documentação
-</h4>
-
-<p>
- Estes recursos de documentação ajudam você a aprender sobre o Preview:
-</p>
-
-<ul>
- <li>
- <a href="setup-sdk.html">Configuração do SDK</a> tem instruções passo a passo
- para você começar.
- </li>
-
- <li>
- <a href="{@docRoot}preview/testing/guide.html">Guia de teste</a> e <a href="behavior-changes.html">Mudanças de comportamento</a> mostram as áreas essenciais para o teste.
- </li>
-
- <li>Documentação de novas APIs, incluindo uma <a href="api-overview.html">Visão geral das APIs</a>,
- <a href="{@docRoot}preview/download.html#docs">Referência da API</a> disponível para download e guias de desenvolvedor detalhados sobre
- os recursos principais, como
- <a href="{@docRoot}preview/features/runtime-permissions.html">permissões</a>,
- <a href="{@docRoot}preview/backup/index.html">backup de aplicativo</a> etc.
- </li>
-
- <li>
- <a href="{@docRoot}preview/samples.html">Exemplo de código</a> que demonstra como suportar
- permissões e outros novos recursos.
- </li>
-
- <li>
- <a href="{@docRoot}preview/support.html#release-notes">Notas de versão</a> para a versão atual do
- M Developer Preview, incluindo notas de mudanças e relatórios de diferença.
- </li>
-</ul>
-
-<h4>
- Recursos de suporte
-</h4>
-
-<p>
- Use estes recursos de suporte ao testar e desenvolver no
- M Developer Preview:
-</p>
-
-<ul>
- <li>O <a href="https://code.google.com/p/android-developer-preview/">Issue Tracker do M
- Developer Preview</a> é o <strong>canal principal
- de feedback.</strong> É possível informar erros, problemas de desempenho e feedback
- geral pelo issue tracker. Também é possível verificar os <a href="https://code.google.com/p/android-developer-preview/wiki/KnownIssues">erros conhecidos</a>
- e encontrar etapas de resolução.
- </li>
-
- <li>A <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M Developer
-</a> é uma comunidade do Google+ onde é possível <strong>se conectar
- a outros desenvolvedores</strong> que trabalham com o Android M. É possível compartilhar
- observações ou ideias, além de encontrar respostas para as dúvidas sobre o Android M.
- </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
- Destinação, APIs de prévia e publicação
-</h2>
-
-<p>
- O Android M Developer Preview é uma versão apenas para desenvolvimento
- e <strong>não possui um nível da API padrão</strong>. Caso opte
- pelos comportamentos de compatibilidade para testar o aplicativo (o que é muito recomendado),
- é possível destinar o M Developer Preview configurando o <code><a href=
- "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
- do aplicativo para <code>“MNC”</code>.
-</p>
-
-<p>
- O Android M Developer Preview fornece <strong>APIs de prévia</strong>
- — as APIs não serão oficiais até o lançamento do SDK final,
- atualmente planejado para o terceiro trimestre de 2015. Isto significa que é possível
- <strong>esperar alterações secundárias de APIs</strong> com o tempo, especialmente
- durante as semanas iniciais do programa. Forneceremos um resumo das alterações
- com cada atualização do Android M Developer Preview.
-</p>
-
-<p class="note">
- Observe que, apesar das APIs da prévia poderem ser alteradas, os comportamentos essenciais do sistema,
- como permissões de tempo de execução e recursos de economia de energia, são estáveis e estão prontos
- para serem testados.
-</p>
-
-<p>
- Em termos de publicação, o Google Play <strong>evita a publicação de aplicativos
- destinados para o M Developer Preview</strong>. Quando o SDK final do Android M estiver
- disponível, você poderá destinar o nível da API do Android M oficial
- e publicar o aplicativo no Google Play. Enquanto isso, caso queira distribuir um aplicativo
- destinado para Android M para testadores, é possível fazê-lo por e-mail ou por download direto
- a partir do site.
-</p>
-
-<h2 id="get_started">
- Como começar
-</h2>
-
-<p>
- Para começar o teste do aplicativo:
-</p>
-
-<ol>
- <li>Revise a <a href="{@docRoot}preview/api-overview.html">Visão geral da API</a>
- e as <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a> para
- ter uma ideia do que há de novo e como isto afeta os aplicativos. Em particular, aprenda mais sobre
- o novo modelo<a href="{@docRoot}preview/features/runtime-permissions.html">de permissões
- de tempo de execução</a>, recursos de economia de energia e backup automático.
- </li>
-
- <li>Configure o ambiente seguindo as instruções para
- <a href="{@docRoot}preview/setup-sdk.html">Configurar o Preview SDK</a>
- e ajustar os dispositivos de teste.
- </li>
-
- <li>Siga <a href="https://developers.google.com/android/nexus/images">
- as instruções de programação em flash</a> para programar em flash a imagem do sistema do M Developer Preview mais recente
- para Nexus 5, 6, 9 e Player. Após programar em flash o dispositivo de desenvolvimento,
- as atualizações do Preview serão entregues por atualizações OTA (over-the-air).</a>
- </li>
-
- <li>Faça o download da <a href="{@docRoot}preview/download.html#docs">Referência da API do
- M Preview</a> e dos <a href="{@docRoot}preview/samples.html">exemplos do M Preview
-</a> para obter mais informações sobre os novos recursos de API e como usá-los
- no aplicativo.
- </li>
-
- <li>Junte-se à <a href="http://g.co/dev/AndroidMDevPreview">Comunidade Android M
- Developer</a> para obter as notícias mais recentes e conecte-se a outros
- desenvolvedores que trabalham com a nova plataforma.
- </li>
-</ol>
-
-<p>
- Agradecemos a sua participação no programa M Developer Preview do Android!
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/samples.jd b/docs/html-intl/intl/pt-br/preview/samples.jd
deleted file mode 100644
index a664837..0000000
--- a/docs/html-intl/intl/pt-br/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Exemplos
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- Os seguintes exemplos de código são fornecidos para o M Developer Preview. Para fazer o download
- dos exemplos no Android Studio, selecione a opção do menu <b>File (Arquivo) > Import Samples (Importar exemplos)</b>.
-</p>
-
-<p class="note">
- <strong>Observação:</strong> estes projetos disponíveis para download foram feitos
-para serem usados com Gradle e Android Studio.
-</p>
-
-
-<h3 id="RuntimePermissions">Permissões em tempo de execução</h3>
-
-<p>
- O Android M altera a maneira como as permissões do sistema funcionam. Os usuários são solicitados a aprovar
- as permissões em tempo de execução em vez de aprovar durante a instalação. Este exemplo mostra como solicitar
- essas permissões.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Obtenha isto no GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Confirmação de credencial</h3>
-
-<p>
- Este exemplo demonstra como usar as credenciais do dispositivo como um método de autenticação no aplicativo.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Obtenha isto
-no GitHub</a></p>
-
-<h3 id="FingerprintDialog">Diálogo de impressão digital</h3>
-
-<p>
- Este exemplo demonstra como reconhecer as impressões digitais registradas para autenticar o usuário
- no aplicativo.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Obtenha isto no GitHub</a></p>
-
-<h3 id="AutomaticBackup">Backup automático para aplicativos</h3>
-
-<p>
- O Android M introduz o backup automático para as configurações de aplicativos. Este exemplo demonstra como adicionar
- regras de filtro a um aplicativo para gerenciar o backup de configurações.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Obtenha isto no GitHub</a></p>
-
-<h3 id="CameraRaw">Câmera 2 Bruta</h3>
-
-<p>
- Demonstra como usar a API <code>Camera2</code> API para capturar buffers de câmera RAW e salvá-los
- como arquivos <code>DNG</code>.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Obtenha isto no GitHub</a></p>
-
-<h3 id="ActiveNotification">Notificação ativa</h3>
-
-<p>
- Este exemplo demonstra como o
- <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
- pode dizer quantas notificações o aplicativo está exibindo.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Obtenha isto no GitHub</a></p>
diff --git a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd b/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
deleted file mode 100644
index 894fe43..0000000
--- a/docs/html-intl/intl/pt-br/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Configuração do Preview SDK
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#get-as13">Obter o Android Studio 1.3</a></li>
- <li><a href="#get-sdk">Obter o Preview SDK</a></li>
- <li><a href="#create-update">Criar ou atualizar um projeto</a></li>
- <li><a href="#setup-test">Configurar para teste</a></li>
- </ol>
- </div>
-</div>
-
-<p>O M Developer Preview SDK está disponível a partir do Android SDK Manager.
-Este documento assume que você está familiarizado com o desenvolvimento de aplicativos do Android,
-como o uso do Android SDK Manager e criação de projetos. Caso seja novo no
-Android, consulte a lição de treinamento <a href="{@docRoot}training/basics/firstapp/index.html">Como criar o primeiro
-aplicativo</a> primeiro.</a></p>
-
-<h2 id="get-as13">Obter o Android Studio 1.3</h2>
-
-<p>A prévia de desenvolvedor é melhor usada com o Android Studio 1.3, que está no estado
-de prévia. É altamente recomendado que você instale a versão de prévia
-do Android Studio 1.3 para que funcione com o Preview SDK.</p>
-
-<p class="caution"><strong>Cuidado:</strong> a prévia canário do Android
-Studio 1.3 ainda está em desenvolvimento ativo. Caso esteja usando a máquina de desenvolvimento principal
-para testar a prévia de desenvolvedor, é possível criar uma segunda instalação
-do Android Studio para usar em testes.</p>
-
-<p>Para instalar a prévia do Android Studio 1.3:</p>
-
-<ol>
- <li>Faça o download e inicie o <a href="{@docRoot}tools/studio/index.html">Android
- Studio</a>.
- </li>
-
- <li>Abra a janela <strong>Settings (Configurações)</strong> (no Windows, é possível fazer isto
- escolhendo <strong>File (Arquivo) > Settings (Configurações)</strong>). Escolha o painel
- <strong>Appearance & Behavior (Aparência e comportamento) > System
- Settings (Configurações do sistema) > Updates (Atualizações)</strong>.
-
- <p class="aside">No OSX, é possível encontrar o painel <strong>Appearance &
- Behavior (Aparência e comportamento)</strong>
- na janela <strong>Preferences (Preferências)</strong> do Android Studio.</p>
- </li>
-
- <li> No painel <strong>Updates (Atualizações)</strong>, escolha a opção
- <strong>Automatically check updates for: Canary Channel (Verificar atualizações automaticamente para: canal canário)</strong>.
- </li>
-
- <li>No painel <strong>Updates (Atualizações)</strong>, selecione <strong>Check Now (Verificar agora)</strong>
- para verificar a versão mais recente da versão canário. Faça o download e instale a versão
- quando solicitado.
- </li>
-</ol>
-
-<h2 id="get-sdk">Obter o Preview SDK</h2>
-
-<p>Para adicionar os componentes do Preview SDK ao ambiente de desenvolvimento:</p>
-
-<ol>
- <li>Inicie a prévia do Android Studio 1.3.
- </li>
-
- <li>Abra a janela <strong>Settings (Configurações)</strong> (no Windows, é possível fazer isto
- escolhendo <strong>File (Arquivo) > Settings (Configurações)</strong>). Escolha o painel
- <strong>Appearance & Behavior (Aparência e comportamento) > System
- Settings (Configurações do sistema) > Updates (Atualizações)</strong>.
-
- <p class="aside">No OSX, é possível encontrar o painel <strong>Appearance &
- Behavior (Aparência e comportamento)</strong>
- na janela <strong>Preferences (Preferências)</strong> do Android Studio.</p>
- </li>
-
- <li>No painel <strong>Updates (Atualizações)</strong>, escolha a opção
- <strong>Automatically check updates for: Canary Channel (Verificar atualizações automaticamente para: canal canário)</strong> e
- <strong>Automatically check atualização for Android SDK: Preview Channel (Verificar atualizações automaticamente para: canal de pré-visualização)</strong>.
- </li>
-
- <li>Inicie o <strong>Android SDK Manager</strong>. (Com o Android Studio 1.3,
- o SDK Manager está integrado no Android Studio, em vez de ser
- um aplicativo independente.)
- </li>
-
- <li>Na seção <strong>Platforms (Plataformas)</strong>, selecione <strong>Android MNC
- Preview</strong>.
- </li>
-
- <li>Na seção <strong>Tools (Ferramentas)</strong>, selecione o Android <strong>
-SDK Tools</strong>, <strong>Platform-tools</strong> e
-<strong>Build-tools</strong> mais recentes.
- </li>
-
- <li>Clique em <strong>Install packages (Instalar pacotes)</strong> e aceite o contrato de licença
- para todos os pacotes.
- </li>
-
- <li>Verifique se o M Developer Preview está instalado abrindo a janela <strong>
-Settings (Configurações)</strong> e escolhendo o painel <strong>Appearance & Behavior (Aparência e comportamento)
-> System Settings (Configurações do sistema) > Android SDK</strong>.</li>
-
- <li>No painel <strong>Android SDK</strong>, escolha
- a guia <strong>SDK Platforms (Plataformas SDK)</strong>. <strong>Android MNC
- Preview</strong> deve estar listado como <em>Installed (Instalado)</em>. Além disso, abra a guia
- <strong>SDK Tools (Ferramentas SDK)</strong> para verificar se as ferramentas mais recentes
- estão instaladas.
- </li>
-</ol>
-<p>Após concluir estas etapas, os componentes de prévia estarão disponíveis
- no ambiente de desenvolvimento. </p>
-
-
-<h2 id="create-update">Criar ou atualizar um projeto</h2>
-
-<p>
- Para usar as APIs de prévia, deve-se criar ou atualizar um projeto de desenvolvimento para usar
- os componentes de prévia.
-</p>
-
-
-<h3 id="create">Criar um novo projeto</h3>
-
-<p>
- Recomendamos o uso do Android Studio para criar um projeto com a prévia. Siga as etapas
- descritas em <a href="{@docRoot}sdk/installing/create-project.html">Criar um projeto</a>
- até chegar na tela <em>Form Factors (Novas especificações)</em> no assistente do projeto. Em seguida,
- realize as seguintes etapas para criar um projeto configurado para a prévia.
-</p>
-
-<ul>
- <li>Verifique <strong>Phone and Tablet (Telefone e tablet)</strong>.</li>
- <li>Selecione <strong>MNC: Android M (Preview)</strong> em <strong>Minimum
- SDK (SDK mínimo)</strong>.</li>
-</ul>
-
-
-<h3 id="update">Atualizar um projeto existente</h3>
-
-<p>
- Para projetos existentes, deve-se modificar a configuração de projeto para ativar as APIs de prévia. No
- ambiente de desenvolvimento, abra o arquivo <code>build.gradle</code> para o módulo
- e defina estes valores da seguinte forma:
-</p>
-
-<ul>
- <li><code>compileSdkVersion</code> para <code>'android-MNC'</code></li>
- <li><code>minSdkVersion</code> para <code>'MNC'</code></li>
- <li><code>targetSdkVersion</code> para <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">Configurar para teste</h2>
-
-<p>
- Testar um aplicativo com a prévia requer que você tenha um dispositivo ou dispositivo virtual configurado
- com a versão de prévia da plataforma. Caso tenha um dispositivo compatível, é possível instalar a plataforma
- de prévia para teste. Caso contrário, é possível configurar um dispositivo virtual para o teste.
-</p>
-
-<h3 id="setup-device">Configurar um dispositivo físico</h3>
-
-<p>
- Caso tenha um Nexus 5, Nexus 6, Nexus 9 ou Android TV, é possível instalar uma imagem do sistema
- de prévia nestes dispositivos para testar o aplicativo.
- É possível configurar um dispositivo virtual com a versão de prévia da plataforma a partir do Android Studio
- usando a ferramenta Android Virtual Device Manager.
-</p>
-
-<p class="caution">
- <strong>Importante:</strong> instalar uma imagem de prévia em um dispositivo <em>remove todos os dados
- dele</em>. Portanto, deve-se realizar o backup de quaisquer dados antes de instalar uma imagem de prévia.
-</p>
-
-<h3 id="setupAVD">Configurar um dispositivo virtual</h3>
-
-<p>
- É possível configurar um dispositivo virtual com a versão de prévia da plataforma dentro do Android Studio
- usando a ferramenta Android Virtual Device Manager.
-</p>
-
-<p>Para criar um AVD com o AVD Manager:</p>
-
-<ol>
- <li>Instale o Preview SDK no ambiente de desenvolvimento, como descrito
- em <a href="{@docRoot}preview/setup-sdk.html">Configurar o Preview
- SDK.</a></li>
- <li>Siga as etapas em
- <a href="{@docRoot}tools/devices/managing-avds.html">Como gerenciar AVDs com
- o Gerenciador de AVD</a>. Use as seguintes configurações:
- <ul>
- <li><strong>Dispositivo:</strong> Nexus 5, Nexus 6, Nexus 9 ou Android TV</li>
- <li><strong>Alvo:</strong>
- Android M (Preview) - Nível da API M</li>
- <li><strong>ABI:</strong> x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- Para obter mais informações sobre como criar dispositivos virtuais para teste, consulte <a href="{@docRoot}tools/devices/index.html">Gerenciamento de dispositivos virtuais</a>.
-</p>
diff --git a/docs/html-intl/intl/pt-br/preview/testing/guide.jd b/docs/html-intl/intl/pt-br/preview/testing/guide.jd
deleted file mode 100644
index b995f8b..0000000
--- a/docs/html-intl/intl/pt-br/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Guia de teste
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#runtime-permissions">Teste de permissões</a></li>
- <li><a href="#doze-standby">Teste de soneca e aplicativo em espera</a></li>
- <li><a href="#ids">Identificadores de dispositivo e backup automático</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- O Android M Developer Preview fornece uma oportunidade de garantir que os aplicativos funcionem
- na próxima versão da plataforma. Esta prévia inclui um número de mudanças de comportamento e APIs que podem
- ter impacto no aplicativo, como descrito em <a href="{@docRoot}preview/api-overview.html">Visão geral da API
-</a> e <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a>. No teste
- do aplicativo com a prévia, há algumas alterações de sistema específicas em que você deve se concentrar
- para garantir que os usuários tenham uma boa experiência.
-</p>
-
-<p>
- Este guia descreve quais recursos de prévia testar e como testá-los com o aplicativo. Você deve
- priorizar o teste destes recursos de prévia específicos, devido ao grande impacto potencial no
- comportamento do aplicativo:
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">Permissões</a>
- </li>
- <li><a href="#doze-standby">Soneca e aplicativo em espera</a>
- </li>
- <li><a href="#ids">Identificadores de dispositivo e backup automático</a></li>
-</ul>
-
-<p>
- Para obter mais informações sobre como configurar dispositivos físicos ou virtuais com uma imagem do sistema de prévia
- para teste, consulte <a href="{@docRoot}preview/setup-sdk.html">Configuração do Preview SDK</a>.
-</p>
-
-
-<h2 id="runtime-permissions">Teste de permissões</h2>
-
-<p>
- O novo modelo de <a href="{@docRoot}preview/features/runtime-permissions.html">permissões</a>
- altera a maneira que as permissões são alocadas ao aplicativo pelo usuário. Em vez de conceder todas as permissões
- durante o procedimento de instalação, o aplicativo deve pedir ao usuário permissões individuais
- em tempo de execução. Para os usuários, este comportamento fornece um controle mais granular sobre as atividades de cada aplicativo, bem
- como um melhor contexto para entender o porquê do aplicativo estar solicitando uma permissão específica. Os usuários
- podem conceder ou revogar as permissões concedidas a um aplicativo individualmente a qualquer momento. É provável que este recurso
- da prévia tenha um impacto no comportamento do aplicativo e pode impedir que alguns
- dos recursos do aplicativo funcionem, ou funcionem em um estado degradado.
-</p>
-
-<p class="caution">
- Esta alteração afeta todos os aplicativos em execução na nova plataforma, mesmo aqueles que não são destinados
- para a versão nova da plataforma. A plataforma fornece um comportamento de compatibilidade limitado para aplicativos legados. No entanto,
- você deve começar a planejar a migração do aplicativo para o novo modelo de permissões agora, com o objetivo
- de publicar uma versão atualizada do aplicativo no lançamento oficial da plataforma.
-</p>
-
-
-<h3 id="permission-test-tips">Dicas de teste</h3>
-
-<p>
- Use as seguintes dicas de teste para ajudar você a planejar e executar os testes do aplicativo com o novo
- comportamento de permissões.
-</p>
-
-<ul>
- <li>Identifique as permissões atuais do aplicativo e os caminhos de código relacionados.</li>
- <li>Teste o fluxo de usuário entre serviços protegidos por permissão e dados.</li>
- <li>Teste com várias combinações de permissões revogadas/concedidas.</li>
- <li>Use a ferramenta {@code adb} para gerenciar as permissões da linha de comando:
- <ul>
- <li>Liste as permissões e o status por grupos:
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>Conceda ou revogue uma ou mais permissões usando a seguinte sintaxe:<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>Analise o aplicativo para encontrar os serviços que usam permissões.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Estratégia de teste</h3>
-
-<p>
- A mudança de permissões afeta a estrutura e o projeto do aplicativo, bem como
- a experiência dos usuários e os fluxos fornecidos a eles. Você deve avaliar o uso das permissões atuais
- do aplicativo e começar a planejar novos fluxos que deseja oferecer. O lançamento oficial
- da plataforma fornece comportamento de compatibilidade, mas deve-se planejar a atualização do aplicativo e
- não confiar nestes comportamentos.
-</p>
-
-<p>
- Identifique as permissões que o aplicativo realmente precisa e usa e, em seguida, encontre os vários caminhos
- de código que usam os serviços protegidos por permissões. É possível fazer isto por meio de uma combinação de
- testes na nova plataforma e análise de códigos. Nos testes, você deve se concentrar em usar
- as permissões em tempo de execução alterando {@code targetSdkVersion} do aplicativo para a versão da prévia. Para
- obter mais informações, consulte <a href="{@docRoot}preview/setup-sdk.html#">Configuração do Preview SDK</a>.
-</p>
-
-<p>
- Teste com várias combinações de permissões revogadas e concedidas para destacar os fluxos de usuário
-que dependem de permissões. Onde uma dependência não for óbvia ou lógica, considere
-refatorar ou compartimentalizar este fluxo para eliminar a dependência ou para esclarecer por que
-a permissão é necessária.
-</p>
-
-<p>
- Para obter mais informações sobre o comportamento das permissões em tempo de execução, de testes e de melhores práticas, consulte a página
- <a href="{@docRoot}preview/features/runtime-permissions.html">Permissões</a> do Developer
- Preview.
-</p>
-
-
-<h2 id="doze-standby">Teste de soneca e aplicativo em espera</h2>
-
-<p>
- Os recursos de economia de energia de aplicativo em espera e soneca limitam a quantidade de processamento de segundo plano que o aplicativo
- pode realizar quando um dispositivo está no estado ocioso ou enquanto não está em foco. As
- restrições que o sistema pode impor nos aplicativos inclui acesso a rede limitado ou restrito,
- tarefas de segundo plano suspensas, notificações suspensas, solicitações de soneca ignoradas e despertadores. Para garantir
- que o aplicativo se comportará adequadamente com essas otimizações de economia de energia, deve-se testá-lo
- simulando estes estados de baixa energia.
-</p>
-
-<h4 id="doze">Testar o aplicativo com Soneca</h4>
-
-<p>Para testar a Soneca com o aplicativo:</p>
-
-<ol>
-<li>Configure um dispositivo de hardware ou virtual com uma imagem do sistema M Preview.</li>
-<li>Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.</li>
-<li>Execute o aplicativo e deixe-o ativo.</li>
-<li>Simule o dispositivo acessando o modo Soneca executando os seguintes comandos:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>Observe o comportamento do aplicativo quando o dispositivo é reativado. Certifique-se de que
- ele se recupere corretamente quando o dispositivo sai do modo Soneca.</li>
-</ol>
-
-
-<h4 id="standby">Testar o aplicativo no modo de espera</h4>
-
-<p>Para testar o modo de espera do aplicativo:</p>
-
-<ol>
- <li>Configure um dispositivo de hardware ou virtual com uma imagem do sistema M Preview.</li>
- <li>Conecte o dispositivo à máquina de desenvolvimento e instale o aplicativo.</li>
- <li>Execute o aplicativo e deixe-o ativo.</li>
- <li>Simule o aplicativo acessando o modo de espera executando os seguintes comandos:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>Simule o despertar do aplicativo usando o seguinte comando:
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>Observe o comportamento do aplicativo quando ele é despertado. Certifique-se de que ele se recupere corretamente
- do modo de espera. Particularmente, deve-se verificar se as notificações e os trabalho de segundo plano
- do aplicativo continuam a funcionar como o esperado.</li>
-</ol>
-
-<h2 id="ids">Backup automático para aplicativos e identificadores específicos do dispositivo</h2>
-
-<p>Caso o aplicativo esteja persistindo qualquer identificador específico do dispositivo, como o ID de registro do Google
-Cloud Messaging, no armazenamento interno,
-certifique-se de seguir as práticas recomendadas para excluir o local de armazenamento
-do backup automático, como descrito em <a href="{@docRoot}preview/backup/index.html">Backup automático
-para aplicativos</a>. </p>
diff --git a/docs/html-intl/intl/pt-br/preview/testing/performance.jd b/docs/html-intl/intl/pt-br/preview/testing/performance.jd
deleted file mode 100644
index d541be1..0000000
--- a/docs/html-intl/intl/pt-br/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=Teste de desempenho de exibição
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=performance, fps, tools
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Neste documento</h2>
- <ol>
- <li><a href="#measure">Medir desempenho da IU</a>
- <ul>
- <li><a href="#aggregate">Agregar estatísticas de quadro</a></li>
- <li><a href="#timing-info">Informações de precisão de quadro</a></li>
- <li><a href="#timing-dump">Despejo de precisão de quadro simples</a></li>
- <li><a href="#collection-window">Controlar janela de coleta de estatísticas</a></li>
- <li><a href="#diagnose">Diagnosticar regressões de desempenho</a></li>
- <li><a href="#resources">Recursos adicionais</a></li>
- </ul>
- </li>
- <li><a href="#automate">Automatizar teste de desempenho da IU</a>
- <ul>
- <li><a href="#ui-tests">Configurar testes da IU</a></li>
- <li><a href="#automated-tests">Configurar testes automatizados da IU</a></li>
- <li><a href="#triage">Triagem e resolução de problemas observados</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- O teste de desempenho da interface do usuário (IU) garante que o aplicativo
- não só esteja de acordo com os requisitos funcionais, como também que as interações de usuários
- sejam muito mais suaves, executando a 60 quadros por segundo de forma consistente (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">por que
- 60 qps?</a>), sem nenhum quadro atrasado ou descartado ou, como gostamos de chamar, <em>"jank"</em>. Este documento explica as ferramentas disponíveis
- para medir o desempenho da IU e dispõe uma abordagem para integrar
- as medidas de desempenho de IU nas práticas de teste.
-</p>
-
-
-<h2 id="measure">Medir desempenho da IU</h2>
-
-<p>
- Para aprimorar o desempenho, deve-se primeiro ter a habilidade de medir o desempenho
- do sistema e, em seguida, diagnosticar e identificar problemas que podem ocorrer
- em várias partes do processo.
-</p>
-
-<p>
- <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> é uma ferramenta
- do Android que é executada no dispositivo e despeja informações interessantes sobre o estado
- dos serviços do sistema. Passar o comando <em>gfxinfo</em> para dumpsys fornece uma saída no logcat
- com informações de desempenho relacionada aos quadros de animação que ocorrem
- durante a fase de registro.
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- Este comando pode produzir diversas variáveis de dados de precisão de quadro.
-</p>
-
-<h3 id="aggregate">Agregar estatísticas de quadro</h3>
-
-<p>
- Com o M Preview, o comando emite uma análise agregada dos dados de quadro para logcat,
- coletados em todo o ciclo de vida do processo. Por exemplo:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- Estas estatísticas de alto nível carregam um alto nível de desempenho de renderização do aplicativo,
- bem como a estabilidade em vários quadros.
-</p>
-
-
-<h3 id="timing-info">Informações de precisão de quadro</h3>
-
-<p>
- Com o M Preview, há um novo comando para gfxinfo, o <em>framestats</em>, que fornece
- informações de precisão de quadros extremamente detalhadas dos quadros recentes para que você possa rastrear
- e depurar os problemas de forma mais precisa.
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- Este comando emite informações de precisão de quadros, com marcações de data e hora, dos últimos 120
- quadros produzidos pelo aplicativo. Abaixo, há um exemplo de saída bruta das estatísticas
- de quadro de adb dumpsys gfxinfo <PACKAGE_NAME>:
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- Cada linha desta saída representa um quadro produzido pelo aplicativo. Cada linha tem um número fixo
- de colunas que descrevem o tempo gasto em cada estágio do pipeline que produz quadros. A próxima seção descreve
- este formato com detalhes, incluindo o que cada coluna representa.
-</p>
-
-
-<h4 id="fs-data-format">Formato de dados de estatísticas de quadro</h4>
-
-<p>
- Como o bloco de dados é a saída no formato CSV, basta colá-lo na ferramenta
- de planilha de sua escolha ou coletá-lo e analisá-lo com o script. A tabela a seguir explica o formato
- das colunas de dados de saída. Todas as marcações de data e hora estão em nanossegundos.
-</p>
-
-<ul>
- <li>SINALIZADORES
- <ul>
- <li>Linhas com ‘0’ para a coluna FLAGS podem ter o tempo total de quadros calculado
- subtraindo a coluna INTENDED_VSYNC da coluna FRAME_COMPLETED.
- </li>
-
- <li>Se for um número diferente de zero, a linha deverá ser ignorada, pois o quadro será determinado
- como exceção em comparação ao desempenho normal, onde espera-se que o layout e o desenho
- demorem mais do que 16 ms. Eis alguns motivos para que isto ocorra:
- <ul>
- <li>Layout da janela alterado (como o primeiro quadro do aplicativo
- ou após uma rotação)
- </li>
-
- <li>Também é possível que o quadro seja ignorado, quando alguns valores
- ainda terão marcações de data e hora de lixo. Um quadro pode ser ignorado se, por exemplo,
- estiver executando a 60 quadros por segundo ou se nada na tela estiver incorreto, o que não necessariamente
- é um sinal de problema no aplicativo.
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>O ponto inicial planejado para o quadro. Se este valor for diferente de VSYNC,
- significa que há um trabalho ocorrendo no encadeamento da IU que não permitiu que ele respondesse
- ao sinal de vsync de forma precisa.
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>O valor de tempo foi usado em todos os escutadores vsync e no desenho para o quadro
- (retorno de chamada do quadro Choreographer, animações, View.getDrawingTime(), etc.)
- </li>
-
- <li>Para entender mais sobre VSYNC e como ele influencia o aplicativo, assista ao vídeo
- <a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">
-Entendimento do VSYNC</a>.
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>A marcação de data e hora do evento de entrada mais antigo na fila de entrada, ou Long.MAX_VALUE
- se não houver eventos de entrada para o quadro.
- </li>
-
- <li>Este valor é principalmente planejado para o trabalho da plataforma e tem utilidade limitada
- para desenvolvedores de aplicativos.
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>A marcação de data e hora do evento de entrada mais recente na fila de entrada
- ou 0 se não houver eventos de entrada para o quadro.
- </li>
-
- <li>Este valor é principalmente planejado para o trabalho da plataforma e tem utilidade limitada
- para desenvolvedores de aplicativos.
- </li>
-
- <li>No entanto, é possível ter uma breve ideia da quantidade de latência que o aplicativo
- está adicionado verificando (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>A marcação de data e hora em que os eventos de entrada foram despachados para o aplicativo.
- </li>
-
- <li>Ao olhar o horário entre isto e ANIMATION_START, é possível medir o tempo que o aplicativo
- gastou para lidar com os eventos de entrada.
- </li>
-
- <li>Se este número for alto (> 2 ms), indica que o aplicativo está gastando
- tempo demais processando os eventos de entrada, como View.onTouchEvent(), o que pode indicar
- que este trabalho precisa ser otimizado ou descarregado para um encadeamento diferente. Observe que há algumas situações,
- como eventos de clique que iniciam novas atividades,
- em que é esperado e aceitável que este número seja grande.
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>A marcação de data e hora em que as animações registradas com Choreographer foram executadas.
- </li>
-
- <li>Ao olhar para o tempo entre isto e PERFORM_TRANVERSALS_START,
- é possível determinar o tempo levado para avaliar todos os animadores
- (ObjectAnimator, ViewPropertyAnimator e Transitions sendo as mais comuns) que estão sendo executados.
- </li>
-
- <li>Se este número for alto (> 2 ms), verifique se o aplicativo gravou qualquer animador
- personalizado ou quais campos de ObjectAnimators estão animando
- e certifique-se de que eles sejam adequados para uma animação.
- </li>
-
- <li>Para saber mais sobre Choreographer, assista ao vídeo
- <a href="https://developers.google.com/events/io/sessions/325418001">Para melhor ou pior</a>.
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>Se você subtrair o DRAW_START deste valor, será possível extrair o tempo que as fases de medida e layout
- levaram para serem concluídas (observação: durante uma rolagem ou animação,
- espera-se que este valor seja próximo a zero).
- </li>
-
- <li>Para saber mais sobre as fases de medida e layout do pipeline de renderização,
- assista ao vídeo <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">
-Invalidações, layouts e desempenho</a>
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>O horário em que a fase de desenho de performTraversals foi iniciada. Este é o ponto inicial
- do registro de listas de exibição de vistas que foram invalidadas.
- </li>
-
- <li>O tempo entre isto e SYNC_START é o tempo levado para chamar View.draw()
- em todas as vistas invalidadas na árvore.
- </li>
-
- <li>Para obter mais informações sobre o modelo de desenho, assista aos vídeos <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">Aceleração de hardware</a>
- ou <a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">
- Invalidações, layouts e desempenho</a>
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>O horário em que a fase de sincronização do desenho foi iniciada.
- </li>
-
- <li>Se o tempo entre isto e ISSUE_DRAW_COMMANDS_START for substancial (aproximadamente > 0,4ms),
- geralmente indicará que vários Bitmaps novos que foram desenhados deverão
- ser enviados para o GPU.
- </li>
-
- <li>Para entender mais sobre a fase de sincronização, assista ao vídeo <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">
-Renderização de GPU de perfil</a>
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>O horário em que o renderizador de hardware começou a emitir comandos de desenho para a GPU.
- </li>
-
- <li>O tempo entre isto e FRAME_COMPLETED fornece uma breve ideia da quantidade de trabalho de GPU
- que o aplicativo está produzindo. Problemas com excesso ou efeitos de renderização
- ineficientes são exibidos aqui.
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>O horário em que o eglSwapBuffers foi chamado, relativamente desinteressante
- fora do trabalho da plataforma.
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>Tudo feito! O tempo total gasto trabalhando neste quadro pode ser calculando
- realizando FRAME_COMPLETED - INTENDED_VSYNC.
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- É possível usar estes dados de várias formas. Uma visualização simples mas útil é o histograma
- exibindo a distribuição dos tempos dos quadros (FRAME_COMPLETED - INTENDED_VSYNC)
- em diferentes espaços de latência. Consulte a figura abaixo. Este gráfico mostra brevemente que a maioria
- dos quadros estavam bons — bem abaixo do limite de 16 ms (representado em vermelho) —,
- mas que alguns quadros estavam bem acima do limite. Podemos verificar as alterações neste histograma
- com o tempo para encontrar as mudanças indiscriminadas ou novas exceções sendo criadas. Também é possível colocar em gráfico a latência de entrada,
- o tempo gasto no layout ou outras medidas interessantes com base
- nas várias marcações de data e hora nos dados.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Despejo de precisão de quadro simples</h3>
-
-<p>
- Se a <strong>renderização de GPU de perfil</strong> for definida para <strong>em adb shell dumpsys gfxinfo</strong>
- nas opções de desenvolvedor, o comando <code>adb shell dumpsys gfxinfo</code> emitirá informações
- de precisão para os 120 quadros mais recentes, divididas em algumas categorias
- com valores separados por guias. Estes dados podem ser úteis para indicar quais partes do pipeline
- de desenho podem estar lentas em um nível alto.
-</p>
-
-<p>
- Semelhante às <a href="#fs-data-format">estatísticas de quadro</a> acima,
- basta colá-los na ferramenta de planilha de sua escolha ou coletá-los e analisá-los
- com um script. O gráfico a seguir exibe um detalhamento de onde os vários quadros produzidos
- pelo aplicativo gastaram o tempo.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- O resultado de executar gfxinfo, copiar a saída, colá-lo no aplicativo de planilha
- e gerar um gráfico dos dados como barras empilhadas.
-</p>
-
-<p>
- Cada barra vertical representa um quadro da animação; sua altura representa a quantidade
- de milissegundos para calcular este quadro de animação. Cada segmento colorido da barra
- representa um estágio diferente do pipeline de renderização para que você possa ver que partes do aplicativo
- podem estar criando um afunilamento. Para obter mais informações sobre o entendimento do pipeline
- de renderização e como otimizá-lo, assista ao vídeo <a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">
-Invalidações, layouts e desempenho</a>.
-</p>
-
-
-<h3 id="collection-window">Controlar janela de coleta de estatísticas</h3>
-
-<p>
- As precisões de quadro simples e estatísticas de quadro coletam dados
- em um período muito curto — cerca de dois segundos de renderização. Para controlar este período de forma precisa — por exemplo,
- restringir os dados para uma animação em particular —, é possível redefinir
- todos os contadores e agregar as estatísticas coletadas.
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- Isto também pode ser usado em conjunto com os próprios comandos de despejo para coletar
- e redefinir em uma cadência regular, capturando períodos de menos de dois segundos de quadros
- continuamente.
-</p>
-
-
-<h3 id="diagnose">Diagnosticar regressões de desempenho</h3>
-
-<p>
- A identificação de regressões é uma boa primeira etapa para rastrear os problemas
- e manter o bem-estar do aplicativo. No entanto, o dumpsys identifica apenas a existência
- e a gravidade relativa dos problemas. Ainda é necessário diagnosticar a causa particular dos problemas
- de desempenho e encontrar maneiras adequadas de resolvê-los. Para isso, é altamente recomendado
- o uso da ferramenta <a href="{@docRoot}tools/help/systrace.html">systrace</a>.
-</p>
-
-
-<h3 id="resources">Recursos adicionais</h3>
-
-<p>
- Para obter mais informações sobre como o pipeline de renderização do Android funciona,
- problemas comuns que podem ser encontrados e como resolvê-los,
- alguns dos seguintes recursos podem ser úteis:
-</p>
-
-<ul>
- <li>Desempenho de renderização 101
- </li>
- <li>Por que 60 qps?
- </li>
- <li>GPU e IU do Android
- </li>
- <li>Invalidações, layouts e desempenho
- </li>
- <li>Análise do desempenho de IU com Systrace
- </li>
-</ul>
-
-
-<h2 id="automate">Automatizar teste de desempenho da IU</h2>
-
-<p>
- Uma abordagem para o teste de desempenho da IU é fazer com que um testador humano
- realize uma série de operações de usuário no aplicativo-alvo e procure visualmente problemas
- ou gaste uma grande quantidade de tempo usando uma abordagem de ferramenta para encontrá-los. No entanto, esta abordagem manual
- é repleta de riscos: a habilidade humana de notar alterações na taxa de quadros varia tremendamente,
- além de consumir tempo, ser tedioso e propenso a erros.
-</p>
-
-<p>
- Uma abordagem mais eficiente é registrar e analisar as métricas de desempenho essenciais
- dos testes de IU automatizados. O Android M Developer Preview inclui novas capacidades de registro que facilitam
- a determinação da quantidade e da gravidade de erros nas animações do aplicativo
- e que podem ser usadas para compilar um processo rigoroso para determinar o desempenho atual
- e rastrear os futuros objetivos de desempenho.
-</p>
-
-<p>
- Este artigo mostra uma abordagem recomendada para usar estes dados para automatizar
- o teste de desempenho.
-</p>
-
-<p>
- Ele é geralmente dividido em duas ações principais. Primeiro: identificar o que está testando
- e como será testado. Segundo: configuração e manutenção
- de um ambiente de teste automatizado.
-</p>
-
-
-<h3 id="ui-tests">Configurar de testes da IU</h3>
-
-<p>
- Antes de iniciar o teste automatizado, é importante determinar algumas decisões de alto nível
- para entender corretamente o espaço de teste e as possíveis necessidades.
-</p>
-
-<h4>
- Identificar principais animações/fluxos a testar
-</h4>
-
-<p>
- Lembre-se que um desempenho ruim é mais visível aos usuários quando
- interrompe uma animação suave. Portanto, ao identificar que tipos de ações de IU serão testadas, é útil se concentrar
- nas animações principais que os usuários veem
- ou nas mais importantes para a experiência. Por exemplo, eis alguns cenários comuns que pode ser útil identificar:
-</p>
-
-<ul>
- <li>Rolagem de um ListView ou RecyclerView principal
- </li>
-
- <li>Animações durante ciclos de espera assíncrona
- </li>
-
- <li>Qualquer animação que possa ter manipulação ou carregamento de bitmap
- </li>
-
- <li>Animações com mistura alpha
- </li>
-
- <li>Desenho de vista personalizada com Canvas
- </li>
-</ul>
-
-<p>
- Trabalhe com engenheiros, designers, e gerentes de produto em sua equipe para priorizar
- as animações de produto essenciais para a cobertura de teste.
-</p>
-
-<h4>
- Defina os futuros objetivos e faça um rastreamento
-</h4>
-
-<p>
- De um alto nível, talvez seja essencial identificar os objetivos específicos de desempenho
- e concentrar-se em escrever testes e coletar dados. Por exemplo:
-</p>
-
-<ul>
- <li>Quer apenas iniciar o rastreamento de desempenho de IU pela primeira vez para aprender mais?
- </li>
-
- <li>Quer evitar regressões que possam ser introduzidas no futuro?
- </li>
-
- <li>Está com 90% de quadros suaves hoje e deseja chegar a 98% neste trimestre?
- </li>
-
- <li>Está com 98% de quadros suaves e não quer regredir?
- </li>
-
- <li>O seu objetivo é aprimorar o desempenho em dispositivos de baixo nível?
- </li>
-</ul>
-
-<p>
- Em todos esses casos, você optará pelo rastreamento histórico, que exibe o desempenho
- entre várias versões do aplicativo.
-</p>
-
-<h4>
- Identificar dispositivos para realizar testes
-</h4>
-
-<p>
- O desempenho do aplicativo varia dependendo do dispositivo em que está sendo executado. Alguns dispositivos podem
- conter menos memória, GPUs menos eficientes ou chips de CPU mais lentos. Isto significa que as animações que podem
- ter um bom desempenho em um conjunto de hardwares podem não ter o mesmo desempenho em outras,
- podendo ser o resultado de um afunilamento em uma parte diferente do pipeline. Portanto, para contabilizar
- esta variação em o que o usuário pode ver, escolha uma variação de dispositivos
- para executar os testes: dispositivos e tablets de alto e baixo nível etc. Procure variações no desempenho de CPU,
- RAM, densidade da tela, tamanho etc. Testes que passam em dispositivos de alto nível
- podem falhar em dispositivos de baixo nível.
-</p>
-
-<h4>
- Estruturas básicas para teste de IU
-</h4>
-
-<p>
- Conjuntos de ferramenta, como <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> e
- <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>,
- são integrados para ajudar na automatização da ação de um usuário movendo-se pelo aplicativo. São estruturas simples
- que imitam a interação de usuário no dispositivo. Para usar estas estruturas,
- você cria efetivamente scripts únicos que executam um conjunto
- de ações de usuário e reproduzem-nas no próprio dispositivo.
-</p>
-
-<p>
- Ao combinar estes testes automatizados, juntamente com <code>dumpsys gfxinfo</code>, é possível criar
- rapidamente um sistema reproduzível que permite a execução de um teste e a medição das informações
- de desempenho desta condição em particular.
-</p>
-
-
-<h3 id="automated-tests">Configurar testes automatizados da IU</h3>
-
-<p>
- Com a habilidade de executar um teste de IU e um pipeline para coletar
- os dados de um único teste, a próxima etapa importante é adotar uma estrutura que pode executar
- esse teste várias vezes, em vários dispositivos, e agregar os dados de desempenho resultados
- para futuras análises da equipe de desenvolvimento.
-</p>
-
-<h4>
- Uma estrutura para automatização de testes
-</h4>
-
-<p>
- Vale observar que as estruturas de teste de IU (como o <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)
- são executadas diretamente no emulador/dispositivo alvo. Enquanto as informações de coleta de desempenho feita
- pelo <em>dumpsys gfxinfo</em> forem direcionadas por uma máquina hospedeira, envie comandos pelo ADB. Para ajudar a transmitir
- a automatização dessas entidades separadas, a estrutura <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a>
- foi desenvolvida: um sistema de script que é executado na máquina host que pode
- emitir comandos para um conjunto de dispositivos conectados, bem como receber dados deles.
-</p>
-
-<p>
- A compilação de um conjunto de scripts para uma automatização adequada de teste de desempenho de IU,
- no mínimo, deve ser capaz de utilizar o MonkeyRunner para realizar as seguintes tarefas:
-</p>
-
-<ul>
- <li>Carregar e iniciar um APK desejado para um emulador ou dispositivo alvo.
- </li>
-
- <li>Iniciar um teste de IU do UI Automator e permitir que ele seja executado.
- </li>
-
- <li>Coletar informações de desempenho por meio de <em>dumpsys gfxinfo</em><em>.</em>
- </li>
-
- <li>Agregar informações e exibi-las de forma útil para o desenvolvedor.
- </li>
-</ul>
-
-
-<h3 id="triage">Triagem e resolução de problemas observados</h3>
-
-<p>
- Quando os padrões ou regressões dos problemas forem identificados, a próxima etapa
- é identificar e aplicar a resolução. Se a estrutura de teste automatizado preservar o detalhamento preciso para os quadros,
- ela poderá ajudar na inspeção de alterações de layout/código suspeitos recentes (em caso
- de regressão) ou reduzir a parte do sistema que você está analisando ao alternar
- para a investigação manual. Para a investigação manual, <a href="{@docRoot}tools/help/systrace.html">systrace</a> é um ótimo lugar para começar,
- exibindo as informações de precisão sobre cada estágio do pipeline de renderização,
- cada encadeamento e núcleo no sistema, bem como quaisquer marcadores de evento personalizados definidos.
-</p>
-
-<h4>
- Geração de perfis adequada de precisões temporais
-</h4>
-
-<p>
- É importante observar as dificuldades em obter e medir as precisões
- do desempenho de renderização. Esses números são, por natureza, não determinísticos e frequentemente
- oscilam dependendo do estado do sistema, da quantidade de memória disponível,
- da diminuição termal e da última vez em que a luz do sol atingiu a sua área da Terra. Ou seja, é possível executar
- o mesmo teste duas vezes e receber números levemente diferentes
- que podem ser muito próximos, mas não idênticos.
-</p>
-
-<p>
- A coleta e a geração de perfil de dados nesta maneira significa executar o mesmo teste,
- várias vezes, e acumular os resultados como uma média ou valor mediano (para a simplicidade,
- chamemos de "lote"). Isto fornece uma aproximação do desempenho do teste,
- já que precisões exatas não são necessárias.
-</p>
-
-<p>
- Os lotes podem ser usados entre alterações de códigos para verificar o impacto relativo
- dessas alterações no desempenho. Se a taxa de quadros média para o lote antes da alteração
- for maior do que o lote após a alteração, então o resultado de desempenho wrt geral será um sucesso
- para esta alteração em particular.
-</p>
-
-<p>
- Isto significa que qualquer teste de IU automatizado feito deve levar este conceito
- em consideração, bem como quaisquer anomalias que possam ocorrer durante um teste. Por exemplo,
- se o desempenho do aplicativo repentinamente cair devido a algum problema do dispositivo
- (que não tenha sido causado pelo aplicativo), então talvez seja necessário executar
- o lote novamente para obter precisões menos caóticas.
-</p>
-
-<p>
- Logo, quantas vezes deve-se realizar um teste antes de as medidas terem algum sentido? 10 vezes deve ser o mínimo,
- com números altos como 50 ou 10 oferecendo resultados mais precisos
- (é claro que se deve levar em consideração o tempo para ter mais precisão).
-</p>
diff --git a/docs/html-intl/intl/ru/preview/api-overview.jd b/docs/html-intl/intl/ru/preview/api-overview.jd
deleted file mode 100644
index ae30e09..0000000
--- a/docs/html-intl/intl/ru/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-page.title=Обзор API-интерфейсов
-page.keywords=предварительная версия,пакет sdk,совместимость
-page.tags=previewresources, androidm
-sdk.platform.apiLevel=22-mnc
-page.image=images/cards/card-api-overview_16-9_2x.png
-@jd:body
-
-
-<div id="qv-wrapper">
-<div id="qv">
-
-<h2>Содержание
-<a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle">
- <span class="more">развернуть</span>
- <span class="less" style="display:none">свернуть</span></a></h2>
-
-<ol id="toc44" class="hide-nested">
- <li><a href="#app-linking">Связывание приложений</a></li>
- <li><a href="#backup">Автоматическое резервное копирование для приложений</a></li>
- <li><a href="#authentication">Авторизация</a>
- <ol>
- <li><a href="#fingerprint-authentication">Авторизация по отпечатку пальца</a></li>
- <li><a href="#confirm-credential">Подтверждение учетных данных</a></li>
- </ol>
- </li>
- <li><a href="#direct-share">Прямой обмен контентом</a></li>
- <li><a href="#voice-interactions">Голосовой интерфейс</a></li>
- <li><a href="#assist">API-интерфейс помощника</a></li>
- <li><a href="#notifications">Уведомления</a></li>
- <li><a href="#bluetooth-stylus">Поддержка пера Bluetooth</a></li>
- <li><a href="#ble-scanning">Улучшенное сканирование Bluetooth с низким потреблением энергии</a></li>
- <li><a href="#hotspot">Поддержка Hotspot 2.0, выпуск 1</a></li>
- <li><a href="#4K-display">Режим отображения в формате 4K</a></li>
- <li><a href="#behavior-themeable-colorstatelists">Метод ColorStateLists для работы с темами</a></li>
- <li><a href="#audio">Работа с аудио</a></li>
- <li><a href="#video">Работа с видео</a></li>
- <li><a href="#camera">Возможности камеры</a>
- <ol>
- <li><a href="#flashlight">API-интерфейс вспышки</a></li>
- <li><a href="#reprocessing">Повторная обработка изображения с камеры</a></li>
- </ol>
- </li>
- <li><a href="#afw">Возможности Android for Work</a></li>
-</ol>
-
-<h2>Различия между API-интерфейсами</h2>
-<ol>
-<li><a href="{@docRoot}preview/download.html">API уровня 22 в M Preview »</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M Developer Preview — ознакомительная версия предстоящего выпуска платформы Android,
-в котором реализованы новые возможности как для пользователей, так и для
-разработчиков приложений. В этой статье мы расскажем о наиболее интересных API-интерфейсах.</p>
-
-<p>Версия M Developer Preview предназначена для тех, <strong>кто хочет первым ознакомиться с новой платформой</strong>,
-а также для <strong>тестировщиков</strong>. <a href="{@docRoot}preview/setup-sdk.html">M Developer Preview — прекрасная возможность
-</a>повлиять на вектор развития
-платформы Android.
-Мы с нетерпением ждем ваших отзывов!</p>
-
-<p class="caution"><strong>Внимание!</strong> Не публикуйте в магазине Google Play приложения,
-предназначенные для M Developer Preview.</p>
-
-<p class="note"><strong>Примечание.</strong> В этой статье часто упоминаются классы и методы,
-для которых на сайте <a href="{@docRoot}">developer.android.com</a> пока еще нет справочных материалов. Такие элементы API-интерфейса обозначаются здесь следующим образом:
-{@code code style} (без гиперссылок). Чтобы ознакомиться с предварительной документацией по этим элементам,
-загрузите <a href="{@docRoot}preview/download.html#docs">справочное руководство по предварительной версии</a>.</p>
-
-<h3>Важные изменения в работе приложений</h3>
-
-<p>Если вы ранее публиковали приложения для Android, то примите во внимание, что изменения в платформе могут повлиять
-на работу опубликованных приложений.</p>
-
-<p>Подробные сведения представлены в статье <a href="behavior-changes.html">Изменения в работе</a>.</p>
-
-<h2 id="app-linking">Связывание приложений</h2>
-<p>В M Preview улучшена система намерений Android за счет более эффективного связывания приложений.
-Теперь у вас есть возможность связывать приложения с вашими собственными веб-доменами. Благодаря этому
-платформа может сама, без вмешательства пользователя, определить приложение, которое будет использоваться по умолчанию
-для обработки определенной веб-ссылки. О том, как реализовать такую возможность, можно почитать в статье
-<a href="{@docRoot}preview/features/app-linking.html">Связывание приложений</a>.
-
-<h2 id="backup">Автоматическое резервное копирование для приложений</h2>
-<p>Теперь система автоматически выполняет полное резервное копирование и восстановление данных ваших приложений. Для приложений,
-написанных под M Preview, эта функция включена по умолчанию — вам даже не нужно добавлять отдельный код. Если пользователь решит удалить свою учетную запись Google, все резервные копии его данных также будут удалены.
- О том, как работает эта функция и как настроить параметры резервного копирования элементов файловой системы,
- рассказано в статье
-<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>.</p>
-
-<h2 id="authentication">Авторизация</h2>
-<p>В M Preview представлены новые API-интерфейсы, которые позволяют авторизовать пользователей по отпечатку пальца
-(на устройствах, поддерживающих такую возможность), а также подтвердить учетные данные, если пользователь недавно авторизовался через механизмы разблокировки устройства
-(например, вводил пароль для разблокировки экрана). Эти API-интерфейсы рекомендуется использовать совместно с
-<a href="{@docRoot}training/articles/keystore.html">системой хранилища ключей Android</a>.</p>
-
-<h3 id="fingerprint-authentication">Авторизация по отпечатку пальца</h3>
-
-<p>Чтобы авторизовать пользователя по отпечатку пальца, получите экземпляр нового класса
-{@code android.hardware.fingerprint.FingerprintManager} и вызовите метод
-{@code FingerprintManager.authenticate()}. Эта функция доступна для совместимых
-устройств, оснащенных сканером отпечатков пальцев. Прежде всего, вам необходимо реализовать в своем приложении пользовательский интерфейс проверки
-подлинности по отпечатку пальца, а также использовать для него стандартный значок отпечатка пальца Android.
-Этот значок ({@code c_fp_40px.png}) вы можете найти в
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">примере приложения</a>. При разработке нескольких приложений, использующих функцию авторизации по отпечатку пальца,
-помните, что каждое из них должно самостоятельно выполнять проверку подлинности.
-</p>
-
-<p>Чтобы реализовать эту функцию, сначала добавьте в файл манифеста разрешение {@code USE_FINGERPRINT}.
-</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>Пример такой проверки подлинности вы найдете в
-<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">примере
-диалогового окна авторизации по отпечатку пальца</a>.</p>
-
-<p>Если вы тестируете эту функцию, выполните следующие действия:</p>
-<ol>
-<li>Установите инструменты SDK Android (версию 24.3), если у вас их еще нет.</li>
-<li>Зарегистрируйте в эмуляторе новый отпечаток пальца (в разделе
-<strong>Настройки > Безопасность > Отпечаток пальца</strong>) и следуйте дальнейшим инструкциям.</li>
-<li>Воспользовавшись указанной ниже командой, сымитируйте в эмуляторе события касания для проверки отпечатка пальца.
- С помощью этой же команды сымитируйте события касания для проверки отпечатка пальца на экране блокировки или в
-своем приложении.
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>В Windows, возможно, потребуется выполнить команду {@code telnet 127.0.0.1 <emulator-id>}, а затем
-{@code finger touch <finger_id>}.
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">Подтверждение учетных данных</h3>
-<p>Для авторизации пользователей ваше приложение может обратиться к сведениям о том, как давно они разблокировали свое устройство в последний раз. Эта функция
-избавляет пользователя от необходимости запоминать отдельные пароли для каждого приложения, а вас — от необходимости
-реализовывать собственный пользовательский интерфейс авторизации. В приложении эту функцию следует
-использовать совместно с реализацией открытого или секретного ключа для авторизации пользователей.</p>
-
-<p>Чтобы задать временя ожидания, в течение которого после успешной
-авторизации можно использовать ключ повторно, вызовите новый метод
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
-при настройке {@link javax.crypto.KeyGenerator} или
-{@link java.security.KeyPairGenerator}. На сегодняшний день эта функция совместима с симметричными криптографическими
-операциями.</p>
-
-<p>Не стоит слишком часто отображать диалоговое окно повторной авторизации — ваше
-приложение должно сначала попробовать использовать криптографический объект и только потом, если окажется, что время ожидания истекло, обратиться к методу
-{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()}
-для повторной авторизации пользователя.
-</p>
-
-<p>Как можно реализовать эту функцию, показано в
-<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link">примерепроверки учетных данных</a>.
-</p>
-
-<h2 id="direct-share">Прямой обмен контентом</h2>
-
-<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" />
-
-<p>M Preview содержит API-интерфейсы для интуитивно понятного и быстрого обмена контентом между пользователями. Теперь вы можете
-определить <em>целевые объекты прямого обмена</em>, которые будут запускать определенную операцию в приложении
-и открываться в меню <em>Поделиться</em>. С помощью данной функции пользователи могут обмениваться контентом
-с целевыми объектами, такими как контакты, в других приложениях. Например, целевой объект прямого обмена может запустить операцию
-в другом приложении социальной сети, что позволит пользователю напрямую делиться контентом с другом
-или членами сообщества через это приложение.</p>
-
-<p>Чтобы включить использование целевых объектов прямого обмена, необходимо определить класс, который наследует класс
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService}. Объявите
-{@code ChooserTargetService} в манифесте. В этом объявлении укажите разрешение
-{@code BIND_CHOOSER_TARGET_SERVICE} и фильтр намерений с помощью действия
-{@code SERVICE_INTERFACE}.</p>
-<p>В примере ниже показано, как объявить {@code ChooserTargetService}
- в вашем манифесте.</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>Для каждого действия, которое необходимо сделать доступным для {@code ChooserTargetService}, добавьте в манифест вашего приложения элемент
-{@code <meta-data>} с именем
-{@code "android.service.chooser.chooser_target_service"}.
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">Голосовой интерфейс</h2>
-<p>
-В M Preview представлен новый голосовой API-интерфейс, который, наряду с
-<a href="https://developers.google.com/voice-actions/" class="external-link">голосовыми командами</a>,
-позволяет встраивать в приложение диалоговое голосовое взаимодействие. Вызовите метод
-{@code android.app.Activity.isVoiceInteraction()}, чтобы определить, была ли операция запущена
-в ответ на голосовую команду. Если это так, ваше приложение может использовать класс
-{@code android.app.VoiceInteractor}, чтобы получить голосовое подтверждение от пользователя, предложить ему список вариантов
-на выбор и многое другое. Подробнее о реализации голосовых команд можно почитать в
-<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">руководстве к голосовому интерфейсу</a>.
-</p>
-
-<h2 id="assist">API-интерфейс помощника</h2>
-<p>
-M Preview предлагает новый способ взаимодействия пользователей с приложением — взаимодействие посредством помощника. Для этого
-пользователю необходимо разришить помощнику использовать текущий контекст, после чего он сможет вызывать помощника
-в любом приложении, удерживая кнопку <strong>Домой</strong>.</p>
-<p>Разработчик может также запретить приложению сообщать помощнику текущий контекст. Для этого установите флаг
-{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Кроме стандартного набора
-информации, который платформа передает помощнику, ваше приложение может сообщать ему дополнительные
-сведения посредством нового класса {@code android.app.Activity.AssistContent}.</p>
-
-<p>Чтобы предоставить помощнику дополнительный контекст из вашего приложения, выполните следующие действия:</p>
-
-<ol>
-<li>Реализуйте интерфейс {@link android.app.Application.OnProvideAssistDataListener}.</li>
-<li>Зарегистрируйте этот приемник с помощью
-{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li>
-<li>Для предоставления контекста, относящего к конкретной операции, переопределите метод обратного вызова
-{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()},
-а также, при желании, новый метод обратного вызова{@code Activity.onProvideAssistContent()}.
-</ol>
-
-<h2 id="notifications">Уведомления</h2>
-<p>В API-интерфейс уведомлений внесены следующие изменения:</p>
-<ul>
- <li>{@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} — новый уровень фильтрации,
-соответствующий новому режиму «Не беспокоить» <em>Только будильник</em>.</li>
- <li>{@code Notification.CATEGORY_REMINDER} — новое значение категории, позволяющее отличить
-установленные пользователем напоминания от других событий
-({@link android.app.Notification#CATEGORY_EVENT}) и будильников
-({@link android.app.Notification#CATEGORY_ALARM}).</li>
- <li>{@code android.graphics.drawable.Icon} — новый класс, который можно добавить к уведомлениям
-с помощью методов {@code Notification.Builder.setSmallIcon(Icon)} и
-{@code Notification.Builder.setLargeIcon(Icon)}.</li>
- <li>{@code NotificationManager.getActiveNotifications()} — новый метод, с помощью которого ваше приложение
-может определить, какие из уведомлений в настоящее время активны. Если хотите взглянуть, как может быть реализовано приложение
-с этой функцией, пройдите по ссылке: <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">Пример активных уведомлений</a>.</li>
-</ul>
-
-<h2 id="bluetooth-stylus">Поддержка пера Bluetooth</h2>
-<p>В M Preview улучшена поддержка ввода с помощью пера Bluetooth. Пользователи могут подключить
-совместимое перо Bluetooth к своему смартфону или планшету. Когда перо подключено, данные о его
-положении объединяются со сведениями о степени нажима и нажатия кнопки на пере,
-и таким образом при сенсорном вводе используются не только возможности сенсорного экрана. Ваше приложение может отслеживать
-нажатия кнопки пера и выполнять дополнительные действия, регистрируя в операции новые методы обратного вызова
-{@code View.onStylusButtonPressListener} и
-{@code GestureDetector.OnStylusButtonPressListener}.</p>
-
-<p>Для определения нажатий кнопок пера используйте методы и константы {@link android.view.MotionEvent}:
-</p>
-<ul>
-<li>Если пользователь касается пером кнопки на экране приложения, метод
-{@link android.view.MotionEvent#getToolType(int) getTooltype()} возвращает
-{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li>
-<li>В приложениях, разработанных для M Preview, при нажатии пользователем на основную кнопку на пере, метод
-{@link android.view.MotionEvent#getButtonState() getButtonState()}
-возвращает{@code MotionEvent.STYLUS_BUTTON_PRIMARY}.
- Если перо оснащено дополнительной кнопкой, то при нажатии на нее этот метод возвращает
-{@code MotionEvent.STYLUS_BUTTON_SECONDARY}. При нажатии пользователем
-на обе кнопки одновременно, метод возвращает оба значения через оператор «OR»
-({@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li>
-<li>
-В приложениях, разработанных для более ранних версий платформы, метод
-{@link android.view.MotionEvent#getButtonState() getButtonState()} возвращает
-{@link android.view.MotionEvent#BUTTON_SECONDARY} (при нажатии на основную кнопку на пере),
-{@link android.view.MotionEvent#BUTTON_TERTIARY} (при нажатии дополнительной кнопки на пере) или оба этих значения.
-</li>
-</ul>
-
-<h2 id="ble-scanning">Улучшенное сканирование Bluetooth с низким потреблением энергии</h2>
-<p>
-Если ваше приложение выполняет сканирование Bluetooth с низким потреблением энергии, вы можете при помощи нового метода
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} указать, что обратные вызовы следует уведомлять только в случае, если прежде обнаружен пакет объявления,
- совпадающий с заданным фильтром
-{@link android.bluetooth.le.ScanFilter}, или если он не обнаруживается в течение заданного периода времени.
- Такой подход к сканированию обеспечивает еще большую экономию энергии, чем это было возможно в предыдущей
-версии платформы.
-</p>
-
-<h2 id="hotspot">Поддержка Hotspot 2.0, выпуск 1</h2>
-<p>
-В M Preview включена поддержка Hotspot 2.0 (выпуск 1) для устройств Nexus 6 и Nexus 9. Для
-предоставления учетных данных Hotspot 2.0 в вашем приложении используйте новые методы класса
-{@link android.net.wifi.WifiEnterpriseConfig}, такие как {@code setPlmn()} и
-{@code setRealm()}. В объекте {@link android.net.wifi.WifiConfiguration} можно задать поля
-{@link android.net.wifi.WifiConfiguration#FQDN} и {@code providerFriendlyName}.
-Новое свойство{@code ScanResult.PasspointNetwork} показывает, является ли обнаруженная
-сеть точкой доступа Hotspot 2.0.
-</p>
-
-<h2 id="4K-display">Режим отображения в формате 4K</h2>
-<p>Теперь платформа позволяет приложениям запрашивать увеличение разрешения экрана до 4K при обработке изображения
-на совместимом устройстве. Чтобы запросить текущее физическое разрешение, используйте новые API-интерфейсы
-{@code android.view.Display.Mode}. Если элементы пользовательского интерфейса, отрисованные в более низком логическом разрешении, масштабируются до
-более высокого физического разрешения, обратите внимание, что метод физического разрешения
-{@code Display.Mode.getPhysicalWidth()} возвращает результат, который может отличаться от результата выполнения метода логического разрешения
-{@link android.view.Display#getSize(android.graphics.Point) getSize()} .</p>
-
-<p>Можно отправить запрос системе на изменение физического разрешения в активном приложении, задав для окна вашего приложения свойство
-{@code WindowManager.LayoutParams.preferredDisplayModeId}. Эта
-функция особенно полезна в случаях, когда требуется переключиться на разрешение экрана 4K. В режиме отображения в формате 4K элементы
-пользовательского интерфейса отрисовываются в исходном разрешении (например, 1080p) и масштабируются до 4K, однако содержимое
-{@link android.view.SurfaceView} объектов может отображаться с использованием основного разрешения.</p>
-
-<h2 id="behavior-themeable-colorstatelists">Метод ColorStateLists для работы с темами</h2>
-<p>Теперь метод
-{@link android.content.res.ColorStateList} для устройств под управлением M Preview поддерживает атрибуты темы. Методы
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} и
-{@link android.content.res.Resources#getColor(int) getColor()} уже неактуальны. Если вы
-вызываете эти API-интерфейсы, вызовите вместо них новые методы {@code Context.getColorStateList()} или
-{@code Context.getColor()}, Доступные также в библиотеке v4 appcompat
-посредством {@link android.support.v4.content.ContextCompat}.</p>
-
-<h2 id="audio">Работа с аудио</h2>
-
-<p>В M Preview реализован ряд улучшений в области обработки аудиофайлов системой Android, включая следующие: </p>
-<ul>
- <li>Новые API-интерфейсы {@code android.media.midi}, поддерживающие протокол <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
- для отправки и получения событий
-MIDI.</li>
- <li>Новые классы: {@code android.media.AudioRecord.Builder} позволяет создавать объекты захвата цифрового аудио, а {@code android.media.AudioTrack.Builder} — объекты воспроизведения,
-а также осуществлять настройку источника
-аудио и свойств приемника, переопределяя исходные системные настройки.</li>
- <li>Обработчики API-интерфейсов предназначены для связывания аудиофайлов и устройств ввода. Это особенно полезно в случае, если ваше приложение
-предоставляет возможность выполнять голосовой поиск с помощью игрового контроллера или пульта дистанционного управления, подключенного к Android
-TV. Когда пользователь запустит поиск, система вызовет новый метод обратного вызова {@code android.app.Activity.onSearchRequested()}.
- Чтобы определить, оснащено ли устройство ввода встроенным микрофоном, получите из этого метода обратного вызова объект
-{@link android.view.InputDevice} и вызовите новый метод
-{@code InputDevice.hasMic()}.</li>
- <li>Новый класс {@code android.media.AudioDevicesManager}, позволяющий пользователю получить список всех
-подключенных источников аудио и приемников. Также можно указать объект
-{@code android.media.OnAudioDeviceConnectionListener}, если требуется, чтобы приложение
-получало уведомления о подключении или отключении аудиоустройств.</li>
-</ul>
-
-<h2 id="video">Работа с видео</h2>
-<p>В M Preview вы обнаружите новые возможности API-интерфейсов для обработки видео, в том числе:</p>
-<ul>
-<li>Новый класс {@code android.media.MediaSync} обеспечивает синхронную обработку потоков
-аудио и видео. Буферы аудио отправляются неблокируемым способом и возвращаются посредством
-обратного вызова. Также имеется поддержка динамической скорости воспроизведения.
-</li>
-<li>Новое событие {@code MediaDrm.EVENT_SESSION_RECLAIMED} указывает на то, что сеанс, запущенный
-приложением, освобожден диспетчером ресурсов. Если в вашем приложении используются сеансы DRM, то это событие
-необходимо обработать и убедиться в том, что освобожденный сеанс не используется.
-</li>
-<li>Новый код ошибки {@code MediaCodec.CodecException.ERROR_RECLAIMED} указывает на то, что
-диспетчер ресурсов освободил ресурс мультимедиа, используемый кодеком. Во всех остальных случаях кодек должен
-быть освобожден, поскольку его необходимо перевести в конечное состояние.
-</li>
-<li>Новый интерфейс {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} позволяет узнать максимальное количество
- экземпляров кодека, которые могут выполняться одновременно.
-</li>
-<li>Новый {@code MediaPlayer.setPlaybackParams()} метод задает скорость при ускоренном или
-замедленном воспроизведении мультимедиа. Он также позволяет автоматически замедлять или ускорять воспроизведение аудио синхронно с
-видео.</li>
-</ul>
-
-<h2 id="camera">Возможности камеры</h2>
-<p>В M Preview представлены следующие API-интерфейсы для вспышки камеры и повторной обработки
-изображений камерой.</p>
-
-<h3 id="flashlight">API-интерфейс вспышки</h3>
-<p>Если камера оснащена вспышкой, вы можете вызвать метод{@code CameraManager.setTorchMode()},
-чтобы включить или отключить режим фонарика, не запуская камеру. Приложение
-не может заполучить вспышку или камеру в единоличное пользование. Режим фонарика отключается
-и становится недоступен, когда камера недоступна или ресурсов камеры недостаточно для использования вспышки в качестве
-фонарика. Кроме того, другие приложения могут вызывать метод {@code setTorchMode()}
-для отключения режима фонарика. При закрытии приложения, которое включило режим фонарика, этот режим
-отключается.</p>
-
-<p>Чтобы зарегистрировать обратный вызов для уведомления о режиме фонарика, вызовите метод
-{@code CameraManager.registerTorchCallback()}. При первой регистрации обратного вызова
-он сразу же вызывается со сведениями о состоянии режима фонарика для всех известных к настоящему моменту устройств,
-оснащенных вспышкой. При успешном включении или отключении фонарика вызывается метод
-{@code CameraManager.TorchCallback.onTorchModeChanged()}.</p>
-
-<h3 id="reprocessing">API-интерфейс повторной обработки</h3>
-<p>API-интерфейс {@link android.hardware.camera2 Camera2} теперь поддерживает повторную обработку цветовых моделей YUV и изображений в собственном
-формате непрозрачности. Чтобы определить, возможна ли повторная обработка, приложение использует метод
-{@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Если устройство поддерживает повторную обработку,
-вы можете создать сеанс захвата изображения с камеры с возможностью повторной обработки, вызвав метод
-{@code CameraDevice.createReprocessableCaptureSession()}, а затем создать запросы на повторную обработку буфера
-входных данных.</p>
-
-<p>Чтобы подключить поток буфера входных данных к модулю повторной обработки изображения с камеры, используйте класс
-{@code ImageWriter}. Чтобы получить пустой буфер, выполните следующие действия:</p>
-
-<ol>
-<li>Вызовите метод {@code ImageWriter.dequeueInputImage()}.</li>
-<li>Заполните буфер входными данными.</li>
-<li>Отправьте буфер в камеру, вызвав метод {@code ImageWriter.queueInputImage()}.</li>
-</ol>
-
-<p>Если вы используете объект {@code ImageWriter} вместе с изображением
-{@code android.graphics.ImageFormat.PRIVATE}, вашему приложению не удастся получить доступ к изображению
-напрямую. Вместо этого передайте изображение {@code ImageFormat.PRIVATE} прямо в
-{@code ImageWriter}, вызвав метод {@code ImageWriter.queueInputImage()} без копии
-буфера.</p>
-
-<p>Класс {@code ImageReader} теперь поддерживает потоки изображений в формате {@code android.graphics.ImageFormat.PRIVATE}.
- Благодаря этому ваше приложение может организовать циклическую очередь выходных изображений
-{@code ImageReader}, выбрать одно или несколько изображений и отправить их в
-{@code ImageWriter} для повторной обработки камерой.</p>
-
-<h2 id="afw">Возможности Android for Work</h2>
-<p>В M Preview представлены новые API-интерфейсы для Android for Work:</p>
-<ul>
- <li><strong>Улучшенные элементы управления для корпоративных специализированных устройств.</strong> Владельцу устройства
-теперь доступны новые возможности управления
-корпоративными специализированными устройствами при помощие следующих настроек:
- <ul>
- <li>Отключение или повторное включение блокировки клавиатуры с помощью метода
-{@code DevicePolicyManager.setKeyguardEnabledState()}.</li>
- <li>Отключение или повторное включение строки состояния (включая быстрые настройки, уведомления и
-запуск Google Now путем проведения пальцем по экрану) с помощью метода
-{@code DevicePolicyManager.setStatusBarEnabledState()}.</li>
- <li>Отключение и повторное включение безопасной загрузки с помощью константы
-{@code DISALLOW_SAFE_BOOT} {@link android.os.UserManager}.</li>
- <li>Предотвращение отключения экрана, если устройство питается от сети, с помощью константы
-{@code STAY_ON_WHILE_PLUGGED_IN} {@link android.provider.Settings.Global}.</li>
- </ul>
- </li>
- <li><strong>Автоматические установка и удаление приложений владельцами устройств.</strong> Владелец устройства теперь может автоматически
-устанавливать и удалять приложения с помощью API-интерфейсов {@link android.content.pm.PackageInstaller},
-независимо от Google Play for Work. Теперь вы можете подготавливать устройства с помощью компонента «Владелец устройства», который
-получает и устанавливает приложения без участия пользователя. Такая возможность особенно полезна тем, что позволяет подготавливать
-киоски или иные подобные устройства одним касанием, не активируя аккаунт Google.</li>
-<li><strong>Автоматический доступ к корпоративному сертификату.</strong> Теперь, когда приложение вызывает метод
-{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()},
-владелец профиля или устройства, прежде чем ему будет предложено выбрать сертификат, может вызывать метод
-{@code DeviceAdminReceiver.onChoosePrivateKeyAlias()}, который автоматически предоставит предложению псевдоним.
- С помощью этой возможности вы можете предоставлять управляемым приложениям доступ к сертификатам без
-вмешательства пользователя.</li>
-<li><strong>Автоматическое принятие обновлений системы.</strong> Настройка параметров обновления системы с помощью
-{@code DevicePolicyManager.setSystemUpdatePolicy()} теперь позволяет компоненту «Владелец устройства» автоматически принять обновление системы
-(например, в киоске) или отложить его на период до 30 дней, причем пользователь
-тоже не сможет установить обновление до истечения этого срока. Более того, администратор может задать ежедневный временной интервал, когда устройство будет принимать
-обновления (например, во те часы, когда киоск не используется). При наличии доступного
-обновления система проверяет, заданы ли параметры обновления системы приложением «Параметры работы»
-, и выполняет соответствующие действия.
-</li>
-<li>
-<strong>Делегированная установка сертификата.</strong> Владелец профиля или устройства теперь может предоставлять
-стороннему приложению возможность вызывать следующие API-интерфейсы управления сертификатом
-{@link android.app.admin.DevicePolicyManager}:
-<ul>
- <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName)
-getInstalledCaCerts()}</li>
- <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[])
-hasCaCertInstalled()}</li>
- <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[])
-installCaCert()}</li>
- <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[])
-uninstallCaCert()}</li>
- <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName)
-uninstallAllUserCaCerts()}</li>
- <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String)
-installKeyPair()}</li>
-</ul>
-</li>
-<li><strong>Корпоративная настройка защиты от сброса параметров до заводских настроек.</strong> При подготовке компонента «Владелец устройства» теперь
-имеется возможность настроить параметры разблокировки защиты от сброса параметров до заводских настроек (FRP) путем задания пакета
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Приложение NFC Programmer
-может после перезагрузки устройства предоставить эти параметрыс целью разблокировки FRP и его подготовки
-(без необходимости запрашивать ранее настроенную учетную запись Google). Если не изменить эти параметры,
-заводские настройки сохранятся не позволят активировать устройство без ввода активированных ранее
-учетных данных Google.
-<p>Кроме того, задав ограничения на использование служб Google Play, компонент «Владелец устройства» может указать альтернативные учетные записи
-Google для разблокировки FRP и замены учетных записей, активированных на устройстве.</p>
-</li>
-<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-<li><strong>Отслеживание использования данных.</strong> Владелец профиля или устройства теперь может запрашивать статистику использования
-данных, которая отображается в разделе <strong>Настройки > Использование данных</strong>, с помощью новых методов
-{@code android.app.usage.NetworkStatsManager}. Владельцам профилей автоматически предоставляется
-разрешение запрашивать данные профиля, которым они управляют, тогда как владельцам устройств предоставляется доступ к сведениям об использовании данных
-основного управляемого пользователя.</li>
-<li><strong>Управление разрешениями на выполнение.</strong>
-<p>Владелец профиля или устройства может задавать политику разрешений
-для всех запросов на использование среды выполнения любых приложений с помощью
-{@code DevicePolicyManager.setPermissionPolicy()}. Это позволяет выбрать, будет ли система предлагать пользователю предоставить разрешение
-как обычно, или она будет автоматически предоставлять разрешения или отказывать в них. В последнем случае
-пользователю не удастся изменить выбор, сделанный владельцем профиля или устройства на экране
-разрешений приложения в разделе <strong>Настройки</strong>.</p></li>
-<li><strong>VPN в разделе «Настройки».</strong> Приложения VPN теперь отображаются в разделе
-<strong>Настройки > Другие сети > VPN</strong>.
-Кроме того, сведения в уведомлениях об использовании VPN теперь зависят от настроек самой VPN.
- Для владельца профиля уведомления зависят от того, настроена ли VPN для
-управляемого профиля, личного профиля или же того и другого. Для владельца устройства уведомления зависят от того, настроена ли VPN для
-всего устройства.</li>
-<li><strong>Уведомление о состоянии «В работе».</strong> Теперь, когда приложения
-из управляемого профиля выполняет операцию в фоновом режиме, в строке состояния появляется значок портфеля. Кроме того, если после разблокировки устройства
-открывается операция приложения из управляемого профиля, отображается всплывающее уведомление о том,
-что операция выполняется в рабочем профиле.
-</li>
-</ul>
-
-<p class="note">
- Подробные сведения обо всех изменениях в API-интерфейсах в версии M Developer Preview представлены в <a href="{@docRoot}preview/download.html">отчете о различиях между API-интерфейсами</a>.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/backup/index.jd b/docs/html-intl/intl/ru/preview/backup/index.jd
deleted file mode 100644
index 1f9dacc..0000000
--- a/docs/html-intl/intl/ru/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=Автоматическое резервное копирование для приложений
-page.tags=backup, previewresources, androidm
-page.keywords=резервное копирование, автоматическое резервное копирование, предварительная версия
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Содержание документа</h2>
- <ol>
- <li><a href="#overview">Обзор</a></li>
- <li><a href="#configuring">Настройка резервного копирования данных</a></li>
- <li><a href="#testing">Тестирование конфигурации резервного копирования</a></li>
- <li><a href="#issues">Известные проблемы</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Пользователи зачастую тратят очень много времени и усилий на создание данных и настройку параметров в приложениях.
- Поэтому одна из важнейших задач при разработке платформы — сделать так, чтобы пользователь не терял свои данные, если его устройство вышло из строя или он решил перейти на новое.
- Устройства под управлением Android M Preview
-отлично справляются с этой задачей, автоматически выполняя резервное копирование данных
-приложения в Google Drive. Если пользователь перейдет на новое устройство, данные приложений будут автоматически перенесены
-на него.
-</p>
-
-<p>
- Автоматическое резервное копирование предусмотрено для всех приложений, установленных на устройствах под управлением Android M Preview. При этом
-вам не нужно добавлять в приложение дополнительный код. Система сама предложит пользователю возможность включить или отключить
-автоматическое резервное копирование данных. Вы также можете указать, для каких данных приложения следует создавать резервные копии, а для каких — нет.
-</p>
-
-<p>
- В этой статье описывается новое поведение системы и порядок указания данных приложения,
-подлежащих резервному копированию.
-</p>
-
-<h2 id="overview">Обзор</h2>
-
-<p>
- При автоматическом резервном копировании данные, создаваемые в вашем приложении на устройстве пользователя, отпраляются в
-Google Drive пользователя и происходит их шифрование, что позволяет предотварить потерю данных. Хранилище для ваших данных предоставляется совершенно
-бесплатно. Более того, данные резервного копирования засчитываются вне личной квоты пользователя на использование ресурсов Google Drive. В период использования M Developer Preview
-пользователи могут хранить в облаке до 25 МБ данных для каждого приложения Android.
-</p>
-
-<p>
- Автоматическое резервное копирование выполняется каждые 24 часа, когда устройство не используется, находится в режиме зарядки и подключено к сети
-Wi-Fi. При соблюдении необходимых условий служба диспетчера резервного копирования отправляет все доступные резервные копии данных
-в облако. Когда пользователь переходит на использование нового устройства или удаляет и заново устанавливает
-приложение, для которого имеется резервная копия, выполняется операция восстановления и резервные копии данных переносятся в каталог
-переустановленного приложения.
-</p>
-
-<p class="note">
- <strong>Примечание.</strong> Если ваше приложение использует устаревшую
-<a href="{@docRoot}google/backup/index.html">службу резервного копирования Android</a>, то
-вместо нового поведения системы будет применяться существующий механизм резервного копирования.
-</p>
-
-
-<h3 id="auto-exclude">Автоматически исключаемые файлы данных</h3>
-
-<p>
- Не все данные приложения подлежат резервному копированию. В частности, временные файлы и кэш сохранять не нужно. Поэтому служба
-автоматического резервного копирования по умолчанию исключает из этого процесса определенные файлы данных:
-</p>
-
-<ul>
- <li>файлы в каталогах, на которые ссылаются методы {@link android.content.Context#getCacheDir
-getCacheDir()} и {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()};
-
- </li>
-
- <li>файлы во внешнем хранилище, кроме файлов, находящихся в каталогах, на которые ссылается метод
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()};
-
- </li>
-
- <li>файлы в каталоге, на который ссылается метод
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()}.
- </li>
-</ul>
-
-<h2 id="configuring">Настройка резервного копирования данных</h2>
-
-<p>
- Резервные копии создаются для данных, создаваемых любым приложением, которое установлено на устройстве под управлением M Preview, исключение составляют только
-файлы, обозначенные в предыдущем разделе. Если вы хотите самостоятельно определить,
-какие данные вашего приложения подлежат резервному копированию, а какие нет, это можно сделать с помощью соответствующих настроек в манифесте приложения.
-</p>
-
-<h3 id="include-exclude">Включение или исключение данных</h3>
-
-<p>
- В зависимости о того, какие данные требуются вашему приложению и как вы их сохраняете, вам может потребоваться задать определенные правила
-для включения или исключения определенных файлов или каталогов. Служба автоматического резервного копирования
-поддерживает настройку таких правил посредством XML-файла конфигурации и
-манифеста приложения. В манифесте приложения можно указать файл конфигурации схемы резервного копирования, как показано в примере
-ниже.
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- В этом примере кода атрибут <code>android:fullBackupContent</code> задает XML-файл,
-расположенный в каталоге <code>res/xml/</code> проекта приложения, который называется
-<code>mybackupscheme.xml</code>. В этом файле конфигурации содержатся правила резервного
-копирования файлов. В следующем примере кода демонстрируется файл конфигурации, в котором из процесса резервного копирования исключается определенный
-файл:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- В этом примере конфигурации резервного копирования из операции исключается только определенный файл базы данных.
- Для всех остальных файлов будут создаваться резервные копии.
-</p>
-
-<h4>Синтаксис конфигурации резервного копирования</h4>
-
-<p>
- Служба резервного копирования предоставляет вам возможность указать, какие файлы следует включить в процесс резервного копирования или
-исключить из него. Синтаксис XML-файла конфигурации резервного копирования данных следующий:
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- С помощью перечисленных ниже элементов и атрибутов можно указать файлы, которые вы хотите включить в процесс резервного копирования или исключить из
-него:
-</p>
-
-<ul>
- <li>
- <code><include></code>: используйте этот элемент, если хотите, чтобы система не создавала резервные копии всех данных в вашем приложении, как это происходит по умолчанию, а копировала только определенный набор данных.
- Если указан тег
-<code><include></code>, система создает резервные копии <em>только для ресурсов</em>
-с этим элементом.
- </li>
-
- <li>
- <code><exclude></code>: используйте этот элемент, чтобы указать набор ресурсов, которые
-следует исключить из процесса резервного копирования. В таком случае система будет создавать резервные копии всех данных в приложении, кроме ресурсов с этим
-элементом;
- </li>
-
- <li>
- <code>domain.</code>: тип ресурса, который необходимо включить в резервное копирование или исключить из него. Допустимые
-значения для этого атрибута могут быть следующие:
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>: указывает на то, что ресурс находится в корневом каталоге приложения;
- </li>
-
- <li>
- <code>file</code>: соответствует ресурсу в каталоге, возвращаемом методом
-{@link android.content.Context#getFilesDir getFilesDir()};
- </li>
-
- <li>
- <code>database</code>: соответствует базе данных, возвращаемой методом
-{@link android.content.Context#getDatabasePath getDatabasePath()} или классом
-{@link android.database.sqlite.SQLiteOpenHelper};
- </li>
-
- <li>
- <code>sharedpref</code>: соответствует объекту {@link android.content.SharedPreferences},
-возвращаемому методом
-{@link android.content.Context#getSharedPreferences getSharedPreferences()};
- </li>
-
- <li>
- <code>external</code>: указывает на то, что ресурс находится во внешнем хранилище, и соответствует
-файлу в каталоге, возвращаемом методом
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()};
- </li>
-
- <li>
- <code>path</code>: путь к ресурсу, который необходимо включить в резервное копирование или исключить
-из него.
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">Запрет резервного копирования данных</h3>
-
-<p>
- Можно запретить автоматическое резервное копирование любых данных приложения. Для этого в манифесте в элементе приложения задайте для атрибута
-<code>android:allowBackup</code> значение<code>false</code>.
- Как это делается, видно в примере кода ниже:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">Тестирование конфигурации резервного копирования</h2>
-
-<p>
- После создания конфигурации резервного копирования необходимо ее протестировать и убедиться, что ваше приложение сохраняет данные и впоследствии
-они могут быть должным образом восстановлены.
-</p>
-
-
-<h4>Включение журнала резервного копирования</h4>
-
-<p>
- Чтобы упростить для себя анализ обработки вашего XML-файла функцией резервного копирования, прежде чем приступать к тестированию,
-включите ведение журнала:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>Тестирование резервного копирования</h4>
-
-<p>Чтобы вручную запустить процесс резервного копирования, сначала активируйте диспетчер резервного копирования, выполнив следующую
-команду:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- Затем вручную выполните резервное копирование вашего приложения с помощью следующей команды, указав название
-пакета в виде параметра <code><PACKAGE></code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>Тестирование восстановления</h4>
-
-<p>
- Чтобы вручную запустить процесс восстановления после резервного копирования данных приложения, выполните следующую команду, указав название
-пакета в виде параметра <code><PACKAGE></code>:
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>Предупреждение.</b> При выполнении этого действия перед операцией
-восстановления работа приложения будет остановлена и все его данные удалены.
-</p>
-
-<p>
- Чтобы запустить процесс восстановления, удалите ваше приложение и снова установите его. Данные
-приложения будут автоматически восстановлены из облака сразу по завершении установки.
-</p>
-
-
-<h4>Устранение неполадок резервного копирования</h4>
-
-<p>
- При возникновении проблем можно стереть резервные копии данных и все связанные с ними метаданные. Для этого
-отключите и повторного включите резервное копирование в разделе <strong>Настройки > Резервное копирование</strong>, восстановите заводские настройки устройства или выполните
-следующую команду:
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- Перед значением <code><TRANSPORT></code> должен быть префикс <code>com.google.android.gms</code>.
- Чтобы получить список транспорта, выполните следующую команду:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">Известные проблемы</h2>
-
-<p>Ниже перечислены известные проблемы в работе службы автоматического резервного копирования.</p>
-
-<ul>
- <li><strong>Google Cloud Messaging</strong>
-– существует проблема с приложениями, использующими Google Cloud Messaging для отправки push-уведомлений. Она связана с тем,
-что при резервном копировании кода регистрации, возвращаемого Google Cloud Messaging, может нарушиться отправка
-push-уведомлений для восстановленного приложения. Важно запросить у API-интерфейса новый код
-регистрации после установки приложения на новое устройство, что не выполняется в случае резервного копирования
-старого кода регистрации. Чтобы избежать этого, исключите код регистрации из списка файлов
-для резервного копирования.
- </li>
-</ul>
diff --git a/docs/html-intl/intl/ru/preview/behavior-changes.jd b/docs/html-intl/intl/ru/preview/behavior-changes.jd
deleted file mode 100644
index 0623ea7..0000000
--- a/docs/html-intl/intl/ru/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-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 »</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 <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</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>Настройки > Учетные записи</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/download.jd b/docs/html-intl/intl/ru/preview/download.jd
deleted file mode 100644
index 13872d1..0000000
--- a/docs/html-intl/intl/ru/preview/download.jd
+++ /dev/null
@@ -1,359 +0,0 @@
-page.title=Загрузки
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">Прежде чем приступить к загрузке и установке компонентов пакета SDK Android Preview,
-примите следующие положения и условия.</p>
-
- <h2 class="norule">Положения и условия</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-Это лицензионное соглашение для пакета SDK Android Preview (далее «Лицензионное соглашение»).
-
-1. Введение
-
-1.1. Лицензия на пакет SDK Android Preview (далее по тексту настоящего Лицензионного соглашения – «Preview», который включает системные файлы Android, пакеты API-интерфейсов и файлы библиотеки Preview, если такие доступны) передается в соответствии с положениями настоящего Лицензионного соглашения. Настоящее Лицензионное соглашение является юридически обязывающим договором между компанией Google и любым лицом, использующим Preview.
-
-1.2. В настоящем Лицензионном соглашении термин «Android» означает набор программного обеспечения Android для устройств, предлагаемый к использованию в рамках проекта Android Open Source Project, который доступен на веб-сайте http://source.android.com/ (сведения, размещенные на этом сайте, могут периодически обновляться).
-
-1.3. Под термином «Google» понимается корпорация Google Inc., главный офис которой находится по адресу 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States (США).
-
-2. Принятие лицензионного соглашения
-
-2.1. Использование Preview возможно только после принятия условий настоящего Лицензионного соглашения. Запрещается использовать Preview, если вы не согласны с указанными в настоящем документе условиями и положениями.
-
-2.2. Нажатие кнопки принятия условий и/или использование Preview означает, что вы согласны с положениями настоящего Лицензионного соглашения.
-
-2.3. Вы не вправе использовать Preview и принимать условия данного Лицензионного соглашения, если по законам США или иных стран, включая страну вашего проживания или использования Preview, запрещается передавать Preview в ваш адрес.
-
-2.4. Если вы используете Preview в рамках своей компании или организации, вы соглашаетесь взять на себя обязательства по соблюдению настоящего Лицензионного соглашения от имени своего работодателя или другого юридического лица, и вы тем самым подтверждаете и гарантируете, что обладаете полными юридическими полномочиями связать вашего работодателя или иное подобное юридическое лицо обязательствами по настоящему Лицензионному соглашению. Если вы не обладаете необходимыми полномочиями, вы не вправе принимать указанные в настоящем документе условия и положения или использовать Preview от имени вашего работодателя или другого юридического лица.
-
-3. Лицензия на Preview от Google
-
-3.1. В соответствии с условиями настоящего Лицензионного соглашения Google предоставляет вам ограниченную, бесплатную и неэксклюзивную лицензию без права передачи и подлежащую отмене, на использование Preview, лично или в рамках своей компании или организации, исключительно в целях разработки приложений для платформы Android.
-
-3.2. Вы соглашаетесь с тем, что Google или третьим сторонам принадлежат все юридические и имущественные права, а также правовой интерес в отношении Preview, в том числе любые права на объекты интеллектуальной собственности, которые имеются в Preview. Термин «Права на интеллектуальную собственность» означает все возможные права в рамках патентного права, авторского права, закона о коммерческой тайне, закона о товарных знаках, а также иные возможные имущественные права. Google оставляет за собой все права, не предоставленные вам в явном виде.
-
-3.3. Вам запрещается использовать Preview в любых целях, которые однозначно не определены в настоящем Лицензионном соглашении. За исключением случаев, предусмотренных применимыми сторонними лицензиями, вам запрещается: (a) копировать (кроме случаев резервного копирования), изменять, адаптировать, повторно распространять, декомпилировать, осуществлять инженерный анализ, деассемблировать или создавать производные элементы Preview или иной его части; а также (b) загружать любую часть Preview в мобильные телефоны или иные устройства, помимо персонального компьютера, объединять любые части Preview с другим программным обеспечением, распространять любое программное обеспечение или устройства, содержащие части Preview.
-
-3.4. Вы соглашаетесь с тем, что не будете предпринимать никаких действий, которые прямо или косвенно могут привести к фрагментированию платформы Android, включая помимо прочего распространение набора средств разработки программного обеспечения, полученного из Preview, участие в создании таких средств и содействие их продвижению в любой форме.
-
-3.5. Использование, воспроизведение и распространение компонентов Preview, на которые распространяется лицензия на программное обеспечение с открытым исходным кодом, регулируются исключительно положениями и условиями такой лицензии на программное обеспечение с открытым исходным кодом, а не настоящим Лицензионным соглашением. Вы соглашаетесь обеспечивать хорошую репутацию получателя лицензии в отношении таких лицензии на программное обеспечение с открытым исходным кодом в рамках всех предоставленных ему прав, а также не допускать каких-либо действий, которые могут привести к аннулированию, приостановлению или нарушению таких прав
-
-3.6. Вы соглашаетесь с тем, что форма и содержание Preview , предоставляемого Google, могут быть изменены без предварительного уведомления, а также с тем, что будущие версии Preview могут оказаться несовместимыми с приложениями, разработанными в предыдущих версиях Preview. Вы соглашаетесь с тем, что Google вправе по собственному усмотрению и без предварительного уведомления прекратить (временно или навсегда) предоставление Preview (или любых функций в составе Preview) вам или пользователям.
-
-3.7. Ни одна из частей настоящего Лицензионного соглашения не предусматривает предоставления вам права использовать любые торговые наименования, товарные знаки, знаки обслуживания, логотипы, имена доменов или иные отличительные фирменные знаки, принадлежащие Google.
-
-3.8. Вы соглашаетесь с тем, что обязуетесь не удалять, не скрывать или не изменять любые уведомления об имущественных правах (включая уведомления об авторских правах и товарных знаках), которые могут сопровождать Preview или содержаться в нем.
-
-4. Использование Preview
-
-4.1. Компания Google выражает согласие с тем, что ни по какому положению настоящего Лицензионного соглашения не получает от вас (или ваших лицензиаров) каких-либо юридических и имущественных прав, а также правового интереса в отношении любых программных приложений, разработанных вами с помощью Preview, включая любые права на объекты интеллектуальной собственности, которые имеются в таких приложениях.
-
-4.2. Вы соглашаетесь использовать Preview и создавать приложения исключительно в целях, предусмотренных (a) настоящим Лицензионным соглашением и (b) любым применимым законом, нормативным актом или общепринятыми правилами или рекомендациями в соответствующей юрисдикции (включая любые законы, касающиеся экспорта данных или программного обеспечения из США или иных соответствующих стран, а также импорта в них).
-
-4.3. Вы соглашаетесь с тем, что при использовании Preview для разработки приложений вы обязуетесь обеспечивать конфиденциальность и защищать юридические права пользователей. В случае, если пользователи предоставляют вам свои имена, пароли или иные данные для входа либо свои персональные данные, вы обязуетесь уведомить пользователей о том, что такая информация будет присутствовать в вашем приложении, и вы также обязуетесь предоставить пользователям юридически соответствующие уведомление о конфиденциальности и средства правовой защиты. Если в вашем приложении хранится личная или конфиденциальная информация, предоставленная пользователями, вы обязуетесь обеспечить ее надлежащую защиту. Если пользователь предоставляет вам сведения о своей учетной записи Google, то ваше приложение может использовать такую информацию для доступа к учетной записи Google пользователя только при условии, что пользователь предоставил вам разрешение на это, и только в тех целях, которые обозначил пользователь.
-
-4.4. Вы соглашаетесь с тем, что обязуетесь не использовать Preview для любого рода деятельности, в том числе для разработки или распространения приложений, в целях нарушения работы и повреждения серверов, сетей или иной собственности или служб Google или любой третьей стороны.
-
-4.5. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любые данные, содержимое или ресурсы, которые вы создаете, передаете или демонстрируете посредством Android и/или приложений для Android, а также за любые последствия ваших действий, связанных с этим (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.6. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любое несоблюдение обязательств по настоящему Лицензионному соглашению, обязательств по любому применимому договору с третьей стороной или предусмотренных Условиями и положениями, за нарушение любых применимых законов или нормативных актов, а также за любые последствия ваших действий, связанных с таким нарушением (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.7 Preview находится на стадии разработки, поэтому ваши отзывы и результаты тестирования являются важной частью процесса разработки. Используя Preview, вы признаете, что реализация некоторых функций по-прежнему находится на этапе разработки и вам не следует рассчитывать на полную функциональность стабильной версии. Вы соглашаетесь не распространять или предоставлять любые приложения, использующие Preview, поскольку поддержка Preview будет прекращена после выпуска официальной версии пакета SDK Android.
-
-5. Ваши учетные данные разработчика
-
-5.1. Вы соглашаетесь с тем, что несете ответственность за обеспечение конфиденциальности любых учетных данных разработчика, которые компания Google может вам предоставить или которые вы можете самостоятельно выбрать, а также с тем, что вы несете единоличную ответственность за все приложения, разработанные с использованием ваших учетных данных разработчика.
-
-6. Конфиденциальность и личная информация
-
-6.1. В целях постоянного совершенствования и улучшения Preview компания Google вправе собирать определенные статистические данные об использовании программного обеспечения, включая уникальный идентификатор, связанный IP-адрес, номер версии программного обеспечения, а также сведения об используемых в Preview инструментах и/или службах и способах их применения. Перед тем как любые из таких данных будут отправлены в Google, в Preview отобразится соответствующее уведомление с просьбой дать свое согласие. В случае вашего отказа предоставить такие сведения соответствующие данные собираться не будут.
-
-6.2. Собранные данные изучаются в обобщенном виде с целью улучшения Preview и хранятся в соответствии с Политикой конфиденциальности Google, которая опубликована на веб-сайте по адресу http://www.google.com/policies/privacy/.
-
-7. Сторонние приложения
-
-7.1. Если вы используете Preview для запуска приложений, разработанных третьими сторонами или получающих доступ к данным, содержимому или ресурсам, предоставляемым третьей стороной, вы соглашаетесь с тем, что Google не несет ответственности за такие приложения, данные, содержимое или ресурсы. Вы осознаете, что единоличную ответственность за все данные, содержимое или ресурсы, доступ к которым вы можете получить посредством таких приложений третьих сторон, несет лицо, предоставившее их, а также то, что Google не несет ответственности за любые убытки или любой ущерб, которые могут возникнуть в результате использования вами любых таких сторонних приложений, данных, содержимого или ресурсов и в результате обращения к ним.
-
-7.2. Вы должны быть осведомлены о том, что данные, содержимое и ресурсы, предоставляемые вам посредством таких сторонних приложений, могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие предоставляющим их лицам (или иным лицам либо компаниям от их имени). Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные, содержимое или ресурсы (полностью или частично), а также создавать на их основе производные элементы, если у вас нет на это разрешения от соответствующих владельцев.
-
-7.3. Вы осознаете, что использование вами таких сторонних приложений, данных или ресурсов может регулироваться отдельными условиями, заключенными между вами и соответствующей третьей стороной.
-
-8. Использование API-интерфейсов Google
-
-8.1. API-интерфейсы для получения данных Google.
-
-8.1.1. В случае использования вами любых API для получения данных из Google вы осознаете, что такие данные могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие Google или предоставляющим их сторонам (или иным лицам либо компаниям от их имени). Использование вами подобных API может регулироваться дополнительными Условиями использования. Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные (полностью или частично), а также создавать на их основе производные элементы, если это не разрешено соответствующими Условиями использования.
-
-8.1.2. Если вы используете какие-либо API-интерфейсы для получения данных пользователя из Google, вы осознаете и соглашаетесь с тем, что вы обязуетесь получать такие данные исключительно с прямого согласия пользователя и только в тех целях, которые обозначил пользователь.
-
-9. Прекращение действия Лицензионного соглашения
-
-9.1 Настоящее Лицензионное соглашение остается в силе до тех пор, пока его действие не будет прекращено вами или Google, как указано ниже.
-
-9.2. Если вы желаете прекратить действие настоящего Лицензионного соглашения, вы вправе сделать это, прекратив использование Preview и любых соответствующих учетных данных разработчика.
-
-9.3. Google вправе в любое время прекратить действие настоящего Лицензионного соглашения, отправив предварительное уведомление или без него.
-
-9.4 Действие настоящего Лицензионного соглашения автоматически прекращается без предварительного уведомления или выполнения иных действий сразу после любого из следующих событий:
-(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям на территории страны, в которой вы проживаете или используете услуги компании;
-(B) компания Google выпускает окончательную версию SDK Android.
-
-9.5 В случае прекращения действия настоящего Лицензионного соглашения прекращается действие лицензии, предоставленной в рамках Лицензионного соглашения, и вам следует незамедлительно прекратить любое использование Preview, тогда как положения, изложенные в разделах 10, 11, 12 и 14 продолжают действовать бессрочно.
-
-10. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
-
-10.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ PREVIEW ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК И ЧТО PREVIEW ПРЕДОСТАВЛЯЕТСЯ ВАМ НА УСЛОВИЯХ «КАК ЕСТЬ» И «КАК ДОСТУПНО» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ СО СТОРОНЫ КОМПАНИИ GOOGLE.
-
-10.2 ИСПОЛЬЗОВАНИЕ ВАМИ PREVIEW И ЗАГРУЗКА ЛЮБЫХ МАТЕРИАЛОВ И ИХ ПОЛУЧЕНИЕ ИНЫМ СПОСОБОМ С ПОМОЩЬЮ PREVIEW ВЫПОЛНЯЕТСЯ ПО ВАШЕМУ СОБСТВЕННОМУ УСМОТРЕНИЮ НА СВОЙ СТРАХ И РИСК. ВСЯ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЙ УЩЕРБ, ПРИЧИНЕННЫЙ ВАШЕЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ ИЛИ ДРУГОМУ ОБОРУДОВАНИЮ, А ТАКЖЕ ЗА ПОТЕРЮ ДАННЫХ, ВЫЗВАННУЮ ПОДОБНЫМ ИСПОЛЬЗОВАНИЕМ, ВОЗЛАГАЕТСЯ НА ВАС. НЕ ОГРАНИЧИВАЯ ВЫШЕСКАЗАННОЕ, ВЫ ПОНИМАЕТЕ, ЧТО PREVIEW НЕ ЯВЛЯЕТСЯ СТАБИЛЬНЫМ ВЫПУСКОМ И МОЖЕТ СОДЕРЖАТЬ ОШИБКИ, ДЕФЕКТЫ И УЯЗВИМОСТИ В СИСТЕМЕ БЕЗОПАСНОСТИ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЕЗНЫМ ПОВРЕЖДЕНИЯМ, ВКЛЮЧАЯ ПОЛНУЮ И БЕЗВОЗВРАТНУЮ ПОТЕРЮ РАБОТОСПОСОБНОСТИ ВАШЕГО КОМПЬЮТЕРА ИЛИ ИНОГО УСТРОЙСТВА.
-
-10.3. КОМПАНИЯ GOOGLE БЕЗОГОВОРОЧНО ОТКАЗЫВАЕТСЯ ОТ ЯВНЫХ И НЕЯВНЫХ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО НЕЯВНЫЕ ГАРАНТИИ И УСЛОВИЯ ТОВАРНОГО СОСТОЯНИЯ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ СОБСТВЕННОСТИ.
-
-11. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
-
-11.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО КОМПАНИЯ GOOGLE, ЕЕ ДОЧЕРНИЕ И АФФИЛИРОВАННЫЕ КОМПАНИИ И ЛИЦЕНЗИАРЫ НЕ НЕСУТ ПЕРЕД ВАМИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ ЕЕ ПРИЧИНЫ И ВИДА, ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОПОСРЕДОВАННЫЕ И ШТРАФНЫЕ УБЫТКИ, ПОНЕСЕННЫЕ ВАМИ, ВКЛЮЧАЯ ПОТЕРЮ ДАННЫХ, ВНЕ ЗАВИСИМОСТИ ОТ ТОГО, БЫЛА ЛИ КОМПАНИЯ GOOGLE ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
-
-12 Освобождение от ответственности
-
-12.1. В максимально допустимой законом степени вы соглашаетесь защищать, освобождать от ответственности и возможных претензий компанию Google, ее аффилированные компании и их соответствующих руководителей, служащих, сотрудников и агентов от всех возможных правовых требований, действий, судебных исков или разбирательств, а также от всех возможных убытков, обязательств, ущерба, издержек и расходов (включая обоснованные вознаграждения для адвокатов), возникающих в связи (a) с использованием вами Preview, (b) любыми приложениями, разрабатываемыми вами с помощью Preview и нарушающими любые права на объекты интеллектуальной собственности любого лица, а также порочащие любое лицо либо нарушающие права таких лиц на публичность и конфиденциальность, а также (c) в связи с любым несоблюдением вами положений настоящего Лицензионного соглашения.
-
-13. Изменения в Лицензионном соглашении
-
-13.1. Компания Google вправе вносить изменения в настоящее Лицензионное соглашение по мере выхода новых версий Preview. При внесении изменений Google создает новую версию Лицензионного соглашения и размещает ее на веб-сайте, на котором размещен Preview.
-
-14. Общие правовые условия
-
-14.1. Настоящее Лицензионное соглашение составляет полный текст юридического соглашения между вами и компанией Google, регулирует использование вами Preview (за исключением услуг, которые Google предоставляет на основании отдельного письменного соглашения) и полностью заменяет собой все предыдущие соглашения между вами и компанией Google в отношении Preview.
-
-14.2. Вы соглашаетесь с тем, что отсутствие каких-либо действий или судебных исков со стороны Google, направленных на соблюдение каких-либо правовых норм или исполнение средств правовой защиты, установленных настоящим Лицензионным соглашением (или которыми Google обладает в соответствии с каким-либо действующим законом), не означает отказ компании Google от своих прав и не препятствует компании Google использовать эти права или средства защиты.
-
-14.3. Если какой-либо судебный орган, уполномоченный рассматривать этот вопрос, признает недействительность какого-либо положения данного Лицензионного соглашения, то соответствующее положение будет исключено из Лицензионного соглашения с сохранением действия всех остальных его положений. Остальные положения Лицензионного соглашения по-прежнему будут действовать, и их соблюдение может обеспечиваться в судебном порядке.
-
-14.4. Вы признаете и соглашаетесь с тем, что все участники группы компаний, среди которых Google является материнской компанией, являются сторонними бенефициарами Лицензионного соглашения и что эти компании имеют право пользоваться привилегиями (или правами), предоставляемыми по настоящему Лицензионному соглашению, и напрямую требовать их соблюдения в судебном порядке. Все остальные физические и юридические лица не являются сторонними бенефициарами Лицензионного соглашения.
-
-14.5. ОГРАНИЧЕНИЯ НА ЭКСПОРТ. ИСПОЛЬЗОВАНИЕ PREVIEW РЕГУЛИРУЕТСЯ ЗАКОНАМИ И НОРМАТИВНЫМИ АКТАМИ США, КАСАЮЩИМИСЯ ЭКСПОРТА. ВЫ ОБЯЗУЕТЕСЬ СОБЛЮДАТЬ ВСЕ НАЦИОНАЛЬНЫЕ И МЕЖДУНАРОДНЫЕ ЗАКОНЫ ОБ ЭКСПОРТЕ, ПРИМЕНИМЫЕ К PREVIEW. ДАННЫЕ ЗАКОНЫ НАЛАГАЮТ ОГРАНИЧЕНИЯ НА РЕГИОНЫ, КРУГ ЛИЦ И СПОСОБ КОНЕЧНОГО ИСПОЛЬЗОВАНИЯ.
-
-14.6. Вы не вправе переуступать либо передавать права, предоставляемые по настоящему Лицензионному соглашению, без предварительного письменного согласия Google; любые попытки переуступки без такого согласия считаются недействительными. Вы обязуетесь не делегировать свои полномочия или обязательства по настоящему Лицензионному соглашению без предварительного письменного согласия Google.
-
-14.7. Лицензионное соглашение, а также взаимоотношения между вами и компанией Google в рамках настоящего Лицензионного соглашения регулируются законодательством штата Калифорния за исключением его норм коллизионного права. Вы и компания Google признаете, что урегулирование любых правовых вопросов, связанных с данным Лицензионным соглашением, относится исключительно к юрисдикции судов округа Санта-Клара, штат Калифорния. Несмотря на это, вы соглашаетесь с тем, что компания Google по-прежнему имеет право обращаться за наложением судебного запрета (или за получением аналогичного вида неотложной судебной защиты) в суды любой юрисдикции.
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">Я прочитал(а) и принимаю изложенные выше положения и условия</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Содержание документа</h2>
- <ol>
- <li><a href="#sdk">SDK Preview</a></li>
- <li><a href="#docs">Документация для разработчиков</a></li>
- <li><a href="#images">Системные образы оборудования</a></li>
- </ol>
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- В состав SDK Android M Preview входят инструменты для разработки, системные файлы Android и файлы библиотеки, призванные
-помочь вам в тестировании ваших приложений и новых API-интерфейсов, которые будут реализованы в предстоящем выпуске платформы. В этом документе
-рассказывается, как загрузить необходимые компоненты Preview для тестирования ваших приложений.
-</p>
-
-
-<h2 id="sdk">SDK Preview</h2>
-
-<p>
- Загрузить SDK Preview можно с помощью <a href="{@docRoot}tools/help/sdk-manager.html">менеджера SDK Android</a>. Дополнительные сведения
-о загрузке и настройке SDK Preview представлены в статье <a href="{@docRoot}preview/setup-sdk.html#downloadSdk">Настройка SDK Preview</a>.
-</p>
-
-
-<h2 id="docs">Документация для разработчиков</h2>
-
-<p>
- В пакете документации для разработчиков, который доступен для загрузки, представлены подробные сведения об API-интерфейсах, а также о различиях между API-интерфейсами для Preview.
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-
-<h2 id="images">Системные образы оборудования</h2>
-
-<p>
- С помощью этих системных образов можно установить предварительную версию платформы на физическое устройство для
-тестирования. Используя один из этих образов для настройки устройства, вы можете установить и протестировать ваше приложение, чтобы узнать, как оно будет работать в будущей версии
-платформы. В процессе установки системного образа
-<em>на устройстве удаляются все данные</em>, поэтому перед установкой образа обязательно сделайте резервное копирование данных.
-
-</p>
-
-<p class="warning">
- <b>Предупреждение.</b> Перечисленные ниже системные образы Android являются предварительными и могут быть изменены. Использование вами
-этих образов регулируется Лицензионным соглашением на использование пакета SDK Android Preview. Системные образы предварительной версии Android
-не являются стабильными и могут содержать ошибки и дефекты,
-способные повредить ваши компьютеры, устройства и данные. Системные образы предварительной версии Android не проходят такое же тестирование,
-как заводская ОС. Поэтому в результате использования этих образов ваш телефон и установленные на нем приложения
-и службы могут перестать работать.
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">Установка образа на устройство</h3>
-
-<p>
- Чтобы воспользоваться образом устройства для тестирования, установите его на совместимое устройство. Следуйте
-инструкциям по установке системного образа.
-</p>
-
-<ol>
- <li>Загрузите и распакуйте один из указанных выше пакетов с системным образом.</li>
- <li>Создайте резервные копии данных, которые хотите сохранить.</li>
- <li>Следуйте инструкциям, приведенным на сайте
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>,
-чтобы прошить ваше устройство с использованием выбранного образа.</li>
-</ol>
-
-<p class="note">
- <strong>Примечание.</strong> После прошивки устройства для разработки с использованием системного образа с предварительной версией платформы
-она будет автоматически обновлена до следующего выпуска Preview по беспроводной сети.
-</p>
-
-<h3 id="revertDevice">Сброс параметров устройства до заводских настроек</h3>
-
-<p>
- Чтобы удалить Preview и восстановить заводские настройки устройства, перейдите на сайт
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a>
-и загрузите образ, который требуется использовать для прошивки. Следуйте инструкциям, приведенным на странице,
-чтобы прошить ваше устройство с использованием выбранного образа.
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/ru/preview/features/app-linking.jd b/docs/html-intl/intl/ru/preview/features/app-linking.jd
deleted file mode 100644
index f991717..0000000
--- a/docs/html-intl/intl/ru/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=Связи приложений
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=связывание приложений, прямые ссылки, намерения
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Содержание документа</h2>
- <ol>
- <li><a href="#web-assoc">Объявление связи с веб-сайтом</a></li>
- <li><a href="#verfy-links">Запрос проверки связи приложений</a></li>
- <li><a href="#user-manage">Настройки связи приложений</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Система намерений Android представляет собой гибкий механизм, позволяющий приложениям обрабатывать контент и запросы.
- Многие приложения могут объявлять в своих фильтрах намерений соответствующие шаблоны URI. При нажатии пользователем на веб-ссылку
-, у которой нет обработчика запуска по умолчанию, платформа может выдать ему диалоговое окно со списком доступных
- приложений, объявивших соответствующие фильтры намерений.
-</p>
-
-<p>
- В Android M Developer Preview представлена поддержка связей приложений. Она выгодно отличается от существующих методов обработки ссылок,
- предоставляя разработчикам возможность связывать приложение с принадлежащим им веб-доменом. Благодаря этой связи
-платформа автоматически, не спрашивая у пользователя, определит приложение, которое следует использовать по умолчанию для обработки определенной
-веб-ссылки.
-</p>
-
-
-<h2 id="web-assoc">Объявление связи с веб-сайтом</h2>
-
-<p>
- Чтобы установить связь, владельцу сайта следует объявить связь с приложением. Для этого владелец
-размещает в домене файл JSON с именем {@code statements.json}. Местопложение файла должно быть хорошо известно.
-
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>Примечание.</strong>
- В период использования M Developer Preview проверка файла JSON выполняется по протоколу HTTP. В официальном
-выпуске платформы она будет осуществляться по зашифрованному протоколу HTTPS.
-</p>
-
-<p>
- В этом файле JSON содержатся сведения о приложении Android, которое следует использовать в качестве обработчика по умолчанию для URL
-в этом домене. Для определения приложения используются следующие поля:
-</p>
-
-<ul>
- <li>{@code package_name}: имя пакета, объявленное в манифесте приложения;</li>
-
- <li>{@code sha256_cert_fingerprints}: контрольная сумма SHA256 сертификата, который использовался для подписи вашего приложения.
- Чтобы сгенерировать контрольную сумму, можно выполнить следующую команду в программе Java keytool:
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- Ниже представлен пример содержимого и формата файла
-{@code statements.json}.
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">Запрос проверки связи приложений</h2>
-
-<p>
- Приложение может отправить платформе запрос об автоматической проверке любых связей приложений, определенных в именах узлов в элементах данных
-его фильтров намерений, с использованием файлов {@code statements.json}, размещенных в
-соответствующих веб-доменах. Чтобы запросить проверку связи приложений, добавьте к каждому необходимому фильтру намерений в манифесте атрибут {@code android:autoVerify},
-как показано в следующем фрагменте кода
-манифеста:
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- Если в манифесте приложения присутствует атрибут {@code android:autoVerify}, платформа пытается
-проверить связи приложений при установке приложения. Если платформе не
-удается сделать это, приложение не выбирается в качестве предпочтительного для обработки веб-ссылок. В следующий раз, когда пользователь
-нажмет на одну из ссылок, платформа снова отобразит для него
-соответствующее диалоговое окно.
-</p>
-
-<p class="note">
- <strong>Примечание.</strong> При тестировании существует вероятность ложных срабатываний, когда проверка завершается
-сбоем, но при этом пользователь установил в системном приложении «Настройки» ваше приложение как используемое по умолчанию при вызове поддерживаемых ссылок
-. В таком случае диалоговое окно не отображается, а ссылка ведет напрямую в ваше приложение,
-однако это происходит из-за настроек пользователя и не означает, что проверка пройдена успешно.
-</p>
-
-
-<h2 id="user-manage">Настройки связи приложений</h2>
-
-<p>
- Пользователи могут изменить настройки связи приложений и выбрать предпочтительный для них способ обработки URL. Для просмотра связей приложений и управления ими
-можно воспользоваться системным приложением «Настройки» (в разделе <strong>Настройки > Приложения > Информация о приложении >
-Открывать по умолчанию</strong>.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd b/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd
deleted file mode 100644
index 7d12b2d..0000000
--- a/docs/html-intl/intl/ru/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-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>Приложения
-></strong> <i>название_приложения</i> <strong>> Разрешения</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><uses-permission-sdk-m></code>,
-чтобы указать, что разрешение требуется только для M Developer Preview. Если объявить
-разрешение таким способом, то при установке приложения на устройство с более старой версией платформы
-система не будет отправлять запрос пользователю или предоставлять разрешение приложению.
-С помощью элемента <code><uses-permission-sdk-m></code>
-вы можете добавлять новые разрешения
-в обновленные версии вашего приложения без принудительного запроса у пользователей разрешений при
-установке обновления.
-</p>
-
-<p>
- Если приложение запущено на устройстве под управлением M Developer Preview,
-поведение элемента <code><uses-permission-sdk-m></code> аналогично поведению
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code>.
- Система не запрашивает у пользователей предоставление каких-либо разрешений, когда они устанавливают
-приложение. Вместо этого приложение само запрашивает разрешения, когда они требуются.
-</p>
-
-<h3 id="prompting">
- Запрос разрешений
-</h3>
-
-<p>
- Если ваше приложение использует новую модель разрешений M Developer Preview, то при первом запуске приложения
-на устройстве под управлением
-M Preview пользователю не предлагается предоставить все разрешения. Вместо этого приложение само запрашивает разрешения, когда они
-требуются. Когда приложение запрашивает разрешение, система отображает для пользователя соответствующее диалоговое
-окно.
-</p>
-
-<p>
- Если ваше приложение запущено на устройстве с пакетом SDK уровня 22 или более низкого, то приложение использует старую
-модель разрешений. То есть при каждой устновке приложения пользователю будет предложено предоставить приложению все разрешения,
-запрашиваемые в манифесте приложения, кроме
-отмеченных элементом <code><uses-permission-sdk-m></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>
-@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 <path_to_apk>
-</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 <package_name> <permission_name>
-</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 <package_name> <permission_name>
-</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/index.jd b/docs/html-intl/intl/ru/preview/index.jd
deleted file mode 100644
index 138a5a6..0000000
--- a/docs/html-intl/intl/ru/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M Developer Preview
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M Developer Preview</h1>
- <p class="dac-hero-description">
- Подготовьтесь к выходу следующей версии платформы Android. Протестируйте ваши приложения на устройствах Nexus 5, 6, 9 и
-Player. Узнайте о новых возможностях:— <strong>разрешениях на выполнение</strong>,
-новых функциях энергосбережения — <strong>режим «Doze»</strong> и <strong>ждущий режим для приложений</strong>, о новом
-<strong>помощнике</strong> и о многом другом.
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Итак, приступим!
-</a><br>
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">Ресурсы</h1>
- <div class="dac-section-subtitle">
- Важная информация, которая поможет вам подготовить ваши приложения для работы в Android M.
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Сообщить о проблеме
-</a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- Присоединиться к сообществу в G+
-</a>
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/ru/preview/license.jd b/docs/html-intl/intl/ru/preview/license.jd
deleted file mode 100644
index fe9901b..0000000
--- a/docs/html-intl/intl/ru/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=Лицензионное соглашение
-
-@jd:body
-
-<p>
-Чтобы приступить к работе с пакетом SDK Android Preview, примите указанные ниже положения и условия.
-Как описано ниже, обратите внимание, что это предварительная версия пакета SDK Android, которая может быть изменена и которую вы используете на свой страх и риск. Пакет SDK Android Preview не является стабильным и может содержать ошибки и дефекты, которые могут повредить ваши компьютеры, устройства и данные.
-</p>
-
-<p>
-Это лицензионное соглашение для пакета SDK Android Preview (далее «Лицензионное соглашение»).
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. Введение
-
-1.1. Лицензия на пакет SDK Android Preview (далее по тексту настоящего Лицензионного соглашения – «Preview», который включает системные файлы Android, пакеты API-интерфейсов и файлы библиотеки Preview, если такие доступны) передается в соответствии с положениями настоящего Лицензионного соглашения. Настоящее Лицензионное соглашение является юридически обязывающим договором между компанией Google и любым лицом, использующим Preview.
-
-1.2. В настоящем Лицензионном соглашении термин «Android» означает набор программного обеспечения Android для устройств, предлагаемый к использованию в рамках проекта Android Open Source Project, который доступен на веб-сайте http://source.android.com/ (сведения, размещенные на этом сайте, могут периодически обновляться).
-
-1.3. Под термином «Google» понимается корпорация Google Inc., главный офис которой находится по адресу 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States (США).
-
-2. Принятие лицензионного соглашения
-
-2.1. Использование Preview возможно только после принятия условий настоящего Лицензионного соглашения. Запрещается использовать Preview, если вы не согласны с указанными в настоящем документе условиями и положениями.
-
-2.2. Нажатие кнопки принятия условий и/или использование Preview означает, что вы согласны с положениями настоящего Лицензионного соглашения.
-
-2.3. Вы не вправе использовать Preview и принимать условия данного Лицензионного соглашения, если по законам США или иных стран, включая страну вашего проживания или использования Preview, запрещается передавать Preview в ваш адрес.
-
-2.4. Если вы используете Preview в рамках своей компании или организации, вы соглашаетесь взять на себя обязательства по соблюдению настоящего Лицензионного соглашения от имени своего работодателя или другого юридического лица, и вы тем самым подтверждаете и гарантируете, что обладаете полными юридическими полномочиями связать вашего работодателя или иное подобное юридическое лицо обязательствами по настоящему Лицензионному соглашению. Если вы не обладаете требуемыми полномочиями, вы не вправе принимать указанные в настоящем документе условия и положения или использовать Preview от имени вашего работодателя или другого юридического лица.
-
-3. Лицензия на Preview от Google
-
-3.1. В соответствии с условиями настоящего Лицензионного соглашения Google предоставляет вам ограниченную, бесплатную и неэксклюзивную лицензию без права передачи и подлежащую отмене, на использование Preview, лично или в рамках своей компании или организации, исключительно в целях разработки приложений для платформы Android.
-
-3.2. Вы соглашаетесь с тем, что Google или третьим сторонам принадлежат все юридические и имущественные права, а также правовой интерес в отношении Preview, в том числе любые права на объекты интеллектуальной собственности, которые имеются в Preview. Термин «Права на интеллектуальную собственность» означает все возможные права в рамках патентного права, авторского права, закона о коммерческой тайне, закона о товарных знаках, а также иные возможные имущественные права. Google оставляет за собой все права, не предоставленные вам в явном виде.
-
-3.3. Вам запрещается использовать Preview в любых целях, которые однозначно не определены в настоящем Лицензионном соглашении. За исключением случаев, предусмотренных применимыми сторонними лицензиями, вам запрещается: (a) копировать (за исключением резервного копирования), изменять, адаптировать, повторно распространять, декомпилировать, осуществлять инженерный анализ, деассемблировать или создавать производные элементы Preview или иной его части; а также (b) загружать любую часть Preview в мобильные телефоны или иные устройства, помимо персонального компьютера, объединять любые части Preview с другим программным обеспечением, распространять любое программное обеспечение или устройства, содержащие части Preview.
-
-3.4. Вы соглашаетесь с тем, что не будете предпринимать никаких действий, которые прямо или косвенно могут привести к фрагментированию платформы Android, включая помимо прочего распространение набора средств разработки программного обеспечения, полученных из Preview, участие в создании таких средств и содействие их продвижению в любой форме.
-
-3.5. Использование, воспроизведение и распространение компонентов Preview, на которые распространяется лицензия на программное обеспечение с открытым исходным кодом, регулируются исключительно положениями и условиями такой лицензии на программное обеспечение с открытым исходным кодом, а не настоящим Лицензионным соглашением. Вы соглашаетесь обеспечивать хорошую репутацию получателя лицензии в отношении таких лицензии на программное обеспечение с открытым исходным кодом в рамках всех предоставленных ему прав, а также не допускать каких-либо действий, которые могут привести к аннулированию, приостановлению или нарушению таких прав
-
-3.6. Вы соглашаетесь с тем, что форма и содержание Preview , предоставляемого Google, могут быть изменены без предварительного уведомления, а также с тем, что будущие версии Preview могут оказаться несовместимыми с приложениями, разработанными в предыдущих версиях Preview. Вы соглашаетесь с тем, что Google вправе на свое собственное усмотрение и без предварительного уведомления прекратить (временно или навсегда) предоставление Preview (или любых функций в составе Preview) вам или пользователям.
-
-3.7. Ни одна из частей настоящего Лицензионного соглашения не предусматривает предоставления вам права использовать любые торговые наименования, товарные знаки, знаки обслуживания, логотипы, имена доменов или иные отличительные фирменные знаки, принадлежащие Google.
-
-3.8. Вы соглашаетесь с тем, что обязуетесь не удалять, не скрывать или не изменять любые уведомления об имущественных правах (включая уведомления об авторских правах и товарных знаках), которые могут сопровождать Preview или содержаться в нем.
-
-4. Использование Preview
-
-4.1. Компания Google выражает согласие с тем, что ни по какому положению настоящего Лицензионного соглашения не получает от вас (или ваших лицензиаров) каких-либо юридических и имущественных прав, а также правового интереса в отношении любых программных приложений, разработанных вами с помощью Preview, включая любые права на объекты интеллектуальной собственности, которые имеются в таких приложениях.
-
-4.2. Вы соглашаетесь использовать Preview и создавать приложения исключительно в целях, предусмотренных (a) настоящим Лицензионным соглашением и (b) любым применимым законом, нормативным актом или общепринятыми правилами или рекомендациями в соответствующей юрисдикции (включая любые законы, касающиеся экспорта данных или программного обеспечения из США или иных соответствующих стран, а также импорта в них).4.3. Вы соглашаетесь с тем, что при использовании Preview для разработки приложений вы обязуетесь обеспечивать конфиденциальность данных и защищать юридические права пользователей.
-
-4.3. Вы соглашаетесь с тем, что при использовании SDK для разработки приложений для неопределенного круга пользователей вы обязуетесь обеспечивать конфиденциальность данных и защищать юридические права таких пользователей. В случае если пользователи предоставляют вам свои имена, пароли или иные данные для входа либо свои персональные сведения, вы обязуетесь уведомить пользователей о том, что такая информация будет присутствовать в вашем приложении, и вы также обязуетесь предоставить таким пользователям юридически соответствующее уведомление о конфиденциальности и средства правовой защиты. Если в вашем приложении хранится персональная или конфиденциальная информация, предоставленная пользователями, вы обязуетесь обеспечить ее надлежащую защиту. Если пользователь предоставляет вам сведения о своей учетной записи Google, то ваше приложение может использовать такую информацию для доступа к учетной записи Google пользователя только тогда, когда пользователь предоставил вам разрешение на это, и только в тех целях, которые обозначил пользователь.
-
-4.4. Вы соглашаетесь с тем, что обязуетесь не использовать Preview для любого рода деятельности, в том числе для разработки или распространения приложений, в целях нарушения работы и повреждения серверов, сетей или иной собственности или служб Google или любой третьей стороны.
-
-4.5. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любые данные, содержимое или ресурсы, которые вы создаете, передаете или демонстрируете посредством Android и/или приложений для Android, а также за любые последствия ваших действий, связанных с этим (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.6. Вы соглашаетесь с тем, что несете единоличную ответственность (и признаете, что компания Google не несет ответственности ни перед вами, ни перед любой третьей стороной) за любое несоблюдение обязательств по настоящему Лицензионному соглашению, обязательств по любому применимому договору с третьей стороной или предусмотренных Условиями и положениями, за нарушение любых применимых законов или нормативных актов, а также за любые последствия ваших действий, связанных с таким нарушением (в том числе за любые убытки и любой ущерб, которые могут быть причинены Google).
-
-4.7 Preview находится на стадии разработки, поэтому ваши отзывы и результаты тестирования являются важной частью процесса разработки. Используя Preview, вы признаете, что реализация некоторых функций по-прежнему находится на этапе разработки и вам не следует рассчитывать на полную функциональность стабильной версии. Вы соглашаетесь не распространять или предоставлять любые приложения, использующие Preview, поскольку поддержка Preview будет прекращена после выпуска официальной версии пакета SDK Android.
-
-5. Ваши учетные данные разработчика
-
-5.1. Вы соглашаетесь с тем, что несете ответственность за обеспечение конфиденциальности любых учетных данных разработчика, которые компания Google может вам предоставить или которые вы можете самостоятельно выбрать, а также с тем, что вы несете единоличную ответственность за все приложения, разработанные с использованием ваших учетных данных разработчика.
-
-6. Конфиденциальность и личная информация
-
-6.1. В целях постоянного совершенствования и улучшения Preview компания Google вправе собирать определенные статистические данные об использовании программного обеспечения, включая уникальный идентификатор, связанный IP-адрес, номер версии программного обеспечения, а также сведения об используемых в Preview инструментах и/или службах и способах их применения. Перед тем как любые из таких данных будут отправлены в Google, в Preview отобразится соответствующее уведомление с просьбой дать свое согласие. В случае вашего отказа предоставить такие сведения соответствующие данные собираться не будут.
-
-6.2. Собранные данные изучаются в обобщенном виде с целью улучшения Preview и хранятся в соответствии с Политикой конфиденциальности Google, которая опубликована на веб-сайте по адресу http://www.google.com/policies/privacy/.
-
-7. Сторонние приложения
-
-7.1. Если вы используете Preview для запуска приложений, разработанных третьими сторонами или получающих доступ к данным, содержимому или ресурсам, предоставляемым третьей стороной, вы соглашаетесь с тем, что Google не несет ответственности за такие приложения, данные, содержимое или ресурсы. Вы осознаете, что единоличную ответственность за все данные, содержимое или ресурсы, доступ к которым вы можете получить посредством таких приложений третьих сторон, несет лицо, предоставившее их, а также то, что Google не несет ответственности за любые убытки или любой ущерб, которые могут возникнуть в результате использования вами любых таких сторонних приложений, данных, содержимого или ресурсов и в результате обращения к ним.
-
-7.2. Вы должны быть осведомлены о том, что данные, содержимое и ресурсы, предоставляемые вам посредством таких сторонних приложений, могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие предоставляющим их лицам (или иным лицам либо компаниям от их имени). Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные, содержимое или ресурсы (полностью или частично), а также создавать на их основе производные элементы, если у вас нет на это разрешения от соответствующих владельцев.
-
-7.3. Вы осознаете, что использование вами таких сторонних приложений, данных или ресурсов может регулироваться отдельными условиями, заключенными между вами и соответствующей третьей стороной.
-
-8. Использование API-интерфейсов Google
-
-8.1. API-интерфейсы для получения данных Google.
-
-8.1.1. В случае использования вами любых API для получения данных из Google вы осознаете, что такие данные могут быть защищены правами на объекты интеллектуальной собственности, принадлежащие Google или предоставляющим их сторонам (или иным лицам либо компаниям от их имени). Использование вами подобных API может регулироваться дополнительными Условиями использования. Вам запрещается изменять, сдавать в аренду, передавать, продавать, распространять такие данные (полностью или частично), а также создавать на их основе производные элементы, если это не разрешено соответствующими Условиями использования.
-
-8.1.2. Если вы используете какие-либо API-интерфейсы для получения данных пользователя из Google, вы осознаете и соглашаетесь с тем, что вы обязуетесь получать такие данные исключительно с прямого согласия пользователя и только в тех целях, которые обозначил пользователь.
-
-9. Прекращение действия Лицензионного соглашения
-
-9.1 Настоящее Лицензионное соглашение остается в силе до тех пор, пока его действие не будет прекращено вами или Google, как указано ниже.
-
-9.2. Если вы желаете прекратить действие настоящего Лицензионного соглашения, вы вправе сделать это, прекратив использование Preview и любых соответствующих учетных данных разработчика.
-
-9.3. Google вправе в любое время прекратить действие настоящего Лицензионного соглашения, отправив предварительное уведомление или без него.
-
-9.4 Действие настоящего Лицензионного соглашения автоматически прекращается без предварительного уведомления или выполнения иных действий сразу после следующего:
-(A) компания Google прекращает предоставление Preview или определенных частей Preview пользователям в той стране, в которой вы проживаете или используете услуги компании;
-(B) компания Google выпускает окончательную версию SDK Android.
-
-9.5 В случае прекращения действия настоящего Лицензионного соглашения прекращается действие лицензии, предоставленной в рамках Лицензионного соглашения, и вам следует незамедлительно прекратить любое использование Preview, тогда как положения, изложенные в разделах 10, 11, 12 и 14 продолжают действовать бессрочно.
-
-10. ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
-
-10.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО ВЫ ИСПОЛЬЗУЕТЕ PREVIEW ИСКЛЮЧИТЕЛЬНО НА СВОЙ СТРАХ И РИСК И ЧТО PREVIEW ПРЕДОСТАВЛЯЕТСЯ ВАМ НА УСЛОВИЯХ «КАК ЕСТЬ» И «КАК ДОСТУПНО» БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ СО СТОРОНЫ КОМПАНИИ GOOGLE.
-
-10.2 ИСПОЛЬЗОВАНИЕ ВАМИ PREVIEW И ЗАГРУЗКА ЛЮБЫХ МАТЕРИАЛОВ И ИХ ПОЛУЧЕНИЕ ИНЫМ СПОСОБОМ С ПОМОЩЬЮ PREVIEW ВЫПОЛНЯЕТСЯ ПО ВАШЕМУ СОБСТВЕННОМУ УСМОТРЕНИЮ НА СВОЙ СТРАХ И РИСК. ВСЯ ОТВЕТСТВЕННОСТЬ ЗА ЛЮБОЙ УЩЕРБ, ПРИЧИНЕННЫЙ ВАШЕЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЕ ИЛИ ДРУГОМУ ОБОРУДОВАНИЮ, А ТАКЖЕ ЗА ПОТЕРЮ ДАННЫХ, ВЫЗВАННУЮ ПОДОБНЫМ ИСПОЛЬЗОВАНИЕМ, ВОЗЛАГАЕТСЯ НА ВАС. НЕ ОГРАНИЧИВАЯ ВЫШЕСКАЗАННОЕ, ВЫ ПОНИМАЕТЕ, ЧТО PREVIEW НЕ ЯВЛЯЕТСЯ СТАБИЛЬНЫМ ВЫПУСКОМ И МОЖЕТ СОДЕРЖАТЬ ОШИБКИ, ДЕФЕКТЫ И УЯЗВИМОСТИ В СИСТЕМЕ БЕЗОПАСНОСТИ, КОТОРЫЕ МОГУТ ПРИВЕСТИ К СЕРЬЕЗНЫМ ПОВРЕЖДЕНИЯМ, ВКЛЮЧАЯ ПОЛНУЮ И БЕЗВОЗВРАТНУЮ ПОТЕРЮ РАБОТОСПОСОБНОСТИ ВАШЕГО КОМПЬЮТЕРА ИЛИ ИНОГО УСТРОЙСТВА.
-
-10.3. КОМПАНИЯ GOOGLE БЕЗОГОВОРОЧНО ОТКАЗЫВАЕТСЯ ОТ ЯВНЫХ И НЕЯВНЫХ ГАРАНТИЙ И УСЛОВИЙ ЛЮБОГО РОДА, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО НЕЯВНЫЕ ГАРАНТИИ И УСЛОВИЯ ТОВАРНОГО СОСТОЯНИЯ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ СОБСТВЕННОСТИ.
-
-11. ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОСТИ
-
-11.1. ВЫ ЧЕТКО ОСОЗНАЕТЕ И БЕЗОГОВОРОЧНО СОГЛАШАЕТЕСЬ С ТЕМ, ЧТО КОМПАНИЯ GOOGLE, ЕЕ ДОЧЕРНИЕ И АФФИЛИРОВАННЫЕ КОМПАНИИ И ЛИЦЕНЗИАРЫ НЕ НЕСУТ ПЕРЕД ВАМИ ОТВЕТСТВЕННОСТИ, НЕЗАВИСИМО ОТ ЕЕ ПРИЧИНЫ И ВИДА, ЗА КАКИЕ-ЛИБО ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОПОСРЕДОВАННЫЕ И ШТРАФНЫЕ УБЫТКИ, ПОНЕСЕННЫЕ ВАМИ, ВКЛЮЧАЯ ПОМИМО ПРОЧЕГО ПОТЕРЮ ДАННЫХ, ВНЕ ЗАВИСИМОСТИ ОТ ТОГО, БЫЛА ЛИ КОМПАНИЯ GOOGLE ИЛИ ЕЕ ПРЕДСТАВИТЕЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.
-
-12 Освобождение от ответственности
-
-12.1. В максимально допустимой законом степени вы соглашаетесь защищать, освобождать от ответственности и возможных претензий компанию Google, ее аффилированные компании и их соответствующих руководителей, служащих, сотрудников и агентов от всех возможных правовых требований, действий, судебных исков или разбирательств, а также от всех возможных убытков, обязательств, ущерба, издержек и расходов (включая обоснованные вознаграждения для адвокатов), возникающих (a) в связи с использованием вами Preview, (b) в связи с любыми приложениями, разрабатываемыми вами с помощью Preview и нарушающими любые права на объекты интеллектуальной собственности любого лица, а также порочащие любое лицо либо нарушающие права таких лиц на публичность и конфиденциальность, а также (c) в связи с любым несоблюдением вами положений настоящего Лицензионного соглашения.
-
-13. Изменения в Лицензионном соглашении
-
-13.1. Компания Google вправе вносить изменения в настоящее Лицензионное соглашение по мере выхода новых версий Preview. При внесении изменений Google создает новую версию Лицензионного соглашения и размещает ее на веб-сайте, на котором размещена Preview.
-
-14. Общие правовые условия
-
-14.1. Настоящее Лицензионное соглашение составляет полный текст юридического соглашения между вами и компанией Google, регулирует использование вами Preview (за исключением услуг, которые Google предоставляет на основании отдельного письменного соглашения) и полностью заменяет собой все предыдущие соглашения между вами и компанией Google в отношении Preview.
-
-14.2. Вы соглашаетесь с тем, что отсутствие каких-либо действий или судебных исков со стороны Google, направленных на соблюдение каких-либо правовых норм или исполнение средств правовой защиты, установленных настоящим Лицензионным соглашением (или которыми Google обладает в соответствии с каким-либо действующим законом), не означает отказ компании Google от своих прав и не препятствует компании Google использовать эти права или средства защиты.
-
-14.3. Если какой-либо судебный орган, уполномоченный рассматривать этот вопрос, признает недействительность какого-либо положения данного Лицензионного соглашения, то соответствующее положение будет исключено из Лицензионного соглашения с сохранением действия всех остальных его положений. Остальные положения Лицензионного соглашения по-прежнему будут действовать, и их соблюдение может обеспечиваться в судебном порядке.
-
-14.4. Вы признаете и соглашаетесь с тем, что все участники группы компаний, среди которых Google является материнской компанией, являются сторонними бенефициарами Лицензионного соглашения и что эти компании имеют право пользоваться привилегиями (или правами), предоставляемыми по настоящему Лицензионному соглашению, и напрямую требовать их соблюдения в судебном порядке. Все остальные физические и юридические лица не являются сторонними бенефициарами Лицензионного соглашения.
-
-14.5. ОГРАНИЧЕНИЯ НА ЭКСПОРТ. ИСПОЛЬЗОВАНИЕ PREVIEW РЕГУЛИРУЕТСЯ ЗАКОНАМИ И НОРМАТИВНЫМИ АКТАМИ США, КАСАЮЩИМИСЯ ЭКСПОРТА. ВЫ ОБЯЗУЕТЕСЬ СОБЛЮДАТЬ ВСЕ НАЦИОНАЛЬНЫЕ И МЕЖДУНАРОДНЫЕ ЗАКОНЫ ОБ ЭКСПОРТЕ, ПРИМЕНИМЫЕ К PREVIEW. ДАННЫЕ ЗАКОНЫ НАЛАГАЮТ ОГРАНИЧЕНИЯ НА РЕГИОНЫ, КРУГ ЛИЦ И СПОСОБ КОНЕЧНОГО ИСПОЛЬЗОВАНИЯ.
-
-14.6. Вы не вправе переуступать либо передавать права, предоставляемые по настоящему Лицензионному соглашению, без предварительного письменного согласия Google; любые попытки переуступки без такого согласия считаются недействительными. Вы обязуетесь не делегировать свои полномочия или обязательства по настоящему Лицензионному соглашению без предварительного письменного согласия Google.
-
-14.7. Лицензионное соглашение, а также взаимоотношения между вами и компанией Google в рамках настоящего Лицензионного соглашения регулируются законодательством штата Калифорния за исключением его норм коллизионного права. Вы и компания Google признаете, что урегулирование любых правовых вопросов, связанных с данным Лицензионным соглашением, относится исключительно к юрисдикции судов округа Санта-Клара, штат Калифорния. Несмотря на это, вы соглашаетесь с тем, что компания Google по-прежнему имеет право обращаться за наложением судебного запрета (или за получением аналогичного вида неотложной судебной защиты) в суды любой юрисдикции.
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/ru/preview/overview.jd b/docs/html-intl/intl/ru/preview/overview.jd
deleted file mode 100644
index d1345a2..0000000
--- a/docs/html-intl/intl/ru/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-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
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<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 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 1</strong> (первоначальный выпуск версии Preview, конец мая)
- </li>
-
- <li>
- <strong>Preview 2</strong> (конец июня/начало июля)
- </li>
-
- <li>
- <strong>Preview 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>
-—. Такие 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>
diff --git a/docs/html-intl/intl/ru/preview/samples.jd b/docs/html-intl/intl/ru/preview/samples.jd
deleted file mode 100644
index f8115e7..0000000
--- a/docs/html-intl/intl/ru/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Примеры
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- Ниже представлены примеры кода для M Developer Preview. Чтобы загрузить примеры в
-Android Studio, выберите <b>File > Import Samples</b>.
-</p>
-
-<p class="note">
- <strong>Примечание.</strong> Эти проекты предназначены для использования
-в Gradle и Android Studio.
-</p>
-
-
-<h3 id="RuntimePermissions">Разрешения на выполнение</h3>
-
-<p>
- В Android M изменился подход к использованию системных разрешений. Пользователям теперь предлагается предоставить разрешения
-во время выполнения, а не во время установки приложения. В примере ниже показано, как запрашивать такие разрешения.
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">Загрузить с сайта GitHub</a></p>
-
-<h3 id="ConfirmCredentials">Подтверждение учетных данных</h3>
-
-<p>
- В этом примере проиллюстрировано, как использовать учетные данные устройства для авторизации в приложении.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">Загрузить с сайта
-GitHub</a></p>
-
-<h3 id="FingerprintDialog">Диалоговое окно авторизации по отпечатку пальца</h3>
-
-<p>
- В этом примере показано, как распознавать зарегистрированные отпечатки пальцев для авторизации пользователя в
-приложении.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">Загрузить с сайта GitHub</a></p>
-
-<h3 id="AutomaticBackup">Автоматическое резервное копирование для приложений</h3>
-
-<p>
- В Android M представлена функция автоматического резервного копирования настроек приложений. В примере кода ниже показано,
-как добавить в приложение правила фильтрации для управления резервным копированием настроек.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">Загрузить с сайта GitHub</a></p>
-
-<h3 id="CameraRaw">Camera 2 RAW</h3>
-
-<p>
- В этом примере кода можно увидеть порядок использования API-интерфейса <code>Camera2</code> для получения буферов камеры RAW и сохранения их
-в виде файлов <code>DNG</code>.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">Загрузить с сайта GitHub</a></p>
-
-<h3 id="ActiveNotification">Активные уведомления</h3>
-
-<p>
- В примере кода ниже показано, как
-<a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
-может сообщить о количестве уведомлений, которое в настоящее время отображает ваше приложение.
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">Загрузить с сайта GitHub</a></p>
diff --git a/docs/html-intl/intl/ru/preview/setup-sdk.jd b/docs/html-intl/intl/ru/preview/setup-sdk.jd
deleted file mode 100644
index 1ffc2cd..0000000
--- a/docs/html-intl/intl/ru/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=Настройка пакета SDK Preview
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Содержание документа</h2>
- <ol>
- <li><a href="#get-as13">Загрузка Android Studio 1.3</a></li>
- <li><a href="#get-sdk">Загрузка пакета SDK Preview</a></li>
- <li><a href="#create-update">Создание или обновление проекта</a></li>
- <li><a href="#setup-test">Настройка для тестирования</a></li>
- </ol>
- </div>
-</div>
-
-<p>Пакет SDK M Developer Preview можно загрузить с помощью менеджера SDK Android.
-В этой статье мы исходим из того, что вы уже знакомы с разработкой приложений Android и умеете работать с
-менеджером SDK Android и создавать проекты. Тем, кто только начинает работу с
-Android, рекомендуется сначала обратиться к разделу <a href="{@docRoot}training/basics/firstapp/index.html">Создание
-первого приложения</a>.</a></p>
-
-<h2 id="get-as13">Загрузка Android Studio 1.3</h2>
-
-<p>Для работы Developer Preview лучше всего подходит Android Studio 1.3, которая, кстати,
-также является предварительной версией. Для работы с пакетом SDK Preview настоятельно рекомендуется установить предварительную версию
-Android Studio 1.3.</p>
-
-<p class="caution"><strong>Внимание!</strong> Предварительная версия Android
-Studio 1.3 (сборка Canary) по-прежнему находится на стадии разработки. Если для тестирования
- M Developer Preview вы используете свой основной компьютер для разработки, вы можете дополнительно установить
-Android Studio для целей тестирования.</p>
-
-<p>Порядок установки предварительной версии Android Studio 1.3</p>
-
-<ol>
- <li>Загрузите и запустите <a href="{@docRoot}tools/studio/index.html">Android
-Studio</a>.
- </li>
-
- <li>Откройте окно <strong>Settings</strong> (в ОС Windows для этого выберите
-<strong>File > Settings</strong>). Перейдите к панели
-<strong>Appearance & Behavior > System
-Settings > Updates</strong>.
-
- <p class="aside">В операционной системе OSX панель <strong>Appearance &
-Behavior</strong>
-находится в Android Studio в окне <strong>Preferences</strong>.</p>
- </li>
-
- <li> На панели <strong>Updates</strong> выберите
-<strong>Automatically check updates for: Canary Channel</strong>.
- </li>
-
- <li>На панели <strong>Updates</strong> выберите <strong>Check Now</strong>,
-чтобы проверить наличие актуальных обновлений для сборки Canary. При появлении соответствующего запроса загрузите
-и установите сборку.
- </li>
-</ol>
-
-<h2 id="get-sdk">Загрузка пакета SDK Preview</h2>
-
-<p>Порядок добавления компонентов SDK Preview в среду разработки</p>
-
-<ol>
- <li>Запустите предварительную версию Android Studio 1.3.
- </li>
-
- <li>Откройте окно <strong>Settings</strong> (в ОС Windows для этого выберите
-<strong>File > Settings</strong>). Перейдите к панели
-<strong>Appearance & Behavior > System
-Settings > Updates</strong>.
-
- <p class="aside">В операционной системе OSX панель <strong>Appearance &
-Behavior</strong>
-находится в Android Studio в окне <strong>Preferences</strong>.</p>
- </li>
-
- <li>На панели <strong>Updates</strong> выберите параметры
-<strong>Automatically check updates for: Canary Channel</strong> и
-<strong>Automatically check updates for Android SDK: Preview Channel</strong>.
- </li>
-
- <li>Запустите <strong>менеджер SDK Android</strong>. (Менеджер SDK входит в состав Android Studio 1.3;
-теперь это не отдельное
-приложение.)
- </li>
-
- <li>В разделе <strong>Platforms</strong> выберите <strong>Android MNC
-Preview</strong>.
- </li>
-
- <li>В разделе <strong>Tools</strong> выберите последние инструменты
-<strong>SDK Tools</strong>, <strong>Platform-tools</strong> и
-<strong>Build-tools</strong> для Android.
- </li>
-
- <li>Нажмите на кнопку <strong>Install packages</strong> и примите условия лицензионного соглашения
-для всех пакетов.
- </li>
-
- <li>Убедитесь, что платформа M Developer Preview установлена. Для этого откройте окно
-<strong>Settings</strong> и перейдите к панели<strong>Appearance & Behavior
-> System Settings > Android SDK</strong>.</li>
-
- <li>На панели <strong>Android SDK</strong> выберите вкладку
-<strong>SDK Platforms</strong>. Для элемента <strong>Android MNC
-Preview</strong> должно быть указано <em>Installed</em>. Кроме того, перейдите на вкладку
-<strong>SDK Tools</strong> и убедитесь в том, что установлены актуальные
-версии инструментов.
- </li>
-</ol>
-<p>После выполнения этих действий компоненты предварительной версии
-доступны для использования в вашей среде разработки. </p>
-
-
-<h2 id="create-update">Создание или обновление проекта</h2>
-
-<p>
- Если вы хотите воспользоваться API-интерфейсами предварительной версии, создайте или обновите проект разработки так, чтобы в нем использовались
-компоненты предварительной версии.
-</p>
-
-
-<h3 id="create">Создание нового проекта</h3>
-
-<p>
- Для создания проекта в предварительной версии рекомендуется использовать Android Studio. Выполните действия,
-приведенные в разделе <a href="{@docRoot}sdk/installing/create-project.html">Создание проекта</a>,
-пока в мастере проекта не появится экран <em>Form Factors</em>. Затем выполните
-действия по созданию проекта, настроенного для предварительной версии.
-</p>
-
-<ul>
- <li>Установите флажок <strong>Phone and Tablet</strong>.</li>
- <li>Выберите <strong>MNC: Android M (Preview)</strong> в разделе <strong>Minimum
-SDK</strong>.</li>
-</ul>
-
-
-<h3 id="update">Обновление существующего проекта</h3>
-
-<p>
- В существующем проекте следует изменить его конфигурацию и настроить его на использование API-интерфейсов предварительной версии. В
-среде разработки откройте файл <code>build.gradle</code> для вашего модуля и задайте
-значения следующим образом:
-</p>
-
-<ul>
- <li>для параметра <code>compileSdkVersion</code> задайте значение <code>'android-MNC'</code>;</li>
- <li>для параметра <code>minSdkVersion</code> задайте значение <code>'MNC'</code>;</li>
- <li>для параметра <code>targetSdkVersion</code> задайте значение <code>'MNC'</code>.</li>
-</ul>
-
-
-<h2 id="setup-test">Настройка для тестирования</h2>
-
-<p>
- Для тестирования приложения в предварительной версии необходимо физическое или виртуальное устройство, настроенное с помощью
-предварительной версии платформы. Если имеется совместимое устройство, можно установить предварительную версию
-платформы для тестирования. Для тестирования также можно настроить виртуальное устройство.
-</p>
-
-<h3 id="setup-device">Настройка физического устройства</h3>
-
-<p>
- Если у вас имеется устройство Nexus 5, Nexus 6, Nexus 9 или Android TV, для тестирования приложений вы можете установить на эти устройства
-системный образ предварительной версии.
-Также в Android Studio можно настроить виртуальное устройство с предварительной версией платформы,
-используя для этого диспетчер виртуальных устройств Android.
-</p>
-
-<p class="caution">
- <strong>Внимание!</strong> Установка на устройство образа с предварительной версией платформы <em>приведет к удалению всех данных с
-устройства</em>, поэтому перед установкой обязательно создайте резервные копии необходимых данных.
-</p>
-
-<h3 id="setupAVD">Настройка виртуального устройства</h3>
-
-<p>
- В Android Studio можно настроить виртуальное устройство с предварительной версией платформы,
-используя для этого диспетчер виртуальных устройств Android.
-</p>
-
-<p>Порядок настройки AVD в диспетчере AVD</p>
-
-<ol>
- <li>Установите SDK Preview в свою среду разработки, как описано в разделе
-<a href="{@docRoot}preview/setup-sdk.html">Настройка пакета
-SDK Preview</a>.</li>
- <li>Выполните действия, указанные в статье
-<a href="{@docRoot}tools/devices/managing-avds.html">Управление виртуальными устройствами с помощью диспетчера
-AVD</a>. Используйте следующие настройки:
- <ul>
- <li><strong>Device:</strong> Nexus 5, Nexus 6, Nexus 9 или Android TV</li>
- <li><strong>Target:</strong>
- Android M (Preview) – API Level M</li>
- <li><strong>ABI:</strong> x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- Дополнительные сведения о создании виртуальных устройств для тестирования представлены в статье <a href="{@docRoot}tools/devices/index.html">Управление виртуальными устройствами</a>.
-</p>
diff --git a/docs/html-intl/intl/ru/preview/testing/guide.jd b/docs/html-intl/intl/ru/preview/testing/guide.jd
deleted file mode 100644
index 8beb0ed..0000000
--- a/docs/html-intl/intl/ru/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=Руководство по тестированию
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=ресурсы для предварительной версии,androidm,тестирование,разрешения
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Содержание документа</h2>
- <ol>
- <li><a href="#runtime-permissions">Тестирование разрешений</a></li>
- <li><a href="#doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</a></li>
- <li><a href="#ids">Автоматическое резервное копирование и идентификаторы устройств</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android M Developer Preview предлагает вам проверить, как будут работать ваши приложения в следующей версии
-платформы. В ней реализован ряд изменений в API-интерфейсах и поведении системы,
-которые могут повлиять на работу вашего приложения, как описано в статьях <a href="{@docRoot}preview/api-overview.html">Обзор
-API-интерфейсов</a> и <a href="{@docRoot}preview/behavior-changes.html">Изменения в работе</a>. Если вы хотите обеспечить удобство работы пользователей, при тестировании
-вашего приложения в предварительной версии платформы
- обратите особое внимание на изменения в системе.
-</p>
-
-<p>
- В настоящем руководстве приводится порядок тестирования функций предварительной версии с помощью вашего приложения. Советуем при этом обратить особое внимание
-на работу следующих функций новой версии платформы, поскольку они в значительной мере повлияют на поведение
-вашего приложения:
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">разрешения</a>;
- </li>
- <li><a href="#doze-standby">режим «Doze» и ждущий режим для приложений</a>;
- </li>
- <li><a href="#ids">автоматическое резервное копирование и идентификаторы устройств</a>.</li>
-</ul>
-
-<p>
- Дополнительные сведения о том, как настроить физические или виртуальные устройства с помощью системного образа предварительной версии платформы
-к тестированию, представлены в статье <a href="{@docRoot}preview/setup-sdk.html">Настройка SDK Preview</a>.
-</p>
-
-
-<h2 id="runtime-permissions">Тестирование разрешений</h2>
-
-<p>
- В новой модели <a href="{@docRoot}preview/features/runtime-permissions.html">разрешений</a>
-изменился подход к тому, каким образом пользователи смогут предоставлять разрешения для вашего приложения. Если раньше пользователь мог предоставить сразу все
-разрешения в процессе установки, теперь ваше приложение должно запрашивать у него отдельные разрешения
-во время работы. Это позволяет пользователю контролировать каждую операцию приложения, а также
-лучше понимать, для чего приложение запрашивает то или иное разрешение. Пользователи могут в любой момент
-предоставить разрешения для отдельного приложения или отозвать их. Эта новая
-возможность в предварительной версии платформы, вероятнее всего, повлияет на поведение вашего приложения. Некоторые из его функций могут
-пострадать или перестать работать.
-</p>
-
-<p class="caution">
- Это касается работы всех приложений на новой платформе, даже тех, которые были разработаны для более ранних ее версий.
- Платформа обеспечивает ограниченную поддержку устаревших приложений, однако вам следует приступить к
-планированию перехода на новую модель разрешений уже сегодня, чтобы
-опубликовать обновленную версию вашего приложения к моменту официального выпуска новой платформы.
-</p>
-
-
-<h3 id="permission-test-tips">Советы по тестированию</h3>
-
-<p>
- Ниже представлены советы по тестированию, которые призваны помочь вам спланировать и провести тестирование вашего приложения с использованием новой
-модели разрешений.
-</p>
-
-<ul>
- <li>Определите текущие разрешения приложения и связанные с этим фрагменты кода.</li>
- <li>Протестируйте различные варианты работы пользователя со службами и данными, защищенными с помощью разрешений.</li>
- <li>Протестируйте различные сочетания предоставленных и отозванных разрешений.</li>
- <li>Воспользуйтесь инструментом {@code adb} для управления разрешениями из командной строки:
- <ul>
- <li>Получите список разрешений и их состояний по группам:
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>Предоставьте или отзовите одно или несколько разрешений с помощью следующего синтаксиса:<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>Проанализируйте работу вашего приложения со службами, использующими разрешения.</li>
-</ul>
-
-<h3 id="permission-test-strategy">Стратегия тестирования</h3>
-
-<p>
- Новая модель разрешений влияет на структуру и дизайн вашего приложения, а также на
-работу пользователей с приложением и предлагаемые им варианты взаимодействия с вашим продуктом. Проанализируйте, как ваше приложение использует разрешения в настоящее время,
-и продумайте новые варианты взаимодействия, которые хотите реализовать. В официальном выпуске
-платформы будет представлена поддержка совместимости, однако мы рекомендует запланировать обновление приложения, не полагаясь
-на эту поддержку.
-</p>
-
-<p>
- Определите круг разрешений, которые действительно необходимы для работы вашего приложения, и найдите фрагменты
-кода, где используются службы, защищенные разрешениями. Для этого протестируйте работу приложения на новой
-платформе и проанализируйте код. При тестировании следует сосредоточиться на использовании
-разрешений на выполнение путем изменения параметра {@code targetSdkVersion} приложения для использования предварительной версии. Дополнительные
-сведения представлены в статье <a href="{@docRoot}preview/setup-sdk.html#">Настройка SDK Preview</a>.
-</p>
-
-<p>
- Протестируйте работу приложения при различных сочетаниях предоставленных и отозванных разрешений, чтобы определить варианты работы пользователя,
-которые зависят от разрешений. В случаях, когда зависимость не явная или не логичная, подумайте, можно ли
-перестроить или структурировать такой вариант работы, чтобы устранить зависимость или четко обозначить,
-для чего требуется каждое разрешение.
-</p>
-
-<p>
- Дополнительные сведения о поведении разрешений на выполнение и тестировании, а также советы и рекомендации по данному вопросу представлены на странице
-<a href="{@docRoot}preview/features/runtime-permissions.html">Разрешения</a>.
-
-</p>
-
-
-<h2 id="doze-standby">Тестирование режима «Doze» и ждущего режима для приложений</h2>
-
-<p>
- Режим «Doze» и ждущий режим приложений, предназначенные для экономии энергии, ограничивают объем данных, обрабатываемых вашим приложением в фоновом режиме,
-когда устройство не используется или приложение неактивно. Ограничения,
-которые система может налагать на приложения, включают ограничение или отключение доступа к сети,
-приостановку выполнения фоновых задач, приостановку отправки уведомлений, игнорирование запросов на пробуждение и будильников. Чтобы гарантировать
-правильную работу приложения в условиях оптимизации энергопотребления, вам следует протестировать ваше приложение,
-смоделировав эти режимы.
-</p>
-
-<h4 id="doze">Тестирование работы приложения в режиме «Doze»</h4>
-
-<p>Ниже представлен порядок тестирования режима «Doze».</p>
-
-<ol>
-<li>Установите на физическое или виртуальное устройство системный образ M Preview.</li>
-<li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li>
-<li>Запустите ваше приложение и не закрывайте его.</li>
-<li>Смоделируйте переход устройства в режим «Doze», выполнив следующие команды:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>Понаблюдайте за поведением приложения после возвращения устройства в обычный режим. Убедитесь, что при выходе устройства из режима «Doze» приложение
-должным образом возобновляет свою работу .</li>
-</ol>
-
-
-<h4 id="standby">Тестирование работы приложения в ждущем режиме</h4>
-
-<p>Ниже представлен порядок тестирования ждущего режима для приложений.</p>
-
-<ol>
- <li>Установите на физическое или виртуальное устройство системный образ M Preview.</li>
- <li>Подключите устройство к компьютеру для разработки и установите ваше приложение.</li>
- <li>Запустите ваше приложение и не закрывайте его.</li>
- <li>Смоделируйте переход приложения в ждущий режим, выполнив следующие команды:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>Смоделируйте выход приложения из ждущего режима, выполнив следующую команду:
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>Понаблюдайте за поведением приложения, когда оно возобновляет свою работу. Убедитесь, что оно
-выходит из ждущего режима без сбоев. Обратите особое внимание на работу уведомлений и выполнение фоновых задач приложения
-.</li>
-</ol>
-
-<h2 id="ids">Автоматическое резервное копирование для приложений и идентификаторы устройств</h2>
-
-<p>Если во внутреннем хранилище вашего приложения имеются какие-либо идентификаторы устройства, такие как идентификатор Google
-Cloud Messaging,
-обязательно воспользуйтесь советами и рекомендациями, приведенными в статье
-<a href="{@docRoot}preview/backup/index.html">Автоматическое резервное копирование для приложений</a>,чтобы исключить расположение
-хранилища из списка объектов для автоматического резервного копирования. </p>
diff --git a/docs/html-intl/intl/ru/preview/testing/performance.jd b/docs/html-intl/intl/ru/preview/testing/performance.jd
deleted file mode 100644
index fc88cbd..0000000
--- a/docs/html-intl/intl/ru/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=Тестирование скорости отображения
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=скорость отображения, кадр/с, инструменты
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>Содержание документа</h2>
- <ol>
- <li><a href="#measure">Измерение производительности интерфейса</a>
- <ul>
- <li><a href="#aggregate">Агрегированные статические данные о кадрах</a></li>
- <li><a href="#timing-info">Точная информация о кадровой синхронизации</a></li>
- <li><a href="#timing-dump">Дамп простой кадровой синхронизации</a></li>
- <li><a href="#collection-window">Управление промежутком времени для сбора статистических данных</a></li>
- <li><a href="#diagnose">Диагностика снижения производительности</a></li>
- <li><a href="#resources">Дополнительные ресурсы</a></li>
- </ul>
- </li>
- <li><a href="#automate">Автоматизация тестирования производительности интерфейса</a>
- <ul>
- <li><a href="#ui-tests">Настройка тестов интерфейса</a></li>
- <li><a href="#automated-tests">Настройка автоматизированного тестирования интерфейса</a></li>
- <li><a href="#triage">Определение и устранение обнаруженных проблем</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- Тестирование производительности интерфейса позволяет убедиться в том, что ваше приложение не только соответствует функциональным требованиям,
-но и гарантирует пользователю безупречное взаимодействие с интерфейсом с постоянной частотой отображения
-60 кадров в секунду (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">почему именно
-60 кадров/с?</a>), без каких-либо задержек и пропущенных кадров или, как их называют, <em>глюков</em>. В этой
-статье рассматриваются инструменты для измерения производительности интерфейса, а также предлагается подход к
-интеграции этих процедур измерения производительности в ваши методы тестирования приложений.
-</p>
-
-
-<h2 id="measure">Измерение производительности интерфейса</h2>
-
-<p>
- Чтобы улучшить производительность, прежде всего у вас должна иметься возможность измерить производительность
-вашей системы. Когда это сделано, необходимо диагностировать и определить проблемы, которые могут возникнуть на разных этапах
-процесса разработки.
-</p>
-
-<p>
- <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em>
-– это инструмент Android, который запускается на устройстве и создает дамп интересной информации о состоянии системных
-служб. После передачи в dumpsys команды <em>gfxinfo</em> в журнал устройства (logcat)
-записываются сведения о производительности, касающиеся скорости анимации на этапе
-записи.
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- Эта команда может создавать множество различных вариантов данных кадровой синхронизации.
-</p>
-
-<h3 id="aggregate">Агрегированные статические данные о кадрах</h3>
-
-<p>
- В M Preview эта команда фиксирует в logcat агрегированный анализ данных о кадрах, полученных
-за весь жизненный цикл процесса. Например:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- Приведенные выше статистические данные высокого уровня демонстрируют производительность отрисовки, которой обладает приложение,
-а также ее стабильность при обработке множества кадров.
-</p>
-
-
-<h3 id="timing-info">Точная информация о кадровой синхронизации</h3>
-
-<p>
- В M Preview представлена новая команда для gfxinfo – <em>framestats</em>. Она позволяет получить
-чрезвычайно точную информацию о кадровой синхронизации из последних кадров, что поможет вам отслеживать проблемы
-и устранять их.
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- Данная команда предоставляет информацию о кадровой синхронизации буквально по наносекундам на основании последних 120
-кадров, созданных приложением. Ниже приводится пример необработанного результата из журнала adb после выполнения команды dumpsys gfxinfo
-<PACKAGE_NAME> framestats:
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- Каждая строка здесь представляет собой кадр, созданный приложением. В каждой строке имеется фиксированное количество
-столбцов, где указано время, затраченное на каждом этапе процесса создания кадра. Более подробно этот формат рассматривается в следующем разделе,
-включая сведения о том, что означает каждый столбец.
-</p>
-
-
-<h4 id="fs-data-format">Формат данных, возвращаемых командой framestats</h4>
-
-<p>
- Поскольку блок данных выводится в формате CSV, вы можете с легкостью вставить его в любую программу
-для работы с электронными таблицами, а также собрать и обработать данные с помощью сценария. Ниже рассматривается формат
-столбцов выходных данных. Все временные метки указаны в наносекундах.
-</p>
-
-<ul>
- <li>FLAGS
- <ul>
- <li>В строках, в которых в столбце FLAGS указано «0», общее время смены кадра вычислялось путем
-вычитания значения в столбце INTENDED_VSYNC из значения в столбце FRAME_COMPLETED.
- </li>
-
- <li>Если это значение не равно нулю, то строку следует пропустить, поскольку кадр был определен как отличающийся от
-обычной производительности, при которой ожидается, что размещение и прорисовка кадра займут
-больше 16 мс. Причина этого может заключаться в следующем:
- <ul>
- <li>макет окна был изменен (например, первый кадр приложения или после
-вращения);
- </li>
-
- <li>также, возможно, кадр был пропущен, в результате чего временные метки некоторых значений
-содержат бессмысленную информацию; кадр можно пропустить, если, например, скорость отображения превышает 60 кадров/с или если
-на экране от этого не появяются шумы; это не обязательно указывает на проблему
-в приложении.
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>Предполагаемая начальная точка кадра. Если данное значение отличается от значения в столбце VSYNC, это указывает на то,
-что поток был занят и не смог своевременно среагировать на сигнал
-vsync.
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>Значение времени, которое использовалось во всех приемниках vsync, а также которое было затрачено на прорисовку кадра
-(обратные вызовы кадров Choreographer и анимации, View.getDrawingTime() и т. д.)
- </li>
-
- <li>Чтобы узнать подробнее о VSYNC и о том, какое значение это имеет для вашего приложения, просмотрите
-видеоролик,
-<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">посвященный общим сведениям о VSYNC</a>.
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>Временная метка для самого старого события ввода в очереди ввода или Long.MAX_VALUE, если
-для кадра отсутствуют события ввода.
- </li>
-
- <li>Это значение в первую очередь предназначено для платформы и имеет ограниченную практическую ценность для разработчиков
-приложений.
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>Временная метка для самого нового события ввода в очереди ввода или 0, если
-для кадра отсутствуют события ввода.
- </li>
-
- <li>Это значение в первую очередь предназначено для платформы и имеет ограниченную практическую ценность для разработчиков
-приложений.
- </li>
-
- <li>Однако оно позволяет получить приблизительное представление о том, какая задержка возникает у приложения,
-обратившись к значению разницы (FRAME_COMPLETED - NEWEST_INPUT_EVENT).
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>Временная метка отправки событий ввода в приложение.
- </li>
-
- <li>Разность между этим значением и значением ANIMATION_START позволяет определить,
-сколько времени было затрачено приложением на обработку событий ввода.
- </li>
-
- <li>Если разность достаточно велика (>2 мс), это означает, что приложение затрачивает очень
-много времени на обработку событий ввода, таких как View.onTouchEvent(). В свою очередь, это может указывать на
-необходимость оптимизации этого процесса обработки или переноса этой нагрузки в другой поток. Следует помнить, что существуют
-сценарии, когда такое
-поведение ожидается и является приемлемым. Имеются в виду нажатия или аналогичные сценарии, в которых запускаются новые операции.
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>Временная метка запуска анимаций, зарегистрированных с помощью Choreographer.
- </li>
-
- <li>Разность между этим значением и PERFORM_TRANVERSALS_START позволяет
-определить, сколько времени потребовалось на оценку всех запущенных аниматоров (ObjectAnimator,
-ViewPropertyAnimator и общих переходов).
- </li>
-
- <li>Если разность достаточно велика (>2 мс), проверьте наличие в приложении настраиваемых
-аниматоров, а также то, какие поля анимируют классы ObjectAnimator. Убедитесь, что
-эти поля подходят для анимации.
- </li>
-
- <li>Чтобы узнать подробнее о Choreographer, просмотрите видео <a href="https://developers.google.com/events/io/sessions/325418001">For Butter or Worse</a>.
-
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>Если вычесть значение DRAW_START из этого значения, вы можете узнать, сколько времени было затрачено на разметку и
-измерение. (Обратите внимание, что во время прокрутки или анимации это значение должно быть близко
-к нулю.)
- </li>
-
- <li>Чтобы узнать подробнее об этапах разметки и измерения во время рендеринга интерфейса приложения, просмотрите
-видео, посвященное
-<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">аннулированию, макетам и производительности</a>.
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>Время начала этапа отрисовки с помощью метода performTraversals. Это точка начала
-записи списков отображения любых представлений, которые были аннулированы.
- </li>
-
- <li>Разность между этим значением и значением SYNC_START означает, сколько времени потребовалось на вызов метода View.draw() для всех
-аннулированных представлений в дереве.
- </li>
-
- <li>Дополнительные сведения о модели отрисовки представлены в видео, посвященном <a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">аппаратному ускорению</a>
-или
-<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">аннулированию, макетам и производительности</a>.
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>Время начала этапа синхронизации отрисовки.
- </li>
-
- <li>Если разность между этим значением и значением ISSUE_DRAW_COMMANDS_START достаточно велика (>0,4 мс или около этого),
-обычно это указывает на наличие большого количество новых растровых изображений, которые следует передать
-ЦП.
- </li>
-
- <li>Чтобы узнать подробнее об этапе синхронизации, просмотрите видео, посвященное
-<a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">рендерингу профиля с помощью ЦП</a>.
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>Время начала отправки аппаратным обработчиком команд на отрисовку для ЦП.
- </li>
-
- <li>Разность между этим значением и значением FRAME_COMPLETED позволяет получить приблизительное представление об объеме ресурсов ЦП, используемых
-приложением. Здесь отображаются такие проблемы, как превышение или недостаток эффектов рендеринга.
-
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>Время вызова eglSwapBuffers;
-относится к работе платформы и имеет ограниченную практическую ценность для разработчиков приложений.
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>Все готово! Общее время, затраченное на обработку этого кадра, вычисленное по следующей формуле:
-FRAME_COMPLETED - INTENDED_VSYNC.
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- Эти данные можно использовать несколькими способами. Простым, но полезным примером может служить
-график, иллюстрирующий распределение времени кадров (FRAME_COMPLETED - INTENDED_VSYNC) в
-различных диапазонах задержки (см. рисунок ниже). На графике ясно видно, что с большинством кадров
-никаких проблем не возникло (ниже отметки в 16 мс; обозначено красным), однако для некоторых кадров
-это значение значительно превышено. Можно обратиться к этому графику и пронаблюдать изменения по времени,
-чтобы увидеть общую картину смещения или новые отличающиеся значения. Также можно создать график задержи ввода,
-времени, затраченного на разметку или других интересующих вас показателей, руководствуясь множеством временных меток,
-имеющихся в данных.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">Дамп простой кадровой синхронизации</h3>
-
-<p>
- Если в разделе настроек для разработчиков для параметра <strong>Profile GPU rendering</strong> задано значение <strong>In adb shell dumpsys gfxinfo</strong>,
-команда <code>adb shell dumpsys gfxinfo</code> выдает сведения о синхронизации
-по времени для последних 120 кадров. При этом вы увидите несколько категорий значений,
-разделенные знаком табуляции. Эти данные могут оказаться полезными для определения частей конвейера отрисовки, которые могут работать с задержкой
-при высоком уровне обработки.
-</p>
-
-<p>
- Как и в случае с командой
-<a href="#fs-data-format">framestats</a>, описанной выше, вы можете с легкостью вставить полученные данные в любую программу
-для работы с электронными таблицами, а также собрать и обработать их с помощью сценария. На графике ниже иллюстрируется разбивка со сведениями о количестве созданных кадров и времени, которое приложение затратило на
-это.
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- Результаты выполнения команды gfxinfo, копирования полученного результата, передачи его в приложение для работы
-с электронными таблицами и построения графика представлены в виде столбцов.
-</p>
-
-<p>
- Каждый столбец представляет собой один кадр анимации; его высота обозначает количество миллисекунд,
-затраченных на вычисление этого кадра. Каждый цветной сегмент столбца
-обозначает различный этап процесса рендеринга, что позволяет определить проблемные компоненты
-приложения в плане производительности. Дополнительные сведения о
-процессе рендеринга, а также о том, как оптимизировать его, представлены в видео, посвященном
-<a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">аннулированию, макетам и производительности</a>.
-</p>
-
-
-<h3 id="collection-window">Управление промежутком времени для сбора статистических данных</h3>
-
-<p>
- При выполнении команды framestats, равно как и при вычислении простой кадровой синхронизации, данные собираются за достаточно короткий промежуток времени – порядка
-двух секунд рендеринга. Чтобы точно указать этот промежуток времени (например,
-чтобы ограничить данные определенной анимацией), можно сбросить все счетчики
-и объединить собранные статистические данные.
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- Это также можно сделать совместно с выполнением самих команд создания дампа, чтобы выполнять сбор
-и сброс регулярно, непрерывно получая данные за промежутки времени продолжительностью менее двух секунд.
-
-</p>
-
-
-<h3 id="diagnose">Диагностика снижения производительности</h3>
-
-<p>
- Определение снижений производительности послужит отличным началом для отслеживания проблем, а также позволит всегда поддерживать
-хорошую работоспособность приложения. Однако инструмент dumpsys позволяет лишь определить наличие проблем и приблизительный уровень их
-серьезности. Вам же требуется диагностировать каждую конкретную проблему с
-производительностью и найти подходящие способы ее устранения. Для этих целей прекрасно
-подходит инструмент <a href="{@docRoot}tools/help/systrace.html">systrace</a>.
-</p>
-
-
-<h3 id="resources">Дополнительные ресурсы</h3>
-
-<p>
- Дополнительные сведения о принципе работы конвейера рендеринга платформы Android, информация об общих проблемах, с которыми можно столкнуться при его использовании,
-а также способы их устранения представлены на указанных ниже
-полезных ресурсах.
-</p>
-
-<ul>
- <li>Производительность визуализации 101
- </li>
- <li>Частота 60 кадров в секунду
- </li>
- <li>Пользовательский интерфейс Android и графический процессор
- </li>
- <li>Аннулирование макетов и производительность
- </li>
- <li>Анализ производительности интерфейса с помощью systrace
- </li>
-</ul>
-
-
-<h2 id="automate">Автоматизация тестирования производительности интерфейса</h2>
-
-<p>
- Один из подходов к тестированию производительности интерфейса заключается в простом привлечении тестировщиков, чтобы они выполнили ряд
-операций с целевым приложением, а также либо просто визуально убедились в отсутствии глюков, либо уделили достаточно много времени
-тестированию приложения с помощью соответствующего инструмента. Однако такой подход имеет один важный недостаток
-– человек физически не способен обрабатывать информацию при очень быстрой смене кадров.
-Кроме того, такая работа занимает много времени, утомляет и не гарантирует полное отсутствие ошибок.
-</p>
-
-<p>
- Гораздо эффективнее записать ключевые показатели производительности, полученные в ходе автоматического
-тестирования интерфейса, и проанализировать их. В состав Android M Developer Preview входят новые функции ведения журналов, которые позволяют с легкостью
-определить объем и серьезность глюков анимации в приложении.
-Их также можно использовать для того, чтобы создать строгий процесс определения текущей производительности и отслеживать соответствие требованиям будущих задач
-производительности.
-</p>
-
-<p>
- В этой статье мы расскажем вам, как мы рекомендуем использовать такие данные, чтобы автоматизировать
-тестирование производительности.
-</p>
-
-<p>
- Этот подход большей частью сводится к двум ключевым шагам. Шаг первый: определите, что вы
-тестируете и как вы это делаете. Шаг второй: произведите настройку
-среды автоматизированного тестирования и ее обслуживание.
-</p>
-
-
-<h3 id="ui-tests">Настройка тестов интерфейса</h3>
-
-<p>
- Прежде чем приступить к автоматизированному тестированию, необходимо принять ряд важных решений,
-чтобы правильно определить область тестирования и ваши требования.
-</p>
-
-<h4>
- Определение ключевых анимаций или потоков для тестирования
-</h4>
-
-<p>
- Помните, что плохая производительность чаще всего выражается для пользователей в отсутствии плавной
-анимации. Поэтому при определении того, какие типы действий в пользовательском интерфейсе следует протестировать, полезно
-сосредоточить внимание на ключевых анимациях, наиболее важных для
-взаимодействия пользователя с приложением. Ниже представлены примеры наиболее распространенных сценариев, которые может оказаться полезным определить.
-</p>
-
-<ul>
- <li>Прокрутка основного представления ListView или RecyclerView
- </li>
-
- <li>Анимации во время циклов асинхронного ожидания
- </li>
-
- <li>Любые анимации, включающие загрузку растровых изображений или манипуляции с ними
- </li>
-
- <li>Анимации, включающие смешивание альфа-канала
- </li>
-
- <li>Отрисовка настраиваемого представления на экране
- </li>
-</ul>
-
-<p>
- Определите, какие из этих
-ключевых анимаций следует протестироваит в первую очередь. При принятии решения подключите инженеров, дизайнеров и менеджеров по продукту.
-</p>
-
-<h4>
- Определите свои будущие задачи и отслеживайте их выполнение
-</h4>
-
-<p>
- С профессиональной точки зрения, может оказаться крайне важным решить, каких именно показателей производительности вы хотите добиться, и
-сосредоточить усилия на создании необходимых тестов и сборе соответствующих данных. Например:
-</p>
-
-<ul>
- <li>Вы только хотите начать отслеживание производительности интерфейса, чтобы получить дополнительные сведения?
- </li>
-
- <li>Вы хотите предотвратить возможно снижение производительности в будущем?
- </li>
-
- <li>На сегодняшний день 90% кадров анимируются плавно. Вы хотите увеличить этот показатель до 98% в этом квартале?
- </li>
-
- <li>На сегодняшний день 98% кадров анимируются плавно. Вы не хотите, чтобы производительность снизилась?
- </li>
-
- <li>Вы хотите улучшить производительность на бюджетных устройствах?
- </li>
-</ul>
-
-<p>
- Во всех перечисленных случаях вам потребуется хронологическое отслеживание показателей, демонстрирующих производительность
-разных версий вашего приложения.
-</p>
-
-<h4>
- Определение устройств для тестирования
-</h4>
-
-<p>
- Производительность приложения может меняться в зависимости от того, на каком устройстве оно установлено. Некоторые устройства могут обладать недостаточным
-объемом памяти, менее производительными графическими процессорами или слабыми ЦП. Это означает, что анимации,
-которые прекрасно работают на устройстве с одним оборудованием, могут вообще не работать на устройстве с другим оборудованием, и, что хуже всего, препятствовать
-нормальной работе другой части конвейера. Поэтому, учитывая такую разницу
-в отображении интерфейса для пользователей, выберите диапазон устройств для выполнения тестов, включив в него
-как современные высокотехнологичные, так и бюджетные устройства, планшеты и т. д. При выборе диапазона устройств учитывайте разницу в производительности ЦП
-, ОЗУ, разрешение экрана, его размер и т. д. Тесты, которые успешно прошли на устройстве верхнего ценового сегмента,
-могут завершиться сбоем на бюджетных моделях.
-</p>
-
-<h4>
- Базовые средства для тестирования пользовательского интерфейса
-</h4>
-
-<p>
- Такие наборы инструментов, как <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> и
-<a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>,
-призваны помочь автоматизировать действия пользователей при взаимодействии с вашим приложением. Это простые инструменты,
-имитирующие работу пользователя на устройстве. Для использования этих инструментов
-вам необходимо создать уникальные сценарии, которые будут включать выполнение ряда действий, и воспроизвести
-их на устройстве.
-</p>
-
-<p>
- Используя эти автоматизированные тесты в сочетании с командой <code>dumpsys gfxinfo</code>, вы можете быстро создать
-воспроизводимую систему, позволяющую выполнять тестирование и анализировать
-полученную информацию о производительности для каждого определенного условия.
-</p>
-
-
-<h3 id="automated-tests">Настройка автоматизированного тестирования интерфейса</h3>
-
-<p>
- Получив возможность протестировать интерфейс, а также настроив конвейер на сбор результатов
-отдельного теста, важно выбрать инструмент, который позволит многократно выполнить
-тест на нескольких устройствах, а также объединить данные о результатах
-тестирования производительности для их дальнейшего анализа вашими специалистами по разработке.
-</p>
-
-<h4>
- Инструмент для автоматизации тестирования
-</h4>
-
-<p>
- Следует отметить, что инструменты для тестирования интерфейса (такие как <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)
-можно запускать прямо на целевом устройстве или в эмуляторе. Тогда как сбор командой
-<em>dumpsys gfxinfo</em> информации о производительности выполняется на хост-компьютере, который отправляет команды из ADB. Чтобы объединить
-усилия этих двух инструментов, был разработан <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a>.
-Эта система написания сценариев, работающая на хост-компьютере, отправляет команды на
-подключенные устройства, а также получает данные от них.
-</p>
-
-<p>
- Набор сценариев для надлежащей автоматизации тестирования производительности интерфейса должен включать использование
-системы MonkeyRunner хотя бы для выполнения следующих задач:
-</p>
-
-<ul>
- <li>загрузка и запуск на целевые устройства или в эмулятор необходимого пакета APK;
- </li>
-
- <li>запуск теста UI Automator и его выполнение;
- </li>
-
- <li>сбор информации о производительности с помощью <em>dumpsys gfxinfo</em><em>;</em>
- </li>
-
- <li>объединение полученной информации и ее отображение для разработчика в удобочитаемой форме.
- </li>
-</ul>
-
-
-<h3 id="triage">Определение и устранение обнаруженных проблем</h3>
-
-<p>
- После обнаружения проблемных мест или причин снижения производительности необходимо понять, что должно быть исправлено
-и внести соответствующие изменения. Если используемый инструмент для автоматизированного тестирования обеспечивает соблюдение точной разбивки
-кадровой синхронизации по времени, то с его помощью можно тщательно изучить недавние подозрительные изменения в коде или макете (в случае
-со снижением производительности), а также ограничить область системы, которая подлежит анализу, когда вы переключаетесь на изучение проблемы
-вручную. В последнем случае прекрасно подойдет <a href="{@docRoot}tools/help/systrace.html">systrace</a>. С помощью этого инструмента вы можете получить подробнейшую информацию
-о синхронизации относительно каждого этапа конвейера рендеринга, относительно каждого потока и каждого ядра
-системы, а также относительно любых настраиваемых маркеров событий, которые вы задаете.
-</p>
-
-<h4>
- Надлежащее профилирование синхронизации по времени
-</h4>
-
-<p>
- Важно отметить трудности, с которыми можно столкнуться при получении и анализе данных синхронизации, связанных
-с производительностью визуализации. Результаты по своей природе недетерминированные и зачастую
-изменяются в зависимости от состояния системы, объема доступной памяти, температурного
-дросселирования и времени суток. Смысл в том, что
-вы можете выполнить один и тот же тест дважды и получить результаты,
-которые будут похожи, но не совпадут в точности.
-</p>
-
-<p>
- Правильный сбор и профилирование данных означает выполнение одного и того же теста
-несколько раз и накопление результатов для вычисления среднего значения (для простоты назовем это
-пакетом результатов). Это позволяет получить приблизительное представление о производительности
-теста, когда нет необходимости в точных данных.
-</p>
-
-<p>
- Пакеты можно использовать при изучении изменений кода, чтобы увидеть их относительное влияние на
-производительность. Если средняя частота кадров для пакета результатов, полученных до изменения, больше значения для пакета, полученного
-после изменения, обычно вы получаете общее повышение производительности в результате этого конкретного
-изменения.
-</p>
-
-<p>
- При выполнении любого автоматизированного тестирования интерфейса следует учитывать этот момент,
-равно как и любые аномалии, которые могут возникнуть во время теста. Например,
-если производительность вашего приложения неожиданно резко падает из-за проблем с оборудованием устройства (которые
-не вызваны вашим приложением), возможно, вы захотите выполнить пакет повторно, чтобы получить
-менее беспорядочные данные о синхронизации.
-</p>
-
-<p>
- Итак, сколько раз следует выполнять тест, прежде чем его результаты станут значимыми? Не менее 10!
- Чем больше раз вы выполняете тест (например, можно сделать 50–100 прогонов), тем выше точность результатов
-(хотя, конечно, ради точности приходится поступаться временем).
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/api-overview.jd b/docs/html-intl/intl/zh-cn/preview/api-overview.jd
deleted file mode 100644
index c64a38e..0000000
--- a/docs/html-intl/intl/zh-cn/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-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">蓝牙触控笔支持</a></li>
- <li><a href="#ble-scanning">改进的蓝牙低功耗扫描</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">主题化 ColorStateList</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 预览版»</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 开发者预览版可让您预览即将推出的 Android 平台版本为用户和应用开发者提供的新功能。
-
-本文旨在介绍其中最值得关注的 API。</p>
-
-<p>M 开发者预览版的适用对象是<strong>喜欢尝鲜的开发者</strong>和<strong>测试人员</strong>。
-如果您有兴趣影响 Android 框架的发展方向,<a href="{@docRoot}preview/setup-sdk.html">欢迎试用 M 开发者预览版</a>并向我们提供反馈!
-
-
-</p>
-
-<p class="caution"><strong>注意</strong>:请不要在 Google Play 商店中发布基于 M 开发者预览版的应用。
-</p>
-
-<p class="note"><strong>注:</strong>本文经常提及的一些类和方法在 <a href="{@docRoot}">developer.android.com</a> 上尚未提供相关参考资料。
-这些 API 元素在本文中设置为 {@code code style} 格式(不带超链接)。
-如需查看这些元素的初步 API 文档,请下载<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>此预览版通过提供功能更强大的应用链接,增强了 Android 的意向系统。您可以利用此功能将应用与您拥有的某个 Web 域关联。
-平台可以根据此关联确定在处理特定 Web 链接时默认使用的应用,跳过提示用户选择应用的步骤。如需了解如何实现此功能,请参阅<a href="{@docRoot}preview/features/app-linking.html">应用链接</a>。
-
-
-
-
-<h2 id="backup">自动备份应用</h2>
-<p>现在,系统可以自动为应用执行完整数据备份和恢复。对于以 M 预览版为目标平台的应用,系统会默认启用此行为,您无需额外添加任何代码。
-如果用户删除其 Google 帐户,其备份数据也会被删除。
-如需了解该功能的工作方式以及配置文件系统备份内容的方法,请参阅<a href="{@docRoot}preview/backup/index.html">自动备份应用</a>。
-
-</p>
-
-<h2 id="authentication">身份验证</h2>
-<p>本预览版提供一些新的 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()} 方法。您的应用必须运行在带有指纹传感器的兼容设备上。
-您必须在应用中实现指纹身份验证流的用户界面,并在 UI 中使用标准 Android 指纹图标。<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">示例应用</a>中包含有 Android 指纹图标 ({@code c_fp_40px.png})。请注意,如果您要开发多个使用指纹身份验证的应用,每个应用必须独立验证用户的指纹。
-
-
-
-
-</p>
-
-<p>如需在您的应用中使用此功能,请先在清单文件中添加 {@code USE_FINGERPRINT} 权限。
-</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>如需查看指纹身份验证的应用实现,请参阅<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">指纹对话框示例</a>。
-
-</p>
-
-<p>如果您要测试此功能,请执行以下步骤:</p>
-<ol>
-<li>如果您尚未安装 Android SDK 工具 24.3 修订版,请执行此操作。</li>
-<li>转到<strong>设置 > 安全 > 指纹</strong>,然后按照登记说明在模拟器中登记新指纹。
-</li>
-<li>使用模拟器通过以下命令模拟指纹触摸事件。
-使用同一命令模拟锁屏上或应用中的指纹触摸事件。
-
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>在 Windows 上,您可能需要运行带有
-{@code finger touch <finger_id>} 参数的 {@code telnet 127.0.0.1 <emulator-id>} 命令。
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">确认凭据</h3>
-<p>您的应用可以根据用户在多久之前最后一次解锁设备来验证其身份。此功能让用户不必费心记忆应用特定密码,您也无需实现自己的身份验证用户界面。
-
-您的应用应当利用此功能并结合实现公钥或私钥,以进行用户身份验证。
-</p>
-
-<p>如需设置成功验证用户身份后可再次使用同一密钥的超时持续时间,请在设置 {@link javax.crypto.KeyGenerator} 或
-{@link java.security.KeyPairGenerator} 时调用新增的
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
- 方法。
-此功能目前适用于对称加密操作。
-</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>本预览版为您提供的 API 可让用户直观、快捷地进行共享。现在,您可以定义可在您的应用内启动特定活动的<em>直接共享目标</em>。这些直接共享目标通过“共享”<em></em>菜单公开给用户。
-
-此功能让用户可以向其他应用内的目标(如联系人)共享内容。
-例如,直接共享目标可以启动另一社交网络应用中的某个活动,让用户可以直接向该应用中的某位朋友或某个社区共享内容。
-
-</p>
-
-<p>如需启用直接共享目标,您必须定义一个类,用于扩展
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService} 类。在清单文件中声明您的
-{@code ChooserTargetService}。在该声明内,指定
-{@code BIND_CHOOSER_TARGET_SERVICE} 权限和一个带有
-{@code SERVICE_INTERFACE} 操作的意向过滤器。</p>
-<p>以下示例展示了如何在清单文件中声明 {@code ChooserTargetService}。
-</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>对于您想要向 {@code ChooserTargetService} 公开的每个活动,请在您的应用清单文件中为其添加一个名为
-{@code "android.service.chooser.chooser_target_service"} 的
-{@code <meta-data>} 元素。
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">语音交互</h2>
-<p>
-本预览版提供了一个新的语音交互 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>
-本预览版提供了一种让用户通过助手程序与应用进行互动的新方式。如需使用此功能,用户必须启用助手以使用当前上下文。
-启用后,用户可通过长按<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">蓝牙触控笔支持</h2>
-<p>本预览版改善了对用户使用蓝牙触控笔进行输入的支持。用户可将兼容的蓝牙触控笔与其手机或平板电脑配对并建立连接。
-连接后,来自触摸屏的位置信息将与来自触控笔的压力和按键信息融合,从而实现比单纯使用触摸屏更丰富的表达。
-
-您的应用可以通过在活动中注册新增的
-{@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 预览版为目标平台的应用,当用户按触控笔的主按键时,
-{@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">改进的蓝牙低功耗扫描</h2>
-<p>
-如果您的应用执行蓝牙低功耗扫描,可以使用新增的
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} 方法指定您只希望在下列条件下通知回调:首次找到与设置的
-{@link android.bluetooth.le.ScanFilter} 匹配的播发数据包并且该数据包已有一段时间没有出现。
-
-这种扫描方法与旧平台版本中提供的方法相比更加节能。
-
-</p>
-
-<h2 id="hotspot">Hotspot 2.0 第 1 版支持</h2>
-<p>
-本预览版在 Nexus 6 和 Nexus 9 设备上添加了对 Hotspot 2.0 第 1 版规范的支持。如需在您的应用中设置 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 渲染。
-如需查询当前物理分辨率,请使用新增的
-{@code android.view.Display.Mode} API。请注意,如果 UI 是以较低逻辑分辨率绘制并通过放大达到更高的物理分辨率,则
-{@code Display.Mode.getPhysicalWidth()} 方法返回的物理分辨率可能不同于 {@link android.view.Display#getSize(android.graphics.Point) getSize()} 所报告的逻辑分辨率。
-
-</p>
-
-<p>您可以通过设置应用窗口的 {@code WindowManager.LayoutParams.preferredDisplayModeId} 属性请求系统更改应用运行时的物理分辨率。
-如果您想切换到 4K 显示分辨率,此功能会很有帮助。
-在 4K 显示模式下,UI 仍然以原始分辨率(如 1080p)渲染,通过放大达到 4K,但
-{@link android.view.SurfaceView} 对象可能会以原生分辨率显示内容。
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">主题化 ColorStateList</h2>
-<p>对于运行 M 预览版的设备,现在支持在
-{@link android.content.res.ColorStateList} 中使用主题属性。
-{@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>本预览版增强了 Android 上的音频处理功能,包括: </p>
-<ul>
- <li>通过新增的 {@code android.media.midi} API 提供了对 <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a>
- 协议的支持。使用这些 API 可发送和接收 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>本预览版为视频处理 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>本预览版提供了下列用于访问相机闪光灯和相机图像再处理的新 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>{@link android.hardware.camera2 Camera2} API 进行了扩展,以支持 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 ImageWriter.queueInputImage()} 方法,将 {@code ImageFormat.PRIVATE} 图像直接传递给
-{@code ImageWriter},而无需进行任何缓冲区复制。
-</p>
-
-<p>{@code ImageReader} 类现在支持 {@code android.graphics.ImageFormat.PRIVATE} 格式图像流。
-凭借此支持特性,您的应用可使
-{@code ImageReader} 输出图像保持为循环图像队列,还可选择一个或多个图像并将其发送给
-{@code ImageWriter} 进行相机再处理。</p>
-
-<h2 id="afw">Android for Work 功能</h2>
-<p>本预览版提供了下列用于 Android for Work 的新 API:</p>
-<ul>
- <li><strong>用于企业所有、单一用途设备的增强型控件</strong>:现在,设备所有者可以通过控制以下设置来改善企业所有、单一用途 (COSU) 设备的管理:
-
-
- <ul>
- <li>通过
-{@code DevicePolicyManager.setKeyguardEnabledState()} 方法禁用或重新启用键盘锁。</li>
- <li>通过
-{@code DevicePolicyManager.setStatusBarEnabledState()} 方法禁用或重新启用状态栏(包括快速设置、通知以及启动 Google Now 的向上划动手势)。
-</li>
- <li>通过 {@link android.os.UserManager} 常量
-{@code DISALLOW_SAFE_BOOT} 禁用或重新启用安全启动</li>
- <li>通过
-{@link android.provider.Settings.Global} 常量 {@code STAY_ON_WHILE_PLUGGED_IN} 防止屏幕在插入电源的情况下关闭。</li>
- </ul>
- </li>
- <li><strong>设备所有者静默式安装和卸载应用</strong>:现在,设备所有者可使用 {@link android.content.pm.PackageInstaller}
- API 在不依赖 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>:配置文件所有者或设备所有者现在可以授权第三方应用调用以下 {@link android.app.admin.DevicePolicyManager} 证书管理 API:
-
-
-<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>:现在,配置设备所有者时,您可以通过设置
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} 捆绑包配置参数来解锁恢复出厂设置保护 (FRP)。
-在重置设备以解锁 FRP 和配置设备之后,NFC 编程器应用可提供这些参数,而无需事先配置 Google 帐户。
-
-如果您不修改这些参数,FRP 仍然发挥作用,必须使用之前激活的 Google 凭据方可激活设备。
-
-
-<p>此外,通过对 Google Play 服务设置应用限制,设备所有者可以指定用于 FRP 解锁的备用 Google 帐户,以替代在设备上激活的 Google 帐户。
-</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>。现在,配置文件所有者或设备所有者可以利用新增的
-{@code android.app.usage.NetworkStatsManager} 方法查询<strong>设置 > 数据使用情况</strong>中显示的数据使用情况统计信息。
-配置文件所有者会被自动授予查询其管理的配置文件相关数据的权限,而设备所有者则被授予对其管理的主要用户使用情况数据的访问权。
-
-</li>
-<li><strong>运行时权限管理</strong>:
-<p>配置文件所有者或设备所有者可以利用
-{@code DevicePolicyManager.setPermissionPolicy()} 设置适用于所有应用全部运行时请求的权限政策,以提示用户照常授予权限,或自动以静默方式授予或拒绝权限。
-
-如果设置后一种政策,则用户将无法修改配置文件所有者或设备所有者在应用权限屏幕的<strong>设置</strong>内所做的选择。
-
-</p></li>
-<li><strong>“设置”中的 VPN</strong>:现在,<strong>设置 > 更多 > VPN</strong> 中会显示 VPN 应用。此外,现在,关于 VPN 使用情况的通知取决于该 VPN 的配置方式。
-
-
-对于配置文件所有者,通知取决于该 VPN 是针对托管配置文件、个人配置文件还是同时针对这两者进行配置。
-对于设备所有者,通知取决于 VPN 是否针对整个设备进行配置。
-</li>
-<li><strong>工作状态通知</strong>:现在,每当来自托管配置文件的应用具有前台活动时,状态栏就会出现一个公文包图标。
-此外,如果设备直接解锁到托管配置文件中某个应用的活动,则会显示一个 Toast,通知用户他们位于托管配置文件内。
-
-
-</li>
-</ul>
-
-<p class="note">
- 如需详细了解 M 开发者预览版中的所有 API 变更,请参阅 <a href="{@docRoot}preview/download.html">API 差异报告</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/backup/index.jd b/docs/html-intl/intl/zh-cn/preview/backup/index.jd
deleted file mode 100644
index 39786a3..0000000
--- a/docs/html-intl/intl/zh-cn/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=自动备份应用
-page.tags=备份, 预览版资源, androidm
-page.keywords=备份, 自动备份, 预览版
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
- <ol>
- <li><a href="#overview">概览</a></li>
- <li><a href="#configuring">配置数据备份</a></li>
- <li><a href="#testing">测试备份配置</a></li>
- <li><a href="#issues">已知问题</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- 通常,用户需要投入大量的时间和精力在应用内创建数据和设置首选项。
-如果用户更换破损设备或升级至新设备,则保留用户数据对于确保提供卓越的用户体验至关重要。
-在这些情况下,运行 Android M 预览版系统的设备可以通过将应用数据自动备份到 Google Drive,帮助确保提供卓越的用户体验。
-
-这样,即使用户更换或升级设备,应用数据也可自动恢复。
-
-</p>
-
-<p>
- 对于运行 Android M 预览版的设备中所有已安装的应用,均可启用自动备份。无需额外提供应用代码。
-该系统允许用户选择禁止自动数据备份。
-此外,您还可以选择限制要备份应用中的哪些数据。
-</p>
-
-<p>
- 本文介绍了新系统行为,阐述了如何指定要为应用备份哪些数据。
-
-</p>
-
-<h2 id="overview">概览</h2>
-
-<p>
- 自动备份功能可以通过将应用在用户设备中创建的数据上传到用户的 Google Drive 帐户并进行加密,来保留这些数据。
-您或用户无需为数据存储付费,且保存的数据不计入用户个人的 Drive 配额。
-在 M 预览版运行期间,用户可针对每个 Android 应用存储多达 25MB 的数据。
-
-</p>
-
-<p>
- 当设备处于空闲、充电以及连接至 Wi-Fi 网络时,会每 24 小时自动备份一次数据。
-满足上述这些条件后,备份管理器服务会将所有可用的备份数据上传至云端。
-当用户改用新设备或卸载并重新安装备份的应用时,恢复操作会将备份的数据复制到新安装的应用的数据目录中。
-
-
-</p>
-
-<p class="note">
- <strong>注:</strong>如果应用使用旧版 <a href="{@docRoot}google/backup/index.html">Android 备份服务</a>,则此新行为不适用,不过现有的备份行为会照常运行。
-
-
-</p>
-
-
-<h3 id="auto-exclude">自动排除的数据文件</h3>
-
-<p>
- 并非所有应用数据均应备份,例如临时文件和缓存文件就无需备份,因此自动备份服务会默认排除如下一些特定的数据文件:
-
-</p>
-
-<ul>
- <li>通过 {@link android.content.Context#getCacheDir
- getCacheDir()} 和 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
- 方法所引用的目录中的文件
- </li>
-
- <li>位于外部存储中的文件,除非这些文件是驻留在通过
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
- 方法所引用的目录中
- </li>
-
- <li>位于通过
-{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 方法所引用的目录中的文件
- </li>
-</ul>
-
-<h2 id="configuring">配置数据备份</h2>
-
-<p>
- 除了上一部分中列出的自动排除的文件外,凡 M 预览版设备中安装的任何应用所创建的数据均会备份。
-您可以使用应用清单文件中的设置,进一步限制和配置应用中的哪些数据需要备份。
-
-</p>
-
-<h3 id="include-exclude">包括或排除数据</h3>
-
-<p>
- 根据应用所需的数据及其保存方式,您可能需要针对包括或排除哪些特定的文件或目录设置具体的规则。
-自动备份服务支持使用 XML 配置文件和应用清单文件来设置这些备份规则。
-
-您可以在应用清单文件中指定备份架构配置文件,如下例所示:
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- 在此示例代码中,<code>android:fullBackupContent</code> 属性指定了一个 XML 文件。该文件名为
-<code>mybackupscheme.xml</code>,位于应用开发项目的 <code>res/xml/</code> 目录中。
-此配置文件包括关于要备份哪些文件的规则。
-下列示例代码显示了将某一特定文件排除在备份之外的配置文件:
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- 此示例备份配置仅将一个特定数据库文件排除在备份之外。
- 所有其他文件均予以备份。
-</p>
-
-<h4>备份配置语法</h4>
-
-<p>
- 您可以通过备份服务配置指定备份中要包括或排除哪些文件。
-数据备份配置 xml 文件的语法如下:
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- 您可以使用下列元素和属性指定备份中要包括或排除哪些文件:
-
-</p>
-
-<ul>
- <li>
- <code><include></code>。如果您想指定一组要备份的资源,而不是默认由系统备份应用中的所有数据,请使用此元素。
-如果您指定了 <code><include></code> 标记,系统将仅备份使用此元素指定的资源。<em></em>
-
-
- </li>
-
- <li>
- <code><exclude></code>。使用此元素指定一组要排除在备份之外的资源。
-除了使用此元素指定的资源外,系统将备份应用中的所有数据。
-
- </li>
-
- <li>
- <code>domain.</code> 您想要在备份中包括或排除的资源类型。您可为此属性指定的有效值包括:
-
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>。指定资源处于应用的根目录中
- </li>
-
- <li>
- <code>file</code>。与通过
-{@link android.content.Context#getFilesDir getFilesDir()} 方法返回的目录中的某个资源相对应
- </li>
-
- <li>
- <code>database</code>。与通过
-{@link android.content.Context#getDatabasePath getDatabasePath()} 方法或使用
-{@link android.database.sqlite.SQLiteOpenHelper} 类返回的某个数据库相对应
- </li>
-
- <li>
- <code>sharedpref</code>。与通过 {@link android.content.Context#getSharedPreferences getSharedPreferences()}
- 方法返回的某个 {@link android.content.SharedPreferences} 对象相对应
-
- </li>
-
- <li>
- <code>external</code>。指定资源位于外部存储中,且与通过
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 方法返回的目录中的某个文件相对应
-
- </li>
-
- <li>
- <code>path</code>。您想要在备份中包括或排除的资源的文件路径
-
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">禁止数据备份</h3>
-
-<p>
- 通过在清单文件的应用元素中将
-<code>android:allowBackup</code> 属性设置为 <code>false</code>,您可选择阻止自动备份任何应用数据。
-此设置如下列示例代码所示:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">测试备份配置</h2>
-
-<p>
- 创建备份配置后,您应立即进行测试,确保应用能够保存数据,且数据能够正确恢复。
-
-</p>
-
-
-<h4>启用备份日志记录</h4>
-
-<p>
- 要帮助确定备份功能如何解析 XML 文件,请在执行测试备份之前启用日志记录功能:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>测试备份</h4>
-
-<p>要手动运行备份,您首先必须通过调用下列命令初始化备份管理器:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- 然后,使用下列命令并以 <code><PACKAGE></code> 参数指定应用的软件包名称来手动备份应用:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>测试恢复</h4>
-
-<p>
- 要在备份应用数据后手动启动数据恢复,请调用下列命令,并以 <code><PACKAGE></code> 参数指定应用的软件包名称:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>警告:</b>执行恢复操作之前,此操作将阻止您的应用运行并擦除其数据。
-
-</p>
-
-<p>
- 您可以通过卸载并重新安装应用来启动数据恢复进程。应用安装完成后,系统会立即自动从云中恢复应用数据。
-
-</p>
-
-
-<h4>诊断备份问题</h4>
-
-<p>
- 如果遇到问题,可通过在<strong>设置 > 备份</strong>中先关闭然后重新打开备份、将设备恢复出厂设置或者调用以下命令,来清除备份数据及关联的元数据:
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- <code><TRANSPORT></code> 值必须以 <code>com.google.android.gms</code> 为前缀。
- 要获取传输列表,请调用下列命令:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">已知问题</h2>
-
-<p>以下是自动备份服务的已知问题:</p>
-
-<ul>
- <li><strong>Google 云消息传递</strong>:对于使用 Google 云消息传递推送通知的应用,存在一个已知问题,即:备份通过 Google 云消息传递注册所返回的注册 ID 时,可能会中断已恢复应用的推送通知。为此,应用安装到新设备后,务必查询 API,看是否具有新注册 ID,这一点至关重要。如果已备份旧注册 ID,则不会出现这种情况。
-
-
-
-
-为避免这种现象,请从已备份文件集中排除注册 ID。
-
- </li>
-</ul>
diff --git a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd b/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
deleted file mode 100644
index 39494b9..0000000
--- a/docs/html-intl/intl/zh-cn/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-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">打盹</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">取消支持 Apache HTTP 客户端</a></li>
- <li><a href="#behavior-audiomanager-Changes">音频管理器变更</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 预览版»</a> </li>
-</ol>
-
-
-<h2>另请参阅</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M 开发者预览版 API 概览</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 开发者预览版除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。
-本文重点介绍您应该了解并在开发应用时加以考虑的一些重要变更。
-</p>
-
-<p>如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变更的影响。
-</p>
-
-<h2 id="behavior-runtime-permissions">运行时权限</h1>
-<p>本预览版引入了一种新的权限模型,如今,用户可直接在运行时管理应用权限。
-这种模型让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。
-
- </p>
-
-<p>对于面向 M 预览版开发的应用,请务必在运行时检查和请求权限。
-如需确定您的应用是否已被授予权限,请调用新增的 {@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>本预览版引入了针对空闲设备和应用的最新节能优化技术。</p>
-
-<h3 id="behavior-doze">打盹</h3>
-<p>如果设备未插入电源,并在屏幕关闭后的一段时间内保持不活动状态,则会进入<em>打盹</em>模式,在该模式下设备会尝试让系统保持休眠状态。
-在该模式下,设备会定期短时间恢复正常工作,以便进行应用同步,还可让系统执行任何挂起的操作。
-
-</p>
-
-<p>在打盹模式下,您的应用会受到以下限制:</p>
-<ul>
-<li>网络访问被禁用,除非您的应用获得高优先级 Google Cloud Messaging 操作消息 (tickle)。
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">唤醒锁</a>会被忽略。</li>
-<li>通过 {@link android.app.AlarmManager} 类设置的闹铃会被禁用,但通过 {@link android.app.AlarmManager#setAlarmClock setAlarmClock()} 方法和 {@code AlarmManager.setAndAllowWhileIdle()} 方法设置的闹铃除外。
-
-</li>
-<li>不执行 WiFi 扫描</li>
-<li>不允许运行同步适配器和 {@link android.app.job.JobScheduler} 的同步和作业。
-</li>
-</ul>
-</p>
-<p>当设备退出打盹模式时,它会执行任何挂起的作业和同步。</p>
-<p>您可以通过将运行 M 预览版的设备与您的开发计算机相连,并调用以下命令来测试此功能:
-
-</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 消息,即使设备处于打盹模式,系统也会向其授予短时间的网络访问权限。
-
-</p>
-
-<p>如需了解在您的应用中测试打盹模式的技巧,请参阅
-<a href="{@docRoot}preview/testing/guide.html#doze-standby">测试指南</a>。
- </p>
-
-<h3 id="behavior-app-standby">应用待机</h3>
-<p>使用本预览版时,系统会在应用未被主动使用时确定其处于空闲状态。
-除非系统检测到以下信号之一,否则将在一段时间后将您的应用视为处于空闲状态:
-</p>
-
-<ul>
-<li>用户显式启动应用。</li>
-<li>应用当前有一个进程位于前台(表现为活动或前台服务形式,或被另一活动或前台服务占用)。
-</li>
-<li>应用生成用户可在锁屏或通知托盘中看到的通知。
-</li>
-<li>用户通过<strong>设置</strong>显式请求不对应用进行优化。
-</li>
-</ul>
-
-<p>如果设备未插入电源,系统会将被视为处于空闲状态的应用的网络访问禁用,并暂停其同步和作业。
-当设备插入电源时,系统将允许这些应用访问网络并执行任何挂起的作业和同步。
-如果设备长时间处于空闲状态,系统将按每天大约一次的频率允许空闲状态的应用访问网络。
-</p>
-
-<p>您可以通过将运行 M 预览版的设备与您的开发计算机相连,并调用以下命令来测试此功能:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</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>
-使用本预览版时,用户可以<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>如需在开发者预览版中调试此功能,您可以将一个 USB 驱动器通过一根 USB On-The-Go (OTG) 电缆连接到 Android 设备并运行以下命令启用对该 USB 驱动器的采用:
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">取消支持 Apache HTTP 客户端</h2>
-<p>本预览版取消了对 Apache HTTP 客户端的支持。如果您的应用使用该客户端,并以 Android 2.3(API 级别 9)或更高版本为目标平台,请改用 {@link java.net.HttpURLConnection} 类。
-
-此 API 效率更高,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量。
-如需继续使用 Apache HTTP API,您必须先在 {@code build.gradle} 文件中声明以下编译时依赖项:
-
-</p>
-<pre>
-android {
- useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android 正在从使用 OpenSSL 库转向使用
-<a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a>
- 库。如果您要在应用中使用 Android NDK,请勿链接到并非 NDK API 组成部分的加密库,如 {@code libcrypto.so} 和 {@code libssl.so}。
-这些库并非公共 API,可能会在不同版本和设备上毫无征兆地发生变化或出现故障。此外,您还可能让自己暴露在安全漏洞的风险之下。
-
-请改为修改原生代码,以通过 JNI 调用 Java 加密 API,或静态链接到您选择的加密库。
-
-</p>
-
-<h2 id="behavior-audiomanager-Changes">音频管理器变更</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>现在,当用户在您的应用中选择文本时,您可以在一个<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">浮动工具栏</a>中显示“剪切”<em></em>、“复制”<em></em>和“粘贴”<em></em>等文本选择操作。
-
-其在用户交互实现上与<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 Support Library</a> 22.2 修订版,浮动工具栏不向后兼容,默认情况下 appcompat 会获得对 {@link android.view.ActionMode} 对象的控制权。
-
-这会禁止显示浮动工具栏。如需在
-{@link android.support.v7.app.AppCompatActivity} 中启用
-{@link android.view.ActionMode} 支持,请调用
-{@code android.support.v7.app.AppCompatActivity.getDelegate()},然后对返回的
-{@link android.support.v7.app.AppCompatDelegate} 调用
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()},并将输入参数设置为 {@code false}。
-此调用会将 {@link android.view.ActionMode} 对象的控制权交还给框架。
-在运行 M 预览版的设备上,框架可以支持
-{@link android.support.v7.app.ActionBar} 模式或浮动工具栏模式;而在运行 M 预览版之前版本的设备上,框架仅支持 {@link android.support.v7.app.ActionBar} 模式。
-</p>
-
-<h2 id="behavior-keystore">Android 密钥库变更</h2>
-<p>使用本预览版时,
-<a href="{@docRoot}training/articles/keystore.html">Android 密钥库提供程序</a>不再支持 DSA,
-但仍支持 ECDSA。</p>
-
-<p>禁用或重置安全锁屏时(例如,由用户或设备管理员执行此类操作时),系统将不再删除需要闲时加密的密钥,
-但在上述事件期间会删除需要闲时加密的密钥。
-</p>
-
-<h2 id="behavior-network">Wi-Fi 和网络连接变更</h2>
-
-<p>本预览版对 Wi-Fi 和网络连接 API 引入了以下行为变更。</p>
-<ul>
-<li>现在,您的应用只能更改由您创建的 {@link android.net.wifi.WifiConfiguration} 对象的状态。
-系统不允许您修改或删除由用户或其他应用创建的
-{@link android.net.wifi.WifiConfiguration} 对象;
-</li>
-<li>
-在之前的版本中,如果应用利用带有
-{@code disableAllOthers=true} 设置的
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} 强制设备连接特定 Wi-Fi 网络,设备将会断开与蜂窝数据网络等其他网络的连接。
-在本预览版中,设备不再断开与上述其他网络的连接。如果您的应用的 {@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>在本预览版中,相机服务中共享资源的访问模式已从之前的“先到先得”访问模式更改为高优先级进程优先的访问模式。
-
-对服务行为的变更包括:</p>
-<ul>
-<li>根据客户端应用进程的“优先级”授予对相机子系统资源的访问权,包括打开和配置相机设备。
-带有对用户可见活动或前台活动的应用进程一般会被授予较高的优先级,从而使相机资源的获取和使用更加可靠;
-
-</li>
-<li>当高优先级的应用尝试使用相机时,系统可能会“驱逐”正在使用相机客户端的低优先级应用。
-在已弃用的 {@link android.hardware.Camera} API 中,这会导致系统为被驱逐的客户端调用
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}。
-
-在 {@link android.hardware.camera2 Camera2} API 中,这会导致系统为被驱逐的客户端调用
-{@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()} 方法(将输入参数设置为 {@code true})。
-
-
-
-如果您的应用使用
-<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat 库</a>或
-<a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview 库</a>,则您必须更新应用以使用这些库的最新版本。
-否则,请务必更新从 XML 引用的任何自定义类,以便能够访问它们的类构造函数。
-</p>
-
-<p>本预览版更新了动态链接程序的行为。动态链接程序现在可以识别库的 {@code soname} 与其路径之间的差异(<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">
-公开 bug 6670</a>),并且现在已实现了按 {@code soname} 搜索。
-
-
-之前包含错误的 {@code DT_NEEDED} 条目(通常是开发计算机文件系统上的绝对路径)却仍工作正常的应用,如今可能会出现加载失败。
-</p>
-
-<p>现已正确实现 {@code dlopen(3) RTLD_LOCAL} 标志。请注意,
-{@code RTLD_LOCAL} 是默认值,因此不显式使用
-{@code RTLD_LOCAL} 的 {@code dlopen(3)} 调用将受到影响(除非您的应用显式使用 {@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>本预览版包含下列针对 Android for Work 的行为变更:</p>
-<ul>
-<li><strong>个人上下文中的工作联系人。</strong>Google Dialer Call Log 现在会在用户查看通话记录时显示工作联系人。将 {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} 设置为 {@code true} 可在 Google Dialer Call Log 中隐藏托管配置文件联系人。
-
-
-仅当您将 {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} 设置为 {@code false} 时,才可以通过蓝牙将工作联系人随个人联系人一起显示给设备。
-
-默认情况下,它设置为 {@code true}。
-
-</li>
-<li><strong>WiFi 配置移除</strong>:现在,当删除某个托管配置文件时,将会移除由配置文件所有者添加的 WiFi 配置(例如,通过调用
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} 方法添加的配置);
-</li>
-<li><strong>WiFi 配置锁定</strong>:用户无法再修改或删除任何由活动设备所有者创建的 WiFi 配置。
-用户仍可创建和修改其自己的 WiFi 配置,前提是尚未针对该用户设置 {@link android.os.UserManager} 常量
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI}。
-</li>
-<li><strong>通过添加 Google 帐户下载工作策略控制器</strong>向托管环境以外的设备添加需要通过工作策略控制器 (WPC) 管理的 Google 帐户时,帐户添加流程现在会提示用户安装相应的 WPC。在设备初始设置向导中通过<strong>设置 > 帐户</strong>添加帐户时,也会出现此行为。
-
-
-
-</li>
-<li><strong>对特定 DevicePolicyManager API 行为的变更</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/zh-cn/preview/download.jd b/docs/html-intl/intl/zh-cn/preview/download.jd
deleted file mode 100644
index ba5249a..0000000
--- a/docs/html-intl/intl/zh-cn/preview/download.jd
+++ /dev/null
@@ -1,359 +0,0 @@
-page.title=下载
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">在下载和安装预览版 Android SDK 的组件之前,您必须同意下列条款和条件。
-</p>
-
- <h2 class="norule">条款和条件</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-本协议是 Android SDK 预览版许可协议(以下称为“许可协议”)。
-
-1. 简介
-
-1.1 Android SDK 预览版(在本许可协议中简称为“预览版”,具体包括 Android 系统文件、封装 API 以及预览版库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“预览版”的使用构成具有法律约束力的合约。
-
-1.2 “Android”是指以 Android 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-1.3 “Google”是指 Google Inc.,是一家特拉华州公司,主要营业地位于:1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2. 接受许可协议
-
-2.1 要使用“预览版”,您必须先同意本许可协议。如果您不接受本许可协议,则不得使用“预览版”。
-
-2.2 点击接受并/或使用“预览版”,即表示您特此同意本许可协议的条款。
-
-2.3 如果依照美国或其他国家/地区(包括您居住或您使用“预览版”所在的国家/地区)的法律,您被禁止获取“预览版”,则您不得使用“预览版”,也不得接受本许可协议。
-
-2.4 如果您将在贵公司或组织内部使用“预览版”,则您同意代表您的雇主或其他实体接受本许可协议的约束,并且您表示并保证您拥有完全的合法授权令您的雇主或上述实体受本许可协议的约束。如果您不具备必要的授权,则不得代表您的雇主或其他实体接受本许可协议或使用“预览版”。
-
-3. Google 预览版许可
-
-3.1 Google 依据本许可协议的条款授予您个人或在贵公司或组织内部有限使用“预览版”的免版税、不可转让、非独占性、不可再授权且可撤销的许可,其用途仅限开发在 Android 平台上运行的应用。
-
-3.2 您同意 Google 或第三方拥有“预览版”中存在或相关的全部合法权利、所有权和利益,包括“预览版”中存在的任何知识产权。“知识产权”是指根据专利法、版权法、商业机密法、商标法享有的任何及全部权利,以及其他任何及全部专有权利。Google 保留所有未明确授予您的权利。
-
-3.3 您不得将“预览版”用于本许可协议未明确允许的任何用途。您不得:(a) 对“预览版”或“预览版”的任何部分进行复制(备份用途除外)、修改、改编、再分发、反编译、逆向工程、反汇编或创建其衍生品;或 (b) 将“预览版”的任何部分加载到移动手持终端或除个人计算机之外的任何其他硬件设备上,将“预览版”的任何部分与其他软件合并,或者发行任何融入“预览版”某一部分的软件或设备。
-
-3.4 您同意您将不会进行任何可能引起或导致 Android 碎片化的行动,包括但不限于分发、参与创建或以任何方式推广从“预览版”衍生的软件开发工具包。
-
-3.5 对于依据开源软件许可授权的“预览版”组件,其使用、复制和分发仅受该开源软件许可条款的制约,不受本许可协议的约束。您同意在依照被授予的所有权利作为被许可方期间,在遵守此类开源软件许可协议方面始终保持良好的信誉,并避免进行任何可能导致终止、暂停或违反此类权利的行动。
-
-3.6 您同意 Google 所提供“预览版”的形式和性质可随时发生变更,而无需事先通知您,并且未来的“预览版”版本可能会与在之前的“预览版”版本上开发的应用不兼容。您同意 Google 可单方面决定在未事先通知您的情况下全面停止(永久性或暂时性)向您或用户提供“预览版”(或“预览版”内的任何功能)。
-
-3.7 本许可协议内没有任何条款授予您使用 Google 的任何商品名、商标、服务标志、徽标、域名或其他独特品牌特征的权利。
-
-3.8 您同意您不会移除、遮盖或篡改“预览版”上可能贴有或“预览版”内可能包含的任何专有权利声明(包括版权声明和商标声明)。
-
-4. 您对“预览版”的使用
-
-4.1 Google 同意本许可协议中的任何条款均未授予 Google 从您(或您的许可方)处获取您依照本许可协议使用“预览版”开发的任何软件应用中存在或与其相关的权利、所有权或利益,包括这些应用中存在的任何知识产权。
-
-4.2 您同意只出于 (a) 本许可协议和 (b) 相关管辖区域内任何适用法律、法规或公认惯例或准则(包括有关向美国或其他相关国家/地区出口数据或软件或从美国或其他相关国家/地区进口数据或软件的任何法律)所允许的目的而使用“预览版”和编写应用。
-
-4.3 您同意,如果您使用“预览版”开发应用,您将会保护用户的隐私权和合法权利。如果用户向您提供用户名、密码或其他登录信息或个人信息,您必须确保用户知晓这些信息将供您的应用使用,并且您必须为这些用户提供足以满足法律要求的隐私声明和保护。如果您的应用存储由用户提供的个人信息或敏感信息,其存储方式必须安全。如果用户向您提供 Google 帐户信息,您的应用只能在用户允许时出于用户所许可的有限目的使用该信息访问用户的 Google 帐户。
-
-4.4 您同意您不会利用“预览版”从事任何干扰、中断、损坏或以未经授权方式访问 Google 或任何第三方的服务器、网络或其他财产或服务的Activity(包括应用的开发或分发)。
-
-4.5 您同意您对通过 Android 和/或 Android 应用创建、传输或显示的任何数据、内容或资源以及您的行为所导致的后果(包括 Google 可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.6 您同意您为违反本许可协议、任何适用的第三方合约或服务条款或任何适用法律或法规下的义务以及任何上述违规行为所导致的后果(包括 Google 或任何第三方可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.7 “预览版”正在开发中,您的测试和反馈是开发过程的重要环节。使用“预览版”,即表示您承认某些功能仍在开发实现之中,您不应期望“预览版”具备稳定版本的全部功能。您同意不使用此“预览版”公开发布或发运任何应用,因为此“预览版”在 Android SDK 正式发行之后将不再受支持。
-
-5. 您的开发者凭据
-
-5.1 您同意,对于 Google 可能向您发放或可能由您自行选择的任何开发者凭据,您有责任保持其机密性,并且您对以您的开发者凭据名义开发的所有应用负全责。
-
-6. 隐私权和信息
-
-6.1 为持续创新和改进“预览版”,Google 可能会从软件收集某些使用统计数据,包括但不限于唯一标识符、关联的 IP 地址、软件的版本号以及有关软件使用了“预览版”中哪些工具和/或服务及其使用方式的信息。在收集任何上述信息之前,“预览版”都会通知您并征求您的同意。如果您拒绝同意,我们将不会收集这些信息。
-
-6.2 我们会对收集的数据进行汇总调查,以便改进“预览版”,并会按照 Google 的隐私政策(网址为 http://www.google.com/policies/privacy/)维护数据。
-
-7. 第三方应用
-
-7.1 如果您使用“预览版”运行由第三方开发或访问由第三方提供的数据、内容或资源的应用,您同意 Google 对这些应用、数据、内容或资源不承担任何责任。您理解,您通过上述第三方应用可能访问到的所有数据、内容或资源由其提供者负全责,Google 对您因使用或访问其中任何第三方应用、数据、内容或资源而遭受的任何损失或损害不承担任何责任。
-
-7.2 您应知晓,通过此类第三方应用提供给您的数据、内容和资源可能受提供商(或代表他们的其他人员或公司)所拥有的知识产权的保护。除非相关所有者明确给予许可,否则您不得修改、出租、租赁、借出、出售、分发这些数据、内容或资源(的全部或部分),或以其为基础创建衍生品。
-
-7.3 您承认您对上述第三方应用、数据、内容或资源的使用可能受到您与相关第三方之间单独订立的条款的制约。
-
-8. 使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 从 Google 检索数据,即表示您承认这些数据可能受到 Google 或这些数据提供方(或代表他们的其他人员或公司)拥有的知识产权的保护。您对任何上述 API 的使用可能受到附加服务条款的制约。除非相关服务条款允许,否则您不得修改、出租、租赁、借出、出售、分发这些数据(的全部或部分),或以其为基础创建衍生品。
-
-8.1.2 如果您使用任何 API 从 Google 检索用户数据,即表示您承认并同意您只有在征得用户明确同意时才会检索数据,并且只能在用户允许时出于用户许可的有限目的检索数据。
-
-9. 终止许可协议
-
-9.1 本许可协议将持续有效,直至您或 Google 按以下规定终止本协议。
-
-9.2 如果您想终止本许可协议,可通过停止使用“预览版”以及任何相关开发者凭据予以终止。
-
-9.3 Google 有权在向您在作出通知后,有理由或无理由地随时终止与您订立的这份许可协议。
-
-9.4 本许可协议将在下列情况下自动终止,而无需另行通知或采取其他行动,以先符合条件者为准:
-(A) Google 在您居住或使用服务所在国家/地区停止向用户提供“预览版”或“预览版”的某些部分;
-(B) Google 发行 Android SDK 的最终版本。
-
-9.5 在本许可协议终止时,本许可协议中向您授予的许可将终止,您应立即完全停止使用“预览版”,并且第 10、11、12 和 14 节的条款将无限期继续存在。
-
-10. 免责声明
-
-10.1 您明确理解并同意,您使用“预览版”的风险将由您自行承担,并且“预览版”是按“原样”和“现状”提供,Google 不提供任何类型的担保。
-
-10.2 您对“预览版”的使用以及通过使用“预览版”下载或以其他方式获得的任何材料由您自行决定,风险自负,并且对于因此类使用而对您的计算机系统或其他设备造成的任何损害或数据损失由您单方面负责。在不对上文所述予以限制的条件下,您了解“预览版”并非稳定版本,可能存在将导致重大损害的错误、缺陷和安全漏洞,包括无法挽回地完全无法使用您的计算机系统或其他设备。
-
-10.3 Google 进一步明确拒绝任何类型的所有担保和条件,无论明示或暗示,包括但不限于有关适销性、特定用途适用性以及非侵权的暗示担保和条件。
-
-11. 有限责任
-
-11.1 您明确理解并同意,对于您可能遭遇的任何直接、间接、附带、特殊、继发或惩罚性损害(包括任何数据损失),Google 及其子公司和附属公司以及其许可方在任何责任理论下对您概不承担任何责任,无论 Google 或其代表是否已被告知或是否本应知晓发生任何上述损失的可能性。
-
-12. 赔偿
-
-12.1 您同意,在法律所允许的最大限度内,为 Google、其附属公司及其各自的董事、高管、员工和代理商提供辩护,使其免于因下列情况引起或产生的任何及所有索赔、诉讼、起诉或诉讼程序以及任何及所有损失、债务、损害、成本和费用(包括合理的律师费用)而承担责任或遭受损害:(a) 您对“预览版”的使用;(b) 您在“预览版”上开发的任何应用侵犯任何人的任何知识产权或诽谤任何人或侵犯其公开权或隐私权;以及 (c) 您的任何行为有悖于本许可协议
-
-13. 许可协议的更改
-
-13.1 Google 可能会在分发新版本“预览版”时对许可协议做出更改。做出这些更改后,Google 将在提供“预览版”的网站上公布新版本的许可协议。
-
-14. 一般法律条款
-
-14.1 本许可协议构成您与 Google 之间的完整法律协议,管辖您对“预览版”(不包括 Google 可能依据另外的书面协议向您提供的任何服务)的使用,并完全取代您之前与 Google 之间签订的、与“预览版”有关的任何协议。
-
-14.2 您同意,如果 Google 未行使或未强制执行本许可协议包含的任何法定权利或救济(或 Google 在任何适用法律下享有的相关利益),不得视为 Google 正式放弃这些权利,Google 仍可获得这些权利或救济。
-
-14.3 如果任何拥有管辖权的法院将本许可协议的任何条款裁定为无效,则该条款将从本许可协议中删除,而不会影响本许可协议的其余部分。本许可协议的其余条款将继续有效且可强制执行。
-
-14.4 您承认并同意,Google 集团旗下的每一家公司都将成为本许可协议的第三方受益人,并且此类其他公司将有权直接强制执行和依赖本许可协议中任何授予其利益(或支持其权利)的条款。除此之外,任何其他人员或公司均不得成为本许可协议的第三方受益人。
-
-14.5 出口限制。“预览版”受美国出口法律和法规的制约。您必须遵守适用于“预览版”的所有国内和国际出口法律和法规。这些法律包括目的地、最终用户和最终用途方面的限制。
-
-14.6 未经 Google 事先书面批准,您不得擅自转让或转移本许可协议,未经此类批准而试图进行的任何转让均为无效。未经 Google 事先书面批准,您不得委托您依据本许可协议所应承担的责任或义务。
-
-14.7 本许可协议以及您与 Google 依据本许可协议而建立的关系受加利福尼亚州法律管辖,而无论其是否与其他法律条款冲突。您与 Google 同意服从位于加利福尼亚州圣克拉拉县内法院的专属司法管辖权,以解决本许可协议引起的任何法律事务。尽管有上述规定,您同意仍允许 Google 在任何管辖区域申请禁令救济(或同等类型的紧急法律救济)。
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">我已阅读并同意上述条款和条件</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
- <ol>
- <li><a href="#sdk">预览版 SDK</a></li>
- <li><a href="#docs">开发者文档</a></li>
- <li><a href="#images">硬件系统映像</a></li>
- </ol>
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- Android M 预览版 SDK 包括开发工具、Android 系统文件和库文件,旨在帮助您在下一版本的平台中测试您的应用以及该平台提供的新 API。
-本文旨在介绍如何获得“预览版”的可下载组件,以便测试您的应用。
-
-</p>
-
-
-<h2 id="sdk">预览版 SDK</h2>
-
-<p>
- 预览版 SDK 可通过 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK 管理器</a>下载。如需了解有关下载和配置预览版 SDK 的详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html#downloadSdk">设置预览版 SDK</a>。
-
-</p>
-
-
-<h2 id="docs">开发者文档</h2>
-
-<p>
- 开发者文档下载软件包提供详细的 API 参考信息和“预览版”的 API 差异报告。
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-
-<h2 id="images">硬件系统映像</h2>
-
-<p>
- 这些系统映像允许您在实际设备上安装预览版平台,以便进行测试。
-通过使用这些映像之一配置设备,您可以安装并测试您的应用,以了解其在下一版本平台上的性能表现。
-在设备上安装系统映像的过程会<em>删除设备中的所有数据</em>,因此您应该在安装系统映像之前备份数据。
-
-
-</p>
-
-<p class="warning">
- <b>警告:</b>以下 Android 系统映像是预览版,可能会随时发生变化。您对这些系统映像的使用受 Android SDK 预览版许可协议的制约。
-Android 预览版系统映像并非稳定版本,可能包含会对您的计算机系统、设备和数据造成损害的错误和缺陷。
-
-Android 预览版系统映像未经过与出厂操作系统相同的测试,可能会导致您的手机和安装的服务与应用停止工作。
-
-
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">将映像安装到设备</h3>
-
-<p>
- 要使用设备映像进行测试,您必须将其安装到兼容设备上。请按照下面的说明安装系统映像:
-
-</p>
-
-<ol>
- <li>下载并解压此处列出的系统映像包之一。</li>
- <li>备份设备中您希望予以保留的任何数据。</li>
- <li>按照
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
- 中的说明将映像刷入设备中。</li>
-</ol>
-
-<p class="note">
- <strong>注:</strong>为开发设备刷入预览版系统映像之后,它将通过无线 (OTA) 更新自动升级到下一个预览版本。
-
-</p>
-
-<h3 id="revertDevice">将设备还原至出厂规格</h3>
-
-<p>
- 如果您想要卸载预览版并将设备还原至出厂规格,请转到
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> 并下载要为设备刷入的映像。
-按照该页面上的说明将映像刷入设备中。
-
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/app-linking.jd b/docs/html-intl/intl/zh-cn/preview/features/app-linking.jd
deleted file mode 100644
index 77a532f..0000000
--- a/docs/html-intl/intl/zh-cn/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=应用链接
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=应用链接, 深层链接, 意向
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
- <ol>
- <li><a href="#web-assoc">声明网站关联</a></li>
- <li><a href="#verfy-links">请求应用链接验证</a></li>
- <li><a href="#user-manage">管理应用链接设置</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android 意向系统是一种让应用能够处理内容和请求的灵活机制。
- 可能会有多个应用在其意向过滤器中声明一致的 URI 模式。如果用户点击的 Web 链接没有默认的启动处理程序,平台可能会显示一个对话框,让用户从一系列已声明一致意向过滤器的应用中进行选择。
-
-
-</p>
-
-<p>
- Android M 开发者预览版引入了对应用链接的支持,后者在现有链接处理方式基础上进行了改进,允许应用开发者将应用与他们拥有的 Web 域进行关联。
-当开发者创建此关联时,平台可以自动确定在处理特定 Web 链接时默认使用的应用,略过询问用户的步骤。
-
-
-</p>
-
-
-<h2 id="web-assoc">声明网站关联</h2>
-
-<p>
- 网站所有者必须声明与应用的关联才能建立应用链接。网站所有者可以通过在域上众所周知的位置承载一个名为 {@code statements.json} 的 JSON 文件声明与应用的关系:
-
-
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>注:</strong>
- 在 M 开发者预览版运行期间,系统会通过 HTTP 协议对该 JSON 文件进行验证。当平台正式发布后,系统将通过 HTTPS 加密协议对该文件进行验证。
-
-</p>
-
-<p>
- 该 JSON 文件指定应作为该域下 URL 默认处理程序使用的 Android 应用。
-它根据以下字段标识该应用:
-</p>
-
-<ul>
- <li>{@code package_name}:该应用的清单文件中声明的软件包名称;</li>
-
- <li>{@code sha256_cert_fingerprints}:应用签名证书的 SHA256 指纹。
- 您可以利用 Java 密钥工具,通过以下命令生成该指纹:
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- 以下文件清单显示的是一个
-{@code statements.json} 文件的内容和格式示例:
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">请求应用链接验证</h2>
-
-<p>
- 应用可以请求平台自动根据相应 Web 域上承载的 {@code statements.json} 文件验证由其意向过滤器数据元素内的主机名称定义的任何应用链接。
-
-要请求应用链接验证,请按以下清单文件代码段中所示向清单文件中所需的每个意向过滤器添加一个 {@code android:autoVerify}
- 属性:
-
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- 如果应用清单文件中存在 {@code android:autoVerify} 属性,平台会在安装应用时尝试验证应用链接。
-如果平台无法成功验证应用链接,则不会将应用设置为处理 Web 链接的首选应用。
-用户下一次打开其中一个链接时,平台将退回原有模式,向用户显示一个对话框。
-
-
-</p>
-
-<p class="note">
- <strong>注:</strong>在测试时,如果验证失败,但用户已经使用系统的“设置”应用显式允许应用在不询问用户的情况下打开受支持的链接,则可能会出现误报。在这种情况下,不会显示对话框,链接会直接指向您的应用,不过这完全是由于用户设置的缘故,并不是因为验证成功。
-
-
-
-</p>
-
-
-<h2 id="user-manage">管理应用链接设置</h2>
-
-<p>
- 用户可以更改应用链接设置,让系统按首选方式处理 URL。您可以在系统“设置”应用的<strong>设置 > 应用 > 应用信息 > 默认打开</strong>下查看和管理应用链接。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/features/runtime-permissions.jd b/docs/html-intl/intl/zh-cn/preview/features/runtime-permissions.jd
deleted file mode 100644
index 8e361fb6..0000000
--- a/docs/html-intl/intl/zh-cn/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-page.title=权限
-page.tags=previewresources, androidm
-page.keywords=permissions, runtime, preview
-page.image={@docRoot}preview/features/images/permissions_check.png
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>内容快览</h2>
- <ul>
- <li>如果您的应用主要面向 M 预览版 SDK,则会在运行时(而非安装时)提示用户授予权限。
-</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 开发者预览版引入了一种新的应用权限模型,旨在简化用户安装和升级应用的过程。
-如果在 M 预览版上运行的应用支持新权限模型,则用户无需在安装或升级应用时授予任何权限。相反,应用会根据需要请求权限,且系统将向用户显示一个请求权限的对话框。
-
-
-
-
-</p>
-
-<p>
- 如果应用支持新权限模型,则仍可在运行旧版 Android 的设备上使用旧权限模型安装并运行此应用。
-
-
-</p>
-
-<h2 id="overview">
- 概览
-</h2>
-
-<p>
- 通过 M 开发者预览版,该平台引入了新的应用权限模型。
-以下概述了此新模型的主要组件:
-</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} 的所有权限。
-
-
- 例如,闹铃和 Internet 权限属于 {@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 开发者预览版,则必须使用新权限模型。
-<em></em>
-</p>
-
-<p>
- 截至 M 开发者预览版发布,并非所有 Google 应用均已完全实现新权限模型。
-Google 会在 M 开发者预览版运行期间更新这些应用,以便严格遵守权限切换设置。
-
-
-</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>应用 ></strong>
-
- <i>应用名称</i> <strong>> 权限</strong>。应用应在运行时继续检查权限,并根据需要请求权限。
-
-
-</p>
-
-<h3 id="compatibility">
- 前后兼容性
-</h3>
-
-<p>
- 如果应用并非面向 M 开发者预览版,则即使是在 M 预览版设备上,该应用也会继续使用旧权限模型。
-当用户安装应用时,系统将要求用户授予应用清单文件中列出的所有权限。
-
-
-</p>
-
-<p class="note">
- <strong>注:</strong>在运行 M 开发者预览版的设备上,用户可以从应用的“设置”屏幕禁用任何应用(包括旧版应用)的权限。
-
-如果用户禁用某旧版应用的权限,则系统将以静默方式禁用相应的功能。
-当应用尝试执行需要该权限的操作时,该操作不一定会导致出现异常。
-
-相反,它可能会返回空数据集、报告错误或以其他方式表现出异常行为。
-例如,如果您未经许可查询日历,则该方法会返回空数据集。
-
-</p>
-
-<p>
- 如果您在未运行 M 预览版的设备上使用新权限模型安装应用,则系统将采用与其他任何应用相同的方式处理:系统会在安装应用时要求用户授予声明的所有权限。
-
-
-
-</p>
-
-<p class="note">
- <strong>注:</strong>对于预览版本,您必须将最低 SDK 版本设置为 M 预览版 SDK,才可使用预览版 SDK 进行编译。
-这意味着在开发者预览版运行期间,您无法在旧版平台上测试此类应用。
-
-
-</p>
-
-<h3 id="perms-vs-intents">权限与意向的比较</h3>
-
-<p>
- 许多情况下,您可以使用以下两种方式之一来让您的应用执行某项任务。
-您可以将应用设置为请求执行操作本身所需的权限。
-或者,您可以将应用设置为通过传送意向,让其他应用来执行任务。
-
-</p>
-
-<p>
- 例如,假设应用需要能够使用设备相机拍摄照片。
-应用可以请求
-<code>android.permission.CAMERA</code> 权限,以便允许其直接访问相机。
-然后,应用将使用 Camera API 控制相机并拍摄照片。
-利用此方法,您的应用能够完全控制摄影过程,并支持您将相机 UI 合并至应用中。
-
-
-</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>应用可在您执行操作时完全控制用户体验。
-但是,如此广泛的控制会增加任务的复杂性,因为您需要设计适当的 UI。
-
- </li>
-
- <li>当您首次执行操作时,系统会显示一次让用户授予权限的提示。
-之后,应用即可执行操作,不再需要用户进行其他交互。
-但是,如果用户不授予权限(或稍后撤销权限),则应用根本无法执行操作。
-
-
- </li>
-</ul>
-
-<p>
- 如果使用意向:
-</p>
-
-<ul>
- <li>您无需为操作设计 UI。处理意向的应用将提供 UI。不过这意味着您无法控制用户体验。
-
-用户可以与您从未见过的应用进行交互。
-
- </li>
-
- <li>如果用户没有适用于操作的默认应用,则系统会提示用户选择应用。如果用户未指定默认处理程序,则必须在每次执行此操作时额外处理一个对话框。
-
-
-
- </li>
-</ul>
-
-<h2 id="coding">为运行时权限编码</h2>
-
-<p>
- 如果应用主要面向新的 M 开发者预览版,则您必须使用新权限模型。
-这意味着除了通过清单文件声明所需的权限以外,您还必须检查应用运行时是否已有相应的权限,如果没有,则需要请求权限。
-
-
-
-</p>
-
-<h3 id="enabling">
- 启用新权限模型
-</h3>
-
-<p>
- 要启用新的 M 开发者预览版权限模型,请将应用的
-<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 预览版的权限
-</h3>
-
-<p>
- 您可以使用应用清单文件中的新 <code><uses-permission-sdk-m></code> 元素指明仅在 M 开发者预览版中需要某权限。
-如果您以这种方式声明权限,则每当在旧版设备上安装应用时,系统都不会提示用户或向应用授予权限。通过使用 <code><uses-permission-sdk-m></code>
- 元素,您可以将新权限添加到更新后的应用版本,而不必强制用户在安装更新时授予权限。
-
-
-
-
-
-</p>
-
-<p>
- 如果应用在已安装 M 开发者预览版的设备上运行,则
-<code><uses-permission-sdk-m></code> 的行为与
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> 相同。
- 系统不会在安装应用时提示用户授予任何权限,且应用将根据需要请求权限。
-
-</p>
-
-<h3 id="prompting">
- 提示授予权限
-</h3>
-
-<p>
- 如果应用使用新的 M 开发者预览版权限模型,则在运行 M 预览版的设备上首次启动应用时,系统不会要求用户授予所有权限。
-
-相反,应用将根据需要请求权限。
-当应用请求某权限时,系统会向用户显示一个对话框。
-
-</p>
-
-<p>
- 如果应用在已安装 SDK 22 或更低版本的设备上运行,则应用将使用旧权限模型。
-当用户安装应用时,系统将提示他们授予应用在清单文件中请求的所有权限,但那些带有 <code><uses-permission-sdk-m></code> 标记的权限除外。
-
-
-</p>
-
-<h4 id="check-platform">检查运行应用的平台</h4>
-
-<p>
- 只有运行 M 开发者预览版的设备支持此权限模型。
-在调用其中任何方法之前,应用均应通过检查 {@link android.os.Build.VERSION#CODENAME
- Build.VERSION.CODENAME} 的值来验证运行应用的平台。
-
-如果设备正在运行 M 开发者预览版,则
-{@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>
-@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 开发者预览版,则您必须测试它是否正确处理权限。
-您不能假设应用在运行时具备任何特定的权限。
-应用首次启动时,它可能没有任何权限,且用户可以随时撤销或恢复权限。
-
-
-</p>
-
-<p>
- 您应测试应用,确保它在所有权限情况下均可正常运行。
-通过 M 预览版 SDK,我们提供了新的
-<a href="{@docRoot}tools/help/adb.html">Android
- Debug Bridge (adb)</a> 命令,支持您使用需要尝试的任何权限设置测试应用。
-
-</p>
-
-<h3>
- 新 adb 命令和选项
-</h3>
-
-<p>
- M 预览版 SDK 平台工具提供了多个新命令,支持您测试应用处理权限的方式。
-
-</p>
-
-<h4>
- 使用权限安装
-</h4>
-
-<p>
- 您可以使用 <a href="{@docRoot}tools/help/adb.html#move"><code>adb
- install</code></a> 命令的新 <code>-g</code> 选项,该选项将安装应用并授予其清单文件中列出的所有权限:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g <path_to_apk>
-</pre>
-
-<h4>
- 授予和撤销权限
-</h4>
-
-<p>
- 您可以使用新的 ADB <a href="{@docRoot}tools/help/adb.html#pm">软件包管理器 (pm)</a> 命令向已安装的应用授予权限和撤销其权限。此功能对于自动化测试非常有用。
-
-
-</p>
-
-<p>
- 要授予权限,请使用软件包管理器的 <code>grant</code> 命令:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant <package_name> <permission_name>
-</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 <package_name> <permission_name>
-</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>
- 例如,摄影应用可能需要使用位置服务,以便能够为照片添加地理标签。
-通常,用户可能不了解照片能够包含位置信息,并且对摄影应用想要了解具体位置感到不解。
-
-因此在这种情况下,应用最好在调用
-<code>requestPermissions()</code> 之前告知此功能的相关信息。<em></em>
-
-</p>
-
-<p>
- 其中一种办法是将这些请求纳入应用教程。这样,教程可以依次显示应用的每项功能,并在显示每项功能时解释需要哪些相应的权限。
-
-例如,摄影应用的教程可以演示其“与您的联系人共享照片”功能,然后告知用户需要为应用授予权限以便其查看用户的联系人。
-
-
-然后,应用可以调用 <code>requestPermissions()</code>,要求用户提供该访问权限。
-当然,并非所有用户都会按照教程操作,因此您仍需在应用的正常操作期间检查和请求权限。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/index.jd b/docs/html-intl/intl/zh-cn/preview/index.jd
deleted file mode 100644
index 36ad718..0000000
--- a/docs/html-intl/intl/zh-cn/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M 开发者预览版
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M 开发者预览版</h1>
- <p class="dac-hero-description">
- 准备迎接 Android 的下一版本。在 Nexus 5、6、9 和 Player 中测试应用。
-了解新功能:<strong>运行权限</strong>、<strong>瞌睡</strong>和<strong>应用待机</strong>省电功能、新的<strong>协助技术</strong>等。
-
-
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- 开始!
-</a><br>
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">资源</h1>
- <div class="dac-section-subtitle">
- 帮助您的应用准备使用 Android M 的必备信息。
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- 报告问题
-</a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- 加入 G+ 社区
-</a>
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/zh-cn/preview/license.jd b/docs/html-intl/intl/zh-cn/preview/license.jd
deleted file mode 100644
index 31363be..0000000
--- a/docs/html-intl/intl/zh-cn/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=许可协议
-
-@jd:body
-
-<p>
-在开始使用 Android SDK 预览版之前,您必须同意下列条款和条件。正如下文所述,请注意:这是 Android SDK 的预览版本,可能随时更改,恕不另行通知,您使用此版本的风险由您自行承担。
-Android SDK 预览版并非稳定版本,可能包含会对您的计算机系统、设备和数据造成损害的错误和缺陷。
-</p>
-
-<p>
-本协议是 Android SDK 预览版许可协议(以下称为“许可协议”)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1. 简介
-
-1.1 Android SDK 预览版(在本许可协议中简称为“预览版”,具体包括 Android 系统文件、封装 API 以及预览版库文件(若可用))依据本许可协议的条款授权您使用。本许可协议在您与 Google 之间就您对“预览版”的使用构成具有法律约束力的合约。
-
-1.2 “Android”是指以 Android 开源项目(项目网址为 http://source.android.com/,其内容会不时更新)名义提供、面向设备的 Android 软件栈。
-
-1.3 “Google”是指 Google Inc.,是一家特拉华州公司,主要营业地位于:1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2. 接受许可协议
-
-2.1 要使用“预览版”,您必须先同意本许可协议。如果您不接受本许可协议,则不得使用“预览版”。
-
-2.2 点击接受并/或使用“预览版”,即表示您特此同意本许可协议的条款。
-
-2.3 如果依照美国或其他国家/地区(包括您居住或您使用“预览版”所在的国家/地区)的法律,您被禁止获取“预览版”,则您不得使用“预览版”,也不得接受本许可协议。
-
-2.4 如果您将在贵公司或组织内部使用“预览版”,则您同意代表您的雇主或其他实体接受本许可协议的约束,并且您表示并保证您拥有完全的合法授权令您的雇主或上述实体受本许可协议的约束。如果您不具备必要的授权,则不得代表您的雇主或其他实体接受本许可协议或使用“预览版”。
-
-3. Google 预览版许可
-
-3.1 Google 依据本许可协议的条款授予您个人或在贵公司或组织内部有限使用“预览版”的免版税、不可转让、非独占性、不可再授权且可撤销的许可,其用途仅限开发在 Android 平台上运行的应用。
-
-3.2 您同意 Google 或第三方拥有“预览版”中存在或相关的全部合法权利、所有权和利益,包括“预览版”中存在的任何知识产权。“知识产权”是指根据专利法、版权法、商业机密法、商标法享有的任何及全部权利,以及其他任何及全部专有权利。Google 保留所有未明确授予您的权利。
-
-3.3 您不得将“预览版”用于本许可协议未明确允许的任何用途。您不得:(a) 对“预览版”或“预览版”的任何部分进行复制(备份用途除外)、修改、改编、再分发、反编译、逆向工程、反汇编或创建其衍生品;或 (b) 将“预览版”的任何部分加载到移动手持终端或除个人计算机之外的任何其他硬件设备上,将“预览版”的任何部分与其他软件合并,或者发行任何融入“预览版”某一部分的软件或设备。
-
-3.4 您同意您将不会进行任何可能引起或导致 Android 碎片化的行动,包括但不限于分发、参与创建或以任何方式推广从“预览版”衍生的软件开发工具包。
-
-3.5 对于依据开源软件许可授权的“预览版”组件,其使用、复制和分发仅受该开源软件许可条款的制约,不受本许可协议的约束。您同意在依照被授予的所有权利作为被许可方期间,在遵守此类开源软件许可协议方面始终保持良好的信誉,并避免进行任何可能导致终止、暂停或违反此类权利的行动。
-
-3.6 您同意 Google 所提供“预览版”的形式和性质可随时发生变更,而无需事先通知您,并且未来的“预览版”版本可能会与在之前的“预览版”版本上开发的应用不兼容。您同意 Google 可单方面决定在未事先通知您的情况下全面停止(永久性或暂时性)向您或用户提供“预览版”(或“预览版”内的任何功能)。
-
-3.7 本许可协议内没有任何条款授予您使用 Google 的任何商品名、商标、服务标志、徽标、域名或其他独特品牌特征的权利。
-
-3.8 您同意您不会移除、遮盖或篡改“预览版”上可能贴有或“预览版”内可能包含的任何专有权利声明(包括版权声明和商标声明)。
-
-4. 您对“预览版”的使用
-
-4.1 Google 同意本许可协议中的任何条款均未授予 Google 从您(或您的许可方)处获取您依照本许可协议使用“预览版”开发的任何软件应用中存在或与其相关的权利、所有权或利益,包括这些应用中存在的任何知识产权。
-
-4.2 您同意只出于 (a) 本许可协议和 (b) 相关管辖区域内任何适用法律、法规或公认惯例或准则(包括有关向美国或其他相关国家/地区出口数据或软件或从美国或其他相关国家/地区进口数据或软件的任何法律)所允许的目的而使用“预览版”和编写应用。
-
-4.3 您同意,如果您使用“预览版”开发应用,您将会保护用户的隐私权和合法权利。如果用户向您提供用户名、密码或其他登录信息或个人信息,您必须确保用户知晓这些信息将供您的应用使用,并且您必须为这些用户提供足以满足法律要求的隐私声明和保护。如果您的应用存储由用户提供的个人信息或敏感信息,其存储方式必须安全。如果用户向您提供 Google 帐户信息,您的应用只能在用户允许时出于用户所许可的有限目的使用该信息访问用户的 Google 帐户。
-
-4.4 您同意您不会利用“预览版”从事任何干扰、中断、损坏或以未经授权方式访问 Google 或任何第三方的服务器、网络或其他财产或服务的Activity(包括应用的开发或分发)。
-
-4.5 您同意您对通过 Android 和/或 Android 应用创建、传输或显示的任何数据、内容或资源以及您的行为所导致的后果(包括 Google 可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.6 您同意您为违反本许可协议、任何适用的第三方合约或服务条款或任何适用法律或法规下的义务以及任何上述违规行为所导致的后果(包括 Google 或任何第三方可能遭受的任何损失或损害)负全责(Google 在上述方面对您或任何第三方不承担任何责任)。
-
-4.7 “预览版”正在开发中,您的测试和反馈是开发过程的重要环节。使用“预览版”,即表示您承认某些功能仍在开发实现之中,您不应期望“预览版”具备稳定版本的全部功能。您同意不使用此“预览版”公开发布或发运任何应用,因为此“预览版”在 Android SDK 正式发行之后将不再受支持。
-
-5. 您的开发者凭据
-
-5.1 您同意,对于 Google 可能向您发放或可能由您自行选择的任何开发者凭据,您有责任保持其机密性,并且您对以您的开发者凭据名义开发的所有应用负全责。
-
-6. 隐私权和信息
-
-6.1 为持续创新和改进“预览版”,Google 可能会从软件收集某些使用统计数据,包括但不限于唯一标识符、关联的 IP 地址、软件的版本号以及有关软件使用了“预览版”中哪些工具和/或服务及其使用方式的信息。在收集任何上述信息之前,“预览版”都会通知您并征求您的同意。如果您拒绝同意,我们将不会收集这些信息。
-
-6.2 我们会对收集的数据进行汇总调查,以便改进“预览版”,并会按照 Google 的隐私政策(网址为 http://www.google.com/policies/privacy/)维护数据。
-
-7. 第三方应用
-
-7.1 如果您使用“预览版”运行由第三方开发或访问由第三方提供的数据、内容或资源的应用,您同意 Google 对这些应用、数据、内容或资源不承担任何责任。您理解,您通过上述第三方应用可能访问到的所有数据、内容或资源由其提供者负全责,Google 对您因使用或访问其中任何第三方应用、数据、内容或资源而遭受的任何损失或损害不承担任何责任。
-
-7.2 您应知晓,通过此类第三方应用提供给您的数据、内容和资源可能受提供商(或代表他们的其他人员或公司)所拥有的知识产权的保护。除非相关所有者明确给予许可,否则您不得修改、出租、租赁、借出、出售、分发这些数据、内容或资源(的全部或部分),或以其为基础创建衍生品。
-
-7.3 您承认您对上述第三方应用、数据、内容或资源的使用可能受到您与相关第三方之间单独订立的条款的制约。
-
-8. 使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 从 Google 检索数据,即表示您承认这些数据可能受到 Google 或这些数据提供方(或代表他们的其他人员或公司)拥有的知识产权的保护。您对任何上述 API 的使用可能受到附加服务条款的制约。除非相关服务条款允许,否则您不得修改、出租、租赁、借出、出售、分发这些数据(的全部或部分),或以其为基础创建衍生品。
-
-8.1.2 如果您使用任何 API 从 Google 检索用户数据,即表示您承认并同意您只有在征得用户明确同意时才会检索数据,并且只能在用户允许时出于用户许可的有限目的检索数据。
-
-9. 终止许可协议
-
-9.1 本许可协议将持续有效,直至您或 Google 按以下规定终止本协议。
-
-9.2 如果您想终止本许可协议,可通过停止使用“预览版”以及任何相关开发者凭据予以终止。
-
-9.3 Google 有权在向您作出通知后,有理由或无理由地随时终止与您订立的这份许可协议。
-
-9.4 本许可协议将在下列情况下自动终止,而无需另行通知或采取其他行动,以先符合条件者为准:
-(A) Google 在您居住或使用服务所在国家/地区停止向用户提供“预览版”或“预览版”的某些部分;
-(B) Google 发行 Android SDK 的最终版本。
-
-9.5 在本许可协议终止时,本许可协议中向您授予的许可将终止,您应立即完全停止使用“预览版”,并且第 10、11、12 和 14 节的条款将无限期继续存在。
-
-10. 免责声明
-
-10.1 您明确理解并同意,您使用“预览版”的风险将由您自行承担,并且“预览版”是按“原样”和“现状”提供,Google 不提供任何类型的担保。
-
-10.2 您对“预览版”的使用以及通过使用“预览版”下载或以其他方式获得的任何材料由您自行决定,风险自负,并且对于因此类使用而对您的计算机系统或其他设备造成的任何损害或数据损失由您单方面负责。在不对上文所述予以限制的条件下,您了解“预览版”并非稳定版本,可能存在将导致重大损害的错误、缺陷和安全漏洞,包括无法挽回地完全无法使用您的计算机系统或其他设备。
-
-10.3 Google 进一步明确拒绝任何类型的所有担保和条件,无论明示或暗示,包括但不限于有关适销性、特定用途适用性以及非侵权的暗示担保和条件。
-
-11. 有限责任
-
-11.1 您明确理解并同意,对于您可能遭遇的任何直接、间接、附带、特殊、继发或惩罚性损害(包括任何数据损失),Google 及其子公司和附属公司以及其许可方在任何责任理论下对您概不承担任何责任,无论 Google 或其代表是否已被告知或是否本应知晓发生任何上述损失的可能性。
-
-12. 赔偿
-
-12.1 您同意,在法律所允许的最大限度内,为 Google、其附属公司及其各自的董事、高管、员工和代理商提供辩护,使其免于因下列情况引起或产生的任何及所有索赔、诉讼、起诉或诉讼程序以及任何及所有损失、债务、损害、成本和费用(包括合理的律师费用)而承担责任或遭受损害:(a) 您对“预览版”的使用;(b) 您在“预览版”上开发的任何应用侵犯任何人的任何知识产权或诽谤任何人或侵犯其公开权或隐私权;以及 (c) 您的任何行为有悖于本许可协议
-
-13. 许可协议的更改
-
-13.1 Google 可能会在分发新版本“预览版”时对许可协议做出更改。做出这些更改后,Google 将在提供“预览版”的网站上公布新版本的许可协议。
-
-14. 一般法律条款
-
-14.1 本许可协议构成您与 Google 之间的完整法律协议,管辖您对“预览版”(不包括 Google 可能依据另外的书面协议向您提供的任何服务)的使用,并完全取代您之前与 Google 之间签订的、与“预览版”有关的任何协议。
-
-14.2 您同意,如果 Google 未行使或未强制执行本许可协议包含的任何法定权利或救济(或 Google 在任何适用法律下享有的相关利益),不得视为 Google 正式放弃这些权利,Google 仍可获得这些权利或救济。
-
-14.3 如果任何拥有管辖权的法院将本许可协议的任何条款裁定为无效,则该条款将从本许可协议中删除,而不会影响本许可协议的其余部分。本许可协议的其余条款将继续有效且可强制执行。
-
-14.4 您承认并同意,Google 集团旗下的每一家公司都将成为本许可协议的第三方受益人,并且此类其他公司将有权直接强制执行和依赖本许可协议中任何授予其利益(或支持其权利)的条款。除此之外,任何其他人员或公司均不得成为本许可协议的第三方受益人。
-
-14.5 出口限制。“预览版”受美国出口法律和法规的制约。您必须遵守适用于“预览版”的所有国内和国际出口法律和法规。这些法律包括目的地、最终用户和最终用途方面的限制。
-
-14.6 未经 Google 事先书面批准,您不得擅自转让或转移本许可协议,未经此类批准而试图进行的任何转让均为无效。未经 Google 事先书面批准,您不得委托您依据本许可协议所应承担的责任或义务。
-
-14.7 本许可协议以及您与 Google 依据本许可协议而建立的关系受加利福尼亚州法律管辖,而无论其是否与其他法律条款冲突。您与 Google 同意服从位于加利福尼亚州圣克拉拉县内法院的专属司法管辖权,以解决本许可协议引起的任何法律事务。尽管有上述规定,您同意仍允许 Google 在任何管辖区域申请禁令救济(或同等类型的紧急法律救济)。
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-cn/preview/overview.jd b/docs/html-intl/intl/zh-cn/preview/overview.jd
deleted file mode 100644
index d931db0..0000000
--- a/docs/html-intl/intl/zh-cn/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=计划概览
-page.metaDescription=欢迎参加 Android M 开发者预览版计划。此计划将为您提供针对 Android 的下一版本测试和优化应用所需的所有功能。
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<p>
- 欢迎使用 <strong>Android M 开发者预览版</strong>计划。此计划将为您提供针对 Android 的下一版本测试和优化应用所需的所有功能。
-
-它是一款免费软件。您仅需下载 M 开发者预览版工具即可立即使用。
-
-</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(适用于电视)以及模拟器中运行并测试应用。
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 最新的平台代码
- </h5>
-
- <p>
- 我们将在预览版期间提供多次更新,因此您将可以针对最新的平台变更测试您的应用。
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 通过 OTA(空中下载技术)更新
- </h5>
-
- <p>
- 在向设备刷入初始预览版后,即可通过 OTA 技术获取更新。
-
- </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">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 开发者预览版从 5 月 28 日开始一直运行到最终 Android M SDK 发布为止。最终的 Android M SDK 将于 2015 年第三季度公众版发布之前不久发布。
-
-
-</p>
-
-<p>
- 在开发阶段的各个里程碑,我们将为您的测试设备提供预览版更新。
- 暂定的里程碑包括
-</p>
-
-<ul>
- <li>
- <strong>预览版 1</strong>(5 月底发布初始预览版);
- </li>
-
- <li>
- <strong>预览版 2</strong>(6 月底/7 月初);
- </li>
-
- <li>
- <strong>预览版 3</strong>(7 月底发布近乎最终版本)
- </li>
-</ul>
-
-<p>
- 这些更新将促进形成<strong>最终版本的 SDK</strong>(第三季度末),为 Android 新版本以及最终的系统行为和功能交付官方 API。
-
-
-</p>
-
-<p>
- 如果您在 Android M 中进行测试和开发,我们郑重建议您随着预览版更新的发布,<strong>将开发环境保持为相应的最新版本</strong>。
-
- 为了简化这一过程,我们将为已刷入预览版内部版本的设备提供<strong>空中下载 (OTA) 更新</strong>功能,并提供可供您手动下载并刷入的系统映像。
-
-
-</p>
-<p class="note">
- <strong>注:</strong>最终的 SDK 和系统映像无法通过 OTA 交付,而是需要<strong>手动刷入</strong>到测试设备中。</strong>
-
-
-</p>
-
-<p>
- 当有预览版更新可用时,我们将通过 <a href="http://android-developers.blogspot.com/">Android 开发者博客</a>、此站点以及 <a href="http://g.co/dev/AndroidMDevPreview">Android M 开发者社区</a>通知您。
-
-
-</p>
-
-<h2 id="preview_tools">
- 预览版具有哪些功能?
-</h2>
-
-<p>
- M 开发者预览版包括您在各种使用不同屏幕尺寸、网络技术、CPU/GPU 芯片和硬件架构的设备中测试现有应用所需的所有功能。
-
-
-</p>
-
-<h4>
- SDK 工具
-</h4>
-
-<p>
- 您可通过 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> 中的 SDK 管理器下载这些组件:
-</p>
-
-<ul>
- <li>M 开发者预览版 <strong>SDK 工具</strong>
- </li>
-
- <li>M 开发者预览版<strong>模拟器系统映像</strong>(32 位和 64 位)
-
- </li>
-
- <li>适用于 Android TV 的 M 开发者预览版<strong>模拟器系统映像</strong>(32 位)
-
- </li>
-</ul>
-
-<h4>
- 硬件系统映像
-</h4>
-
-<p>
- 您可从<a href="download.html">“下载”页面</a>中下载这些供 Nexus 设备使用的硬件系统映像:
-
-</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>
- 以下文档资源有助于您了解预览版:
-</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>
- M 开发者预览版当前版本的<a href="{@docRoot}preview/support.html#release-notes">版本说明</a>,包括变更说明和差异报告。
-
- </li>
-</ul>
-
-<h4>
- 支持资源
-</h4>
-
-<p>
- 在 M 开发者预览版中测试和开发时,您可使用以下支持资源:
-
-</p>
-
-<ul>
- <li><a href="https://code.google.com/p/android-developer-preview/">M 开发者预览版问题跟踪器</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>与其他使用 Android M 的开发者建立联系</strong>。您可以共享观察结果或想法,或查找 Android M 问题的解决方法。
-
-
-
- </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
- 锁定目标、预览版 API 和发布
-</h2>
-
-<p>
- Android M 开发者预览版是仅面向开发的版本,
-<strong>并不具有标准的 API 级别</strong>。如果您想选择拒绝通过兼容性行为测试您的应用(强烈推荐),则可将应用的 <code><a href=
- "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code>
- 设置为 <code>“MNC”</code>,从而锁定 M 开发者预览版。
-
-
-</p>
-
-<p>
- Android M 开发者预览版提供<strong>预览 API</strong> 功能
-— 在最终的 SDK 发布之前,这些 API 都不是正式的 API。目前,最终的 SDK 计划于 2015 年第三季度发布。
-这意味着一段时期内,特别是该计划的最初几周内,
-<strong>API 可能会出现细微变化</strong>。
-我们会通过 Android M 开发者预览版的每次更新,为您提供一份变更摘要。
-
-</p>
-
-<p class="note">
- 请注意,尽管预览版 API 可能会更改,但运行时权限和省电功能等基本系统行为仍保持稳定,可以立即用于测试。
-
-
-</p>
-
-<p>
- 关于发布,Google Play 会<strong>禁止发布面向 M 开发者预览版的应用</strong>。
-当 Android M 最终版本 SDK 可用时,您可以锁定官方 Android M API 级别,并将应用发布至 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</a> 和配置测试设备的说明,来设置您的环境。
-
-
- </li>
-
- <li>遵循<a href="https://developers.google.com/android/nexus/images">刷入说明</a>,刷入 Nexus 5、6、9 和 Player 的最新 M 开发者预览版系统映像。
-
-为开发设备刷入系统映像后,预览版更新将通过无线 (OTA) 更新进行交付。</a>
-
- </li>
-
- <li>下载 <a href="{@docRoot}preview/download.html#docs">M 预览版 API 参考资料</a>和 <a href="{@docRoot}preview/samples.html">M 预览版示例</a>,更深入地了解新 API 功能以及如何在应用中使用这些功能。
-
-
-
- </li>
-
- <li>加入 <a href="http://g.co/dev/AndroidMDevPreview">Android M 开发者社区</a>,获取最新资讯并与使用新平台的其他开发者建立联系。
-
-
- </li>
-</ol>
-
-<p>
- 感谢您参加 Android M 开发者预览版计划!
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/samples.jd b/docs/html-intl/intl/zh-cn/preview/samples.jd
deleted file mode 100644
index 9f16319..0000000
--- a/docs/html-intl/intl/zh-cn/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=示例
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- 以下是 M 开发者预览版的代码示例。要在 Android Studio 中下载示例,请选择<b>文件 > 导入示例</b>菜单选项。
-
-</p>
-
-<p class="note">
- <strong>注:</strong>这些可下载的项目设计用于与 Gradle 和 Android Studio 结合使用。
-
-</p>
-
-
-<h3 id="RuntimePermissions">运行时权限</h3>
-
-<p>
- Android M 改变了系统权限运行的方式。系统会在运行时(而不是安装期间)要求用户批准权限请求。
-此示例显示了如何请求这些权限。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">在 GitHub 中获取</a></p>
-
-<h3 id="ConfirmCredentials">确认凭据</h3>
-
-<p>
- 此示例演示了在您的应用中如何使用设备凭据作为身份验证方法。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">在 GitHub 中获取</a>
-</p>
-
-<h3 id="FingerprintDialog">指纹对话框</h3>
-
-<p>
- 此示例演示了在您的应用中如何识别已注册的指纹以验证用户的身份。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">在 GitHub 中获取</a></p>
-
-<h3 id="AutomaticBackup">自动备份应用</h3>
-
-<p>
- Android M 引入了自动备份应用设置功能。此示例演示如何向应用添加筛选规则,以管理设置备份。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">在 GitHub 中获取</a></p>
-
-<h3 id="CameraRaw">相机 2 RAW</h3>
-
-<p>
- 演示如何使用 <code>Camera2</code> API 捕获 RAW 相机缓冲区并将其另存为 <code>DNG</code> 文件。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">在 GitHub 中获取</a></p>
-
-<h3 id="ActiveNotification">活动通知</h3>
-
-<p>
- 此示例演示 <a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
- 如何让您了解应用当前显示的通知数量。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">在 GitHub 中获取</a></p>
diff --git a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd b/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
deleted file mode 100644
index e9910b4..0000000
--- a/docs/html-intl/intl/zh-cn/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=设置预览版 SDK
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
- <ol>
- <li><a href="#get-as13">获取 Android Studio 1.3</a></li>
- <li><a href="#get-sdk">获取预览版 SDK</a></li>
- <li><a href="#create-update">创建或更新项目</a></li>
- <li><a href="#setup-test">测试设置</a></li>
- </ol>
- </div>
-</div>
-
-<p>M 开发者预览版 SDK 可通过 Android SDK 管理器获取。本文假定您熟悉 Android 应用开发的相关操作,例如:使用 Android SDK 管理器和创建项目。
-
-如果您是首次使用 Android,请先参阅<a href="{@docRoot}training/basics/firstapp/index.html">开发您的第一款应用</a>培训课程。</a>
-
-</p>
-
-<h2 id="get-as13">获取 Android Studio 1.3</h2>
-
-<p>开发者预览版与处于预览版状态的 Android Studio 1.3 结合使用时效果最佳。
-强烈建议您安装 Android Studio 1.3 的预览版本,以便与预览版 SDK 结合使用。
-</p>
-
-<p class="caution"><strong>注意:</strong>Android Studio 1.3 的 Canary 预览版仍处于活动的开发状态。
-如果您正使用主要开发机器测试开发者预览版,则可创建另一套 Android Studio 安装系统供测试使用。
-
-</p>
-
-<p>要安装 Android Studio 1.3 预览版,请执行以下操作:</p>
-
-<ol>
- <li>下载并启动 <a href="{@docRoot}tools/studio/index.html">Android Studio</a>。
-
- </li>
-
- <li>打开<strong>设置</strong>窗口(在 Windows 中,您可通过选择<strong>文件 > 设置</strong>执行此操作)。
-选择<strong>外观和行为 > 系统设置 > 更新</strong>面板。
-
-
-
- <p class="aside">在 OSX 中,您可在 Android Studio 的<strong>首选项</strong>窗口中找到<strong>外观和行为</strong>面板。
-
-</p>
- </li>
-
- <li> 在<strong>更新</strong>面板中,选择选项<strong>自动检查更新:
-Canary 渠道</strong>。
- </li>
-
- <li>在<strong>更新</strong>面板中,选择<strong>立即检查</strong>,以检查最新的 Canary 内部版本。
-当系统出现提示时,请下载并安装该内部版本。
-
- </li>
-</ol>
-
-<h2 id="get-sdk">获取预览版 SDK</h2>
-
-<p>要将预览版 SDK 组件添加到开发环境,请执行以下操作:</p>
-
-<ol>
- <li>启动 Android Studio 1.3 预览版。
- </li>
-
- <li>打开<strong>设置</strong>窗口(在 Windows 中,您可通过选择<strong>文件 > 设置</strong>执行此操作)。
-选择<strong>外观和行为 > 系统设置 > 更新</strong>面板。
-
-
-
- <p class="aside">在 OSX 中,您可在 Android Studio 的<strong>首选项</strong>窗口中找到<strong>外观和行为</strong>面板。
-
-</p>
- </li>
-
- <li>在<strong>更新</strong>面板中,选择选项<strong>自动检查更新:
-Canary 渠道</strong>和<strong>自动检查 Android SDK 的更新:
-预览版渠道</strong>。
- </li>
-
- <li>启动 <strong>Android SDK 管理器</strong>。(对于 Android Studio 1.3,SDK 管理器已集成至 Android Studio,而不是独立应用。)
-
-
- </li>
-
- <li>在<strong>平台</strong>部分下,选择 <strong>Android MNC 预览版</strong>。
-
- </li>
-
- <li>在<strong>工具</strong>部分中,选择最新的 Android <strong>SDK 工具</strong>、<strong>平台工具</strong>和<strong>构建工具</strong>。
-
-
- </li>
-
- <li>点击<strong>安装软件包</strong>并接受所有软件包的许可协议。
-
- </li>
-
- <li>验证是否已安装 M 开发者预览版,具体方式如下:打开<strong>设置</strong>窗口并选择<strong>外观与行为 > 系统设置 > Android SDK</strong> 面板。
-
-</li>
-
- <li>在 <strong>Android SDK</strong> 面板中,选择 <strong>SDK 平台</strong>选项卡。
-<strong>Android MNC 预览版</strong>应作为“已安装”列出<em></em>。
-另外,打开 <strong>SDK 工具</strong>选项卡,确认是否已安装最新工具。
-
-
- </li>
-</ol>
-<p>完成上述步骤后,预览版组件即可用于您的开发环境。
- </p>
-
-
-<h2 id="create-update">创建或更新项目</h2>
-
-<p>
- 为使用预览版 API,您必须创建或更新一个使用预览版组件的开发项目。
-
-</p>
-
-
-<h3 id="create">创建新项目</h3>
-
-<p>
- 建议使用 Android Studio 创建一个使用该预览版的项目。按照<a href="{@docRoot}sdk/installing/create-project.html">创建项目</a>中所描述的步骤操作,直到转到项目向导中的“外形”<em></em>屏幕为止。
-
-然后执行下列步骤,创建为该预览版配置的项目。
-
-</p>
-
-<ul>
- <li>选中<strong>手机和平板电脑</strong>。</li>
- <li>选择 <strong>MNC:Android M (预览版)</strong>(在<strong>最低 SDK</strong> 中)。
-</li>
-</ul>
-
-
-<h3 id="update">更新现有项目</h3>
-
-<p>
- 对于现有项目,您必须修改项目配置以启用预览版 API。在开发环境中,打开模块的 <code>build.gradle</code> 文件,并按如下所示设置这些值:
-
-
-</p>
-
-<ul>
- <li>将 <code>compileSdkVersion</code> 设置为 <code>'android-MNC'</code></li>
- <li>将 <code>minSdkVersion</code> 设置为 <code>'MNC'</code></li>
- <li>将 <code>targetSdkVersion</code> 设置为 <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">测试设置</h2>
-
-<p>
- 要使用预览版测试应用,您必须拥有已配置平台预览版本的物理设备或虚拟设备。
-如果您拥有兼容设备,则可安装预览版平台进行测试。
-另外,您可以配置用于测试的虚拟设备。
-</p>
-
-<h3 id="setup-device">设置物理设备</h3>
-
-<p>
- 如果您拥有 Nexus 5、Nexus 6、Nexus 9 或 Android TV,则可在这些设备中安装预览版系统映像,来测试您的应用。通过使用 Android 虚拟设备管理器工具,您可从 Android Studio 内设置带有平台预览版本的虚拟设备。
-
-
-
-</p>
-
-<p class="caution">
- <strong>重要说明:</strong>在设备中安装预览版映像会删除此设备中的所有数据,因此您应在安装预览版映像之前备份数据。<em></em>
-
-</p>
-
-<h3 id="setupAVD">设置虚拟设备</h3>
-
-<p>
- 通过使用 Android 虚拟设备管理器工具,您可从 Android Studio 内设置带有平台预览版本的虚拟设备。
-
-</p>
-
-<p>要使用 AVD 管理器创建 AVD,请执行以下操作:</p>
-
-<ol>
- <li>在开发环境中安装预览版 SDK,如<a href="{@docRoot}preview/setup-sdk.html">设置预览版 SDK</a> 中所述。
-
-</li>
- <li>按照<a href="{@docRoot}tools/devices/managing-avds.html">使用 AVD 管理器管理 AVD </a>中的步骤操作。
-
-使用以下设置:
- <ul>
- <li><strong>设备:</strong>Nexus 5、Nexus 6、Nexus 9 或 Android TV</li>
- <li><strong>目标:</strong>
- Android M(预览版)- API 级别 M</li>
- <li><strong>ABI:</strong>x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- 如需了解有关创建测试用虚拟设备的详细信息,请参阅<a href="{@docRoot}tools/devices/index.html">管理虚拟设备</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-cn/preview/testing/guide.jd b/docs/html-intl/intl/zh-cn/preview/testing/guide.jd
deleted file mode 100644
index 256d5bb..0000000
--- a/docs/html-intl/intl/zh-cn/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=测试指南
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=预览资源,androidm,测试,权限
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
- <ol>
- <li><a href="#runtime-permissions">测试权限</a></li>
- <li><a href="#doze-standby">测试瞌睡模式和应用待机模式</a></li>
- <li><a href="#ids">自动备份和设备标识符</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- 利用 Android M 开发者预览版,您有机会确保应用可使用下一平台版本。
-如 <a href="{@docRoot}preview/api-overview.html">API 概览</a>和<a href="{@docRoot}preview/behavior-changes.html">行为变更</a>中所述,该预览版包括大量 API 和可能影响应用的行为变更。
-
-使用预览版测试应用时,您应重点关注一些特定的系统变更,确保用户拥有愉悦的体验。
-
-
-</p>
-
-<p>
- 本指南介绍可使用您的应用测试预览版的哪些功能以及如何测试。您应确定优先测试以下特定预览版功能,因为它们可能会对应用行为产生较大影响。
-
-
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">权限</a>
- </li>
- <li><a href="#doze-standby">瞌睡模式和应用待机模式</a>
- </li>
- <li><a href="#ids">自动备份和设备标识符</a></li>
-</ul>
-
-<p>
- 如需了解有关如何使用预览版系统映像设置设备或虚拟设备以进行测试的详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html">设置预览版 SDK</a>。
-
-</p>
-
-
-<h2 id="runtime-permissions">测试权限</h2>
-
-<p>
- 新<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>模型改变了用户向您的应用分配权限的方式。
-您的应用必须在运行时要求用户提供各项权限,而不是在安装过程中要求授予所有权限。
-
-对于用户而言,此行为有助于他们更精细地控制每个应用的Activity,并更深入地了解应用为何请求提供特定权限的上下文信息。
-用户可以随时向应用授予某项权限或撤销其某项权限。
-预览版的这种功能最有可能会对应用行为产生影响,而且可能会阻止某些应用功能运行或只能在降级状态中运行。
-
-
-</p>
-
-<p class="caution">
- 这一变更会影响在新平台上运行的所有应用,即便这些应用并非面向新平台版本开发亦是如此。
-该平台为旧版应用提供有限的兼容性行为,但您现在应当开始计划将应用迁移到新权限模型,以便在官方平台启动时发布更新的应用版本。
-
-
-</p>
-
-
-<h3 id="permission-test-tips">测试提示</h3>
-
-<p>
- 使用以下测试提示有助于您计划并通过新权限行为执行应用测试。
-
-</p>
-
-<ul>
- <li>识别应用的当前权限和相关的代码路径</li>
- <li>跨受权限保护的服务和数据测试用户流程</li>
- <li>使用授予/撤销权限的各种组合进行测试</li>
- <li>使用 {@code adb} 工具从命令行管理权限:
- <ul>
- <li>按组列出权限和状态:
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>使用以下语法授予或撤销一项或多项权限:<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>针对使用权限的服务对应用进行分析</li>
-</ul>
-
-<h3 id="permission-test-strategy">测试策略</h3>
-
-<p>
- 权限更改会影响应用的结构和设计,以及您为用户提供的用户体验和流程。
-您应评估应用的当前权限使用情况并开始计划要提供的新流程。
-平台的正式版本提供兼容性行为,但您应计划更新应用,而不是依赖于这些行为。
-
-
-</p>
-
-<p>
- 确定应用实际需要和使用的权限,然后找出各种使用受权限保护的服务的代码路径。
-您可通过结合使用新平台测试和代码分析完成此操作。
-在测试中,您应通过将应用的 {@code targetSdkVersion} 更改为预览版,重点关注选择运行时权限。
-如需了解详细信息,请参阅<a href="{@docRoot}preview/setup-sdk.html#">设置预览版 SDK</a>。
-
-</p>
-
-<p>
- 使用已撤销和已添加权限的各种组合进行测试,突出显示依赖于权限的用户流程。
-如果依赖关系不明显或不符合逻辑,则您应考虑重构或划分该流程,以消除依赖关系或阐明需要权限的原因。
-
-
-</p>
-
-<p>
- 如需了解有关运行时权限行为、测试和最佳做法的详细信息,请参阅<a href="{@docRoot}preview/features/runtime-permissions.html">权限</a>开发者预览版页面。
-
-
-</p>
-
-
-<h2 id="doze-standby">测试瞌睡模式和应用待机模式</h2>
-
-<p>
- 当设备处于空闲状态或应用未聚焦时,瞌睡模式和应用待机模式的节能功能将限制应用可执行的后台处理工作量。
-系统可对应用实施的限制包括:限制或禁止访问网络、暂停后台任务、暂停通知、忽略唤醒请求和闹铃。
-
-要确保应用在完成这些节能优化后正常运行,您应通过模拟这些低功耗状态对应用进行测试。
-
-
-</p>
-
-<h4 id="doze">在瞌睡模式下测试您的应用</h4>
-
-<p>要在瞌睡模式下测试您的应用,请执行以下操作:</p>
-
-<ol>
-<li>使用 M 预览版系统映像配置硬件设备或虚拟设备</li>
-<li>将设备连接到开发计算机并安装应用</li>
-<li>运行应用并使其保持活动状态</li>
-<li>通过运行以下命令,模拟进入瞌睡模式的设备:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>观察重新激活设备时的应用行为。确保应用在设备退出瞌睡模式时正常恢复
-</li>
-</ol>
-
-
-<h4 id="standby">在应用待机模式下测试您的应用</h4>
-
-<p>要在应用待机模式下测试您的应用,请执行以下操作:</p>
-
-<ol>
- <li>使用 M 预览版系统映像配置硬件设备或虚拟设备</li>
- <li>将设备连接到开发计算机并安装应用</li>
- <li>运行应用并使其保持活动状态</li>
- <li>通过运行以下命令,模拟进入待机模式的应用:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>使用以下命令模拟如何唤醒应用:
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>观察唤醒后的应用行为。确保应用从待机模式中正常恢复。
-特别地,您应检查应用的通知和后台作业是否按预期继续运行
-</li>
-</ol>
-
-<h2 id="ids">自动备份应用和设备特定的标识符</h2>
-
-<p>如果应用坚持在内部存储中使用任何设备特定的标识符,如 Google 云消息传递注册 ID,请确保遵循最佳做法将存储位置从自动备份中排除,如<a href="{@docRoot}preview/backup/index.html">自动备份应用</a>中所述。
-
-
-
- </p>
diff --git a/docs/html-intl/intl/zh-cn/preview/testing/performance.jd b/docs/html-intl/intl/zh-cn/preview/testing/performance.jd
deleted file mode 100644
index 1f88854..0000000
--- a/docs/html-intl/intl/zh-cn/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=测试显示性能
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=性能, fps, 工具
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文内容</h2>
- <ol>
- <li><a href="#measure">测量 UI 性能</a>
- <ul>
- <li><a href="#aggregate">聚合帧统计信息</a></li>
- <li><a href="#timing-info">精确的帧时间信息</a></li>
- <li><a href="#timing-dump">简单的帧时间转储</a></li>
- <li><a href="#collection-window">控制统计信息收集的时段</a></li>
- <li><a href="#diagnose">诊断性能回归</a></li>
- <li><a href="#resources">其他资源</a></li>
- </ul>
- </li>
- <li><a href="#automate">自动化 UI 性能测试</a>
- <ul>
- <li><a href="#ui-tests">设置 UI 测试</a></li>
- <li><a href="#automated-tests">设置自动化 UI 测试</a></li>
- <li><a href="#triage">分类并解决观察到的问题</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- 用户界面 (UI) 性能测试可确保您的应用不仅满足其功能要求,同时确保用户与应用之间的交互顺畅无比,能够以每秒连续 60 帧(<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">为什么选择 60fps?</a>)的帧速运行,而不会出现任何帧丢失或延迟的现象,也就是我们通常所说的“卡顿”。<em></em>
-
-
-本文档介绍可用于测量 UI 性能的工具并提出一种将 UI 性能测量集成到测试实践中的方法。
-
-
-</p>
-
-
-<h2 id="measure">测量 UI 性能</h2>
-
-<p>
- 为了改善性能,您首先必须能够测量系统性能,然后诊断并识别可能来自管道各个部分的问题。
-
-
-</p>
-
-<p>
- <a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a> 是一种在设备上运行并转储感兴趣的系统服务状态信息的 Android 工具。<em></em>
-
-通过向 dumpsys 传递“gfxinfo”命令,可以提供 logcat 格式的输出,其中包含有关与录制阶段期间发生的动画帧相关的性能信息。
-
-<em></em>
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- 此命令可以生成多个不同表达形式的帧时间数据。
-</p>
-
-<h3 id="aggregate">聚合帧统计信息</h3>
-
-<p>
- 借助 M 预览版,该命令可将在整个进程生命周期中收集的帧数据的聚合分析打印输出到 logcat。
-例如:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- 这些高级统计信息可以较高水平地传达应用的呈现性能及其在多个帧之间的稳定性。
-
-</p>
-
-
-<h3 id="timing-info">精确的帧时间信息</h3>
-
-<p>
- M 预览版附带提供了一个适用于 gfxinfo 的新命令,即:framestats,该命令根据最近的帧提供非常详细的帧时间信息,让您能够更准确地查出并调试问题。<em></em>
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- 此命令根据应用生成的最后 120 帧,打印输出带有纳秒时间戳的帧时间信息。以下是来自 adb dumpsys gfxinfo <软件包名称> framestats 的原始输出示例:
-
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- 每行输出均代表应用生成的一帧。每行都有固定的列数,用于描述帧生成管道的每个阶段所花的时间。
-下文将详细描述此格式,包括每列代表的具体内容。
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats 数据格式</h4>
-
-<p>
- 由于数据块是 CSV 格式的输出,因此将其粘贴到所选的电子表格工具或使用脚本进行收集和解析非常简单。
-下表解释了输出数据列的格式。
-所有时间戳均以纳秒计。
-</p>
-
-<ul>
- <li>标志
- <ul>
- <li>“标志”列带有“0”的行可以通过从 FRAME_COMPLETED 列中减去 INTENDED_VSYNC 列计算得出总帧时间。
-
- </li>
-
- <li>该列为非零值的行将被忽略,因为其对应的帧已被确定为偏离正常性能,其布局和绘制时间预计超过 16 毫秒。
-
-可能出现这种情况有如下几个原因:
- <ul>
- <li>窗口布局发生变化(例如,应用的第一帧或在旋转后)
-
- </li>
-
- <li>此外,如果帧的某些值包含无意义的时间戳,则也可能跳过该帧。
-例如,如果帧的运行速度超过 60fps,或者如果屏幕上的所有内容最终都准确无误,则可能跳过该帧,这不一定表示应用中存在问题。
-
-
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>帧的预期起点。如果此值不同于 VSYNC,则表示 UI 线程中发生的工作使其无法及时响应垂直同步信号。
-
-
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>所有垂直同步侦听器中使用的时间值和帧绘图(Choreographer 帧回调、动画、View.getDrawingTime() 等等)
-
- </li>
-
- <li>如需进一步了解 VSYNC 及其对应用产生的影响,请观看<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">了解 VSYNC</a> 视频。
-
-
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>输入队列中最早输入事件的时间戳或 Long.MAX_VALUE(如果帧没有输入事件)。
-
- </li>
-
- <li>此值主要用于平台工作,对应用开发者的作用有限。
-
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>输入队列中最新输入事件的时间戳或 0(如果帧没有输入事件)。
-
- </li>
-
- <li>此值主要用于平台工作,对应用开发者的作用有限。
-
- </li>
-
- <li>但是,可以通过查看 (FRAME_COMPLETED - NEWEST_INPUT_EVENT) 大致了解应用增加的延迟时间。
-
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>将输入事件分派给应用的时间戳。
- </li>
-
- <li>通过观察此时间戳与 ANIMATION_START 之间的时差,可以测量应用处理输入事件所花的时间。
-
- </li>
-
- <li>如果这个数字较高(> 2 毫秒),则表明应用处理 View.onTouchEvent() 等输入事件所花的时间太长,这意味着此工作需要进行优化或转交给其他线程。
-
-请注意,有些情况下(例如,启动新Activity或类似活动的点击事件),这个数字较大是预料之中并且可以接受的。
-
-
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>在 Choreographer 中注册的动画运行的时间戳。
- </li>
-
- <li>通过观察此时间戳与 PERFORM_TRANVERSALS_START 之间的时差,可以确定评估正在运行的所有动画(ObjectAnimator、ViewPropertyAnimator 和通用转换)所需的时间。
-
-
- </li>
-
- <li>如果这个数字较高(> 2 毫秒),请检查您的应用是否编写了任何自定义动画,或检查 ObjectAnimator 在对哪些字段设置动画并确保它们适用于动画。
-
-
- </li>
-
- <li>如需了解有关 Choreographer 的更多信息,请观看<a href="https://developers.google.com/events/io/sessions/325418001">利弊</a>视频。
-
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>如果您从此值中扣除 DRAW_START,则可推断出完成布局和测量阶段所需的时间(请注意,在滚动或动画期间,您会希望此时间接近于零)。
-
-
- </li>
-
- <li>如需了解有关呈现管道的测量和布局阶段的更多信息,请观看<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">失效、布局和性能</a>视频。
-
-
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>performTraversals 绘制阶段的开始时间。这是记录任何失效视图的显示列表的起点。
-
- </li>
-
- <li>此时间与 SYNC_START 之间的时差就是对树中的所有失效视图调用 View.draw() 所需的时间。
-
- </li>
-
- <li>如需了解有关绘图模型的详细信息,请参阅<a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">硬件加速</a>或<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">失效、布局和性能</a>视频。
-
-
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>绘制同步阶段的开始时间。
- </li>
-
- <li>如果此时间与 ISSUE_DRAW_COMMANDS_START 之间的时差较大(约 > 0.4 毫秒),则通常表示绘制了大量必须上传到 GPU 的新位图。
-
-
- </li>
-
- <li>如需进一步了解同步阶段,请观看 <a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">GPU 呈现模式分析</a>视频。
-
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>硬件呈现器开始向 GPU 发出绘图命令的时间。
- </li>
-
- <li>此时间与 FRAME_COMPLETED 之间的时差让您可以大致了解应用生成的 GPU 工作量。
-绘制过度或呈现效果不佳等问题都会在此显示出来。
-
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>调用 eglSwapBuffers 的时间,此调用不属于平台工作,相对乏味。
-
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>全部完成!处理此帧所花的总时间可以通过执行 FRAME_COMPLETED - INTENDED_VSYNC 计算得出。
-
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- 您可以通过不同的方法使用此数据。一种简单却有用的可视化方式就是在不同的延迟时段中显示帧时间 (FRAME_COMPLETED - INTENDED_VSYNC) 分布的直方图(参见下图)。
-
-此图直观地表明,大部分帧非常有效,截止时间远低于 16 毫秒(显示为红色),但是少数帧明显超出了截止时间。
-
-我们可以观察此直方图中的变化趋势,了解所产生的整体变化或新异常值。
-此外,您还可以根据数据中的多个时间戳绘制表示输入延迟、布局所用时间或其他类似关注指标的图形。
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">简单的帧时间转储</h3>
-
-<p>
- 如果在“开发者选项”中将 <strong>GPU 呈现模式分析</strong>设置为<strong>在 adb shell dumpsys gfxinfo 中</strong>,则 <code>adb shell dumpsys gfxinfo</code> 命令会打印输出最近 120 帧的时间信息,这些信息分为几个不同的类别,其相应的值以制表符分隔。
-
-
-这些数据可以用于大致表明绘图管道的哪些部分可能速度较慢。
-
-</p>
-
-<p>
- 与上述 <a href="#fs-data-format">framestats</a> 类似,将其粘贴到所选的电子表格工具或使用脚本进行收集和解析同样非常简单。
-
-下图详细显示了应用生成的许多帧的具体时间分布。
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- 运行 gfxinfo、复制输出、将其粘贴到电子表格应用并将数据绘制成堆积条形图的结果。
-
-</p>
-
-<p>
- 每个垂直条均代表一个动画帧;其高度代表计算该动画帧所需的毫秒数。
-垂直条的每个彩色分段均代表呈现管道的一个不同阶段,因此您可以看到应用的哪些部分可能会出现瓶颈。
-
-如需了解有关呈现管道的详细信息,请参阅<a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">失效、布局和性能</a>视频。
-
-
-</p>
-
-
-<h3 id="collection-window">控制统计信息收集的时段</h3>
-
-<p>
- Framestats 和简单的帧计时均可在极短的时间内(相当于约呈现 2 秒)收集数据。
-要精确控制此时间范围(例如,将数据限制于特定动画),您可以重置所有计数器并汇总收集的统计信息。
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- 这也可以与转储命令结合使用来定期进行收集和重置,从而持续捕获时间范围不到 2 秒的帧。
-
-
-</p>
-
-
-<h3 id="diagnose">诊断性能回归</h3>
-
-<p>
- 要查出问题并保持应用运行状况良好,第一步最好是识别回归。
-但是,dumpsys 仅确定是否存在问题及其相对严重性。
-您仍需诊断性能问题的具体原因并找到适当的解决方法。
-为此,我们强烈建议您使用 <a href="{@docRoot}tools/help/systrace.html">systrace</a> 工具。
-
-</p>
-
-
-<h3 id="resources">其他资源</h3>
-
-<p>
- 如需了解有关 Android 呈现管道的工作原理、可能存在的常见问题以及如何解决这些问题的详细信息,以下其他资源可能对您有所帮助:
-
-
-</p>
-
-<ul>
- <li>呈现性能 101
- </li>
- <li>为什么选择 60fps?
- </li>
- <li>Android UI 和 GPU
- </li>
- <li>失效、布局和性能
- </li>
- <li>使用 Systrace 分析 UI 性能
- </li>
-</ul>
-
-
-<h2 id="automate">自动化 UI 性能测试</h2>
-
-<p>
- UI 性能测试方法之一是让测试人员对目标应用执行一系列用户操作,并目视检查是否存在卡顿现象,或花费大量时间使用工具驱动型方法来查明是否存在卡顿现象。
-
-但是,这种人工方法充满风险:人为感知帧率变化的能力参差不齐,并且此过程又费时、繁琐且易于出错。
-
-
-</p>
-
-<p>
- 更为有效的方法是记录并分析自动化 UI 测试中的关键性能指标。
-Android M 开发者预览版包括新的日志记录功能。利用这些功能,您可以轻松确定应用动画中的卡顿数量和严重性,您还可以使用这些功能构建严格的流程,用于确定当前性能并跟踪未来的性能目标。
-
-
-
-</p>
-
-<p>
- 本文将向您介绍一种使用这些数据自动化性能测试的推荐方法。
-
-</p>
-
-<p>
- 此方法主要分为两个关键操作。首先,确定测试对象和测试方法;其次,设置和维护自动化测试环境。
-
-
-</p>
-
-
-<h3 id="ui-tests">设置 UI 测试</h3>
-
-<p>
- 在开始进行自动化测试之前,您必须做出一些较高层次的决策,以便准确了解测试空间和可能存在的需求。
-
-</p>
-
-<h4>
- 识别要测试的关键动画/流程
-</h4>
-
-<p>
- 请记住,流畅的动画中断时,用户对低劣性能的感触最深。
-因此,在识别要测试的 UI 操作类型时,集中精力处理用户最常见或对用户体验最为重要的关键动画非常有用。
-
-例如,以下是对识别有所帮助的一些常见场景:
-</p>
-
-<ul>
- <li>滚动主要的 ListView 或 RecyclerView
- </li>
-
- <li>异步等待周期内的动画
- </li>
-
- <li>可能涉及位图加载/操纵的所有操作
- </li>
-
- <li>包括 Alpha 值混合处理在内的动画
- </li>
-
- <li>使用画布绘制的自定义视图
- </li>
-</ul>
-
-<p>
- 与团队中的工程师、设计师和产品经理开展合作,优先处理测试覆盖范围内的这些关键产品动画。
-
-</p>
-
-<h4>
- 定义未来的目标并予以跟踪
-</h4>
-
-<p>
- 从较高层面来看,确定具体的性能目标、专注于编写测试并收集相关数据至关重要。
-例如:
-</p>
-
-<ul>
- <li>您是否只是首次想要开始跟踪 UI 性能以了解详情?
- </li>
-
- <li>您是否想要防止未来可能引入的性能回归?
- </li>
-
- <li>您当前是否有 90% 的帧运行顺畅且希望在本季度达到 98%?
- </li>
-
- <li>您是否有 98% 的帧运行顺畅且不希望出现性能回归?
- </li>
-
- <li>提高低端设备上的性能是否为您的目标?
- </li>
-</ul>
-
-<p>
- 在所有这些情况下,您都将需要进行历史跟踪,以显示多个应用版本中的性能。
-
-</p>
-
-<h4>
- 识别用于测试的设备
-</h4>
-
-<p>
- 应用性能因其所在设备而异。某些设备的内存可能更少,GPU 功能略弱或 CPU 芯片速度较慢。
-这意味着动画在一套硬件上表现良好,但在其他硬件上可能并非如此,而且可能因为其他管道部分中出现的瓶颈表现更为糟糕。
-
-因此,考虑到用户可能会看到的这种变化,请选取各种设备(包括当前的高端设备、低端设备、平板电脑等)来执行测试。
-
-找出 CPU 性能、RAM、屏幕密度、尺寸等方面的变化。
-在高端设备上顺利通过的测试在低端设备上可能会失败。
-
-</p>
-
-<h4>
- 基本的 UI 测试框架
-</h4>
-
-<p>
- <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> 和 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a> 等测试套件是为了帮助自动化用户使用应用过程中的操作而构建。
-
-这些套件是模拟用户与您的设备进行交互的简单框架。
-要使用这些框架,您需要有效创建通过一组用户操作运行的独特脚本,并在设备中演示这些脚本。
-
-
-</p>
-
-<p>
- 通过结合这些自动化测试以及 <code>dumpsys gfxinfo</code>,您可以快速创建可再生成的系统,然后您可使用此系统执行测试并测量特定条件的性能信息。
-
-
-</p>
-
-
-<h3 id="automated-tests">设置自动化 UI 测试</h3>
-
-<p>
- 您能够执行 UI 测试并拥有从单一测试收集数据的管道后,下一个重要步骤就是采用可以在多种设备上多次执行该测试的框架,并汇总生成的性能数据,以供开发团队做进一步分析。
-
-
-
-</p>
-
-<h4>
- 测试自动化框架
-</h4>
-
-<p>
- 有一点值得注意,UI 测试框架(例如,<a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>)直接在目标设备/模拟器上运行,
-而性能信息收集则是由主机通过 ADB 发送命令来驱动 dumpsys gfxinfo 完成的。<em></em>
-为帮助桥接这些单独实体的自动化,我们开发了 <a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 框架;这是一款在主机上运行的脚本编写系统,可以向一组连接设备发出命令并从中接收数据。
-
-
-
-</p>
-
-<p>
- 为正确自动化 UI 性能测试而构建一套脚本时,至少应当能够利用 monkeyRunner 完成以下任务:
-
-</p>
-
-<ul>
- <li>向一个或多个目标设备或模拟器加载并启动所需的 APK。
- </li>
-
- <li>启动 UI Automator 的 UI 测试并允许执行该测试
- </li>
-
- <li>通过 dumpsys gfxinfo 收集性能信息。<em></em><em></em>
- </li>
-
- <li>汇总信息并以有效的方式重新向开发者显示。
- </li>
-</ul>
-
-
-<h3 id="triage">分类并解决观察到的问题</h3>
-
-<p>
- 一旦确定问题模式或回归,下一步就是识别和应用修复。
-如果自动化测试框架保持帧的精确时间分解,则可帮助您审查最近的可疑代码/布局更改(出现回归时),或在切换到人工调查时缩小分析的系统范围。
-
-
-对于人工调查,<a href="{@docRoot}tools/help/systrace.html">systrace</a> 是一个很好的着手点,它可显示有关呈现管道的每个阶段、系统中的每个线程和核心以及您定义的任何自定义事件标记的精确时间信息。
-
-
-</p>
-
-<h4>
- 准确分析时间
-</h4>
-
-<p>
- 需要注意的是,获取和测量呈现性能所需的时间并非易事。
-就其本质而言,这些数字不具有确定性,往往会随系统状态、可用内存量、热节流以及太阳耀斑到达地面的最后时间而波动。
-
-问题在于,尽管同一测试可以运行两次,但获得的结果可能略有不同,它们彼此接近,却并不完全相同。
-
-
-</p>
-
-<p>
- 以这种方式准确收集和分析数据意味着多次运行同一测试,且以平均值或中值的形式累积结果(为了简单起见,我们将其称为“批处理”)。这可为您提供测试性能的粗略近似值,而无需确切的时间。
-
-
-
-</p>
-
-<p>
- 您可对代码更改前和更改后的应用均使用批处理,了解这些更改对性能产生的相对影响。
-如果更改前批处理的平均帧率大于更改后批处理的平均帧率,则此特定更改通常可为您带来全面的性能优势。
-
-
-</p>
-
-<p>
- 这意味着您执行的任何自动化 UI 测试均应考虑这一概念以及测试期间可能出现的任何异常。
-例如,如果应用性能因某些设备问题(不是由应用引起)骤降,则您可能需要重新运行批处理以便获得更精确的时间。
-
-
-
-</p>
-
-<p>
- 那么,在获得更有意义的测量结果之前,您应运行多少次测试?至少应运行 10 次,次数越多(例如 50 或 100 次)获得的结果更精确(当然,您现在是牺牲时间换取精确度)
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/api-overview.jd b/docs/html-intl/intl/zh-tw/preview/api-overview.jd
deleted file mode 100644
index f6c5696..0000000
--- a/docs/html-intl/intl/zh-tw/preview/api-overview.jd
+++ /dev/null
@@ -1,521 +0,0 @@
-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">藍牙手寫筆支援</a></li>
- <li><a href="#ble-scanning">已改進藍牙低電量掃描</a></li>
- <li><a href="#hotspot">無線基地台 2.0 版本 1 支援</a></li>
- <li><a href="#4K-display">4K 顯示模式</a></li>
- <li><a href="#behavior-themeable-colorstatelists">具備設計風格的 ColorStateList</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 預覽版»</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>M 開發人員預覽版讓您能夠搶先查看即將發行的 Android 平台版本,這個版本將提供可供使用者和應用程式開發人員使用的新功能。
-
-本文件提供最值得受到矚目的 API 簡介。</p>
-
-<p>M 開發人員預覽版的適用對象是<strong>早期採用的開發人員</strong>和<strong>測試者</strong>。
-如果您對於如何影響 Android 架構方向深感興趣,請<a href="{@docRoot}preview/setup-sdk.html">嘗試使用 M 開發人員預覽版</a>,然後將您的意見反應傳送給我們!
-
-
-</p>
-
-<p class="caution"><strong>注意:</strong>請勿將使用 M 開發人員預覽版的應用程式發行到 Google Play 商店。
-</p>
-
-<p class="note"><strong>注意:</strong>本文件通常會參考 <a href="{@docRoot}">developer.android.com</a> 上尚未提供可用參考資料的類別和方法。
-這些 API 元素在本文件中的格式是 {@code code style} (不含超連結)。
-如需這些元素的 API 初稿文件,請下載<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>這個預覽版提供功能更強大的應用程式連結來增強 Android 的意圖系統。此功能讓您能夠將應用程式關聯到您自己的 Web 網域。
-根據這個關聯,平台可以判斷要用來處理特定 Web 連結的預設應用程式,並略過提示使用者選取應用程式的程序。如要深入瞭解如何實作此功能,請參閱<a href="{@docRoot}preview/features/app-linking.html">應用程式連結</a>。
-
-
-
-
-<h2 id="backup">針對應用程式進行自動備份</h2>
-<p>系統現在會針對應用程式執行自動完整資料備份與還原。預設會針對目標為 M 預覽版的應用程式啟用這個行為;您不需要新增任何其他的程式碼。
-如果使用者刪除他們的 Google 帳戶,也會同時刪除他們的備份資料。
-如要深入瞭解此功能的運作方式以及如何在檔案系統上設定要備份的內容,請參閱<a href="{@docRoot}preview/backup/index.html">針對應用程式進行自動備份</a>。
-
-</p>
-
-<h2 id="authentication">驗證</h2>
-<p>這個預覽版提供新的 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()} 方法。您的應用程式必須在配備指紋感應器的相容裝置上執行。
-您必須在應用程式上實作適用於指紋驗證流程的使用者介面,並在您的 UI 中使用標準的 Android 指紋圖示。Android 指紋圖示 ({@code c_fp_40px.png}) 隨附於<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">範例應用程式</a>中。如果您正在開發多個使用指紋驗證的應用程式,請注意,每個應用程式都必須個別驗證使用者的指紋。
-
-
-
-
-</p>
-
-<p>如要在您的應用程式中使用此功能,請先在您的宣示說明中新增 {@code USE_FINGERPRINT} 權限。
-</p>
-
-<pre>
-<uses-permission
- android:name="android.permission.USE_FINGERPRINT" />
-</pre>
-
-<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" />
-
-<p>如要查看指紋驗證的應用程式實作,請參閱<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">指紋對話方塊範例</a>。
-
-</p>
-
-<p>如果您正在測試此功能,請依照下列步驟執行:</p>
-<ol>
-<li>安裝 Android SDK 工具修訂版 24.3 (如果您尚未安裝)。</li>
-<li>前往 [設定] > [安全性] > [指紋]<strong></strong>,然後依照註冊指示,在模擬器中註冊新的指紋。
-</li>
-<li>使用模擬器,利用下列命令來模擬指紋輕觸事件。
-使用同一個命令,在鎖定螢幕上或您的應用程式中模擬指紋輕觸事件。
-
-<pre class="no-prettyprint">
-adb -e emu finger touch <finger_id>
-</pre>
-<p>在 Windows 上,您可能必須執行 {@code telnet 127.0.0.1 <emulator-id>},後面接著
-{@code finger touch <finger_id>}。
-</p>
-</li>
-</ol>
-
-<h3 id="confirm-credential">確認認證</h3>
-<p>您的應用程式可以根據使用者最近一次將裝置解鎖的時間有多接近來驗證他們。此功能讓使用者不需記住其他應用程式特定的密碼,並且讓您不需要實作自己的驗證使用者介面。
-
-您的應用程式應該將此功能與公用或秘密金鑰實作搭配使用,來進行使用者驗證。
-</p>
-
-<p>如要設定在成功驗證使用者之後,同一個金鑰可重複使用的逾時時間長度,可在您設定 {@link javax.crypto.KeyGenerator} 或
-{@link java.security.KeyPairGenerator} 時,呼叫新的
-{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()}
-方法。
-此功能目前適用於對稱式密碼編譯操作。
-</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>這個預覽版提供 API,讓使用者能夠以直覺且快速的方式進行分享。您現在可以定義「直接分享目標」<em></em>,在您的應用程式中啟動特定的行為。這些直接分享目標是透過 [分享]<em></em> 選單來向使用者公開。
-
-此功能讓使用者能夠將內容分享到其他應用程式內的目標,例如聯絡人。
-例如,直接分享目標可以在其他社交網路應用程式中啟動某個活動,讓使用者能夠在該應用程式中,直接與特定的朋友或社群分享內容。
-
-</p>
-
-<p>如要啟用直接分享目標,您必須定義一個類別來擴充
-{@code android.service.} <br>
-{@code chooser.ChooserTargetService} 類別。在宣示說明中宣告您的
-{@code ChooserTargetService}。在該宣告中,指定
-{@code BIND_CHOOSER_TARGET_SERVICE} 權限以及含有
-{@code SERVICE_INTERFACE} 動作的意圖篩選條件。</p>
-<p>下列範例示範如何在您的宣示說明中宣告 {@code ChooserTargetService}。
-</p>
-<pre>
-<service android:name=".ChooserTargetService"
- android:label="@string/service_name"
- android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
- <intent-filter>
- <action android:name="android.service.chooser.ChooserTargetService" />
- </intent-filter>
-</service>
-</pre>
-
-<p>針對您要向 {@code ChooserTargetService} 公開的每個活動,在您的應用程式宣示說明中,新增名稱為
-{@code "android.service.chooser.chooser_target_service"} 的
-{@code <meta-data>} 元素。
-</p>
-
-<pre>
-<activity android:name=".MyShareActivity”
- android:label="@string/share_activity_label">
- <intent-filter>
- <action android:name="android.intent.action.SEND" />
- </intent-filter>
-<meta-data
- android:name="android.service.chooser.chooser_target_service"
- android:value=".ChooserTargetService" />
-</activity>
-</pre>
-
-<h2 id="voice-interactions">語音互動</h2>
-<p>
-這個預覽版提供新的語音互動 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>
-這個預覽版提供一種新方式,可透過小幫手吸引使用者來使用您的應用程式。如要使用此功能,使用者必須啟用小幫手來使用目前的內容。
-啟用之後,使用者就能夠在所有應用程式內,按住 <strong>Home</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">藍牙手寫筆支援</h2>
-<p>這個預覽版提供對於使用者使用藍牙手寫筆進行輸入的改良支援。使用者可以將相容的藍芽手寫筆與他們的手機或平板電腦配對並連線。
-連線之後,來自觸控螢幕的位置資訊會與來自手寫筆的壓力和按鈕資訊結合,比起單獨使用觸控螢幕,這樣能夠提供更大範圍的表達方式。
-
-您的應用程式可以藉由在您的活動中註冊新的
-{@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 預覽版的應用程式,
-{@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">已改進藍牙低電量掃描</h2>
-<p>
-如果您的應用程式會執行藍芽低電量掃描,就可以使用新的
-{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} 方法,來指定如果先找到符合
-{@link android.bluetooth.le.ScanFilter} 組合的廣告封包,以及在某個時段中找不到它時,只需通知回呼。
-
-比起先前平台版本中所提供的功能,這個掃描方法功能更強大且更有效率。
-
-</p>
-
-<h2 id="hotspot">無線基地台 2.0 版本 1 支援</h2>
-<p>
-這個預覽版在 Nexus 6 和 Nexus 9 裝置上新增對於無線基地台 2.0 版本 1 規格的支援。如要在您的應用程式中佈建無線基地台 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} 屬性指出偵測到的網路是否代表無線基地台 2.0 存取點。
-
-
-</p>
-
-<h2 id="4K-display">4K 顯示模式</h2>
-<p>此平台現在允許應用程式能夠要求將在相容硬體中呈現的顯示解析度升級到 4K。
-如要查詢目前的實際解析度,請使用新的
-{@code android.view.Display.Mode} API。如果 UI 是使用較低的邏輯解析度來繪製,並向上升級為較高的實際解析度,請注意,
-{@code Display.Mode.getPhysicalWidth()} 方法傳回的實際解析度可能會與 {@link android.view.Display#getSize(android.graphics.Point) getSize()} 報告的邏輯解析度不同。
-
-</p>
-
-<p>您可以在應用程式執行時,藉由設定應用程式視窗的 {@code WindowManager.LayoutParams.preferredDisplayModeId} 屬性,來要求系統變更該應用程式中的實際解析度。
-如果您想要切換為 4K 顯示解析度,這個功能非常實用。
-儘管在 4K 顯示模式中,UI 會持續使用原始解析度 (例如 1080p) 來呈現並向上升級為 4K,但是
-{@link android.view.SurfaceView} 物件可能會以原生解析度來顯示內容。
-</p>
-
-<h2 id="behavior-themeable-colorstatelists">具備設計風格的 ColorStateList</h2>
-<p>針對執行 M 預覽版的裝置,
-{@link android.content.res.ColorStateList} 中目前支援設計風格屬性。
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} 和
-{@link android.content.res.Resources#getColor(int) getColor()} 方法已過時。如果您正在呼叫這些 API,請改為呼叫新的 {@code Context.getColorStateList()} 或
-{@code Context.getColor()} 方法。
-您也可以透過 {@link android.support.v4.content.ContextCompat},在 v4 appcompat 程式庫中取得這些方法。
-</p>
-
-<h2 id="audio">音訊功能</h2>
-
-<p>這個預覽版在 Android 上新增了音訊處理的增強功能,包括: </p>
-<ul>
- <li>利用新的 {@code android.media.midi} API,來支援 <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> 通訊協定。
-使用這些 API 來傳送與接收 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>這個預覽版在影片處理 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>這個預覽版包含下列可用來存取相機閃光燈和相機重新處理影像的 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>{@link android.hardware.camera2 Camera2} API 已擴充,支援重新處理 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 ImageWriter.queueInputImage()} 方法但不含任何緩衝區複本,直接將 {@code ImageFormat.PRIVATE} 影像傳遞到
-{@code ImageWriter}。
-</p>
-
-<p>{@code ImageReader} 類別現在支援 {@code android.graphics.ImageFormat.PRIVATE} 格式的影像串流。
-這個支援讓您的應用程式能夠保留
-{@code ImageReader} 輸出影像的循環影像佇列、選取一或多個影像,然後將它們傳送到
-{@code ImageWriter} 以進行相機重新處理。</p>
-
-<h2 id="afw">Android for Work 功能</h2>
-<p>這個預覽版包含下列適用於 Android for Work 功能的新 API:</p>
-<ul>
- <li><strong>已增強適用於公司擁有、單一用途裝置的控制項:</strong>裝置擁有者現在可以控制下列設定,來改進公司擁有、單一用途 (COSU) 裝置的管理:
-
-
- <ul>
- <li>使用
-{@code DevicePolicyManager.setKeyguardEnabledState()} 方法來停用或重新啟用滑動解鎖。</li>
- <li>使用
-{@code DevicePolicyManager.setStatusBarEnabledState()} 方法,來停用或重新啟用狀態列 (包括快速設定、通知,以及啟動 Google 即時資訊的導覽向上滑動手勢)。
-</li>
- <li>使用 {@link android.os.UserManager} 常數
-{@code DISALLOW_SAFE_BOOT} 來停用或重新啟用安全開機。</li>
- <li>使用
- {@link android.provider.Settings.Global} 常數 {@code STAY_ON_WHILE_PLUGGED_IN},防止螢幕在使用者為裝置連接電源時關閉。</li>
- </ul>
- </li>
- <li><strong>透過裝置擁有者自動安裝與解除安裝應用程式:</strong>裝置擁有者現在可以使用 {@link android.content.pm.PackageInstaller}
-API (與 Google Play for Work 無關) 自動安裝與解除安裝應用程式。
-您現在可以透過裝置擁有者佈建裝置,該裝置擁有者可在不與使用者互動的情況下擷取並安裝應用程式。
-如要在不啟用 Google 帳戶的情況下輕觸一次就能佈建 Kiosk 或其他這類裝置,這個功能非常有用。
-</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()} 來設定系統更新原則,裝置擁有者現在可以自動接受系統更新 (例如,在 Kiosk 裝置的案例中),或者延後更新,並防止使用者進行更新,最多 30 天。
-
-因此,系統管理員可以設定必須取得更新的每日時間範圍 ,例如,在 Kiosk 裝置處於未使用狀態時。
-在系統更新可供使用時,系統就會檢查工作原則控制器應用程式是否已設定系統更新原則,並據以運作。
-
-
-</li>
-<li>
-<strong>委派的憑證安裝:</strong>設定檔或裝置擁有者現在可以授與第三方廠商的應用程式呼叫這些 {@link android.app.admin.DevicePolicyManager} 憑證管理 API 的能力:
-
-
-<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>佈建裝置擁有者時,您現在可以藉由設定
-{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS} 套件組合,來設定參數以解除鎖定原廠重設保護 (FRP)。
-NFC 程式設計人員應用程式可以在已重設裝置來解除鎖定 FRP 並佈建裝置之後提供這些參數,而不需使用先前設定的 Google 帳戶。
-
-如果您並未修改這些參數,FRP 會就地保留,並防止裝置在沒有先前啟用的 Google 認證的情況下啟用。
-
-
-<p>此外,裝置擁有者可以在 Google Play 服務上設定應用程式限制,來指定可用來解除鎖定 FRP 的替代 Google 帳戶,以取代已在裝置上啟用的帳戶。
-</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>設定檔或裝置擁有者現在可以使用新的
-{@code android.app.usage.NetworkStatsManager} 方法,針對可在 [設定] > [資料]<strong></strong> 使用量中看見的資料使用量統計資料進行查詢。
-系統會自動授與設定檔擁有者權限來查詢他們所管理之設定檔上的資料,在此同時,裝置擁有者會取得受管理的主要使用者之使用量資料的存取權限。
-
-</li>
-<li><strong>執行階段權限管理:</strong>
-<p>設定檔或裝置擁有者可以使用
-{@code DevicePolicyManager.setPermissionPolicy()},針對所有應用程式的所有執行階段要求設定權限原則,以提示使用者授與一般權限,或者以無訊息方式自動授與或拒絕該權限。
-
-如果設定了後項原則,使用者就無法在應用程式權限畫面的 [設定]<strong></strong> 中,修改設定檔或裝置擁有者所做的選項。
-
-</p></li>
-<li><strong>設定中的 VPN:</strong>VPN 應用程式現在可以在 [設定] > [更多] > [VPN]<strong></strong> 中看見。此外,伴隨 VPN 使用量出現的通知是該 VPN 設定方式的特定通知。
-
-
-針對設定檔擁有者,通知是專門用來通知是否已針對受管理的設定檔、個人設定檔或兩者設定了 VPN。
-針對裝置擁有者,通知是專門用來通知是否已針對整個裝置設定了 VPN。
-</li>
-<li><strong>工作狀態通知:</strong>每當來自受管理設定檔的應用程式在前景中有活動時,狀態列上就會出現公事包圖示。
-因此,如果直接將裝置解除鎖定至受管理設定檔中應用程式的活動,即會顯示一個快顯通知,通知使用者他們正處於工作設定檔內。
-
-
-</li>
-</ul>
-
-<p class="note">
- 如需 M 開發人員預覽版中所有 API 變更的詳細檢視,請參閱 <a href="{@docRoot}preview/download.html">API 差異報告</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/backup/index.jd b/docs/html-intl/intl/zh-tw/preview/backup/index.jd
deleted file mode 100644
index edb8b98..0000000
--- a/docs/html-intl/intl/zh-tw/preview/backup/index.jd
+++ /dev/null
@@ -1,327 +0,0 @@
-page.title=針對應用程式進行自動備份
-page.tags=backup, previewresources, androidm
-page.keywords=backup, autobackup, preview
-page.image=images/cards/card-auto-backup_2x.png
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文件內容</h2>
- <ol>
- <li><a href="#overview">總覽</a></li>
- <li><a href="#configuring">設定資料備份</a></li>
- <li><a href="#testing">測試備份設定</a></li>
- <li><a href="#issues">已知問題</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- 使用者通常會在應用程式中花費很多時間精力建立資料和設定偏好設定。
-如果使用者換掉壞掉的裝置或升級到新的裝置時,能夠保存裝置上的資料,就能夠讓使用者獲得良好的體驗。
-執行 Android M 預覽版系統的裝置可以協助在上述情況自動將應用程式資料備份到 Google 雲端硬碟,讓使用者獲得良好的體驗。
-
-如果使用者變更或升級裝置,應用程式資料會自動儲存。
-
-</p>
-
-<p>
- 在執行 Android M 預覽版的裝置上安裝的所有應用程式,預設都會啟用自動備份。不需要任何額外的應用程式程式碼。
-系統則提供使用者不進行自動備份資料的選項。
-您也可以選擇限制要備份應用程式的哪些資料。
-</p>
-
-<p>
- 本文件說明新的系統行為,以及如何指定備份應用程式的哪些資料。
-
-</p>
-
-<h2 id="overview">總覽</h2>
-
-<p>
- 自動備份功能保存應用程式資料的方法,是將使用者裝置上建立的資料上傳到使用者的 Google 雲端硬碟帳戶,然後將資料加密。
-儲存資料不會向您或使用者收費,儲存的資料也不會計入使用者個人雲端硬碟的容量配額。
-在 M 預覽版期間,使用者最多可以為每個 Android 應用程式儲存 25 MB 的資料。
-
-</p>
-
-<p>
- 當裝置閒置、正在充電且連線到 Wi-Fi 網路時,每 24 小時會執行一次自動備份。
-當符合上述情況時,備份管理員服務就會將所有可用的備份資料上傳到雲端。
-當使用者轉換到新的裝置,或者解除安裝又重新安裝已備份的應用程式時,系統會進行一項還原作業,將備份的資料複製到新安裝之應用程式的資料目錄。
-
-
-</p>
-
-<p class="note">
- <strong>注意:</strong>如果您的應用程式使用舊版
- <a href="{@docRoot}google/backup/index.html">Android 備份服務</a>,這個新的行為就不適用,現有的備份行為還是如往常運作。
-
-</p>
-
-
-<h3 id="auto-exclude">自動排除的資料檔案</h3>
-
-<p>
- 並非所有應用程式資料都需要備份,例如暫存檔案和快取,因此自動備份服務預設會排除某些資料檔案:
-
-</p>
-
-<ul>
- <li>{@link android.content.Context#getCacheDir
-getCacheDir()} 和 {@link android.content.ContextWrapper#getCodeCacheDir getCodeCacheDir()}
-方法所參考目錄中的檔案。
- </li>
-
- <li>位於外部儲存空間的檔案,除非這些檔案位於
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()}
-方法所參考的目錄中。
- </li>
-
- <li>{@link android.content.Context#getNoBackupFilesDir getNoBackupFilesDir()} 方法所參考目錄中的檔案。
-
- </li>
-</ul>
-
-<h2 id="configuring">設定資料備份</h2>
-
-<p>
- 除了上一節所列自動排除的檔案之外,其餘由 M 預覽版裝置上安裝的任何應用程式所建立的資料一律都會備份。
-您可以使用應用程式宣示說明中的設定,進一步限制和設定要備份應用程式的哪些資料。
-
-</p>
-
-<h3 id="include-exclude">納入或排除資料</h3>
-
-<p>
- 根據您的應用程式需要的資料和您儲存資料的方式,您可能需要設定特定的規則來納入或排除某些檔案或目錄。
-自動備份服務支援使用 XML 設定檔和應用程式宣示說明來設定這些備份規則。
-
-在應用程式宣示說明中,您可以依照下列範例指定備份配置設定檔:
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:fullBackupContent="@xml/mybackupscheme"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-<p>
- 在此範例程式碼中,<code>android:fullBackupContent</code> 屬性指定應用程式開發專案的 <code>res/xml/</code> 目錄中,名為
-<code>mybackupscheme.xml</code> 的 XML 檔案。
-此設定檔包含要備份哪些檔案的規則。
-下列範例程式碼顯示排除特定檔案不要進行備份的設定檔:
-
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<full-backup-content>
- <exclude domain="database" path="device_info.db"/>
-</full-backup-content>
-</pre>
-
-<p>
- 此範例備份設定只排除特定資料庫檔案不要進行備份。
- 其他所有檔案都會備份。
-</p>
-
-<h4>備份設定語法</h4>
-
-<p>
- 您可以使用備份服務設定指定要將哪些檔案納入或排除備份。
-資料備份設定 XML 檔案的語法如下所示:
-</p>
-
-<pre>
-<full-backup-content>
- <include domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
- <exclude domain=["file" | "database" | "sharedpref" | "external" | "root"] path="string" />
-</full-backup-content>
-</pre>
-
-<p>
- 您可以使用下列元素和屬性指定要將哪些檔案納入備份或從備份排除:
-
-</p>
-
-<ul>
- <li>
- <code><include></code>。如果您想要指定備份一組資源,請使用此元素,而不要讓系統預設備份應用程式的所有資料。
-當您指定
-<code><include></code> 標籤時,系統只會備份此元素「指定的資源」<em></em>。
-
- </li>
-
- <li>
- <code><exclude></code>。如果您想要指定一組資源不要進行備份,請使用此元素。
-系統會備份應用程式中除了此元素指定之資源以外的其他所有資料。
-
- </li>
-
- <li>
- <code>domain.</code> 您想要納入或排除備份的資源類型。此屬性可以指定的有效值包括:
-
- </li>
-
- <li style="list-style: none">
- <ul>
- <li>
- <code>root</code>。指定資源位於應用程式的根目錄。
- </li>
-
- <li>
- <code>file</code>。位於
-{@link android.content.Context#getFilesDir getFilesDir()} 方法傳回的目錄中的資源。
- </li>
-
- <li>
- <code>database</code>。{@link android.content.Context#getDatabasePath getDatabasePath()} 方法或使用
-{@link android.database.sqlite.SQLiteOpenHelper} 類別傳回的資料庫。
-
- </li>
-
- <li>
- <code>sharedpref</code>。{@link android.content.Context#getSharedPreferences getSharedPreferences()}
-方法傳回的 {@link android.content.SharedPreferences} 物件。
-
- </li>
-
- <li>
- <code>external</code>。指定資源位於外部儲存空間,並且位於
-{@link android.content.Context#getExternalFilesDir getExternalFilesDir()} 方法傳回的目錄中的檔案。
-
- </li>
-
- <li>
- <code>path</code>。您想要納入或排除備份的資源檔案路徑。
-
- </li>
- </ul>
- </li>
-</ul>
-
-
-<h3 id="prohibit">禁止資料備份</h3>
-
-<p>
- 您可以在應用程式的宣示說明元素中將
-<code>android:allowBackup</code> 屬性設定為 <code>false</code>,選擇不要對任何應用程式資料進行自動備份。
-此設定如下列範例程式碼所示:
-</p>
-
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="com.my.appexample">
- <uses-sdk android:minSdkVersion="MNC"/>
- <uses-sdk android:targetSdkVersion="MNC"/>
- <app ...
-<strong> android:allowBackup="false"></strong>
- </app>
- ...
-</manifest>
-</pre>
-
-
-<h2 id="testing">測試備份設定</h2>
-
-<p>
- 如果您建立了備份設定,就要進行測試,以確保您的應用程式能正確儲存和還原資料。
-
-</p>
-
-
-<h4>啟用備份記錄</h4>
-
-<p>
- 如要協助判斷備份功能如何剖析您的 XML 檔案,請在執行測試備份之前先啟用記錄功能:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell setprop log.tag.BackupXmlParserLogging VERBOSE
-</pre>
-
-<h4>測試備份</h4>
-
-<p>如要手動執行備份,首先您必須呼叫下列命令以初始化備份管理員:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr run
-</pre>
-
-<p>
- 接著,您要使用下列命令,將 <code><PACKAGE></code> 參數指定為您應用程式的套件名稱,手動備份您的應用程式:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr fullbackup <PACKAGE></pre>
-
-
-<h4>測試還原</h4>
-
-<p>
- 如要在應用程式資料備份之後手動啟動還原,請呼叫下列命令,將 <code><PACKAGE></code> 參數指定為您應用程式的套件名稱:
-
-</p>
-
-<pre class="noprettyprint">
-$ adb shell bmgr restore <PACKAGE>
-</pre>
-
-<p class="warning">
- <b>警告:</b>這個動作在執行還原作業之前會先停止您的應用程式,然後清除其中的資料。
-
-</p>
-
-<p>
- 如果解除安裝又重新安裝應用程式,就會針對應用程式啟動還原程序。應用程式安裝完成之後,就會自動從雲端還原應用程式資料。
-
-</p>
-
-
-<h4>疑難排解備份</h4>
-
-<p>
- 如果您遇到問題,可以在 [設定] > [備份]<strong></strong> 中關閉備份再開啟、將裝置重設為出廠值,或是呼叫下列命令,清除備份資料及相關的中繼資料:
-
-
-</p>
-
-<pre>$ adb shell bmgr wipe <TRANSPORT> <PACKAGE></pre>
-
-<p>
- <code><TRANSPORT></code> 值前面必須加上 <code>com.google.android.gms</code>。
- 如要取得傳輸清單,請呼叫下列命令:
-</p>
-
-<pre>$ adb shell bmgr list transports</pre>
-
-<h2 id="issues">已知問題</h2>
-
-<p>以下是自動備份服務的已知問題:</p>
-
-<ul>
- <li><strong>Google 雲端通訊</strong> - 使用「Google 雲端通訊」推送通知的應用程式有一個已知問題,亦即備份由「Google 雲端通訊」註冊程序傳回的註冊 ID,會讓還原後的應用程式無法傳送推送通知。在新裝置安裝 API 之後,需要向 API 查詢新的註冊 ID,因此如果之前備份了舊的註冊 ID,就會發生問題。
-
-
-
-
-如要避免發生這個情況,請不要備份包含註冊 ID 的檔案。
-
- </li>
-</ul>
diff --git a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd b/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
deleted file mode 100644
index 405aea1..0000000
--- a/docs/html-intl/intl/zh-tw/preview/behavior-changes.jd
+++ /dev/null
@@ -1,402 +0,0 @@
-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">休眠</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">移除 Apache HTTP 用戶端</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 預覽版»</a> </li>
-</ol>
-
-
-<h2>另請參閱</h2>
-<ol>
-<li><a href="{@docRoot}preview/api-overview.html">M 開發人員預覽版 API 總覽</a> </li>
-</ol>
-
-</div>
-</div>
-
-<p>除了新特性和功能以外,M 開發人員預覽版還包含各種不同的系統變更和 API 行為變更。
-本文件將強調說明一些您應該知道且在您的應用程式中加以考量的重要變更。
-</p>
-
-<p>如果您先前曾發行過適用於 Android 的應用程式,請注意,您的應用程式可能會受到平台中的這類變更所影響。
-</p>
-
-<h2 id="behavior-runtime-permissions">執行階段權限</h1>
-<p>這個預覽版引進了新的權限模型,使用者現在可以在執行階段直接管理應用程式權限。
-這個模型為使用者提供了改良的能見度並使其可完全控制權限,同時為應用程式開發人員提供更流暢的安裝和自動更新程序。使用者可以針對安裝的應用程式個別授與或撤銷權限。
-
- </p>
-
-<p>在目標為 M 預覽版的應用程式中,請務必在執行階段檢查並要求權限。
-如要判斷您的應用程式是否已獲授與權限,請呼叫新的 {@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>這個預覽版針對閒置的裝置和應用程式引進了新的省電最佳化功能。</p>
-
-<h3 id="behavior-doze">休眠</h3>
-<p>如果拔除裝置電源並關閉螢幕使其保持靜止狀態一段時間,該裝置即會進入「休眠」<em></em>模式,它會嘗試讓系統保持睡眠狀態。
-在此模式中,裝置會在短期間內定期繼續執行正常操作,因此,會進行應用程式同步處理,而系統可以執行任何待處理的操作。
-
-</p>
-
-<p>處於休眠狀態時,下列限制會套用到您的應用程式:</p>
-<ul>
-<li>除非您的應用程式接收到高優先順序的 Google 雲端通訊活動訊號 (Tickle),否則會停用網路存取。
-</li>
-<li><a href="{@docRoot}reference/android/os/PowerManager.WakeLock.html">喚醒鎖定</a>會被忽略。</li>
-<li>使用 {@link android.app.AlarmManager} 類別排定的鬧鐘會被停用,但使用 {@link android.app.AlarmManager#setAlarmClock setAlarmClock()}方法和 {@code AlarmManager.setAndAllowWhileIdle()} 設定的鬧鐘則不會被停用。
-
-</li>
-<li>WiFi 掃描不會執行。</li>
-<li>不容許執行您同步配接器的同步處理和工作以及 {@link android.app.job.JobScheduler}。
-</li>
-</ul>
-</p>
-<p>當裝置離開休眠狀態時,就會執行所有待處理的工作和同步處理。</p>
-<p>您可以測試此功能,方法是將執行 M 預覽版的裝置連接到您的開發電腦並呼叫下列命令:
-
-</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 雲端通訊</a>版本讓您能夠指定高優先順序的訊息。
-
-
-如果您的應用程式收到高優先順序的 GCM 訊息,即使裝置處於休眠狀態,系統還是會授與它短暫的網路存取權限。
-
-</p>
-
-<p>如需如何在您的應用程式中測試休眠的祕訣,請參閱<a href="{@docRoot}preview/testing/guide.html#doze-standby">測試指南</a>。
-
- </p>
-
-<h3 id="behavior-app-standby">應用程式待命</h3>
-<p>使用這個預覽版時,系統可在應用程式處於未使用狀態時,判斷它們是否處於閒置狀態。
-除非系統偵測到以下任一個訊號,否則會在一段時間之後將應用程式視為閒置:
-</p>
-
-<ul>
-<li>使用者明確啟動應用程式。</li>
-<li>應用程式目前在前景中有一個處理程序 (可能是做為活動或前景服務,也可能正由其他活動或前景服務所使用)。
-</li>
-<li>應用程式產生使用者可以在鎖定螢幕或通知匣中看見的通知。
-</li>
-<li>使用者透過 [設定]<strong></strong> 明確要求應用程式不需進行最佳化。
-</li>
-</ul>
-
-<p>如果拔除了裝置電源,即會停用被視為閒置之應用程式的網路存取,並擱置它們的同步處理和工作。
-為裝置插上電源時,就允許這些應用程式進行網路存取,且可執行所有已擱置的工作和同步處理。
-如果裝置長時間處於閒置狀態,則允許閒置的應用程式進行網路存取,大約是一天一次。
-</p>
-
-<p>您可以測試此功能,方法是將執行 M 預覽版的裝置連接到您的開發電腦並呼叫下列命令:
-
-</p>
-<pre class="no-prettyprint">
-$ adb shell dumpsys battery unplug
-$ adb shell am set-idle <packageName> true
-$ adb shell am set-idle <packageName> false
-$ adb shell am get-idle <packageName>
-</pre>
-
-<p class="note"><strong>注意:</strong>即將發行的 <a href="https://developers.google.com/cloud-messaging/" class="external-link">Google 雲端通訊</a> (GCM) 版本讓您能夠指定高優先順序的訊息。
-
-
-如果您的應用程式收到高優先順序的 GCM 訊息,即使應用程式處於閒置狀態,系統還是會授與它短暫的網路存取權限。
-
-</p>
-
-<p>如需如何在您的應用程式中測試應用程式待命的祕訣,請參閱<a href="{@docRoot}preview/testing/guide.html#doze-standby">測試指南</a>。
-
- </p>
-
-<h2 id="behavior-adoptable-storage">可採用的儲存裝置</h2>
-<p>
-使用這個預覽版時,使用者可以採用<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>如要在開發人員預覽版中對此功能進行偵錯,您可以執行下列命令來採用 USB 磁碟機 (這個磁碟機是透過 USB On-The-Go (OTG) 纜線連接到 Android 裝置):
-</p>
-
-<pre class="no-prettyprint">
-$ adb shell sm set-force-adoptable true
-</pre>
-
-<h2 id="behavior-apache-http-client">移除 Apache HTTP 用戶端</h2>
-<p>這個預覽版已移除對於 Apache HTTP 用戶端的支援。如果您的應用程式正在使用這個用戶端且目標為 Android 2.3 (API 級別 9) 或更高版本,請改為使用 {@link java.net.HttpURLConnection} 類別。
-
-這個 API 的效率更高,因為它能透過透明的壓縮和回應快取來降低網路使用量,並將電源耗用量降至最低。
-如要繼續使用 Apache HTTP API,您必須先在 {@code build.gradle} 檔案中宣告下列編譯時期的相依性:
-
-</p>
-<pre>
-android {
- useLibrary 'org.apache.http.legacy'
-}
-</pre>
-<p>Android 正從 OpenSSL 移至 <a href="https://boringssl.googlesource.com/boringssl/" class="external-link">BoringSSL</a> 程式庫。
-
-如果您正在應用程式中使用 Android NDK,請勿連結不屬於 NDK API 一部分的密碼編譯程式庫,例如 {@code libcrypto.so} 和 {@code libssl.so}。
-這些程式庫不是公用 API,而且可能在沒有通知的情況下,在新的版本和裝置上變更或終止支援。此外,您可能會讓自己暴露於安全性弱點中。
-
-因此,請改為修改您的原生程式碼,透過 JNI 來呼叫 Java 密碼編譯 API,或以靜態方式連結您選擇的密碼編譯程式庫。
-
-</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>當使用者在您的應用程式中選取文字時,您現在可以在<a href="http://www.google.com/design/spec/patterns/selection.html#selection-text-selection" class="external-link">浮動工具列</a>中顯示文字選取動作,例如,剪下<em></em>、複製<em></em>及貼上<em></em>。
-
-使用者互動實作類似於針對內容關聯動作列所做的實作,如<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,請注意,浮動工具列無法向下相容,而且 appcompat 預設會取得 {@link android.view.ActionMode} 物件的完整控制權。
-
-
-這可防止浮動工具列顯示。如要在
-{@link android.support.v7.app.AppCompatActivity} 中啟用
-{@link android.view.ActionMode} 支援,請呼叫
-{@code android.support.v7.app.AppCompatActivity.getDelegate()},然後在傳回的
-{@link android.support.v7.app.AppCompatDelegate} 物件中呼叫
-{@code android.support.v7.app.AppCompatDelegate.setHandleNativeActionModesEnabled()},並將輸入參數設定為 {@code false}。
-這個呼叫會將 {@link android.view.ActionMode} 物件的控制權傳回架構中。
-儘管在 M 預覽版之前的裝置中,只支援 {@link android.support.v7.app.ActionBar} 模式,但在執行 M 預覽版的裝置中,允許架構支援
-{@link android.support.v7.app.ActionBar} 或浮動工具列模式。
-</p>
-
-<h2 id="behavior-keystore">Android 金鑰存放區變更</h2>
-<p>使用這個預覽版時,<a href="{@docRoot}training/articles/keystore.html">Android 金鑰存放區供應程式</a>不再支援 DSA。
-
-但仍支援 ECDSA。</p>
-
-<p>在停用或重設安全鎖定螢幕時 (例如,由使用者或裝置管理員執行),將不再刪除其餘不需加密的金鑰。
-在這些事件期間,將會刪除其餘需要加密的金鑰。
-</p>
-
-<h2 id="behavior-network">Wi-Fi 和網路變更</h2>
-
-<p>這個預覽版引進了下列對於 Wi-Fi 和網路 API 的行為變更。</p>
-<ul>
-<li>唯有當您建立了 {@link android.net.wifi.WifiConfiguration} 物件時,您的應用程式現在才能變更這些物件的狀態。
-系統不容許您修改或刪除由使用者或其他應用程式所建立的
-{@link android.net.wifi.WifiConfiguration} 物件。
-</li>
-<li>
-在以前,如果應用程式使用
-{@link android.net.wifi.WifiManager#enableNetwork(int,boolean) enableNetwork()} 搭配
-{@code disableAllOthers=true} 設定來強制裝置連接到特定的 Wi-Fi 網路,裝置即會中斷與其他網路的連線,例如行動數據。
-在這個預覽版中,裝置不再中斷與這類其他網路的連線。如果您應用程式的 {@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>在這個預覽版中,在相機服務中存取分享資源的模型已經從先前的「先進先服務」存取模型變更為依照優先順序針對處理程序進行處理的存取模型。
-
-對於服務行為的變更如下:</p>
-<ul>
-<li>存取相機子系統資源 (包括開啟和設定相機裝置) 的權限是根據用戶端應用程式處理程序的「優先順序」來授與。
-通常會為具有使用者可看見或前景活動的應用程式處理程序提供較高的優先順序,讓相機資源的取得和使用更可靠。
-
-</li>
-<li>優先順序較低之應用程式的使用中相機用戶端可能會在優先順序較高的應用程式嘗試使用相機時被系統「撤出」。
-在已過時的 {@link android.hardware.Camera} API 中,這會導致針對被撤出的用戶端呼叫
-{@link android.hardware.Camera.ErrorCallback#onError(int,android.hardware.Camera) onError()}。
-
-在 {@link android.hardware.camera2 Camera2} API 中,會導致針對被撤出的用戶端呼叫
-{@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()} 方法且您想要覆寫存取檢查,請搭配已設定為 {@code true} 的輸入參數呼叫
-{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} 方法。
-
-
-
-如果您的應用程式使用 <a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7 appcompat 程式庫</a>或 <a href="{@docRoot}tools/support-library/features.html#v7-recyclerview">v7 recyclerview 程式庫</a>,您就必須更新應用程式來使用這些程式庫的最新版本。
-
-
-否則,請確定從 XML 參考的所有自訂類別都會更新,如此一來就能存取其類別建構函式。
-</p>
-
-<p>這個預覽版會更新動態連結器的行為。動態連結器現在瞭解程式庫的 {@code soname} 與其路徑 (<a href="https://code.google.com/p/android/issues/detail?id=6670" class="external-link">公開的 Bug 6670</a>) 之間的差異,而且現在會實作依 {@code soname} 進行搜尋。
-
-
-
-先前可運作但含有錯誤 {@code DT_NEEDED} 項目 (通常是組建電腦之檔案系統上的絕對路徑) 的應用程式可能會在載入時失敗。
-</p>
-
-<p>{@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>這個預覽版包含下列對於 Android for Work 的行為變更:</p>
-<ul>
-<li><strong>個人內容中的工作聯絡人。</strong>Google 撥號程式通話記錄現在會在使用者檢視過去的通話記錄時顯示工作聯絡人。將 {@code DevicePolicyManager.setCrossProfileCallerIdDisabled()} 設定為 {@code true},可以在 Google 撥號程式通話記錄中隱藏工作設定檔聯絡人。
-
-
-只有在您將 {@code DevicePolicyManager.setBluetoothContactSharingDisabled()} 設定為 {@code false} 時,工作聯絡人才會透過藍牙,與個人聯絡人一起顯示於裝置上。
-
-預設會設定為 {@code true}。
-
-</li>
-<li><strong>移除 WiFi 設定:</strong>如果將工作設定檔刪除,則現在會移除由設定檔擁有者所新增的 WiFi 設定 (例如,透過呼叫
-{@link android.net.wifi.WifiManager#addNetwork(android.net.wifi.WifiConfiguration)
-addNetwork()} 方法)。
-</li>
-<li><strong>鎖定 WiFi 設定:</strong>使用者無法再修改或刪除任何由使用中裝置擁有者所建立的 WiFi 設定。
-只要尚未針對使用者設定 {@link android.os.UserManager} 常數
-{@link android.os.UserManager#DISALLOW_CONFIG_WIFI},該使用者就仍能建立和修改他們自己的 WiFi 設定。
-</li>
-<li><strong>透過 Google 帳戶新增來下載工作原則控制器:</strong>在將要求透過工作原則控制器 (WPC) 應用程式進行管理的 Google 帳戶新增到受管理內容以外的裝置時,新增帳戶流程現在會提示使用者安裝適當的 WPC。這個行為也適用於在初始裝置設定精靈中透過 [設定] > [帳戶]<strong></strong> 來新增的帳戶。
-
-
-
-</li>
-<li><strong>對於特定 DevicePolicyManager API 行為的變更:</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/zh-tw/preview/download.jd b/docs/html-intl/intl/zh-tw/preview/download.jd
deleted file mode 100644
index 3b54080..0000000
--- a/docs/html-intl/intl/zh-tw/preview/download.jd
+++ /dev/null
@@ -1,359 +0,0 @@
-page.title=下載
-page.image=images/cards/card-download_16-9_2x.png
-
-@jd:body
-
-<div style="position:relative; min-height:600px">
-
- <div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
-
- <p class="sdk-terms-intro">在下載和安裝 Android 預覽版
-SDK 的元件之前 ,您必須同意遵守下列條款和條件。</p>
-
- <h2 class="norule">條款和條件</h2>
-
- <div class="sdk-terms" onfocus="this.blur()" style="width:678px">
-這是「Android SDK 預覽版授權協議」(以下稱「授權協議」)。
-
-1.簡介
-
-1.1「Android SDK 預覽版」(在「授權協議」中稱為「預覽版」,包括 (如果有可用的) Android 系統檔案、經過封裝的 API 和預覽版程式庫檔案) 是在「授權協議」之條款的約束下授權給您使用。「授權協議」就您對「預覽版」的使用,構成您與 Google 間具法律約束力之合約。
-
-1.2「Android」係指「Android 軟體開放原始碼專案」(http://source.android.com/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。
-
-1.3「Google」係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,地址為 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2.接受「授權協議」
-
-2.1 必須先同意遵守「授權協議」,才能使用此「預覽版」。如果不接受「授權協議」,您就無法使用此「預覽版」。
-
-2.2 按一下 [接受] 且/或使用「預覽版」,即表示您同意「授權協議」的條款。
-
-2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「預覽版」的國家/地區) 的法律所禁止接收此「預覽版」的人員,就不得使用此「預覽版」及接受「授權協議」。
-
-2.4 如果您將在公司或組織內部使用「預覽版」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「預覽版」。
-
-3.Google 的預覽版授權
-
-3.1 在「授權協議」之條款的約束下,Google 授權您使用此「預覽版」,此授權為買斷式、不可轉讓、非獨占性、不可轉授權、有限且可撤銷,僅在您公司或組織內部私下或內部使用。此「預覽版」僅供您用於開發在 Android 平台上執行的應用程式。
-
-3.2 您同意 Google 或第三方對此「預覽版」擁有一切法定權利及權益,包括存在於此「預覽版」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。
-
-3.3 您不得將此「預覽版」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「預覽版」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「預覽版」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「預覽版」的任何部分與其他軟體結合,或散佈包含此「預覽版」之任一部分的任何軟體或裝置。
-
-3.4 您同意不會從事任何可能導致或造成 Android 分裂的活動,包括但不限於以任何形式散佈從此「預覽版」衍生的軟體開發套件、參其製作或宣傳。
-
-3.5 對開放原始碼軟體授權下所授權之「預覽版」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款管制,而不受「授權協議」管制。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。
-
-3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「預覽版」的形式和本質,且此「預覽版」的未來版本可與在此「預覽版」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「預覽版」(或此「預覽版」的任何功能) 給您或使用者,毋須事先通知。
-
-3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。
-
-3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「預覽版」中的任何專利權通知 (包括著作權和商標通知)。
-
-4.您對「預覽版」的使用
-
-4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「預覽版」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。
-
-4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「預覽版」及撰寫應用程式。
-
-4.3 您同意如果使用此「預覽版」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。
-
-4.4 您同意不會使用此「預覽版」從事任何不當Activity,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。
-
-4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.7「預覽版」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「預覽版」,您即認同某些功能仍處於開發階段,因此您不應期待「預覽版」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「預覽版」不再受到支援時,您同意不使用此「預覽版」公開散佈或隨附任何應用程式。
-
-5.您的開發人員認證
-
-5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。
-
-6.隱私權和資訊
-
-6.1 為了持續更新及改進此「預覽版」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「預覽版」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「預覽版」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。
-
-6.2 Google 會彙總並檢查收集到的資料,據以改善此「預覽版」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。
-
-7.第三方應用程式
-
-7.1 如果您使用此「預覽版」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您瞭解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。
-
-7.2 您瞭解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。
-
-7.3 您瞭解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。
-
-8.使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。
-
-8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您瞭解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。
-
-9.終止「授權協議」
-
-9.1 除非您或 Google 終止「授權協議」(請見下方說明),否則「授權協議」將持續具有效力。
-
-9.2 如果想終止「授權協議」,只要停止使用此「預覽版」及任何相關的開發人員憑證即可。
-
-9.3 Google 可隨時通知您終止「授權協議」,無論有無原因。
-
-9.4「授權協議」在先發生下列任一情況時,將自動終止而不另行通知或採取其他行動:
-(A) Google 決定不再提供此「預覽版」或此「預覽版」的特定部分給您所居住或使用此服務之國家/地區的使用者;或
-(B) Google 發行最終版本的 Android SDK。
-
-9.5 當「授權條款」終止時,您在「授權協議」所獲得的授權也將會一併終止,您將立即停止「預覽版」的所有使用,而第 10、11、12 和 14 項的條款將無限期持續適用。
-
-10.免責聲明
-
-10.1 您明確瞭解並同意完全自負使用此「預覽版」的風險,並且此「預覽版」是依「現況」和「可提供性」提供,Google 不負任何擔保責任。
-
-10.2 您對使用此「預覽版」及透過此「預覽版」以下載或其他方式取得的任何內容,需自行斟酌和自負風險,而且您對因這類使用而對您的電腦系統或其他裝置所造成的任何損害或資料遺失,需負起全責。不限於前述,您瞭解此「預覽版」不是穩定的版本,可能會包含許多錯誤、瑕疵和安全性弱點而對您的電腦系統或其他裝置造成嚴重的損害,包括完全、不可回復的損失。
-
-10.3 Google 進一步明確表示不提供任何形式的瑕疵擔保和條件 (不論明示或默示),包括但不限於適售性、適合特定用途及未侵權的默示擔保和條件。
-
-11.責任限制
-
-11.1 您明確瞭解並同意在任何歸責理論下,就可能由您引起的任何直接、間接、附隨性、特殊性、衍生性或懲罰性損害賠償 (包括任何資料遺失),不論 Google 或其代表是否已獲告知或應已瞭解發生任何這類損失的可能性,Google、其子公司和關係企業及其授權人不必對您負起任何責任。
-
-12.賠償
-
-12.1 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「預覽版」;(b) 您使用此「預覽版」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。
-
-13.對「授權協議」做出的變更
-
-13.1 Google 可在散佈此「預覽版」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「預覽版」的網站上提供「授權協議」的新版本。
-
-14.一般法律條款
-
-14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「預覽版」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「預覽版」簽署的相關協議。
-
-14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。
-
-14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。
-
-14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。
-
-14.5 出口限制。此「預覽版」受美國出口法規約束。您必須遵守適用於此「預覽版」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。
-
-14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。
-
-14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 Google 仍可在任何管轄權中申請禁制令救濟 (或同等類型的緊急法定救濟)。
- </div><!-- sdk terms -->
-
-
-
- <div id="sdk-terms-form">
- <p>
- <input id="agree" type="checkbox" name="agree" value="1" onclick="onAgreeChecked()" />
- <label id="agreeLabel" for="agree">我已閱讀並同意上述條款及細則</label>
- </p>
- <p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
- </div>
-
-
- </div><!-- end TOS -->
-
-
- <div id="landing">
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文件內容</h2>
- <ol>
- <li><a href="#sdk">預覽版 SDK</a></li>
- <li><a href="#docs">開發人員文件</a></li>
- <li><a href="#images">硬體系統映像</a></li>
- </ol>
- <h2>Legacy downloads</h2>
- <ol>
- <li><a href="{@docRoot}preview/download_mp1.html">Developer Preview Archive</a></li>
- </ol>
- </div>
-</div>
-
-
-<p>
- Android M 預覽版 SDK 有開發工具、Android 系統檔案以及程式庫檔案,可以幫助測試您的應用程式和下一個平台版本隨附的新 API。
-本文件會說明如何取得可下載的預覽版元件來測試您的應用程式。
-
-</p>
-
-
-<h2 id="sdk">預覽版 SDK</h2>
-
-<p>
- 預覽版 SDK 可透過 <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK 管理器</a>下載取得。如需有關下載和設定預覽版 SDK 的詳細資訊,請參閱<a href="{@docRoot}preview/setup-sdk.html#downloadSdk">設定預覽版 SDK</a>。
-
-</p>
-
-
-<h2 id="docs">開發人員文件</h2>
-
-<p>
- 開發人員文件下載套件提供詳細的 API 參考資料和預覽版的 API 差異報告。
-</p>
-
-<table>
- <tr>
- <th scope="col">Description</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="docs-dl">
- <td>Android M Preview 2<br>Developer Docs</td>
- <td><a href="#top" onclick="onDownload(this)"
- >m-preview-2-developer-docs.zip</a><br>
- MD5: 1db6fff9c722b0339757e1cdf43663a8<br>
- SHA-1: 5a4ae88d644e63824d21b0e18f8e3977a7665157
- </td>
- </tr>
-</table>
-
-
-<h2 id="images">硬體系統映像</h2>
-
-<p>
- 這些系統映像可以讓您在實體裝置上安裝預覽版的平台來進行測試。
-使用其中一個映像設定裝置,您就可以安裝並測試您的應用程式,瞭解應用程式在下一個版本的平台上表現如何。
-在裝置上安裝系統映像的過程中,會「移除裝置當中所有的資料」,因此您應該在安裝系統映像之前備份您的資料。<em></em>
-
-
-</p>
-
-<p class="warning">
- <b>警告:</b>下列 Android 系統映像是預覽版,可能隨時會有變更。使用這些系統映像受到「Android SDK 預覽版授權協議」的約束。
-Android 預覽版系統映像還不是穩定的版本,可能會包含許多錯誤和瑕疵而對您的電腦系統、裝置和資料造成損害。
-
-預覽版的 Android 系統映像與出廠作業系統的測試不同,可能會導致您的手機和安裝的服務與應用程式停止運作。
-
-
-</p>
-
-<table>
- <tr>
- <th scope="col">Device</th>
- <th scope="col">Download / Checksums</th>
- </tr>
- <tr id="hammerhead">
- <td>Nexus 5 (GSM/LTE) <br>"hammerhead"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >hammerhead-MPZ79M-preview-b1f4bde4.tgz</a><br>
- MD5: 2ca9f18bf47a061b339bab52647ceb0d<br>
- SHA-1: b1f4bde447eccbf8ce5d9b8b8ba954e3eac8e939
- </td>
- </tr>
- <tr id="shamu">
- <td>Nexus 6 <br>"shamu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >shamu-MPZ79M-preview-e1024040.tgz</a><br>
- MD5: 24a2118da340b9afedfbdfc026f6ff81<br>
- SHA-1: e10240408859d5188c4aae140e1c539130ba614b
- </td>
- </tr>
- <tr id="volantis">
- <td>Nexus 9 <br>"volantis"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >volantis-MPZ79M-preview-9f305342.tgz</a><br>
- MD5: 9edabf0a4c61b247f1cbb9dfdc0a899e<br>
- SHA-1: 9f30534216f10899a6a75495fc7e92408ea333a7
- </td>
- </tr>
-
- <tr id="fugu">
- <td>Nexus Player <br>"fugu"</td>
- <td><a href="#top" onclick="onDownload(this)"
- >fugu-MPZ79N-preview-fb63af98.tgz</a><br>
- MD5: e8d081137a20b66df595ee69523314b5<br>
- SHA-1: fb63af98302dd97be8de9313734d389ccdcce250
- </td>
- </tr>
-
-</table>
-
-<h3 id="install-image">在裝置上安裝映像</h3>
-
-<p>
- 如果要使用裝置映像進行測試,您必須先在相容的裝置上安裝映像。請依照下面的指示安裝系統映像:
-
-</p>
-
-<ol>
- <li>下載此處列出的其中一個系統映像,然後解壓縮。</li>
- <li>備份您要保留的所有裝置資料。</li>
- <li>依照
-<a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
-的指示,將映像更新到您的裝置。</li>
-</ol>
-
-<p class="note">
- <strong>注意:</strong>在您使用預覽版系統映像更新開發裝置之後,裝置就會透過無線 (OTA) 更新方式自動升級為下一個預覽版版本。
-
-</p>
-
-<h3 id="revertDevice">將裝置還原成出廠規格</h3>
-
-<p>
- 如果您要解除安裝預覽版並將裝置還原成出廠規格,請至
-<a href="http://developers.google.com/android/nexus/images">developers.google.com/android</a> 並下載您要為裝置更新的映像。
-依照該頁面的指示,將映像更新到您的裝置。
-
-</p>
-
- </div><!-- landing -->
-
-</div><!-- relative wrapper -->
-
-
-
-<script>
- var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/";
- function onDownload(link) {
-
- $("#downloadForRealz").html("Download " + $(link).text());
- $("#downloadForRealz").attr('href', urlRoot + $(link).text());
-
- $("#tos").fadeIn('fast');
- $("#landing").fadeOut('fast');
-
- return true;
- }
-
-
- function onAgreeChecked() {
- /* verify that the TOS is agreed */
- if ($("input#agree").is(":checked")) {
- /* reveal the download button */
- $("a#downloadForRealz").removeClass('disabled');
- } else {
- $("a#downloadForRealz").addClass('disabled');
- }
- }
-
- function onDownloadForRealz(link) {
- if ($("input#agree").is(':checked')) {
- /*
- $("#tos").fadeOut('fast');
- $("#landing").fadeIn('fast');
- */
-
- ga('send', 'event', 'M Preview', 'System Image', $("#downloadForRealz").html());
-
- /*
- location.hash = "";
- */
- return true;
- } else {
- return false;
- }
- }
-
- $(window).hashchange( function(){
- if (location.hash == "") {
- location.reload();
- }
- });
-
-</script>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd b/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd
deleted file mode 100644
index 5be8a0f..0000000
--- a/docs/html-intl/intl/zh-tw/preview/features/app-linking.jd
+++ /dev/null
@@ -1,123 +0,0 @@
-page.title=應用程式連結
-page.image=images/cards/card-app-linking_2x.png
-page.keywords=應用程式連結, 深層連結, 意圖
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文件內容</h2>
- <ol>
- <li><a href="#web-assoc">宣告網站關聯</a></li>
- <li><a href="#verfy-links">要求應用程式連結驗證</a></li>
- <li><a href="#user-manage">管理應用程式連結設定</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android 意圖系統是一個彈性機制,讓應用程式能夠用來處理內容和要求。
- 有許多應用程式可能會在它們的意圖篩選條件中宣告相符的 URI 模式。當使用者按一下不含預設啟動處理常式的 Web 連結時,平台可能會顯示一個對話方塊,讓使用者能夠從具備已宣告相符意圖篩選條件的應用程式清單中選取。
-
-
-</p>
-
-<p>
- Android M 開發人員預覽版引進了應用程式連結的支援,這樣就能藉由允許應用程式開發人員將應用程式關聯至他們所擁有的 Web 網域,來改善現有的連結處理。
-當開發人員建立這個關聯時,平台可以自動判斷要用來處理特定 Web 連結的預設應用程式,並略過詢問使用者的程序。
-
-
-</p>
-
-
-<h2 id="web-assoc">宣告網站關聯</h2>
-
-<p>
- 網站擁有者必須宣告與應用程式的關聯,才能建立應用程式連結。站台擁有者可藉由在網域上的已知位置裝載名為 {@code statements.json} 的 JSON 檔案,來宣告與應用程式的關係:
-
-
-</p>
-
-<pre>http://<domain>:<optional port>/.well-known/statements.json</pre>
-
-<p class="note">
- <strong>注意:</strong>
- 在 M 開發人員預覽版期間,會透過 http 通訊協定來驗證 JSON 檔案。如果是平台的正式版本,就會透過加密的 https 通訊協定來驗證該檔案。
-
-</p>
-
-<p>
- 這個 JSON 檔案會指出應該在這個網域中用來做為 URL 預設處理常式的 Android 應用程式。
-它會根據下列欄位來識別應用程式:
-</p>
-
-<ul>
- <li>{@code package_name}:宣告於應用程式宣示說明中的套件名稱。</li>
-
- <li>{@code sha256_cert_fingerprints}:您應用程式簽署憑證的 SHA256 指紋。
- 您可以使用 Java 金鑰工具,利用下列命令來產生指紋:
- <pre>keytool -list -v -keystore my-release-key.keystore</pre>
- </li>
-</ul>
-
-<p>
- 下列檔案清單會顯示
-{@code statements.json} 檔案的內容與格式範例:
-</p>
-
-<pre>
-[{
- "relation": ["delegate_permission/common.handle_all_urls"],
- "target": {
- "namespace": "android_app",
- "package_name": "<strong><package name></strong>",
- "sha256_cert_fingerprints": ["<strong>6C:EC:C5:0E:34:AE....EB:0C:9B</strong>"]
- }
-}]
-</pre>
-
-
-<h2 id="verfy-links">要求應用程式連結驗證</h2>
-
-<p>
- 應用程式可以要求平台根據裝載於個別 Web 網域上的 {@code statements.json} 檔案,自動驗證在其意圖篩選條件的資料元素中由主機名稱所定義的任何應用程式連結。
-
-如要要求應用程式連結驗證,請將 {@code android:autoVerify}
- 屬性新增到宣示說明中每個所需的意圖篩選條件中,如下列宣示說明程式碼片段所示:
-
-</p>
-
-<pre>
-<activity ...>
- <intent-filter <strong>android:autoVerify="true"</strong>>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="http" android:host="www.android.com" />
- <data android:scheme="https" android:host="www.android.com" />
- </intent-filter>
-</activity>
-</pre>
-
-<p>
- 當 {@code android:autoVerify} 屬性出現在應用程式宣示說明時,平台即會在安裝該應用程式時嘗試驗證應用程式連結。
-如果平台無法成功驗證應用程式連結,就無法將該應用程式設定為偏好使用的應用程式來處理 Web 連結。
-當使用者下次開啟其中一個連結時,平台就切換回為該使用者展示一個對話方塊。
-
-
-</p>
-
-<p class="note">
- <strong>注意:</strong>在測試期間,如果驗證失敗,可能會產生誤判,但是使用者已經使用系統「設定」應用程式,明確地啟用應用程式來自動開啟支援的連結。在此案例中,不會顯示任何對話方塊,而且連結會直接連至您的應用程式,但這只是基於使用者的設定,而不是因為驗證成功所致。
-
-
-
-</p>
-
-
-<h2 id="user-manage">管理應用程式連結設定</h2>
-
-<p>
- 使用者可以變更應用程式連結設定,讓他們能夠以偏好使用的方式來處理 URL。您可以在系統「設定」應用程式中,於 [設定] > [應用程式] > [應用程式資訊] > [預設開啟]<strong></strong> 下方,檢閱和管理應用程式連結。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/features/runtime-permissions.jd b/docs/html-intl/intl/zh-tw/preview/features/runtime-permissions.jd
deleted file mode 100644
index cf756aa..0000000
--- a/docs/html-intl/intl/zh-tw/preview/features/runtime-permissions.jd
+++ /dev/null
@@ -1,794 +0,0 @@
-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>如果您的應用程式是以 M 預覽版 SDK 為目標,它會提示使用者在執行階段授與權限,而不是安裝期間。
-</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 開發人員預覽版導入新的應用程式權限模型,簡化使用者安裝和升級應用程式的程序。
-如果 M 預覽版上執行的應用程式支援新的權限模型,使用者安裝或升級應用程式時,不需要授與任何權限。應用程式會在需要時才要求權限,而且系統會對使用者顯示要求權限的對話方塊。
-
-
-
-
-</p>
-
-<p>
- 如果應用程式支援新的權限模型,它仍能在在執行舊版 Android 的裝置上安裝並執行 (在那些裝置上使用舊的權限模型)。
-
-
-</p>
-
-<h2 id="overview">
- 總覽
-</h2>
-
-<p>
- 使用 M 開發人員預覽版,平台導入新的應用程式權限模型。
-以下是這個新模型的主要元件摘要:
-</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 開發人員預覽版為目標,「務必要」
-<em></em>使用新的權限模型。
-</p>
-
-<p>
- 自 M 開發人員預覽版推出起,並非所有 Google 應用程式都完全實作新的權限模型。
-Google 正透過 M 開發人員預覽版逐漸更新這些應用程式,以適當保留權限切換設定。
-
-
-</p>
-
-<p class="note">
- <strong>注意:</strong>如果您的應用程式有自己的 API 介面,務必要先確定呼叫端具備存取該資料的必要權限後,再 Proxy 權限。
-
-
-</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></strong>
-
- <i>app_name</i> > [權限]<strong></strong>。應用程式應持續在執行階段檢查是否具備權限,並在必要時予以要求。
-
-
-</p>
-
-<h3 id="compatibility">
- 往後和回溯相容性
-</h3>
-
-<p>
- 如果應用程式不是以 M 開發人員預覽版為目標,即使在 M 預覽版裝置上,應用程式也會持續使用舊的權限模型。
-當使用者安裝應用程式時,系統會要求使用者授與應用程式的宣示說明中列出的所有權現。
-
-
-</p>
-
-<p class="note">
- <strong>注意:</strong>在執行 M 開發人員預覽版的裝置上,使用者能從應用程式的設定畫面關閉任何應用程式 (包括舊版應用程式) 的權限。
-
-如果使用者關閉舊版應用程式的權限,系統會自動停用適當功能。
-當應用程式嘗試執行需要那項權限的操作時,該操作不一定會造成例外狀況。
-
-而可能傳回空的資料集,通知發生錯誤,或展示未預期的行為。
-例如,如果您不具備查詢行事曆的權限,方法會傳回空的資料集。
-
-</p>
-
-<p>
- 如果您在並非執行 M 預覽版的裝置上使用新的權限模型來安裝應用程式,系統會將它和任何其他應用程式一視同仁:系統會在安裝期間要求使用者授與所有宣告的權限。
-
-
-
-</p>
-
-<p class="note">
- <strong>注意:</strong>對於預覽版,您必須將 SDK 最低版本設定為 M 預覽版 SDK,才能以預覽版 SDK 編譯。
-這表示在開發人員預覽版期間,您將無法在舊版平台上測試這類應用程式。
-
-
-</p>
-
-<h3 id="perms-vs-intents">權限與意圖比較</h3>
-
-<p>
- 在許多情況下,您可以為應用程式在兩種方法當中擇一來執行工作。
-您可以讓應用程式要求權限以自行執行操作。
-或者,您可以讓應用程式使用意圖,讓其他應用程式來執行工作。
-
-</p>
-
-<p>
- 例如,假設您的應用程式需要能夠使用裝置相機拍攝相片。
-您的應用程式能要求
-<code>android.permission.CAMERA</code> 權限,讓應用程式直接存取相機。
-接著,應用程式會使用相機 API 來控制相機並拍攝相片。
-這種方法可讓您的應用程式對攝影處理程序有完整控制權,並讓您將相機 UI 納入應用程式。
-
-
-</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>當您執行操作時,應用程式對使用者體驗有完整控制權。
-不過,如此多樣化控制使您必須設計適當的 UI,而增加工作複雜度。
-
- </li>
-
- <li>當您初次執行操作時,會提示使用者授與權限 (僅此一次)。
-之後應用程式可以逕行執行該操作,不需要再與使用者有其他互動。
-不過,如果使用者未授與權限 (或稍後予以撤銷),您的應用程式會完全無法執行該操作。
-
-
- </li>
-</ul>
-
-<p>
- 如果您使用意圖:
-</p>
-
-<ul>
- <li>您不必為該操作設計 UI。處理意圖的應用程式會提供 UI。不過,這表示您對使用者體驗沒有控制權。
-
-使用者可能會和您不曾見過的應用程式互動。
-
- </li>
-
- <li>如果使用者沒有執行該操作的預設應用程式,系統會提示使用者選擇應用程式。如果使用者未指定預設處理常式,每次執行操作時可能都要完成額外的對話方塊。
-
-
-
- </li>
-</ul>
-
-<h2 id="coding">編寫執行階段權限的程式碼</h2>
-
-<p>
- 如果您的應用程式是以新的 M 開發人員預覽版為目標,請務必使用新的權限模型。
-這表示除了在宣示說明中宣告所需的權限之外,您也必須在執行階段檢查是否具備權限,並在您不具備時要求權限。
-
-
-
-</p>
-
-<h3 id="enabling">
- 啟用新的權限模型
-</h3>
-
-<p>
- 如要啟用新的 M 開發人員預覽版權限模型,可將應用程式的
-<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 預覽版使用的權限
-</h3>
-
-<p>
- 您可以在宣示說明中使用新的 <code><uses-permission-sdk-m></code> 元素,指出只有在 M 預覽版上才需要某權限。
-如果您以這種方式宣告權限,每當在舊版裝置上安裝應用程式時,系統都不會提示使用者或將權限授與應用程式。藉由使用 <code><uses-permission-sdk-m></code> 元素,當使用者安裝更新時,您不需要強制他們授與權限,就可以將新的權限新增至更新的應用程式版本。
-
-
-
-
-
-
-</p>
-
-<p>
- 如果應用程式在使用 M 開發人員預覽版的裝置上執行,
-<code><uses-permission-sdk-m></code> 的運作方式會和
-<code><a href="{@docRoot}guide/topics/manifest/uses-permission-element.html"><uses-permission></a></code> 相同。
- 當他們安裝應用程式時,系統不會提示使用者授與任何權限,而應用程式會在需要時才要求權限。
-
-</p>
-
-<h3 id="prompting">
- 提示授與權限
-</h3>
-
-<p>
- 如果您的應用程式使用新的 M 開發人員預覽版權限模型,在執行 M 預覽版的裝置上初次啟動應用程式時,不會要求使用者授與所有權限。
-
-您的應用程式會在需要時才要求權限。
-應用程式要求權限時,系統會對使用者顯示對話方塊。
-
-</p>
-
-<p>
- 如果您的應用程式在 SDK 22 以下版本的裝置上執行,應用程式會使用舊的權限模型。
-當使用者安裝應用程式時,會提示他們授與應用程式在其宣示說明中要求的所有權限,但標示為 <code><uses-permission-sdk-m></code> 的那些權限除外。
-
-
-</p>
-
-<h4 id="check-platform">檢查應用程式執行所在的平台</h4>
-
-<p>
- 只有執行 M 開發人員預覽版的裝置上才支援此權限模型。
-呼叫這些方法之前,應用程式應該檢查 {@link android.os.Build.VERSION#CODENAME
- Build.VERSION.CODENAME} 的值,驗證它執行所在的平台。
-
-如果裝置是執行 M 開發人員預覽版,
-{@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>
-@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 開發人員預覽版為目標,您必須測試它是否能適當處理權限。
-您不能假設應用程式在執行時具備任何特定權限。
-應用程式初次啟動時,很可能不具備任何權限,且使用者可隨時撤銷或還原權限。
-
-
-</p>
-
-<p>
- 您應該測試應用程式,確保它在所有權限情況下都能正常運作。
-使用 M 預覽版 SDK,我們現在提供 <a href="{@docRoot}tools/help/adb.html">Android 偵錯橋 (adb)</a> 命令,不管需要嘗試哪種權限設定都能讓您測試。
-
-
-
-</p>
-
-<h3>
- 新的 adb 命令和選項
-</h3>
-
-<p>
- M 預覽版 SDK 平台工具提供的數個命令可讓您測試應用程式如何處理權限。
-
-</p>
-
-<h4>
- 連同權限一併安裝
-</h4>
-
-<p>
- 您可以使用 <a href="{@docRoot}tools/help/adb.html#move"><code>adb
- install</code></a> 命令的新 <code>-g</code> 選項,安裝應用程式並授與其宣示說明中列出的所有權限:
-
-</p>
-
-<pre class="no-pretty-print">
-$ adb install -g <path_to_apk>
-</pre>
-
-<h4>
- 授與和撤銷權限
-</h4>
-
-<p>
- 您可以使用新的 ADB <a href="{@docRoot}tools/help/adb.html#pm">套件管理員 (pm)</a> 命令,對安裝的應用程式授與和撤銷權限。此功能在自動化測試時非常實用。
-
-
-</p>
-
-<p>
- 如要授與權限,可使用套件管理員的 <code>grant</code> 命令:
-</p>
-
-<pre class="no-pretty-print">
-$ adb pm grant <package_name> <permission_name>
-</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 <package_name> <permission_name>
-</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>
- 例如,攝影應用程式可能想要使用定位服務,以便將相片加上地理標籤。
-一般使用者可能不明白相片可以包含定位資訊,而不明白為何攝影應用程式會想要知道位置。
-
-在這種情況下,在呼叫 <code>requestPermissions()</code>「之前」<em></em>,將此功能的相關資訊告訴使用者會是不錯的想法。
-
-
-</p>
-
-<p>
- 您可以將這些要求與應用程式教學課程結合來完成此作業。教學課程可依序顯示應用程式的各項功能,並可以同時說明需要哪些權限。
-
-例如,攝影應用程式的教學課程可以示範「與聯絡人分享相片」功能,接著告訴使用者需要提供權限,應用程式才能看到使用者的聯絡人。
-
-
-接著,應用程式可以呼叫 <code>requestPermissions()</code>,要求使用者提供該存取權。
-當然,並非每位使用者都會依照教學課程執行動作,所以您仍需要在應用程式的正常操作期間檢查和要求權限。
-
-
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/index.jd b/docs/html-intl/intl/zh-tw/preview/index.jd
deleted file mode 100644
index a9cf1ae..0000000
--- a/docs/html-intl/intl/zh-tw/preview/index.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=Android M 開發人員預覽版
-page.tags="preview",
-meta.tags="preview, M preview", androidm
-fullpage=true
-section.landing=true
-header.hide=1
-footer.hide=1
-@jd:body
-
-<section class="dac-expand dac-hero dac-light" >
- <div class="wrap">
- <div class="cols dac-hero-content">
- <div class="col-9of16 col-push-7of16 dac-hero-figure">
- <img class="dac-hero-image" src="{@docRoot}images/home/devices-hero_620px_2x.png" srcset="{@docRoot}images/home/devices-hero_620px.png 1x,
- {@docRoot}images/home/devices-hero_620px_2x.png 2x">
- </div>
- <div class="col-7of16 col-pull-9of16">
- <h1 class="dac-hero-title">Android M 開發人員預覽版</h1>
- <p class="dac-hero-description">
- 準備使用新版 Android。在 Nexus 5、6、9 和 Player 上測試您的應用程式。
-瞭解新功能 — <strong>執行階段權限</strong>、<strong>休眠</strong>、<strong>應用程式待命</strong>等省電功能、新的<strong>輔助技術</strong>,以及其他功能。
-
-
- </p>
-
- <a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- 開始使用!
-</a><br>
- <a class="dac-hero-cta" href="{@docRoot}preview/support.html">
- <span class="dac-sprite dac-auto-chevron"></span>
- Developer Preview 2</a>
- </div>
- </div>
- <div class="dac-section dac-small">
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/resources"
- data-cardSizes="6x2"
- data-maxResults="6"></div>
- </div>
- </div>
-</section>
-
-<section class="dac-section dac-gray"><div class="wrap">
- <h1 class="dac-section-title">資源</h1>
- <div class="dac-section-subtitle">
- 以下重要資訊可幫助您的應用程式準備好使用 Android M。
- </div>
-
- <div class="resource-widget resource-flow-layout col-16"
- data-query="collection:preview/landing/more"
- data-cardSizes="6x6"
- data-maxResults="16"></div>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- 回報問題
-</a>
- </li>
- <li class="dac-section-link"><a href="http://g.co/dev/AndroidMDevPreview">
- <span class="dac-sprite dac-auto-chevron"></span>
- 參加 G+ 社群
-</a>
- </li>
- </ul>
- </div>
-</section>
-
diff --git a/docs/html-intl/intl/zh-tw/preview/license.jd b/docs/html-intl/intl/zh-tw/preview/license.jd
deleted file mode 100644
index c4acb91..0000000
--- a/docs/html-intl/intl/zh-tw/preview/license.jd
+++ /dev/null
@@ -1,143 +0,0 @@
-page.title=授權協議
-
-@jd:body
-
-<p>
-如果想要開始使用 Android SDK 預覽版,您必須同意遵守下列條款和條件。如下方所述,請注意這是 Android SDK 預覽版,可能隨時會有變更,請您自負使用風險。
-Android SDK 預覽版還不是穩定的版本,可能會包含許多錯誤和瑕疵而對您的電腦系統、裝置和資料造成嚴重的損害。
-</p>
-
-<p>
-這是「Android SDK 預覽版授權協議」(以下稱「授權協議」)。
-</p>
-<div class="sdk-terms" style="height:auto;border:0;padding:0;width:700px">
-1.簡介
-
-1.1「Android SDK 預覽版」(在「授權協議」中稱為「預覽版」,包括 (如果有可用的) Android 系統檔案、經過封裝的 API 和預覽版程式庫檔案) 是在「授權協議」之條款的約束下授權給您使用。「授權協議」就您對「預覽版」的使用,構成您與 Google 間具法律約束力之合約。
-
-1.2「Android」係指「Android 軟體開放原始碼專案」(http://source.android.com/) 所提供的 Android 裝置軟體堆疊 (不定期更新)。
-
-1.3「Google」係指 Google Inc.,是一家在美國德拉瓦州註冊的公司,地址為 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States。
-
-2.接受「授權協議」
-
-2.1 必須先同意遵守「授權協議」,才能使用此「預覽版」。如果不接受「授權協議」,您就無法使用此「預覽版」。
-
-2.2 按一下 [接受] 且/或使用「預覽版」,即表示您同意「授權協議」的條款。
-
-2.3 如果您是美國或其他國家/地區 (包括您所居住或使用此「預覽版」的國家/地區) 的法律所禁止接收此「預覽版」的人員,就不得使用此「預覽版」及接受「授權協議」。
-
-2.4 如果您將在公司或組織內部使用「預覽版」,您就要代表雇主或其他實體同意受「授權協議」約束,且您代表並保證具備完整法定權限來約束您的雇主或這類實體遵守「授權協議」。如果您不具備必要的權限,就不得代表您的雇主或其他實體接受「授權協議」或使用此「預覽版」。
-
-3.Google 的預覽版授權
-
-3.1 在「授權協議」之條款的約束下,Google 授權您使用此「預覽版」,此授權為買斷式、不可轉讓、非獨占性、不可轉授權、有限且可撤銷,僅在您公司或組織內部私下或內部使用。此「預覽版」僅供您用於開發在 Android 平台上執行的應用程式。
-
-3.2 您同意 Google 或第三方對此「預覽版」擁有一切法定權利及權益,包括存在於此「預覽版」中的任何「智慧財產權」。「智慧財產權」係指專利法、著作權法、商業秘密法、商標法及任何和所有其他專利權下的任何及一切權利。Google 保留一切未明確授予您的權利。
-
-3.3 您不得將此「預覽版」用於「授權協議」未明文許可的任何用途。除非適用的第三方授權所需,否則您不得:(a) 對此「預覽版」或其任何部分進行複製 (備份用途除外)、修改、改編、轉散佈、反向組譯、還原工程、解編或製作衍生成品;或是 (b) 將此「預覽版」的任何部分載入至行動電話或個人電腦以外的任何其他硬體裝置、將此「預覽版」的任何部分與其他軟體結合,或散佈包含此「預覽版」之任一部分的任何軟體或裝置。
-
-3.4 您同意不會從事任何可能導致或造成 Android 分裂的活動,包括但不限於以任何形式散佈從此「預覽版」衍生的軟體開發套件、參其製作或宣傳。
-
-3.5 對開放原始碼軟體授權下所授權之「預覽版」的使用、複製及散佈,完全受該開放原始碼軟體授權的條款管制,而不受「授權協議」管制。您同意遵守從這類開放原始碼軟體授權獲得的所有權利,並且避免採取任何可能終止、中止或侵害這類權利的行為。
-
-3.6 您同意 Google 可在不事先通知您的情況下變更其所提供之「預覽版」的形式和本質,且此「預覽版」的未來版本可與在此「預覽版」的先前版本上開發的應用程式不相容。您同意 Google 通常可全權斟酌永久或暫時停止提供此「預覽版」(或此「預覽版」的任何功能) 給您或使用者,毋須事先通知。
-
-3.7「授權協議」中的所有條款皆未授予您任何使用 Google 之商業名稱、商標、服務標章、標誌、網域名稱或其他明確品牌特徵的權利。
-
-3.8 您同意不會移除、遮蔽或更改可能附加至或內含在此「預覽版」中的任何專利權通知 (包括著作權和商標通知)。
-
-4.您對「預覽版」的使用
-
-4.1 Google 同意在「授權協議」下,任何條款皆未從您 (或您的授權人) 賦予 Google 對您使用此「預覽版」開發之任何軟體應用程式的任何權利及權益,包括存在於這些應用程式中的任何智慧財產權。
-
-4.2 您同意只就 (a)「授權協議」和 (b) 相關管轄權中任何適用法律、規定或是普遍獲得接受之慣例或指導方針 (包括任何有關將資料或軟體輸出或輸入美國或其他相關國家/地區的法律) 所允許的用途使用此「預覽版」及撰寫應用程式。
-
-4.3 您同意如果使用此「預覽版」開發應用程式,您將保護使用者的隱私權和法定權利。如果使用者提供您使用者名稱、密碼或是其他登入資訊或個人資訊,您必須告知使用者這類資訊將提供給您的應用程式使用,並且必須為這些使用者提供法定充分的隱私權通知和保護。如果您的應用程式會儲存使用者所提供的個人或敏感資訊,它必須確保這些資訊安全無虞。如果使用者提供 Google 帳戶資訊給您,則只有在每個使用者已授權您存取其 Google 帳戶並僅限用於使用者所授權之用途的情況下,您的應用程式才能使用該資訊來存取使用者的 Google 帳戶。
-
-4.4 您同意不會使用此「預覽版」從事任何不當活動,例如開發或散佈會以未經授權的方式干擾、妨礙、損害或存取 Google 或任何第三方之伺服器、網路或是其他財產或服務的應用程式。
-
-4.5 您同意對您透過 Android 裝置和 (或) Android 應用程式建立、傳輸或顯示的任何資料、內容或資源,以及上述行為造成的後果 (包括 Google 可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.6 您同意對違反在此「授權協議」、任何適用之第三方合約或《服務條款》或是任何適用之法律或規定下所必須遵守的義務,以及違反相關義務造成的後果 (包括 Google 或任何第三方可能蒙受的任何損失或損害) 負起全責 (而 Google 對您或任何第三方就上述一切不需負任何責任)。
-
-4.7「預覽版」目前正在開發中,因此您的測試與意見反應對開發程序非常重要。使用「預覽版」,您即認同某些功能仍處於開發階段,因此您不應期待「預覽版」擁有穩定版本的完整功能。在官方 Android SDK 發行之後,此「預覽版」不再受到支援時,您同意不使用此「預覽版」公開散佈或隨附任何應用程式。
-
-5.您的開發人員認證
-
-5.1 您同意負責保密 Google 可能核發給您或您自己選擇的任何開發人員認證,並且對在您開發人員認證名義下開發的所有應用程式負起全責。
-
-6.隱私權和資訊
-
-6.1 為了持續更新及改進此「預覽版」,Google 可能會從軟體收集某些使用狀況統計數據,包括但不限於軟體的唯一識別碼、相關 IP 位址、版本號碼,以及有關使用此「預覽版」中的哪些工具和 (或) 服務及其使用方式的相關資訊。在收集這類資訊之前,此「預覽版」會先通知您並徵求您的同意。如果您不同意,Google 將不會收集這類資訊。
-
-6.2 Google 會彙總並檢查收集到的資料,據以改善此「預覽版」,並且會依據《Google 隱私權政策》(http://www.google.com/policies/privacy/) 加以妥善保存。
-
-7.第三方應用程式
-
-7.1 如果您使用此「預覽版」來執行第三方開發的應用程式,或是執行會存取第三方所提供之資料、內容或資源的應用程式,您同意 Google 不需對這類應用程式、資料、內容或資源負任何責任。您瞭解您透過第三方應用程式存取的所有資料、內容或資源是由其提供者負起全責,而 Google 對您因使用或存取任何這些第三方應用程式、資料、內容或資源所造成的損失或損害不需負任何責任。
-
-7.2 您瞭解第三方應用程式提供給您的資料、內容或資源可能受到提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您不得根據這類資料、內容或資源 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品,除非相關擁有者明確授權您從事上述活動。
-
-7.3 您瞭解使用第三方應用程式、資料、內容或資源可能受到您與相關第三方之間的個別條款約束。
-
-8.使用 Google API
-
-8.1 Google API
-
-8.1.1 如果您使用任何 API 從 Google 擷取資料,您瞭解這些資料可能受到 Google 或資料提供者 (或代表他們的其他人員或公司) 所擁有的智慧財產權保護。您對任何這類 API 的使用可能受到其他《服務條款》約束。除非相關《服務條款》明文允許,否則您不得根據這類資料 (不論是整個或部分) 修改、出租、出借、販售、散佈或製作衍生成品。
-
-8.1.2 使用任何 API 從 Google 擷取使用者的資料時,您瞭解並同意只有在該使用者明確同意且授權您擷取其資料,而且僅限用於使用者所授權之用途的情況下,您才能擷取資料。
-
-9.終止「授權協議」
-
-9.1 除非您或 Google 終止「授權協議」(請見下方說明),否則「授權協議」將持續具有效力。
-
-9.2 如果想終止「授權協議」,只要停止使用此「預覽版」及任何相關的開發人員憑證即可。
-
-9.3 Google 可隨時通知您終止「授權協議」,無論有無原因。
-
-9.4「授權協議」在先發生下列任一情況時,將自動終止而不另行通知或採取其他行動:
-(A) Google 決定不再提供此「預覽版」或此「預覽版」的特定部分給您所居住或使用此服務之國家/地區的使用者;或
-(B) Google 發行最終版本的 Android SDK。
-
-9.5 當「授權條款」終止時,您在「授權協議」所獲得的授權也將會一併終止,您將立即停止「預覽版」的所有使用,而第 10、11、12 和 14 項的條款將無限期持續適用。
-
-10.免責聲明
-
-10.1 您明確瞭解並同意完全自負使用此「預覽版」的風險,並且此「預覽版」是依「現況」和「可提供性」提供,Google 不負任何擔保責任。
-
-10.2 您對使用此「預覽版」及透過此「預覽版」以下載或其他方式取得的任何內容,需自行斟酌和自負風險,而且您對因這類使用而對您的電腦系統或其他裝置所造成的任何損害或資料遺失,需負起全責。不限於前述,您瞭解此「預覽版」不是穩定的版本,可能會包含許多錯誤、瑕疵和安全性弱點而對您的電腦系統或其他裝置造成嚴重的損害,包括完全、不可回復的損失。
-
-10.3 Google 進一步明確表示不提供任何形式的瑕疵擔保和條件 (不論明示或默示),包括但不限於適售性、適合特定用途及未侵權的默示擔保和條件。
-
-11.責任限制
-
-11.1 您明確瞭解並同意在任何歸責理論下,就可能由您引起的任何直接、間接、附隨性、特殊性、衍生性或懲罰性損害賠償 (包括任何資料遺失),不論 Google 或其代表是否已獲告知或應已瞭解發生任何這類損失的可能性,Google、其子公司和關係企業及其授權人不必對您負起任何責任。
-
-12.賠償
-
-12.1 在法律允許的最大範圍內,您同意為 Google、其子公司及其個別董監事、主管、員工和代理人,就任何和一切索賠、法律行動、訴訟或訴訟程序,以及因下列原因而引起的任何和一切損失、責任、損害賠償、費用及開支 (包括合理的律師費),提供辯護、賠償損失並確保其免於承擔賠償責任:(a) 您使用此「預覽版」;(b) 您使用此「預覽版」開發的應用程式侵害任何人的任何智慧財產權,或是詆毀任何人或違反其公開權或隱私權;以及 (c) 您未遵守「授權協議」。
-
-13.對「授權協議」做出的變更
-
-13.1 Google 可在散佈此「預覽版」的新版本時修改「授權協議」。做出這類變更後,Google 會在提供此「預覽版」的網站上提供「授權協議」的新版本。
-
-14.一般法律條款
-
-14.1「授權協議」構成您與 Google 之間的法律協議,用於管制您對此「預覽版」(不包括 Google 依據個別書面協議提供給您的任何服務) 的使用,並完全取代先前您與 Google 之間就此「預覽版」簽署的相關協議。
-
-14.2 您同意如果 Google 未行使或執行「授權協議」所含的任何法律權利或救濟 (或在任何適用法律下對 Google 有利的權益),並不代表 Google 正式放棄權利,Google 日後仍可行使這些權利或救濟。
-
-14.3 如果經任何法院 (就此事宜依管轄權決定) 裁決「授權協議」中有任何條款無效,則該條款將自「授權協議」中移除,「授權協議」的其餘部分則不受影響。「授權協議」的其餘條款將持續具有效力且可執行。
-
-14.4 您瞭解並同意 Google 旗下子公司體系的每位成員都是「授權協議」的第三方受益人,而且這類其他公司有權直接執行和依據「授權協議」中對其授予權益 (或對其有利之權利) 的任何條款。除此之外的任何其他人員或公司皆非「授權協議」的第三方受益人。
-
-14.5 出口限制。此「預覽版」受美國出口法規約束。您必須遵守適用於此「預覽版」的所有國內和國際出口法規。這些法律包括對目的地、使用者及最終用途的限制。
-
-14.6 未事先取得 Google 事先書面核准的情況下,您不得轉讓或轉移「授權協議」,未經這類核准的任何轉讓將會失效。您不得在未事先取得 Google 書面核准的情況下,委派其「授權協議」涵蓋的責任或義務。
-
-14.7「授權協議」以及您與 Google 就「授權協議」構成的關係皆受加州法律管轄,毋須理會其法律牴觸條款。您和 Google 同意服從位於加州聖塔克拉拉 (Santa Clara, California) 郡內法院的專屬管轄權,以解決由「授權協議」產生的任何法律事務。儘管如此,您同意 Google 仍可在任何管轄權中申請禁制令救濟 (或同等類型的緊急法定救濟)。
-
-
-</div>
\ No newline at end of file
diff --git a/docs/html-intl/intl/zh-tw/preview/overview.jd b/docs/html-intl/intl/zh-tw/preview/overview.jd
deleted file mode 100644
index 9693eec..0000000
--- a/docs/html-intl/intl/zh-tw/preview/overview.jd
+++ /dev/null
@@ -1,389 +0,0 @@
-page.title=程式總覽
-page.metaDescription=歡迎使用 Android M 開發人員預覽版,本程式提供為新版 Android 測試和最佳化您應用程式所需的一切。
-page.image=images/cards/card-preview_16-9_2x.png
-page.tags="preview", "developer", "android"
-
-@jd:body
-
-<div class="cols" style=
-"background-color:#ffebc3; padding: 5px 0;margin-bottom:1em; text-align:center;">
-<h3>
- Developer Preview 2 is now available
- </h3>
-
- <ul class="dac-section-links">
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-notes">
- <span class="dac-sprite dac-auto-chevron"></span>
- Read the Notes</a>
- </li>
-
- <li class="dac-section-link">
- <a href="{@docRoot}preview/support.html#preview2-get">
- <span class="dac-sprite dac-auto-chevron"></span>
- Get the Update</a>
- </li>
-
- <li class="dac-section-link">
- <a href="https://code.google.com/p/android-developer-preview/">
- <span class="dac-sprite dac-auto-chevron"></span>
- Report Issues</a>
- </li>
- </ul>
-</div>
-
-<p>
- 歡迎使用「Android M 開發人員預覽版」<strong></strong>,本程式提供為新版 Android 測試和最佳化您應用程式所需的一切。
-
-免費使用,您只要下載 M 開發人員預覽版工具,就能立即開始使用。
-
-</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 (適用於電視) ,以及模擬器上執行和測試您的應用程式。
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 最新的平台程式碼
- </h5>
-
- <p>
- 我們將在預覽版期間提供多次更新,讓您能夠針對最新的平台變更進行測試。
-
- </p>
- </div>
-
- <div class="col-4of12">
- <h5>
- 透過 OTA 傳遞更新
- </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">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 開發人員預覽版可從 5 月 28 日開始執行,直到我們將在 2015 年第 3 季正式發行之前發行的最終版 Android M SDK。
-
-
-</p>
-
-<p>
- 我們將在主要的開發里程碑為您的測試裝置提供更新。
- 里程碑暫定如下
-</p>
-
-<ul>
- <li>
- <strong>預覽版 1</strong> (初始預覽版,五月下旬)、
- </li>
-
- <li>
- <strong>預覽版 2</strong> (六月下旬/七月上旬) 及
- </li>
-
- <li>
- <strong>預覽版 3</strong> (接近最終版,七月下旬)
- </li>
-</ul>
-
-<p>
- 這些更新最終會成為「最終版 SDK」<strong></strong> (稍後於第 3 季),為新版 Android 提供正式的 API,以及最終的系統行為和功能。
-
-
-</p>
-
-<p>
- 當您在 Android M 上測試和開發時,強烈建議您在預覽版更新發行時立即更新,讓「您的開發環境保持在最新狀態」<strong></strong>。
-
- 為了讓程序更簡單,我們將對更新為預覽版建置的裝置<strong>以無線 (OTA) 方式提供更新</strong>,還會提供您能手動下載和更新的系統映像。
-
-
-</p>
-<p class="note">
- <strong>注意:</strong>最終版 SDK 與系統映像無法以 OTA 方式提供,將必須<strong>以手動方式更新</strong>至您的測試裝置。</strong>
-
-
-</p>
-
-<p>
- 我們將透過 <a href="http://android-developers.blogspot.com/">Android 開發人員部落格</a>,還有本網站與 <a href="http://g.co/dev/AndroidMDevPreview">Android M 開發人員社群</a>來通知您有可用的預覽版更新。
-
-
-</p>
-
-<h2 id="preview_tools">
- 預覽版新增功能
-</h2>
-
-<p>
- M 開發人員預覽版包含您針對各種不同螢幕大小、網路技術、 CPU/GPU 晶片組及硬體架構,測試現有應用程式所需的一切。
-
-
-</p>
-
-<h4>
- SDK 工具
-</h4>
-
-<p>
- 您可以透過 <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a> 中的「SDK 管理器」下載以下元件:
-</p>
-
-<ul>
- <li>M 開發人員預覽版 <strong>SDK 工具</strong>
- </li>
-
- <li>M 開發人員預覽版<strong>模擬器系統映像</strong> (32 位元和 64 位元)
-
- </li>
-
- <li>M 開發人員預覽版<strong>模擬器系統映像 (適用於 Android TV)</strong> (32 位元)
-
- </li>
-</ul>
-
-<h4>
- 硬體系統映像
-</h4>
-
-<p>
- 您可以從<a href="download.html">下載頁面</a>下載適用於 Nexus 裝置的以下硬體系統映像:
-
-</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>
- 這些文件資源可協助您瞭解預覽版:
-</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>
- 適用於目前 M 開發人員預覽版的<a href="{@docRoot}preview/support.html#release-notes">版本資訊</a>,包括變更資訊與差異報告。
-
- </li>
-</ul>
-
-<h4>
- 支援資源
-</h4>
-
-<p>
- 在 M 開發人員預覽版上測試和開發時,請使用以下支援資源:
-
-</p>
-
-<ul>
- <li><a href="https://code.google.com/p/android-developer-preview/">M 開發人員預覽版問題追蹤器</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>是您能<strong>與其他 Android M 開發人員聯絡</strong>的 Google+ 社群。您可以分享有關 Android M 的觀察或想法,或尋找解答。
-
-
-
- </li>
-</ul>
-
-
-<h2 id="preview_apis_and_publishing">
- 目標設定、預覽版 API 及發行
-</h2>
-
-<p>
- Android M 開發人員預覽版是開發專用的版本,而且<strong>沒有標準的 API 層級</strong>。
-如果您想要選擇退出相容性行為以測試您的應用程式 (強烈建議),您可以將應用程式的 <code><a href=
- "/guide/topics/manifest/uses-sdk-element.html">targetSdkVersion</a></code> 設定為 <code>“MNC”</code>,就能以 M 開發人員預覽版為目標。
-
-
-
-</p>
-
-<p>
- Android M 開發人員預覽版提供<strong>預覽版 API</strong> — 在最終版 SDK (目前規劃在 2015 年第三季) 發行之前的都不是正式 API。
-
-這表示您可以預期 API 會隨時間而有些許變更,特別是程式一開始的幾週。<strong></strong>
-
-我們會將 Android M 開發人員預覽版每次更新的變更摘要提供給您。
-
-</p>
-
-<p class="note">
- 請注意,雖然預覽版 API 可能會改變,但例如執行階段權限和省電功能等基本系統行為,均已穩定且能夠立即測試。
-
-
-</p>
-
-<p>
- 在發行方面,Google Play 會<strong>禁止您發行以 M 開發人員預覽版為目標的應用程式</strong>。
-當 Android M 最終版 SDK 推出時,您將能夠以正式 Android M API 層級為目標,並將您的應用程式發行至 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</a> 的指示來設定您的環境,並設定測試裝置。
-
-
- </li>
-
- <li>依照<a href="https://developers.google.com/android/nexus/images">刷新指示</a>,針對 Nexus 5、6、9 及 Player 刷新最新的 M 開發人員預覽版系統映像。
-
-在您刷新開發裝置之後,預覽版更新將以無線 (OTA) 更新</a>的方式提供。
-
- </li>
-
- <li>下載 <a href="{@docRoot}preview/download.html#docs">M 預覽版 API 參考資料</a>與 <a href="{@docRoot}preview/samples.html">M 預覽版範例</a>,以深入瞭解新的 API 功能以及如何在您的應用程式中運用。
-
-
-
- </li>
-
- <li>加入 <a href="http://g.co/dev/AndroidMDevPreview">Android M 開發人員社群</a>以取得最新消息,並與其他使用新平台的開發人員聯絡。
-
-
- </li>
-</ol>
-
-<p>
- 感謝您參與 Android M 開發人員預覽版程式!
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/samples.jd b/docs/html-intl/intl/zh-tw/preview/samples.jd
deleted file mode 100644
index 2ef9a60..0000000
--- a/docs/html-intl/intl/zh-tw/preview/samples.jd
+++ /dev/null
@@ -1,70 +0,0 @@
-page.title=範例
-page.image=images/cards/samples-new_2x.png
-@jd:body
-
-<p>
- 下列提供 M 開發人員預覽版的程式碼範例。如要下載 Android Studio 的範例,請選取 [File] (檔案) > [Import Samples] (匯入範例) 選單選項。
-<b></b>
-</p>
-
-<p class="note">
- <strong>注意:</strong>這些可下載的專案是專為與 Gradle 和 Android Studio 一起使用而設計。
-
-</p>
-
-
-<h3 id="RuntimePermissions">執行階段權限</h3>
-
-<p>
- Android M 改變系統權限的運作方式。改為在執行階段才要求使用者核准權限要求,而不是安裝期間。
-這個範例顯示如何要求這些權限。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-RuntimePermissions">在 GitHub 上取得</a></p>
-
-<h3 id="ConfirmCredentials">確認認證</h3>
-
-<p>
- 這個範例示範如何在您的應用程式中使用裝置認證做為驗證方法。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ConfirmCredential">在 GitHub 上取得</a>
-</p>
-
-<h3 id="FingerprintDialog">指紋對話方塊</h3>
-
-<p>
- 這個範例示範如何在您的應用程式中辨識註冊的指紋以驗證使用者。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-FingerprintDialog">在 GitHub 上取得</a></p>
-
-<h3 id="AutomaticBackup">針對應用程式進行自動備份</h3>
-
-<p>
- Android M 導入自動備份應用程式設定的功能。這個範例示範如何將篩選規則新增至應用程式以管理設定備份。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-AutoBackupForApps">在 GitHub 上取得</a></p>
-
-<h3 id="CameraRaw">相機 2 Raw</h3>
-
-<p>
- 示範如何使用 <code>Camera2</code> API,以擷取 RAW 相機緩衝區並另存為 <code>DNG</code> 檔案。
-
-</p>
-
-<p><a href="https://github.com/googlesamples/android-Camera2Raw">在 GitHub 上取得</a></p>
-
-<h3 id="ActiveNotification">使用中通知</h3>
-
-<p>
- 這個範例示範
-<a href="{@docRoot}reference/android/app/NotificationManager.html"><code>NotificationManager</code></a>
- 如何將您應用程式目前顯示的通知數目告訴您。
-</p>
-
-<p><a href="https://github.com/googlesamples/android-ActiveNotifications">在 GitHub 上取得</a></p>
diff --git a/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd b/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
deleted file mode 100644
index 1769f74..0000000
--- a/docs/html-intl/intl/zh-tw/preview/setup-sdk.jd
+++ /dev/null
@@ -1,207 +0,0 @@
-page.title=設定預覽版 SDK
-page.image=images/cards/card-set-up_16-9_2x.png
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文件內容</h2>
- <ol>
- <li><a href="#get-as13">取得 Android Studio 1.3</a></li>
- <li><a href="#get-sdk">取得預覽版 SDK</a></li>
- <li><a href="#create-update">建立或更新專案</a></li>
- <li><a href="#setup-test">設定以進行測試</a></li>
- </ol>
- </div>
-</div>
-
-<p>M 開發人員預覽版 SDK 可以從 Android SDK Manager 取得。本文件假設您熟悉 Android 應用程式開發工作,例如使用 Android SDK Manager 和建立專案。
-
-如果您是 Android 的新手,請先參閱<a href="{@docRoot}training/basics/firstapp/index.html">建置您的第一個應用程式</a>訓練課程。
-</a>
-</p>
-
-<h2 id="get-as13">取得 Android Studio 1.3</h2>
-
-<p>開發人員預覽版最適合與處於預覽版狀態的 Android Studio 1.3 一起使用。
-強烈建議您安裝 Android Studio 1.3 預覽版與開發人員預覽版一起使用。
-</p>
-
-<p class="caution"><strong>注意:</strong>Android Studio 1.3 的測試預覽版仍在持續開發中。
-如果您使用主要開發電腦來測試開發人員預覽版,可以建立第二個 Android Studio 安裝以用於測試。
-
-</p>
-
-<p>如要安裝 Android Studio 1.3 預覽版:</p>
-
-<ol>
- <li>下載並啟動 <a href="{@docRoot}tools/studio/index.html">Android Studio</a>。
-
- </li>
-
- <li>開啟 [Settings] (設定) 視窗 (在 Windows 上,您可以選擇 [檔案] > [設定] 來執行此動作)。<strong>
-</strong><strong></strong>選擇 [Appearance & Behavior] (外觀和行為) > [System Settings] (系統設定) > [Updates] (更新) 面板。<strong></strong>
-
-
-
- <p class="aside">在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance & Behavior] (外觀和行為) 面板。<strong></strong><strong></strong>
-
-</p>
- </li>
-
- <li> 在「Updates」(更新) 面板上,選擇以下選項:[Automatically check updates for: (自動檢查以下的可用更新:)
-<strong></strong><strong>Canary Channel] (測試版管道)。</strong>
- </li>
-
- <li>在「Updates」(更新) 面板上,選取 [Check Now] (立即檢查) 以檢查是否有可用的最新測試版建置。<strong></strong><strong></strong>
-版本請在系統提示您時,下載並安裝該版本。
-
- </li>
-</ol>
-
-<h2 id="get-sdk">取得預覽版 SDK</h2>
-
-<p>如要將預覽版 SDK 元件新增至您的開發環境:</p>
-
-<ol>
- <li>啟動 Android Studio 1.3 預覽版。
- </li>
-
- <li>開啟 [Settings] (設定) 視窗 (在 Windows 上,您可以選擇 [檔案] > [設定] 來執行此動作)。<strong></strong><strong></strong>
-選擇 [Appearance & Behavior] (外觀和行為) > [System Settings] (系統設定) > [Updates] (更新) 面板。<strong></strong>
-
-
-
- <p class="aside">在 OSX 上,您可以在 Android Studio 的「Preferences」(偏好設定) 視窗中,找到 [Appearance & Behavior] (外觀和行為) 面板。<strong></strong><strong></strong>
-
-</p>
- </li>
-
- <li>在「Updates」(更新) 面板上,選擇以下選項:[Automatically check updates for: (自動檢查以下的可用更新:)
-<strong></strong><strong></strong>Canary Channel] (測試版管道) 以及 [Automatically check updates for Android SDK: (自動檢查 Android SDK 的可用更新:)<strong>
-Preview Channel] (預覽版管道)。</strong>
- </li>
-
- <li>啟動 <strong>Android Studio Manager</strong>。(使用 Android Studio 1.3,SDK Manager 會與 Android Studio 整合,而不是獨立的應用程式。)
-
-
- </li>
-
- <li>在「Platforms」(平台) 區段下,選取 [Android MNC Preview] (Android MNC 預覽版)。<strong></strong><strong></strong>
-
- </li>
-
- <li>在「Tools」(工具) 區段中,選擇最新的 Android SDK 工具、平台工具以及建置工具。<strong></strong><strong></strong><strong></strong><strong></strong>
-
-
- </li>
-
- <li>按一下 [Install packages] (安裝套件) 並接受所有套件的授權合約。<strong></strong>
-
- </li>
-
- <li>開啟 [Settings] (設定) 視窗,然後選擇 [Appearance & Behavior] (外觀和行為) > [System Settings] (系統設定) > [Android SDK] 面板,來驗證已安裝 M 開發人員預覽版。<strong></strong><strong></strong>
-
-</li>
-
- <li>在「Android SDK」面板上,選擇 [SDK Platforms] (SDK 平台) 索引標籤。<strong></strong><strong></strong>
-「Android MNC Preview」(Android MNC 預覽版) 應該會列在「Installed」(已安裝)。<strong></strong><em></em>
-此外,開啟 [SDK Tools] (SDK 工具) 索引標籤以確認已經安裝最新的工具。<strong></strong>
-
-
- </li>
-</ol>
-<p>完成這些步驟之後,就能在您的開發環境中使用預覽版元件。
- </p>
-
-
-<h2 id="create-update">建立或更新專案</h2>
-
-<p>
- 為了使用預覽版 API,您必須建立或更新開發專案,才能使用預覽版元件。
-
-</p>
-
-
-<h3 id="create">建立新專案</h3>
-
-<p>
- 建議您使用 Android Studio 搭配預覽版來建立專案。依照<a href="{@docRoot}sdk/installing/create-project.html">建立專案</a>中所述的步驟執行,直到您到達專案精靈中的「大小」畫面。
-
-<em></em>接著,執行下列步驟以建立為預覽版設定的專案。
-
-</p>
-
-<ul>
- <li>核取 [Phone and Tablet] (手機與平板電腦)。<strong></strong></li>
- <li>選取 [MNC:<strong></strong>Android M (Preview)] (Android M (預覽版)),它位於 [Minimum SDK] (SDK 最低版本)。<strong></strong>
-</li>
-</ul>
-
-
-<h3 id="update">更新現有的專案</h3>
-
-<p>
- 對於現有專案,您必須修改專案設定以啟用預覽版 API。在您的開發環境中,開啟模組的 <code>build.gradle</code> 檔案,然後將這些值設定如下:
-
-
-</p>
-
-<ul>
- <li>將 <code>compileSdkVersion</code> 設定為 <code>'android-MNC'</code></li>
- <li>將 <code>minSdkVersion</code> 設定為 <code>'MNC'</code></li>
- <li>將 <code>targetSdkVersion</code> 設定為 <code>'MNC'</code></li>
-</ul>
-
-
-<h2 id="setup-test">設定以進行測試</h2>
-
-<p>
- 利用預覽版測試應用程式,需要您將裝置或虛擬裝置設定為使用平台的預覽版本。
-如果您有相容的裝置,您可以安裝預覽版平台以用於測試。
-否則,您可以設定虛擬裝置以用於測試。
-</p>
-
-<h3 id="setup-device">設定實體裝置</h3>
-
-<p>
- 如果您有 Nexus 5、Nexus 6、Nexus 9 或 Android 電視,您可以在這些裝置上安裝預覽版系統映像,以測試您的應用程式。您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。
-
-
-
-</p>
-
-<p class="caution">
- <strong>重要說明:</strong>在裝置上安裝預覽版映像,會「移除當中的所有資料」,因此您應該在安裝預覽版映像之前備份任何資料。<em></em>
-
-</p>
-
-<h3 id="setupAVD">設定虛擬裝置</h3>
-
-<p>
- 您可以使用 Android Virtual Device Manager (Android 虛擬裝置管理員) 工具,從 Android Studio 內設定使用平台預覽版本的虛擬裝置。
-
-</p>
-
-<p>如要使用 AVD Manager 來建立 AVD:</p>
-
-<ol>
- <li>請在您的開發環境中安裝預覽版 SDK,如<a href="{@docRoot}preview/setup-sdk.html">設定預覽版 SDK</a> 中所述。
-
-</li>
- <li>依照<a href="{@docRoot}tools/devices/managing-avds.html">使用 AVD Manager 來管理 AVD</a>中的步驟執行。
-
-使用下列設定:
- <ul>
- <li><strong>裝置:</strong>Nexus 5、Nexus 6、Nexus 9 或 Android 電視</li>
- <li><strong>目標:</strong>
- Android M (預覽版) - API 級別 M</li>
- <li><strong>ABI:</strong> x86</li>
- </ul>
- </li>
-</ol>
-
-<p>
- 如需建立虛擬裝置以用於測試的詳細資訊,請參閱<a href="{@docRoot}tools/devices/index.html">管理虛擬裝置</a>。
-</p>
diff --git a/docs/html-intl/intl/zh-tw/preview/testing/guide.jd b/docs/html-intl/intl/zh-tw/preview/testing/guide.jd
deleted file mode 100644
index 879ec02..0000000
--- a/docs/html-intl/intl/zh-tw/preview/testing/guide.jd
+++ /dev/null
@@ -1,187 +0,0 @@
-page.title=測試指南
-page.image=images/cards/card-build_16x9_2x.png
-page.keywords=previewresources,androidm,testing,permissions
-
-@jd:body
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文件內容</h2>
- <ol>
- <li><a href="#runtime-permissions">測試權限</a></li>
- <li><a href="#doze-standby">測試休眠與應用程式待命</a></li>
- <li><a href="#ids">自動備份與裝置識別碼</a></li>
- </ol>
- </div>
-</div>
-
-<p>
- Android M 開發人員預覽版能夠讓您有機會確保您的應用程式能搭配下一個版本的平台運作。
-此預覽版包含許多 API 和足以影響應用程式的行為變更,如 <a href="{@docRoot}preview/api-overview.html">API 總覽</a>和<a href="{@docRoot}preview/behavior-changes.html">行為變更</a>中所述。
-
-使用預覽版測試應用程式時,您必須著重在許多特定的系統變更,以確保使用者都能擁有良好的體驗。
-
-
-</p>
-
-<p>
- 本指南說明對應用程式測試預覽功能的內容與方法。您應優先測試這些特定的預覽功能,因為這些功能可能會對您的應用程式行為有非常大的影響:
-
-
-</p>
-
-<ul>
- <li><a href="#runtime-permissions">權限</a>
- </li>
- <li><a href="#doze-standby">休眠與應用程式待命</a>
- </li>
- <li><a href="#ids">自動備份與裝置識別碼</a></li>
-</ul>
-
-<p>
- 如需有關如何設定使用預覽版系統映像的裝置或虛擬裝置以進行測試的詳細資訊,請參閱<a href="{@docRoot}preview/setup-sdk.html">設定預覽版 SDK</a>。
-
-</p>
-
-
-<h2 id="runtime-permissions">測試權限</h2>
-
-<p>
- 新的<a href="{@docRoot}preview/features/runtime-permissions.html">權限</a>模型改變使用者對您的應用程式分配權限的方式。
-以前在安裝過程中會授與所有權限,現在您的應用程式則必須在執行階段向使用者要求個別的權限。
-
-對於使用者而言,這個行為能夠對每個應用程式的Activity提供更細膩的控制,而且也能更瞭解應用程式為何要要求特定權限。
-使用者可以隨時個別對應用程式授與或撤銷權限。
-預覽版的這個功能最有可能影響到您應用程式的行為,而且可能會導致應用程式某些功能無法正常運作,或者這些功能會以降級的狀態運作。
-
-
-</p>
-
-<p class="caution">
- 這個變更會影響在新平台上執行的所有應用程式,甚至影響並非針對新平台版本開發的應用程式。
-平台會對舊版應用程式提供有限的相容性行為,但是您最好還是立即開始規劃將應用程式移轉到新的權限模型,以便能在官方平台上市時發佈更新的應用程式版本。
-
-
-</p>
-
-
-<h3 id="permission-test-tips">測試祕訣</h3>
-
-<p>
- 使用下列測試祕訣,可以幫助您使用新的權限行為,規劃和執行應用程式測試。
-
-</p>
-
-<ul>
- <li>辨別應用程式目前的權限與相關的程式碼路徑。</li>
- <li>針對所有權限保護的服務與資料測試使用者流程。</li>
- <li>測試各種組合的授與/撤銷權限。</li>
- <li>從命令列使用 {@code adb} 工具管理權限:
- <ul>
- <li>依群組列出權限與狀態:
- <pre>adb shell pm list permissions -d -g</pre>
- </li>
- <li>使用下列語法授與或撤銷一或多個權限:<br>
- <pre>adb shell pm [grant|revoke] <permission.name> ...</pre>
- </li>
- </ul>
- </li>
- <li>分析使用權限的應用程式服務。</li>
-</ul>
-
-<h3 id="permission-test-strategy">測試策略</h3>
-
-<p>
- 權限變更會影響應用程式的結構和設計,同時也會影響使用者的體驗以及您提供給使用者的流程。
-您應該評估應用程式目前的權限作法,然後開始規劃您要提供的新流程。
-官方版本的平台會提供相容性行為,但是您最好規劃更新您的應用程式,而不要依賴這些行為。
-
-
-</p>
-
-<p>
- 辨別您的應用程式實際需要且使用到的權限,然後找出使用受權限保護之服務的各種程式碼路徑。
-您可以在新平台上測試,並且進行程式碼分析,來達到上述目的。
-測試時,您應該變更應用程式的 {@code targetSdkVersion} 為預覽版本,著重在加入執行階段權限。
-如需詳細資訊,請參閱<a href="{@docRoot}preview/setup-sdk.html#">設定預覽版 SDK</a>。
-
-</p>
-
-<p>
- 測試各種撤銷/加入權限的組合,著重在依據這些權限的使用者流程。
-如果相依性不明顯或邏輯不清楚時,您可以考慮重新分解或劃分流程以消除相依性,或是更清楚為何需要某個權限。
-
-
-</p>
-
-<p>
- 如需有關執行階段權限行為、測試和建議做法的詳細資訊,請參閱 <a href="{@docRoot}preview/features/runtime-permissions.html">權限</a>開發人員預覽版頁面。
-
-
-</p>
-
-
-<h2 id="doze-standby">測試休眠與應用程式待命</h2>
-
-<p>
- 當裝置處於閒置狀態,或者當您的應用程式不在使用中時,「休眠」與「應用程式待命」的省電功能會限制應用程式可以執行的背景處理量。
-系統可能加諸在應用程式的限制,包括網路受到限制或沒有網路、背景工作暫停、通知暫停、喚醒要求被略過,以及警示被略過。
-
-如要確保您的應用程式能正確運作,而且這些省電功能也達到最好的效益,您應該透過模擬這些低電量狀態,測試您的應用程式。
-
-
-</p>
-
-<h4 id="doze">搭配休眠測試應用程式</h4>
-
-<p>對您的應用程式測試休眠:</p>
-
-<ol>
-<li>設定 M 預覽版系統映像的硬體裝置或虛擬裝置。</li>
-<li>將裝置連線到您的開發電腦並安裝您的應用程式。</li>
-<li>執行您的應用程式並讓應用程式保持使用中。</li>
-<li>執行下列命令,模擬裝置進入「休眠」模式:
-
-<pre>
-$ adb shell dumpsys battery unplug
-$ adb shell dumpsys deviceidle step
-$ adb shell dumpsys deviceidle -h
-</pre>
-
- </li>
- <li>觀察當裝置重新啟動時的應用程式行為。當裝置結束「休眠」時,確定應用程式順利回復。
-</li>
-</ol>
-
-
-<h4 id="standby">搭配應用程式待命測試應用程式</h4>
-
-<p>對您的應用程式測試應用程式待命模式:</p>
-
-<ol>
- <li>設定 M 預覽版系統映像的硬體裝置或虛擬裝置。</li>
- <li>將裝置連線到您的開發電腦並安裝您的應用程式。</li>
- <li>執行您的應用程式並讓應用程式保持使用中。</li>
- <li>執行下列命令,模擬應用程式進入待命模式:
-
-<pre>
-$ adb shell am broadcast -a android.os.action.DISCHARGING
-$ adb shell am set-idle <packageName> true
-</pre>
-
- </li>
- <li>使用下列命令,模擬喚醒應用程式:
- <pre>$ adb shell am set-idle <packageName> false</pre>
- </li>
- <li>觀察當應用程式被喚醒時的行為。確定應用程式順利從待命模式回復。
-您尤其要檢查應用程式通知與背景工作是否有如預期般繼續運作
-。</li>
-</ol>
-
-<h2 id="ids">針對應用程式進行自動備份與裝置特定識別碼</h2>
-
-<p>如果您的應用程式在內部儲存空間存有任何裝置特定識別碼,例如 Google
-雲端通訊註冊 ID,請確認按照建議做法排除這些儲存位置不要進行自動備份,如<a href="{@docRoot}preview/backup/index.html">針對應用程式進行自動備份</a>中所述。
-
-
- </p>
diff --git a/docs/html-intl/intl/zh-tw/preview/testing/performance.jd b/docs/html-intl/intl/zh-tw/preview/testing/performance.jd
deleted file mode 100644
index 5437e9d..0000000
--- a/docs/html-intl/intl/zh-tw/preview/testing/performance.jd
+++ /dev/null
@@ -1,656 +0,0 @@
-page.title=測試顯示效能
-page.image=images/cards/card-test-performance_2x.png
-page.keywords=效能, fps, 工具
-
-@jd:body
-
-
-<div id="qv-wrapper">
- <div id="qv">
- <h2>本文件內容</h2>
- <ol>
- <li><a href="#measure">測量 UI 效能</a>
- <ul>
- <li><a href="#aggregate">彙總畫面統計資料</a></li>
- <li><a href="#timing-info">精確畫面計時資訊</a></li>
- <li><a href="#timing-dump">簡易畫面計時傾印</a></li>
- <li><a href="#collection-window">控制統計資料收集時間</a></li>
- <li><a href="#diagnose">診斷效能回復</a></li>
- <li><a href="#resources">其他資源</a></li>
- </ul>
- </li>
- <li><a href="#automate">自動化 UI 效能測試</a>
- <ul>
- <li><a href="#ui-tests">設定 UI 測試</a></li>
- <li><a href="#automated-tests">設定自動化 UI 測試</a></li>
- <li><a href="#triage">分類和修正觀察到的問題</a></li>
- </ul>
- </li>
- </ol>
- </div>
-</div>
-
-
-<p>
- 使用者介面效能測試可確保您的應用程式不只符合功能需求,與使用者與應用程式的互動也無比順暢,執行時每秒一致有 60 個畫面 (<a href="https://www.youtube.com/watch?v=CaMTIgxCSqU&index=25&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">為什麼 60fps?</a>),任何畫面都不會遺漏或延遲,或稱為「閃避」<em></em>現象。
-
-
-本文件說明可用以測量 UI 效能的工具,以及呈現可將 UI 效能測量與測試做法整合的方法。
-
-
-</p>
-
-
-<h2 id="measure">測量 UI 效能</h2>
-
-<p>
- 為改善效能,首先您需要測量系統效能的能力,接著在管道的各部分發生問題時加以診斷和辨識。
-
-
-</p>
-
-<p>
- <em><a href="https://source.android.com/devices/tech/debug/dumpsys.html">dumpsys</a></em> 是一種 Android 工具,可在裝置上執行和傾印有關系統服務狀態的有趣資訊。
-
-將 <em>gfxinfo</em> 命令傳送至 dumpsys,會將錄製階段所發生與動畫的畫面相關的效能資訊以 logcat 提供輸出。
-
-
-</p>
-
-<pre>
-> adb shell dumpsys gfxinfo <PACKAGE_NAME>
-</pre>
-
-<p>
- 此命令會產生多種不同的畫面計時資料。
-</p>
-
-<h3 id="aggregate">彙總畫面統計資料</h3>
-
-<p>
- 使用 M 預覽版,命令會在程序的生命週期全程收集畫面資料,並將彙總的分析列印到 logcat。
-例如:
-</p>
-
-<pre class="noprettyprint">
-Stats since: 752958278148ns
-Total frames rendered: 82189
-Janky frames: 35335 (42.99%)
-90th percentile: 34ms
-95th percentile: 42ms
-99th percentile: 69ms
-Number Missed Vsync: 4706
-Number High input latency: 142
-Number Slow UI thread: 17270
-Number Slow bitmap uploads: 1542
-Number Slow draw: 23342
-</pre>
-
-<p>
- 這些高階統計資料是以高階方式轉換應用程式的轉譯效能,還有其在許多畫面的穩定性。
-
-</p>
-
-
-<h3 id="timing-info">精確畫面計時資訊</h3>
-
-<p>
- M 預覽版隨附新的命令 gfxinfo,而 <em>framestats</em> 可從最近的畫面提供相當詳細的畫面計時資訊,讓您可以追蹤並更準確進行除錯。
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> framestats
-</pre>
-
-<p>
- 此命令會從應用程式所產生至少 120 個畫面當中,加上奈秒時間戳記印出畫面計時資訊。以下範例是 adb dumpsys gfxinfo <PACKAGE_NAME> framestats 的原始輸出:
-
-
-</p>
-
-<pre class="noprettyprint">
-0,49762224585003,49762241251670,9223372036854775807,0,49762257627204,49762257646058,49762257969704,49762258002100,49762265541631,49762273951162,49762300914808,49762303675954,
-0,49762445152142,49762445152142,9223372036854775807,0,49762446678818,49762446705589,49762447268818,49762447388037,49762453551527,49762457134131,49762474889027,49762476150120,
-0,49762462118845,49762462118845,9223372036854775807,0,49762462595381,49762462619287,49762462919964,49762462968454,49762476194547,49762476483454,49762480214964,49762480911527,
-0,49762479085548,49762479085548,9223372036854775807,0,49762480066370,49762480099339,49762481013089,49762481085850,49762482232152,49762482478350,49762485657620,49762486116683,
-</pre>
-
-<p>
- 這裡的每一行輸出都代表應用程式產生的一個畫面。每行都有固定的資料欄編號,描述畫面產生管道的各階段所花費的時間。
-下一節會詳細說明此格式,包括各資料欄代表的意義。
-
-</p>
-
-
-<h4 id="fs-data-format">Framestats 資料格式</h4>
-
-<p>
- 由於資料區塊是以 CSV 格式輸出,所以可以直接將它貼到選擇的試算表工具,或使用指令碼來收集和剖析。
-下表說明輸出資料欄的格式。
-所有時間戳記都以奈秒為單位。
-</p>
-
-<ul>
- <li>FLAGS
- <ul>
- <li>FLAGS 資料欄的資料列均為 0,從 FRAME_COMPLETED 資料欄減去 INTENDED_VSYNC 資料欄可計算得出總畫面時間。
-
- </li>
-
- <li>如果這個值非零,應該略過該資料列,因為從正常效能來判斷,畫面已是極端值,版面配置與繪製預期都要花費 16ms 以上的時間。
-
-以下是發生這種情況的幾個原因:
- <ul>
- <li>視窗版面配置改變 (例如應用程式的第一個畫面或經過旋轉)
-
- </li>
-
- <li>也可能是略過畫面,在這種情況下,某些值會含有記憶體回收的時間戳記。
-例如,如果畫面速度超過 60fps,或如果螢幕上空無一物,最後卻有所改變,就可能會略過畫面,這不一定是應用程式發生問題的徵兆。
-
-
- </li>
- </ul>
- </li>
- </ul>
- </li>
-
- <li>INTENDED_VSYNC
- <ul>
- <li>預期的畫面起始點。如果這個值和VSYNC 不同,表示 UI 執行緒中發生的工作使它無法即時回應 vsync 訊號。
-
-
- </li>
- </ul>
- </li>
-
- <li>VSYNC
- <ul>
- <li>用於所有 vsync 接聽器和繪製畫面的時間值 (Choreographer 畫面回呼、動畫、View.getDrawingTime() 等等)
-
- </li>
-
- <li>如要深入瞭解有關 VSYNC 和它如何影響您的應用程式,請參閱<a href="https://www.youtube.com/watch?v=1iaHxmfZGGc&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=23">瞭解 VSYNC</a> 影片。
-
-
- </li>
- </ul>
- </li>
-
- <li>OLDEST_INPUT_EVENT
- <ul>
- <li>輸入佇列中最舊輸入事件的時間戳記,或為 Long.MAX_VALUE,若沒有該畫面的輸入事件的話。
-
- </li>
-
- <li>這個值主要用於平台工作,對應用程式開發人員用處不大。
-
- </li>
- </ul>
- </li>
-
- <li>NEWEST_INPUT_EVENT
- <ul>
- <li>輸入佇列中最新輸入事件的時間戳記,或為 0,若沒有該畫面的輸入事件的話。
-
- </li>
-
- <li>這個值主要用於平台工作,對應用程式開發人員用處不大。
-
- </li>
-
- <li>不過,透過查看 (FRAME_COMPLETED - NEWEST_INPUT_EVENT),可以大略知道應用程式還會延遲多少時間。
-
- </li>
- </ul>
- </li>
-
- <li>HANDLE_INPUT_START
- <ul>
- <li>將輸入事件分配給應用程式時的時間戳記。
- </li>
-
- <li>查看這個值與 ANIMATION_START 之間的時間,即可測量出應用程式花費在處理輸入事件的時間。
-
- </li>
-
- <li>如果這個數字很高 (>2ms),這表示應用程式花費在處理輸入事件(例如 View.onTouchEvent()) 的時間過長,指出需要將這項工作最佳化,或卸載交由其他執行緒處理。
-
-請注意,還有一些情況本就預期且可接受這個數字較大,例如會啟動新活動或類似工作的點擊事件。
-
-
- </li>
- </ul>
- </li>
-
- <li>ANIMATION_START
- <ul>
- <li>向 Choreographer 註冊的動畫執行時的時間戳記。
- </li>
-
- <li>查看這個值與 PERFORM_TRANVERSALS_START 之間的時間,即可判斷它花費多久的時間評估所有執行中的動畫器 (常見的有 ObjectAnimator、ViewPropertyAnimator 及 Transitions)。
-
-
- </li>
-
- <li>如果這個數字很高 (>2ms),可查看您的應用程式是否撰寫任何自訂動畫器,或 ObjectAnimators 正進行動畫處理的資料欄,並確定它們都適用於動畫。
-
-
- </li>
-
- <li>如要深入瞭解 Choreographer,請參閱<a href="https://developers.google.com/events/io/sessions/325418001">順滑流暢與否</a>影片。
-
- </li>
- </ul>
- </li>
-
- <li>PERFORM_TRAVERSALS_START
- <ul>
- <li>如果您從這個值中減去 DRAW_START,就可以得知版面配置和測量階段花費多久的時間完成。(請注意,在捲動或動畫期間,您會希望這個值趨近於零。)
-
-
- </li>
-
- <li>如要深入瞭解轉譯管道的測量與版面配置階段,請參閱<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">無效判定、版面配置及效能</a>影片。
-
-
- </li>
- </ul>
- </li>
-
- <li>DRAW_START
- <ul>
- <li>performTraversals 的繪製階段開始的時間。這是判定無效的任何檢視顯示清單的記錄起始點。
-
- </li>
-
- <li>這個值與 SYNC_START 之間的時間,就是對樹狀結構中所有無效判定檢視呼叫 View.draw() 所花費的時間。
-
- </li>
-
- <li>如需繪製模型的詳細資訊,請參閱<a href="{@docRoot}guide/topics/graphics/hardware-accel.html#hardware-model">硬體加速</a>或<a href="https://www.youtube.com/watch?v=we6poP0kw6E&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu&index=27">無效判定、版面配置及效能</a>影片。
-
-
- </li>
- </ul>
- </li>
-
- <li>SYNC_START
- <ul>
- <li>繪製的同步階段開始的時間。
- </li>
-
- <li>如果這個值與 ISSUE_DRAW_COMMANDS_START 之間的時間相當長 (約為 >0.4ms ),通常代表已繪製許多必須上傳至 GPU 的新點陣圖。
-
-
- </li>
-
- <li>如要深入瞭解同步階段,請參閱<a href="https://www.youtube.com/watch?v=VzYkVL1n4M8&index=24&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu">設定檔 GPU 轉譯</a>影片。
-
- </li>
- </ul>
- </li>
-
- <li>ISSUE_DRAW_COMMANDS_START
- <ul>
- <li>硬體轉譯器開始對 GPU 發出繪製命令的時間。
- </li>
-
- <li>這個值與 FRAME_COMPLETED 之間的時間大約就是應用程式產生的 GPU 工作量。
-太過度繪製或無效轉譯效果之類的問題都會顯示於此。
-
- </li>
- </ul>
- </li>
-
- <li>SWAP_BUFFERS
- <ul>
- <li>相對於無趣的平台工作以外,呼叫 eglSwapBuffers 的時間。
-
- </li>
- </ul>
- </li>
-
- <li>FRAME_COMPLETED
- <ul>
- <li>全部完成!花費在處理這個畫面的總時間,計算方法是 FRAME_COMPLETED - INTENDED_VSYNC。
-
- </li>
- </ul>
- </li>
-
-</ul>
-
-<p>
- 您能以不同的方式使用這項資料。顯示不同延遲貯體中畫面時間分布的長條圖就是一種簡單但實用的方式,請見下圖。
-
-本圖可一目瞭然地告訴我們,大部分畫面都低於 16ms 的上限 (紅色除外),但只有幾個畫面明顯超過上限。
-
-我們可以查看此長條圖一段時間的變化,觀察出現的大規模位移或產生新的極端值。
-您也能根據資料中的許多時間戳記將輸入延遲、花費在版面配置的時間或其他類似的有趣度量指標繪成圖表。
-
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-framestats.png">
-
-
-<h3 id="timing-dump">簡易畫面計時傾印</h3>
-
-<p>
- 如果 [開發人員選項] 中的 [設定檔 GPU 轉譯]<strong></strong> 設定為 [In adb shell dumpsys gfxinfo]<strong></strong>
-,<code>adb shell dumpsys gfxinfo</code> 命令會印出最近 120 個畫面的計時資訊,以定位鍵分隔值分成數個不同類別。
-
-這項資料非常適合用來指出可能是繪製管道的哪個部分太慢。
-
-</p>
-
-<p>
- 類似於上述的 <a href="#fs-data-format">framestats</a>,可以直接將它貼到選擇的試算表工具,或使用指令碼來收集和剖析。
-
-下圖顯示許多由應用程式產生的畫面花費時間的分類細項。
-
-</p>
-
-<img src="{@docRoot}preview/images/perf-test-frame-latency.png">
-
-<p>
- 執行 gfxinfo、複製輸出、將輸出貼入試算表應用程式,然後將資料繪製成堆疊長條圖的結果。
-
-</p>
-
-<p>
- 每個直條都代表動畫的一個畫面,其高度代表計算該畫面所花費的毫秒數。
-長條的每個色塊都代表轉譯管道的不同階段,好讓您看出應用程式的哪部分可能產生瓶頸。
-
-如需瞭解繪製管道以及如何最佳化的詳細資訊,請參閱硬體加速或<a href="https://www.youtube.com/watch?v=we6poP0kw6E&index=27&list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE">無效判定、版面配置及效能</a>影片。
-
-
-</p>
-
-
-<h3 id="collection-window">控制統計資料收集時間</h3>
-
-<p>
- framestats 與簡單的畫面計時都會收集極短時間內的資料 – 轉譯約需兩秒。
-為了精確控制這段時間,例如只限特定動畫的資料,您可以重設所有計數器,然後彙總收集的統計資料。
-
-
-</p>
-
-<pre>
->adb shell dumpsys gfxinfo <PACKAGE_NAME> reset
-</pre>
-
-<p>
- 這也能和傾印命令本身結合使用,定期收集和重設,持續擷取兩秒時間內的畫面。
-
-
-</p>
-
-
-<h3 id="diagnose">診斷效能回復</h3>
-
-<p>
- 識別回復是追蹤問題和維護應用程式健康情況的第一步。
-不過,dumpsys 只能識別有問題存在與相關的嚴重性。
-您仍需要診斷造成效能問題的特定原因,以及找出適當的修正方式。
-因此,強烈建議您使用 <a href="{@docRoot}tools/help/systrace.html">systrace</a> 工具。
-
-</p>
-
-
-<h3 id="resources">其他資源</h3>
-
-<p>
- 如需 Android 的轉譯管道如何運作、常見問題以及如何修正的詳細資訊,下列的一些資訊可能會很實用:
-
-
-</p>
-
-<ul>
- <li>轉譯效能 101
- </li>
- <li>為什麼 60fps?
- </li>
- <li>Android UI 和 GPU
- </li>
- <li>無效判定、版面配置及效能
- </li>
- <li>利用 Systrace 分析 UI 效能
- </li>
-</ul>
-
-
-<h2 id="automate">自動化 UI 效能測試</h2>
-
-<p>
- UI 效能測試的方法之一就是讓測試人員對目標應用程式執行一組使用者操作,並以肉眼查看,或花費很長一段時間使用工具導向的方法,尋找閃避現象。
-
-但這種靠人工的方式充滿危險,人類對畫面率變化的感知能力因人而異,而且這種方法也很費時、繁瑣且容易出錯。
-
-
-</p>
-
-<p>
- 較有效率的方法是從自動化的 UI 測試中記錄和分析重要效能度量指標。
-Android M 開發人員預覽版包含新的記錄功能,能夠輕鬆判斷應用程式動畫中閃避現象的數量與嚴重程度,還能用來建置嚴謹的程序,判斷目前的效能並追蹤未來的效能目標。
-
-
-
-</p>
-
-<p>
- 本文會逐步說明建議用來使用資料以自動化效能測試的方法。
-
-</p>
-
-<p>
- 這種方法大多分成兩個主要動作。首先,識別您要測試的項目,以及測試的方法。其次是設定和維護自動化測試環境。
-
-
-</p>
-
-
-<h3 id="ui-tests">設定 UI 測試</h3>
-
-<p>
- 在您開始進行自動化測試之前,務必要決定幾個高階決策,才能適當瞭解您的測試空間與可能會有的需求。
-
-</p>
-
-<h4>
- 識別要測試的主要動畫 / 流程
-</h4>
-
-<p>
- 請記住,流暢的動畫有所中斷時,就是使用者最容易看見效能低落的時候。
-因此,識別要測試哪種類型的 UI 動作時,最好著重在使用者最常看見或對他們的體驗最重要的主要動畫。
-
-例如,以下是一些可能有利於識別的常見情況:
-</p>
-
-<ul>
- <li>捲動主要的 ListView 或 RecyclerView
- </li>
-
- <li>非同步等待週期內的動畫
- </li>
-
- <li>當中會載入 / 操縱點陣圖的任何動畫
- </li>
-
- <li>包含 Alpha 透明混色的動畫
- </li>
-
- <li>使用畫布繪製的自訂檢視
- </li>
-</ul>
-
-<p>
- 和您團隊的工程人員、設計師及產品經理合作,優先考慮將這些主要產品動畫放入測試涵蓋範圍內。
-
-</p>
-
-<h4>
- 定義未來目標並予以追蹤
-</h4>
-
-<p>
- 從高階觀點來看,重要的是識別特定的效能目標,並著重在撰寫測試及收集相關資料。
-例如:
-</p>
-
-<ul>
- <li>您是否只想初次開始追蹤 UI 效能以深入瞭解?
- </li>
-
- <li>您是否想要避免可能在未來導入的回復?
- </li>
-
- <li>今日有 90% 的順暢畫面並想要在本季達到 98%?
- </li>
-
- <li>今日有 98% 的順暢畫面且不想要回復?
- </li>
-
- <li>您的目標是改善低階裝置上的效能嗎?
- </li>
-</ul>
-
-<p>
- 在上述的這些情況中,您會想要有歷史追蹤功能,來顯示不同應用程式版本間的效能。
-
-</p>
-
-<h4>
- 識別測試要用的裝置
-</h4>
-
-<p>
- 應用程式效能會因其執行所在裝置而異。有些裝置包含的記憶體較少、GPU 較不強大或 CPU 晶片速度較慢。
-這表示可在某組硬體上執行良好的動畫,在其他組合上不一定能執行良好,更糟的是可能會在管道的不同部分產生瓶頸。
-
-使用者所見可能會不同,為將這點列入考量,請挑選涵蓋當前高階裝置、低階裝置、平板電腦等的一系列裝置執行測試。
-
-尋找 CPU 效能、RAM、畫面密度、大小等方面的變化。
-高階裝置上通過的測試,在低階裝置上可能會失敗。
-
-</p>
-
-<h4>
- UI 測試的基本架構
-</h4>
-
-<p>
- 工具套件 (例如 <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a> 和 <a href="{@docRoot}training/testing/ui-testing/espresso-testing.html">Espresso</a>) 是為協助將使用者在您的應用程式四處移動的動作自動化而建置。
-
-這些都是模擬使用者與裝置互動的簡單架構。
-如要使用這些架構,您要有效地建立會逐一執行一組使用者動作的獨特指令碼,然後在裝置上自行播放。
-
-
-</p>
-
-<p>
- 連同 <code>dumpsys gfxinfo</code>,再結合這些自動化測試,您可快速建立可重現系統,讓您執行測試並測量該特定情況下的效能資訊。
-
-
-</p>
-
-
-<h3 id="automated-tests">設定自動化 UI 測試</h3>
-
-<p>
- 在您能夠執行 UI 測試,還有可從單一測試收集資料的管道後,下一個重要步驟是利用可多次執行該項測試的架構,然後彙總產生的效能資料,以供您的開發團隊進一步分析。
-
-
-
-</p>
-
-<h4>
- 測試自動化的架構
-</h4>
-
-<p>
- 直接在目標裝置/模擬器上執行的 UI 測試架構 (例如 <a href="{@docRoot}training/testing/ui-testing/uiautomator-testing.html">UI Automator</a>) 毫無價值。
-因為效能收集資訊是由主控機器透過 ADB 傳送命令驅動 <em>dumpsys gfxinfo</em> 來完成。
-<a href="{@docRoot}tools/help/monkeyrunner_concepts.html">MonkeyRunner</a> 架構是為了協助橋接這些個別實體開發。在主控機器上執行的指令碼處理系統可對一組連接的裝置發出命令,也能接收來自這些裝置的資料。
-
-
-
-</p>
-
-<p>
- 建置一組指令碼以適當自動化 UI 效能測試,至少應能利用 monkeyRunner 來完成下列工作:
-
-</p>
-
-<ul>
- <li>對目標裝置或模擬器載入和啟動所需的 APK。
- </li>
-
- <li>啟動並允許執行 UI Automator UI 測試
- </li>
-
- <li>透過 dumpsys gfxinfo 收集效能資訊。<em></em><em></em>
- </li>
-
- <li>彙總資訊並以對開發人員有用的方式顯示。
- </li>
-</ul>
-
-
-<h3 id="triage">分類和修正觀察到的問題</h3>
-
-<p>
- 在辨識出問題模式與回復之後,下一個步驟是辨識和套用修正。
-如果您的自動化測試架構會為畫面保留精確的計時分類細項,可幫助您詳細審察目前可疑的程式碼/版面配置變化 (在回復的情況下),或在您切換為靠人工探究時縮小要分析的系統部分。
-
-
-如需靠人工探究時,<a href="{@docRoot}tools/help/systrace.html">systrace</a> 是開始進行的好地方,顯示轉譯管道各階段、系統中每個執行緒與核心,還有您所定義任何自訂事件標記的精確計時資訊。
-
-
-</p>
-
-<h4>
- 適當分析暫時的計時
-</h4>
-
-<p>
- 請務必注意,從轉譯效能中取得和測量計時的困難度。
-這些數字不具決定性且通常受系統狀態、可用記憶體數目、溫度調節,還有上次太陽閃焰何時衝擊您所在地區影響。
-
-重點是您執行相同的測試兩次,而每次得到的數字都有些微不同,數字很接近但不會完全相同。
-
-
-</p>
-
-<p>
- 以這種方式適當收集和分析資料,表示執行相同的測試多次,並累積結果取平均值或中間值。(為了簡單起見,我們稱之為「批次」) 這可讓您粗略計算測試的效能,而不需要精確的計時。
-
-
-
-</p>
-
-<p>
- 在變更的程式碼之間使用批次,可看出那些變更對效能的影響。
-如果前次變更批次的平均畫面率大於後來變更批次,您通常會有那項特定變更的整體 win wrt 效能。
-
-
-</p>
-
-<p>
- 這表示您執行的任何自動化 UI 測試都應將此概念列入考量,同時考量可能會在測試期間發生的任何異常情況。
-例如,您的應用程式效能若因為某些裝置問題而突然下降 (並非由您的應用程式引起),您可能會想要重新執行批次,以讓取得的計時較不混亂。
-
-
-
-</p>
-
-<p>
- 應該執行多少次測試才能獲得有意義的測量結果呢?最少應執行 10 次,若執行更多次 (像是 50 或 100 次) 可以產生更準確的結果 (當然您現在是以時間換取準確度)。
-
-
-</p>
diff --git a/docs/html/about/versions/marshmallow/android-6.0.jd b/docs/html/about/versions/marshmallow/android-6.0.jd
index 5b2e089..732932f 100644
--- a/docs/html/about/versions/marshmallow/android-6.0.jd
+++ b/docs/html/about/versions/marshmallow/android-6.0.jd
@@ -406,12 +406,12 @@
<h2 id="behavior-themeable-colorstatelists">Themeable ColorStateLists</h2>
<p>Theme attributes are now supported in
{@link android.content.res.ColorStateList} for devices running on Android 6.0 (API level 23). The
-{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} and
-{@link android.content.res.Resources#getColor(int) getColor()} methods have been deprecated. If
-you are calling these APIs, call the new
-{@link android.content.Context#getColorStateList(int) getColorStateList()} or
-{@link android.content.Context#getColor(int) getColor()} methods instead. These methods are also
-available in the v4 appcompat library via {@link android.support.v4.content.ContextCompat}.</p>
+{@link android.content.res.Resources#getColorStateList(int) Resources.getColorStateList()} and
+{@link android.content.res.Resources#getColor(int) Resources.getColor()} methods have been
+deprecated. If you are calling these APIs, call the new
+{@link android.content.Context#getColorStateList(int) Context.getColorStateList()} or
+{@link android.content.Context#getColor(int) Context.getColor()} methods instead. These methods are
+also available in the v4 appcompat library via {@link android.support.v4.content.ContextCompat}.</p>
<h2 id="audio">Audio Features</h2>
diff --git a/docs/html/design/patterns/actionbar.jd b/docs/html/design/patterns/actionbar.jd
index ef02c53..262172b 100644
--- a/docs/html/design/patterns/actionbar.jd
+++ b/docs/html/design/patterns/actionbar.jd
@@ -13,10 +13,10 @@
</div>
</a>
-<a class="notice-developers" href="{@docRoot}guide/topics/ui/actionbar.html">
+<a class="notice-developers" href="{@docRoot}training/appbar/index.html">
<div>
<h3>Developer Docs</h3>
- <p>Action Bar</p>
+ <p>Adding the App Bar</p>
</div>
</a>
diff --git a/docs/html/design/tv/images/overscan.png b/docs/html/design/tv/images/overscan.png
index fb7e4bc..7957e97 100644
--- a/docs/html/design/tv/images/overscan.png
+++ b/docs/html/design/tv/images/overscan.png
Binary files differ
diff --git a/docs/html/design/tv/style.jd b/docs/html/design/tv/style.jd
index dd10a8a..4c43983 100644
--- a/docs/html/design/tv/style.jd
+++ b/docs/html/design/tv/style.jd
@@ -51,9 +51,11 @@
<img src="{@docRoot}design/tv/images/overscan.png" alt="Overscan borders for TV" />
-<p>Build a 10% margin into your TV screen designs to account for overscan area the TV may not
- display correctly. On a 1920 x 1080 pixel screen, this margin should be a minimum of 27px from the
- top and bottom edges and a minimum of 48px from the right and left edges of the picture.</p>
+<p>Build a 5% margin into your TV screen designs to account for overscan area the TV may not
+ display correctly. On a 1920 x 1080 screen, this margin should be a minimum of 27 pixels
+ from the top and bottom edges and a minimum of 48 pixels from the right and left edges of the
+ picture.
+ </p>
<h2>Color</h2>
diff --git a/docs/html/distribute/engage/beta.jd b/docs/html/distribute/engage/beta.jd
new file mode 100644
index 0000000..85ab5e5
--- /dev/null
+++ b/docs/html/distribute/engage/beta.jd
@@ -0,0 +1,113 @@
+page.title=Get real user feedback with beta tests
+page.metaDescription=Run alpha and beta tests from the developer console, and make improvements and correct issues before you release.
+page.image=images/cards/distribute/engage/beta.jpg
+page.tags="beta, alpha, release channels"
+Xnonavpage=true
+
+@jd:body
+
+<p>
+ With alpha or beta tests run from the Developer Console you can collect user
+ feedback on early versions of your app, then make improvements and correct
+ issues before you release to the full Play Store audience.
+</p>
+
+<img src="{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png"
+ srcset="{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png 1x,
+ {@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test_2x.png 2x"
+ width="500">
+
+<p>Testing your app with a select group of users will give you a chance to fix any technical or user experience issues before you release it widely, so that you can be confident about releasing the best version of your app to the majority of your users. Feedback from your test users won't affect your app’s public rating.</p>
+
+<p>
+ Learn more about <a href=
+ "https://support.google.com/googleplay/android-developer/answer/3131213"
+ class="external-link">how to run a beta test.</a>
+</p>
+
+<h2 id="how-to">How to Do It</h2>
+
+<ul>
+
+<ul>
+ <li>
+ <strong>Open beta —</strong> Use an open beta when you want any user who
+ has the link to be able to join your beta with just one click. One of the
+ advantages of an open beta is that it allows you to scale to a large number
+ of testers. However, you can also limit the maximum number of users who can
+ join.
+ </li>
+
+ <li>
+ <strong>Closed beta using email addresses —</strong> If you want to
+ restrict which users can access your beta, you have a new option: you can
+ now set up a closed beta using lists of individual email addresses which
+ you can add individually or upload as a .csv file. These users will be able
+ to join your beta via a one-click opt-in link.
+ </li>
+
+ <li>
+ <strong>Closed beta with Google+ community or Google Group —</strong> You
+ can continue to use betas with Google+ communities or Google Groups. You
+ can also move closed betas to an open beta while maintaining your existing
+ testers.
+ </li>
+</ul>
+
+<h2 id="tips">Tips</h2>
+
+<ul>
+ <li>Your testers will need to have a Google Account (<code>@gmail.com</code>)
+ or a Google Apps account to join a test.
+ </li>
+
+ <li>Use alpha tests for early experimental versions of your app that might
+ contain incomplete or unstable functionality, and use beta tests for apps
+ that should be complete and stable.
+ </li>
+
+ <li>Start testing with a small group of more trusted testers in an alpha
+ test, then expand your test to a larger group of testers in a beta test.
+ </li>
+
+ <li>Testers can't leave public reviews for alpha/beta apps on Google Play, so
+ include a feedback channel or provide the option to send feedback by email,
+ website, or a message forum.
+ </li>
+
+ <li>For an APK to be available to alpha testers it must have a higher version
+ number than your beta or production version, and for beta testers the APK
+ must have a higher version number than your production version.
+ </li>
+
+ <li>Alpha testers receive the alpha, beta, or production version of your app
+ with the highest version code that is compatible with their device, while
+ beta testers receive the beta or production version of your app with the
+ highest version code that is compatible with their device. This also means
+ that posting a higher version number APK cancels earlier tests of earlier
+ versions, so posting a production 2.0 version would cancel a beta test of
+ version 1.9 and that beta test would have canceled an alpha test of version
+ 1.8.
+ </li>
+
+ <li>Also consider using <a href=
+ "https://www.google.com/insights/consumersurveys/" class=
+ "external-link">Google Consumer Surveys</a> to conduct market research and
+ gather user feedback at scale.
+ </li>
+</ul>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="collection:distribute/googleplay/beta"
+ data-sortOrder="-timestamp"
+ data-cardSizes="9x3"
+ data-maxResults="6"></div>
+ </div>
diff --git a/docs/html/distribute/engage/engage_toc.cs b/docs/html/distribute/engage/engage_toc.cs
index 91206d3..e86623f 100644
--- a/docs/html/distribute/engage/engage_toc.cs
+++ b/docs/html/distribute/engage/engage_toc.cs
@@ -29,6 +29,7 @@
<span class="en">Drive Engagement with Ads</span></a>
</div>
</li>
+
<li class="nav-section">
<div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
var:toroot?>distribute/engage/game-services.html">
@@ -53,7 +54,12 @@
<span class="en">Integrate GCM</span></a>
</div>
</li>
-
+ <li class="nav-section">
+ <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs
+ var:toroot?>distribute/engage/beta.html">
+ <span class="en">Get Feedback with Beta Tests</span></a>
+ </div>
+ </li>
</ul>
<script type="text/javascript">
diff --git a/docs/html/distribute/engage/game-services.jd b/docs/html/distribute/engage/game-services.jd
index 1c77d2d..9ca27b7 100644
--- a/docs/html/distribute/engage/game-services.jd
+++ b/docs/html/distribute/engage/game-services.jd
@@ -1,90 +1,193 @@
page.title=Encourage Competition
page.metaDescription= Bring out the competitor in your users with cloud save, multiplayer game play, and more.
-page.tags="games"
-page.image=/images/google/gps-play_games_logo.png
+page.tags="games, games services, play games"
+page.image=/images/cards/distribute/engage/card-game-services.png
@jd:body
-<div class="figure" style="width:330px;">
- <img src="{@docRoot}images/google/gps-play_games_logo.png">
+
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>Features</h2>
+ <ul>
+ <li><a href="#simplify">Simplify your game development</a></li>
+ <li><a href="#acquire-users">Acquire and engage users</a></li>
+ <li><a href="#socialize">Socialize your games</a></li>
+ <li><a href="#extend">Extend across form factors</a></li>
+ <li><a href="#manage">Manage your games</a></li>
+ </ul>
+ </div>
</div>
<p>
- Increase game installs, in-app revenue, and engagement with <a href=
- "{@docRoot}google/play-services/games.html">Google Play
- Game Services</a>. Bring out the competitor in your users with cloud save,
- multiplayer game play, and more.
+ Three out of four Android users download games to their device, making games
+ one the most popular additions to users’ devices. Making your games stand out
+ from the crowd is therefore key to success.
</p>
+<div class="figure">
+ <img src="{@docRoot}images/google/gps-play_games_logo.png"
+ srcset="{@docRoot}images/google/gps-play_games_logo.png 1x,
+ {@docRoot}images/google/gps-play_games_logo_2x.png 2x"
+ alt="" width="170" />
+</div>
+
+<p>
+ Google Play game services save you from implementing popular game features
+ yourself such as achievements, leaderboards, real-time multiplayer, and
+ others. You can also let players sign in using their Google identity and
+ share their gaming experience with friends. And there is comprehensive
+ reporting and statistics to help you track and improve your game’s
+ performance.
+</p>
+
+<p>
+ Start now by visiting <a href="https://developers.google.com/games/services/"
+ class="external-link">Google Play game services.</a>
+</p>
+
+<h3 id="simplify">Simplify your game development</h3>
+
<ul>
<li>
- <p>
- <a href=
- "https://developers.google.com/games/services/android/achievements">Achievements</a>
- encourage players to try new features, resulting in more time spent in
- your games.
- </p>
+ <strong>Set up Google Play Games Services:</strong> Use the Google Play
+ Developer Console to manage games services and configure metadata for
+ authorizing and authenticating your game.
</li>
<li>
- <p>
- <a href=
- "https://developers.google.com/games/services/android/leaderboards">Leaderboards</a>
- are a fun way to drive competition among your players.
- </p>
- </li>
-
- <li>
- <p>
- <a href=
- "https://developers.google.com/games/services/android/cloudsave">Cloud
- Save</a> allows users to continue where they left off on another device
- or platform.
- </p>
- </li>
-
- <li>
- <p>
- Multiplayer features allow users to invite friends to install games and
- play together in <a href=
- "https://developers.google.com/games/services/common/concepts/realtimeMultiplayer">
- real-time</a> or <a href=
- "https://developers.google.com/games/services/common/concepts/turnbasedMultiplayer">
- turn-by-turn</a>.
- </p>
- </li>
-
- <li>
- <p>
- <a href=
- "https://play.google.com/store/apps/details?id=com.google.android.play.games">
- Google Play Games App</a> provides additional exposure to increase
- downloads and gameplay. It helps users play with friends, see what others
- are playing, and discover featured games.
- </p>
+ <strong>Use the Play Games APIs:</strong> Start integrating popular gaming
+ features into your games by using the <a href=
+ "https://developers.google.com/games/services/" class=
+ "external-link">Google Play Games Services APIs.</a>
</li>
</ul>
-<p>
- And there is no need to worrying about device or OS version support. Google
- Play Game Services is backward compatible, allowing you to reach more
- users with less effort. Get started on <a href=
- "{@docRoot}google/play-services/games.html">Google Play
- Game Services</a>. For more tips on keeping gamers engaged, see the <a href=
- "{@docRoot}distribute/essentials/best-practices/games.html">
- Game Developer Best Practices</a>.
+<h3 id="acquire-users">Acquire and engage users</h3>
+
+<ul>
+ <li>
+ <strong>Player Analytics:</strong> View details on multiplayer games,
+ average revenue per paying user (ARPPU), sessions per user, and more; as
+ well as set and monitor daily revenue targets from a comprehensive
+ dashboard of player and engagement statistics.
+ </li>
+
+ <li>
+ <strong>Achievements:</strong> Set goals to encourage players to spend more
+ time in your games and try new features; reward them with experience points
+ that players redeem to gain level-ups in their Play Games profile.
+ </li>
+
+ <li>
+ <strong>Quests:</strong> Offer players in-game rewards and benefits for
+ exploring your game more deeply: use particular items, reach a certain
+ level, or perform a specific game action. And set up quests without the
+ need to release an app update.
+ </li>
+</ul>
+
+<h3 id="socialize">Socialize your games</h3>
+
+<ul>
+ <li>
+ <strong>Leaderboards:</strong> Drive competition among your players with
+ daily, weekly, and all-time leaderboards. Create multiple leaderboards for
+ game levels or other game features.
+ </li>
+
+ <li>
+ <strong>Multiplayer games:</strong> Add the challenge of playing against
+ others to your real-time and turn-by-turn games. Players can invite friends
+ to install your game across form factors and supported platforms.
+ </li>
+
+ <li>
+ <strong>Game gifts:</strong> Drive downloads and engagement by giving your
+ players the ability to send virtual in-game objects to their friends. Also
+ let players request gifts and use gifts as a trading mechanism within
+ games.
+ </li>
+</ul>
+
+<h3 id="extend">Extend across form factors</h3>
+
+<ul>
+ <li>
+ <strong>Saved Games:</strong> Save game states to the cloud and enable
+ players to resume games anytime on any of their devices. Cover images and
+ descriptions show players where they left off and attract them back.
+ </li>
+
+ <li>
+ <strong>Nearby Connections API:</strong> Enhance the experience of your
+ games for Android TV by connecting seamlessly with smartphones and tablets,
+ to use them as second-screen controllers.
+ </li>
+</ul>
+
+<h3 id="manage">Manage your games</h3>
+
+<ul>
+ <li>
+ <strong>Easily update your game metadata:</strong> Simplify your game
+ testing and player account management with the <a href=
+ "https://developers.google.com/games/services/management/" class=
+ "external-link">Google Play games services Management API.</a>
+ </li>
+
+ <li>
+ <strong>Automate your game production and distribution tasks:</strong>
+ Modify listings and upload icons for achievements and leaderboards with the
+ <a href="https://developers.google.com/games/services/publishing/" class=
+ "external-link">Google Play games services Publishing API.</a>
+ </li>
+
+ <li>
+ <strong>Insights and alerts:</strong> Get information on how to improve
+ your multiplayer, leaderboards, achievements, and other game services
+ implementations from the Developer Console.
+ </li>
+
+ <li>
+ <strong>Anti-piracy:</strong> Optionally disable game services for games
+ not purchased from the Play Store.
+ </li>
+</ul>
+
+<h3 id="tips">Tips</h3>
+<ul>
+ <li>The best Google Play game services integrations are highly visible,
+ customized, achievable, and incentivized.
+ </li>
+
+ <li>Prompt players to sign in to Google Play game services when your game
+ launches. This ensures they get access to the game service features, and also
+ maximizes the number of players online and ready to collaborate.
+ </li>
+
+ <li>Avoid creating achievements that rely too much on elements beyond the
+ player's control or cannot be earned once the player has made a decision in
+ your game.
+ </li>
+
+ <li>With Google Play game services, you can add seamless interaction between
+ Android and your games on the web and other platforms.
+ </li>
+</ul>
+
+<p style="clear:both">
</p>
+<div class="dynamic-grid">
<div class="headerLine">
- <h2 id="related-resources">
- Related Resources
- </h2>
-
-
+<h2 id="related-resources">Related Resources</h2>
</div>
-<div class="resource-widget resource-flow-layout col-13" data-query=
-"collection:distribute/engage/googleplaygames" data-sortorder="-timestamp"
-data-cardsizes="9x3" data-maxresults="6">
-</div>
-
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="collection:distribute/engage/gamesservices/related"
+ data-sortOrder="-timestamp"
+ data-cardSizes="9x3"
+ data-maxResults="6"></div>
+ </div>
diff --git a/docs/html/distribute/googleplay/about.jd b/docs/html/distribute/googleplay/about.jd
index 543d7d3..a93d1c7 100644
--- a/docs/html/distribute/googleplay/about.jd
+++ b/docs/html/distribute/googleplay/about.jd
@@ -6,367 +6,148 @@
@jd:body
- <div id="qv-wrapper">
+<div id="qv-wrapper">
<div id="qv">
<h2>About Google Play</h2>
<ol style="list-style-type:none;">
- <li><a href="#reach">Worldwide Reach, Rapid Growth</a></li>
- <li><a href="#ratings-reviews">User Ratings and Reviews</a></li>
- <li><a href="#category-browsing">Category Browsing</a></li>
- <li><a href="#search">Search</a></li>
- <li><a href="#top-charts-and-lists">Top Charts and Lists</a></li>
- <li><a href="#featured-staff-picks">Featured, Staff Picks, Collections, and Badges</a></li>
- <li><a href="#product-detail-pages">Store Listing Pages</a></li>
- <li><a href="#related-resources">Related Resources</a></li>
+
+ <li><a href="#playstore-discovery">Discovery on the Play Store and the Top Lists</a></li>
+ <li><a href="#playstore-listing">Your Play Store Listing</a></li>
+ <li><a href="#devpage">Your Developer Page</a></li>
+ <li><a href="#search-discovery">Discovery through Search</a></li>
+ <li><a href="#browsing">Personalized browsing experience</a></li>
+ <li><a href="#featured-staff-picks">Featured Apps and Collections</a></li>
+ <li><a href="#editors-choice">Editor's Choice, Top Developer, and Other Badges</a></li>
</ol>
</div>
</div>
+<h2 id="reach">Reach Users Around the World</h2>
+
<p>
Google Play is the premier store for distributing Android apps. When you
- publish on Google Play, you put your apps in front of Android's huge base of
- active customers, in more than 190 countries and territories across the
+ publish on Google Play, you put your apps in front of over 1 billion active
+ Android users, in more than 190 countries and territories across the
world.
</p>
-<div>
- <img src="{@docRoot}images/gp-about-0.jpg" alt="Google Play on an Android Tablet"
- style="width:480px;position:relative" />
-</div>
+<img src="{@docRoot}images/distribute/googleplay/about_hero_play-opportunity.png"
+ srcset="{@docRoot}images/distribute/googleplay/about_hero_play-opportunity.png 1x,
+ {@docRoot}images/distribute/googleplay/about_hero_play-opportunity_2x.png 2x"
+ alt="" width="460" />
-<p>
- Google Play is a central part of the Android experience. New users
- personalize their devices with apps, games, and other Google Play content.
- Existing users return regularly to see what's trending and new. Downloading
- new apps is extremely convenient and fast— Google Play pushes apps to
- the user's devices instantly, over the air.
-</p>
+<div class="wrap">
-<p>
- Google Play is also a top destination for web users. Anyone with a browser
- can explore Google Play on the web. Android users can even buy and install
- the apps they want and Google Play pushes them automatically to their devices
- with no cables required.
-</p>
-
-<p>
- The accessibility and convenience of the Google Play web site give you new
- ways to drive traffic to your products from many sources, such as online ads,
- web search and cross-linking. Google Play is designed to connect users with
- great apps and games. It provides key channels to get your app noticed and
- gain traction in the marketplace.
-</p>
-
-<div class="headerLine">
- <h2 id="ratings-reviews">
- User Ratings and Reviews
- </h2>
-
-
-</div>
-
-<p>
- Prospective users look at ratings and reviews as key benchmarks of app
- quality. By rating apps from one to five stars and posting reviews, Android
- users show their appreciation for the apps they have downloaded.
-</p>
-
-<p>
- <strong>Your app's rating is one of the most important factors influencing
- its ranking</strong> in the Google Play lists and search results. It's also
- one of the key metrics that the editorial staff looks for when curating apps
- and games for promotion in the store.
-</p>
-
-<div class="img" style="padding: 1em auto;width:96%;">
- <img src="{@docRoot}images/gp-rating-web.png" style="border:1px solid #ddd;">
-</div>
-
-<div class="headerLine">
- <h2 id="category-browsing">
- Category Browsing
- </h2>
-
-
-</div>
-
-<p>
- When you publish an app in Google Play, you pick the category where you want
- users to find your app. More than 30 categories are available. Inside each
- category, apps are ranked based on a combination of ratings, reviews,
- downloads, country, and other factors.
-</p>
-
-<div class="headerLine">
- <h2 id="search">
- Search
- </h2>
-
-
-</div>
-
-<p>
- Search on Google Play lets users pinpoint an app or game quickly. Search uses
- powerful heuristics to suggest terms as the user types, and it offers direct
- links to apps as suggestions. In results, users find the most relevant, most
- popular apps at the top.
-</p>
-
-<div class="headerLine">
- <h2 id="top-charts-and-lists">
- Top Charts and Lists
- </h2>
-
-
-</div>
-
-<div class="figure">
- <img src="{@docRoot}images/gp-about-top.jpg">
-</div>
-
-<p>
- Top charts keep users in touch with what’s popular and trending with Android
- users, right from the Apps and Games home pages. The charts stay fresh,
- updating several times each day based on recent download activity. As an
- app's ratings and download activity grow, it can move up in the charts.
-</p>
-
-<p>
- To make the charts as relevant as possible for users across the world, they
- are also country-specific in Google Play's most popular countries. As your
- apps get traction and build momentum in downloads and ratings, they’ll climb
- one or more of the top charts and gain even more exposure.
-</p>
-
-<table style="width:50%;">
- <tr>
- <td>
- Top Free
- </td>
- <td>
- Free apps and free games lists
- </td>
- </tr>
-
- <tr>
- <td>
- Top Paid
- </td>
- <td>
- Paid apps and paid games lists
- </td>
- </tr>
-
- <tr>
- <td>
- Top Grossing
- </td>
- <td>
- Gross proceeds, free or paid
- </td>
- </tr>
-
- <tr>
- <td>
- Top New Free
- </td>
- <td>
- Less than 30 days old
- </td>
- </tr>
-
- <tr>
- <td>
- Top New Paid
- </td>
- <td>
- Less than 30 days old
- </td>
- </tr>
-
- <tr>
- <td>
- Trending
- </td>
- <td>
- New arrivals growing quickly in installs
- </td>
- </tr>
-</table>
-
-<div class="headerLine">
- <h2 id="featured-staff-picks">
- Featured, Staff Picks, Collections, and Badges
- </h2>
-
-
-</div>
-
-<p>
- The Google Play editorial team is dedicated to bringing the best apps to the
- attention of users and setting the tone for app quality throughout the store.
- It constantly reviews apps from across Google Play to find not only the
- best-known apps and games, but also the "diamonds in the rough" that they
- want more people to see. The team promotes great apps in the
- <em>Featured</em>, <em>Staff Picks</em>, and other collections.
-</p>
-
-<p>
- You can't nominate your app for featuring, but the team is always monitoring
- Google Play for great apps. If you build an app that users love and that
- looks great on Android devices, the editorial team will notice.
-</p>
-
-<h3 id="featured-staff-picks2">
- Featured and Staff Picks
-</h3>
-
-<p>
- Each week the Google Play editorial staff selects a new set of apps to
- promote in its popular <em>Featured</em> and <em>Staff Picks</em>
- collections.
-</p>
-
-<p>
- The <em>Featured</em> collections highlight the latest and greatest app and
- game titles available for Android. The list also includes the best and most
- popular apps in the top categories are also featured. <em>Staff Picks</em>
- collects all recently featured apps and games on Google Play. To focus on
- tablet users, A special <em>Staff Picks</em> collection highlights the best
- apps for Android tablets.
-</p>
-
-<table style="text-align:center;margin:1.5em 0;">
- <tr>
- <td style="border:none;">
- <img src="{@docRoot}images/gp-about-picks1.jpg">
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-6of12">
+ <h3 id="playstore-discovery">Discovery on the Play Store and the top lists</h3>
<p>
- Featured
+ The Play Store has been built to make discovering relevant apps, games, and
+ other content simple and pleasurable. Users can browse over 30 categories of
+ ranked apps. They can also discover popular and trending apps from one of the
+ ‘top charts’; updated throughout the day, they’re even country-specific in
+ Google Play's most popular countries.
</p>
- </td>
- <td style="border:none;">
- <img src="{@docRoot}images/gp-about-picks2.jpg">
- <p>
- Collection
- </p>
- </td>
- <td style="border:none;">
- <img src="{@docRoot}images/gp-about-picks3.jpg">
- <p>
- Editors' Choice
- </p>
- </td>
- </tr>
-</table>
-
-<h3 id="collections">
- App collections
-</h3>
-
-<p>
- From time to time the editorial staff puts together a collection of apps and
- games based on a theme or seasonal event. Users frequently use these lists to
- select apps, attracted by the timeliness of the collection.
-</p>
-
-<p>
- The editorial staff chooses apps for collection promotions —
- high-quality apps that show the best of Android on phones and tablets. The
- staff also looks for apps that can make an interesting or unique contribution
- to the collection as a whole.
-</p>
-
-<h3 id="editors-choice">
- <img style="margin-right:.25em;margin-bottom:.5em;" src=
- "{@docRoot}images/editorschoice_ann.png"> Editors' Choice
-</h3>
-
-<p>
- <em>Editors’ Choice</em> is a curated collection of apps that highlights some
- of the very best apps available on Android. Editors choose these apps for
- quality and great user interface, long-term popularity and innovative use of
- Android features.
-</p>
-
-<p>
- Apps chosen for <em>Editors’ Choice</em> also receive a badge that is
- displayed wherever the app name is seen in Google Play.
-</p>
-
-<h3 id="top-developer">
- <img style="margin-right:.25em;margin-bottom:.5em;" src=
- "{@docRoot}images/topdev_ann.png"> Top Developer
-</h3>
-
-<p>
- Top Developer is a badge recognizing established, respected developers for
- their commitment to launching high-quality and innovative apps on Android.
- The Google Play editorial staff awards a Top Developer badge from
- time-to-time based on the cumulative work of the developer.
-</p>
-
-<p>
- The Top Developer badge appears next to the developer name wherever it is
- displayed in Google Play. The badge means long-term recognition of all of the
- developer’s apps. It signifies an additional level of trust and confidence
- users have in a developer’s products.
-</p>
-
-<div class="headerLine">
- <h2 id="product-detail-pages">
- Store Listing Pages
- </h2>
-
-
-</div>
-
-<div class="figure">
- <img src="{@docRoot}images/gp-about-listing.jpg">
-</div>
-
-<p>
- Your app’s Google Play storefront is its <em>store listing page</em>: a rich
- and colorful page that lets you promote your app, highlight its ratings and
- reviews, and show what your app can do.
-</p>
-
-<p>
- Your store listing is where your users come to find out everything about your
- app. When they see your app listed in search results, top charts, category
- listings, and collections, one tap takes them directly to your store listing.
-</p>
-
-<p>
- Manage your product details page through the <a href=
- "https://play.google.com/apps/publish/">Google Play Developer Console</a>
- from any web browser. Sign in to upload or update your brand assets, and
- enter your product details in the languages of your markets.
-</p>
-
-<p>
- When you publish, Google Play adds your app’s ratings, reviews, links to your
- other products, and more. It also makes sure your store listing page looks
- great on phones, tablets, and in a web browser.
-</p>
-
-<p>
- You can link web users directly to your product details page from outside
- Google Play, such as from your web site, an ad campaign, reviews, social
- media posts, and more. See <a href=
- "{@docRoot}distribute/tools/promote/linking.html">Linking to Your
- Products</a> to find out how.
-</p>
-
-<p style="clear:both">
-</p>
-
-<div class="headerLine">
-<h2>Related Resources</h2>
-</div>
-
-<div class="resource-widget resource-flow-layout col-13"
- data-query="collection:distribute/googleplay"
- data-sortOrder="-timestamp"
- data-cardSizes="9x3"
- data-maxResults="4"></div>
</div>
+ <div class="col-5of12 col-push-1of12">
+ <img src="{@docRoot}images/distribute/googleplay/about_play_store_home.png"
+ style="padding-top:1em;" width="225">
+ </div>
+ </div>
+
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-6of12">
+ <h3 id="playstore-listing">Your Play Store listing</h3>
+ <p>
+ Your app’s Play Store listing is where users come to find out everything
+ about your app: hero image or video, age rating, total downloads, summary
+ rating, features, and screenshots. Users can also see the ratings and reviews
+ left by other users, which are an important influence on your app’s ranking
+ in lists and search. When creating your app’s page you can take advantage of
+ <a href="{@docRoot}distribute/users/experiments.html"
+ >Store Listing Experiments</a> to test variations in
+ text and graphics and find the combination that drives the most downloads.
+ </p>
+ </div>
+ <div class="col-5of12 col-push-1of12">
+ <img src="{@docRoot}images/distribute/googleplay/about_play_store_listing.png"
+ style="padding-top:1em;" width="225">
+ </div>
+ </div>
+
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-6of12">
+ <h3 id="devpage">Your developer page</h3>
+ <p>
+ You can now promote your brand using your new <a href=
+ "https://support.google.com/googleplay/android-developer/answer/6226441"
+ class="external-link">developer page.</a> Add a hero image, logo, and
+ description, then optionally add a link to your website and a featured app.
+ This is a great way to increase exposure, in addition to your
+ developer-specific app collection on Google Play.
+ </p>
+ </div>
+ <div class="col-5of12 col-push-1of12">
+ <img src="{@docRoot}images/distribute/googleplay/about_developer_page.png"
+ style="padding-top:1em;" width="225">
+ </div>
+ </div>
+
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-6of12">
+ <h3 id="search-discovery">Discovery through search</h3>
+ <p>
+ Search on Google Play is one of the single biggest drivers of installs and it
+ lets users pinpoint an app or game quickly. Search uses powerful heuristics
+ to suggest terms as the user types, and it offers direct links to apps as
+ suggestions. In results, users find the most relevant and most popular apps
+ at the top.
+ </p>
+ </div>
+ <div class="col-5of12 col-push-1of12">
+ <img src="{@docRoot}images/distribute/googleplay/about_search_results.png"
+ style="padding-top:1em;" width="225">
+ </div>
+ </div>
+
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-6of12">
+ <h3 id="browsing">Personalized browsing experience</h3>
+ <p>
+ Using manual and algorithmic curation, the Play Store creates unique
+ collections that represent deeper user interests. These collections are then
+ matched with a user’s interests and displayed on their Play Store home page.
+ Since its introduction this more-personalized approach to app listings has
+ doubled the likelihood a user will install an app. This example shows the
+ home page of a user who enjoys outdoor activity and fitness apps.
+ </p>
+ </div>
+ <div class="col-5of12 col-push-1of12">
+ <img src="{@docRoot}images/distribute/googleplay/about_personalized_home.png"
+ style="padding-top:1em;" width="225">
+ </div>
+ </div>
+</div>
+
+<h2 id="featured-staff-picks">Featured Apps and Collections</h2>
+<p>
+ The Google Play editorial team bring the best apps to the attention of users
+ through the Featured, Staff Picks, and Editor’s Choice collections.
+ Periodically they also create app collections based on a theme or seasonal
+ event. The apps and games featured will include some that are popular and
+ well known, but also innovative and groundbreaking apps that haven’t built
+ their ranking yet.
+</p>
+
+<h2 id="editors-choice">Editor's Choice, Top Developer, and Other Badges</h2>
+<p>
+ The best apps and games and the developers who create them are awarded badges
+ by the Google Play editorial staff: Editors’ Choice, Top Developer, and
+ others. Displayed with the app and developer name when they are seen in
+ Google Play, they give users an additional level of trust and confidence in
+ your apps.
+</p>
diff --git a/docs/html/distribute/googleplay/developer-console.jd b/docs/html/distribute/googleplay/developer-console.jd
index 7631980..c826e82 100644
--- a/docs/html/distribute/googleplay/developer-console.jd
+++ b/docs/html/distribute/googleplay/developer-console.jd
@@ -1,27 +1,20 @@
page.title=Developer Console
page.metaDescription=Learn about the Developer Console, your home for app publishing on Google Play.
page.image=images/cards/dev-console_2x.jpg
+page.tags="play, publish, google, google play"
Xnonavpage=true
@jd:body
-
- <div id="qv-wrapper">
+
+ <div id="qv-wrapper">
<div id="qv">
- <h2>Publishing Features</h2>
+ <h2>Features</h2>
<ol>
- <li><a href="#allapps">All Applications</a></li>
- <li><a href="#account-details">Your Account Details</a></li>
- <li><a href="#merchant-account">Linking Your Merchant Account</a></li>
- <li><a href="#multiple-user-accounts">Multiple User Accounts</a></li>
- <li><a href="#alpha-beta">Alpha and Beta Testing</a></li>
- <li><a href="#staged-rollouts">Staged Rollouts</a></li>
- <li><a href="#multiple-apk">Multiple APK Support</a></li>
- <li><a href="#selling-pricing-your-products">Selling and Pricing</a></li>
- <li><a href="#in-app-products">In-App Products</a></li>
- <li><a href="#distribution-controls">Distribution Controls</a></li>
- <li><a href="#reviews-reports">User Reviews, Crash Reports</a></li>
- <li><a href="#app-stats">App Stats</a></li>
- <li><a href="#related-resources">Related Resources</a></li>
+ <li><a href="#latest">Latest blog posts</a></li>
+ <li><a href="#publish">Publish with confidence</a></li>
+ <li><a href="#aquire-users">Acquire users</a></li>
+ <li><a href="#insights">Actionable insights</a></li>
+ <li><a href="#manage">Manage your app</a></li>
</ol>
</div>
</div>
@@ -30,8 +23,9 @@
The <a href="https://play.google.com/apps/publish/">Google Play Developer
Console</a> is your home for publishing operations and tools.
</p>
-<!-- <img src="{@docRoot}images/gp-dc-startscreen.jpg" style="width:480px;" /> -->
-<img src="{@docRoot}images/gp-devconsole-home.png" style="width:480px;">
+
+<img src="{@docRoot}images/distribute/googleplay/gp-devconsole-home.png" style="width:480px;">
+
<p>
Upload apps, build your product pages, configure prices and distribution, and
publish. You can manage all phases of publishing on Google Play through the
@@ -44,547 +38,252 @@
verification by email, you can sign in to your Google Play Developer Console.
</p>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
<div class="headerLine">
- <h2 id="allapps">
- All Applications
- </h2>
-
-
+<h2 id="latest">Latest blog posts</h2>
</div>
-<p>
- Start in All Applications, which gives you a quick overview of your apps,
- lets you jump to stats, reviews, and product details, or upload a new app.
-</p>
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="type:blog+tag:developerconsole+tag:featured"
+ data-sortOrder="-timestamp"
+ data-cardSizes="6x3"
+ data-maxResults="3"></div>
+ </div>
-<div style="padding:1em 0em 0em 0em;">
- <img src="{@docRoot}images/gp-dc-home.png" class="border-img">
-</div>
+<h2 id="publish">Publish with confidence</h2>
-<div class="headerLine" style="margin-top:-6px">
- <h2 id="account-details">
- Your Account Details
- </h2>
+<div class="wrap">
+ <h3 id="alpha-beta">Alpha and beta tests</h3>
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-3of12">
+ <p>
+ Distribute your pre-release app to users as an open beta with a
+ one-click, opt-in URL or as a closed beta using an email list, Google
+ Group, or Google+ community. Users can then provide feedback, while not
+ affecting your app’s public reviews and rating. This valuable feedback
+ will help you test features and improve the quality of your app.
+ <a href="{@docRoot}distribute/engage/beta.html">Learn more</a>.
+ </p>
+ </div>
-</div>
+ <div class="col-8of12 col-push-1of12">
+ <img src=
+ "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png"
+ srcset=
+ "{@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test.png 1x, {@docRoot}images/distribute/googleplay/dev-console_running-a-beta-test_2x.png 2x"
+ width="500">
+ </div>
+ </div>
-<p>
- Specify basic developer profile information about yourself or your company on
- the accounts detail page. This identifies you to Google Play and your
- customers. You can go back at any time to edit the information and change
- your settings.
-</p>
+ <h3 id="cloud-test">Cloud Test Lab</h3>
-<div>
- <img src="{@docRoot}images/gp-dc-profile.png" class="frame">
-</div>
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-3of12">
+ <p>
+ Get free automated testing of your app on physical devices covering
+ nearly every brand, model, and version of the devices your users might
+ be using. The lab will help you quickly find compatibility issues you
+ may miss using only your available test devices. Sign-up in the
+ Developer Console to become an early tester before this feature becomes
+ more widely available. <a href=
+ "https://developers.google.com/cloud-test-lab/" class=
+ "external-link">Learn more and sign up for updates.</a>
+ </p>
+ </div>
-<p>
- Your developer profile contains:
-</p>
-
-<ul>
- <li>
- <p>
- Developer name — displayed on your store listing page and elsewhere
- on Google Play.
- </p>
- </li>
-
- <li>
- <p>
- Contact information — used by Google only, it isn't seen by your
- customers.
- </p>
- </li>
-
- <li>
- <p>
- Web site URL — displayed on your store listing page.
- </p>
- </li>
-</ul>
-
-<p>
- On the account details page you can also add restricted access for marketers
- and other teams, register for a merchant account, or set up test accounts for
- Google Play licensing.
-</p>
-
-<div class="headerLine">
- <h2 id="merchant-account">
- Linking Your Merchant Account
- </h2>
-
-
-</div>
-
-<p>
- If you want to sell apps or in-app products, link your Google payments merchant
- account to your developer profile. Google Play uses the linked merchant
- account for financial and tax identification, as well as for monthly payouts
- from sales.
-</p>
-
-<div class="headerLine">
- <h2 id="multiple-user-accounts">
- Multiple User Accounts
- </h2>
-
-
-</div>
-
-<p>
- Set up user accounts for other team members to access different parts of your
- Developer Console.
-</p>
-
-<div style="width:550px;">
- <img src="{@docRoot}images/gp-dc-invite.png" class="frame">
-</div>
-
-<p>
- The first account registered is the <em>account owner</em>, with full access
- to all parts of the console. The owner can add <em>user accounts</em> and
- manage console access.
-</p>
-
-<p>
- For example, an owner can grant users access to publishing and app
- configuration, but not to financial reports. Learn how to <a href=
- "https://support.google.com/googleplay/android-developer/answer/2528691">set
- up multiple accounts</a> now.
-</p>
-
-<div class="headerLine">
- <h2 id="store-listing-details">
- Store Listing Details
- </h2>
-
-
-</div>
-
-<p>
- Use the Developer Console to set up a <em>Store Listing page</em>. This is
- the home for your app in Google Play. It's the page users see on their mobile
- phones or on the web to learn about your app and download it.
-</p>
-
-<p>
- Upload custom brand assets, screenshots, and videos to highlight what's great
- about your app. Provide a localized description, add notes about the latest
- version, and more. You can update your store listing at any time.
-</p>
-
-<div>
- <img src="{@docRoot}images/gp-dc-details.png" class="frame">
-</div>
-
-<div class="headerLine">
- <h2 id="upload-instantly-publish">
- Upload and Instantly Publish
- </h2>
-
-
-</div>
-
-<p>
- From the Developer Console you can quickly upload and publish a release-ready
- Android application package file. The app is a <em>draft</em> until you
- publish it, at which time Google Play makes your store listing page and app
- available to users—your app appears in the store listings within hours,
- not weeks.
-</p>
-
-<p>
- Once your app is published, you can update it as often as you want: Change
- prices, configuration, and distribution options at any time, without needing
- to update your app binary.
-</p>
-
-<p>
- As you add features or address code issues, you can publish an updated binary
- at any time. The new version is available almost immediately and existing
- customers are notified that an update is ready for download. Users can also
- accept automatic updates to your app, so that your updates are delivered and
- installed as soon as you publish them. You can unpublish your apps app at any
- time.
-</p>
-
-<div class="headerLine">
- <h2 id="alpha-beta">
- Alpha and Beta Testing
- </h2>
-
-
-</div>
-
-<p>
- It's always valuable to get real-world feedback from users, especially before
- launch. Google Play makes it easy to distribute pre-release versions of your
- app to alpha and beta test groups anywhere in the world.
-</p>
-
-<p>
- In the <strong>APK</strong> section of your Google Play Developer Console
- you’ll find the <strong>Alpha Testing</strong> and <strong>Beta
- Testing</strong> tabs. Here you can upload versions of your apps’ APK files
- and define a list of testers as a <a href=
- "https://support.google.com/groups/answer/46601">Google Group</a> or <a href=
- "https://support.google.com/plus/topic/2888488">Google+ Community</a>. Once
- this is done you’ll receive a URL that you forward to your testers, from
- which they can opt-in to the testing program.
-</p>
-
-<div>
- <img src="{@docRoot}images/gp-dc-ab.png" class="frame">
-</div>
-
-<p>
- After opting-in, your testers then go to your app’s product page and when
- they download the app Google Play will deliver them the alpha or beta version
- as appropriate. Incidentally, if a user happens to be opted-in to both your
- testing groups, Google Play will always deliver them the alpha test version.
-</p>
-
-<p>
- Note that users cannot provide feedback and reviews on alpha and beta
- versions of your apps. To gather feedback you could used the <a href=
- "https://support.google.com/groups/answer/46601">Google Group</a> or <a href=
- "https://support.google.com/plus/topic/2888488">Google+ Community</a>, or
- setup an email address or your own website.
-</p>
-
-<p>
- You can use these testing programs to <a href=
- "{@docRoot}distribute/essentials/optimizing-your-app.html">optimize your
- apps</a>, help with <a href=
- "{@docRoot}distribute/users/expand-to-new-markets.html">rollout to new
- markets</a>, and start <a href=
- "{@docRoot}distribute/users/build-community.html">building your
- community</a>. There is also more information on using beta test in the
- <a href="{@docRoot}distribute/tools/launch-checklist.html">Launch
- Checklist</a> and <a href=
- "{@docRoot}distribute/tools/localization-checklist.html">Localization
- Checklist</a>.
-</p>
-
-<div class="headerLine">
- <h2 id="staged-rollouts">
- Staged Rollouts
- </h2>
-
-
-</div>
-
-<p>
- You can also stage the rollout of your apps using the Production tab in the
- APK section of your Google Play Developer Console. Here you can define the
- percentage of user who’ll be able to download your app.
-</p>
-
-<p>
- Staging your rollout will help limit the impact of unexpected bugs or server
- load and enable you to gauge user feedback with an unbiased sample of users.
- Users can rate and review your apps during staged roll outs, so if you’re
- hesitant, start your rollout to a small percentage of users. Be sure to watch
- for and respond to any negative reviews.
-</p>
-
-<p>
- Note that rollbacks aren’t supported due to the <a href=
- "{@docRoot}tools/publishing/versioning.html">app versioning requirements</a>
- of the Android platform. If you need to rollback, consider launching a
- previous APK with a new version number. However, this practice should be used
- only as a last resort, as users will lose access to new features and your old
- app may not be forward-compatible with your server changes or data formats,
- so be sure to run <a href="#alpha-beta">alpha and beta tests</a> of your
- updates.
-</p>
-
-<div class="headerLine">
- <h2 id="multiple-apk">
- Multiple APK Support
- </h2>
-
-
-</div>
-
-<p>
- In most cases, a single app package (APK) is all you need, and it’s usually
- the easiest way to manage and maintain the app. However, if you need to
- deliver a different APK to different devices, Google Play provides a way to
- do that.
-</p>
-
-<p>
- <em>Multiple APK support</em> lets you create multiple app packages that use
- the same package name but differ in their OpenGL texture compression formats,
- screen-size support, or Android platform versions supported. You can simply
- upload all the APKs under a single product listing and Google Play selects
- the best ones to deliver to users, based on the characteristics of their
- devices.
-</p>
-
-<p>
- You can also upload up to two secondary downloads for each published APK,
- including multiple APKs, using the <em>APK Expansion Files</em> option. Each
- expansion file can be up to 2GB and contain any type of code or assets.
- Google Play hosts them for free and handles the download of the files as part
- of the normal app installation.
-</p>
-
-<div class="headerLine">
- <h2 id="selling-pricing-your-products">
- Selling and Pricing Your Products
- </h2>
-
-
-</div>
-
-<div class="figure-right">
- <img src="{@docRoot}images/gp-buyer-currency.png" class="frame">
-</div>
-
-<p>
- You have tools to set prices for your apps and in-app products. Your app can
- be free to download or priced, requiring payment before download.
-</p>
-
-<ul>
- <li>If you publish your app as free, it must <strong>remain free for the life
- of the app</strong>. Free apps can be downloaded by all users in Google Play.
- </li>
-
- <li>If you publish it as priced, you can later change it to free. Priced apps
- can be purchased and downloaded only by users who have registered a form of
- payment in Google Play.
- </li>
-</ul>
-
-<div class="sidebox-wrapper" style="float:right;">
- <div class="sidebox">
- <p>
- See <a href=
- "http://support.google.com/googleplay/android-developer/bin/answer.py?hl=en&answer=138294&topic=2365624&ctx=topic">
- Supported locations for distributing applications</a> for a list of
- countries where you can distribute or sell your apps.
- </p>
+ <div class="col-8of12 col-push-1of12">
+ <img src=
+ "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png"
+ srcset=
+ "{@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab.png 1x, {@docRoot}images/distribute/googleplay/dev-console_cloud-test-lab_2x.png 2x"
+ width="500">
+ </div>
</div>
</div>
-<p>
- You can also offer in-app products and subscriptions, whether the app is free
- or priced. Set prices separately for priced apps, in-app products, and
- subscriptions.
-</p>
+<h3 id="staged-rollouts">Staged rollouts</h3>
<p>
- When users browse your app product pages or initiate a purchase, Google Play
- shows them the price they’ll be charged in their local currency.
+ Release app updates progressively to an increasing portion of your users and
+ monitor for missed issues. Then take the opportunity to fix problems before
+ all your users are affected. <a href=
+ "https://support.google.com/googleplay/android-developer/answer/3131213"
+ class="external-link">Learn more.</a>
</p>
-<p>
- For each product, you initially set a default price in your own currency. If
- you do no more, Google Play will automatically set local prices once a month
- based on the US-Dollar price for your app.
+<p class="aside">
+ <strong>Tip:</strong> If you find an issue during a rollout stage you can
+ halt the rollout to further minimize the effect, and then resume rollout once
+ a fix has been made.
</p>
-<p>
- However, Google Play gives you complete control over how you price your
- products in each country. To start you can manually set fixed local prices
- from the default price, using the <strong>auto-convert prices now</strong>
- feature. You can then review these prices and set new ones for any countries
- you wish — the price for each country is independent, so you can adjust
- one price without affecting others. For most countries, the price you set is
- the final price charged to users, including taxes.
-</p>
+<h2 id="aquire-users">Aquire users</h2>
-<p>
- For more on pricing your apps, see <a href=
- "{@docRoot}distribute/users/expand-to-new-markets.html#localize-your-google-play-listing">
- Expand into New Markets</a>.
-</p>
+ <h3 id="adwords">AdWords Universal App Campaigns</h3>
-<div class="headerLine">
- <h2 id="in-app-products">
- In-app Products
- </h2>
-
-
-</div>
-
-<p>
- You can sell in-app products and subscriptions using <a href=
- "{@docRoot}google/play/billing/index.html">Google Play In-app Billing</a> as
- a way to monetize your apps. In-app products are one-time purchases, while
- subscriptions are recurring charges on a monthly or annual basis.
-</p>
-
-<p>
- In the <strong>In-app Products</strong> section for a specific published or
- draft APK you:
-</p>
-
-<ul>
- <li>Create product lists for in-app products and subscriptions.
- </li>
-
- <li>Set prices.
- </li>
-
- <li>Publish the products with the app or withdraw obsolete products.
- </li>
-</ul>
-
-<p>
- For details on how to implement In-app Billing, see the <a href=
- "{@docRoot}google/play/billing/index.html">In-app Billing</a> developer
- documentation. You make use of in-app products in the <a href=
- "{@docRoot}distribute/monetize/premium.html">Premium</a>, <a href=
- "{@docRoot}distribute/monetize/freemium.html">Freemium</a>, and <a href=
- "{@docRoot}distribute/monetize/subscriptions.html">Subscription</a>
- monetization models
-</p>
-
-<div class="headerLine">
- <h2 id="distribution-controls">
- Distribution Controls
- </h2>
-
-
-</div>
-
-<p>
- Manage which countries and territories your apps will distribute to. For some
- countries, you can choose which carriers you want to target. You can also see
- the list of devices your app is available for, based on any distribution
- rules declared in its manifest file.
-</p>
-
-<h3 id="geotargeting">
- Geographic targeting
-</h3>
-
-<p>
- You can use controls in the Google Play Developer Console to easily manage
- the geographic distribution of your apps, without any changes in your
- application binary. You can specify which countries and territories you want
- to distribute to, and even which carriers (for some countries).
-</p>
-
-<p>
- When users visit the store, Google Play makes sure that they are in one of
- your targeted countries before downloading your app. You can change your
- country and carrier targeting at any time just by saving changes in the
- Google Play Developer Console.
-</p>
-
-<div class="figure-right" style="width:500px;">
- <img src="{@docRoot}images/gp-supported-dev-requirements.png" class="frame">
-</div>
-
-<p>
- To help you market to users around the world, you can <a href=
- "{@docRoot}distribute/tools/launch-checklist.html#start-localization">localize
- your store listing</a>, including app details and description, promotional
- graphics, screenshots, and more.
-</p>
-
-<h3 id="captargeting">
- Capabilities targeting
-</h3>
-
-<p>
- Google Play also lets you control distribution according to device features
- or capabilities that your app depends on. There are several types of
- dependencies that the app can define in its manifest, such as hardware
- features, OpenGL texture compression formats, libraries, Android platform
- versions, and others.
-</p>
-
-<p>
- When you upload your app, Google Play reads the dependencies and sets up any
- necessary distribution rules. For technical information about declaring
- dependencies, read <a href="{@docRoot}google/play/filters.html">Filters on
- Google Play</a>.
-</p>
-
-<p>
- For pinpoint control over distribution, Google Play lets you see all of the
- devices your app is available to based on its dependencies (if any). From the
- Google Play Developer Console, you can list the supported devices and even
- exclude specific devices if needed.
-</p>
-
-<div class="headerLine">
- <h2 id="reviews-reports">
- User Reviews and Crash Reports
- </h2>
-
-
-</div>
-
-<div class="figure-right" style="width:500px;">
- <img src="{@docRoot}images/gp-dc-reviews.png" class="frame">
- <p class="img-caption">
- The User reviews section gives you access to user reviews for a specific
- app. You can filter reviews in a number of ways to locate issues more
- easily and support your customers more effectively.
+ <p>
+ Easily and conveniently buy AdWords app install ads, across Search
+ (including Play Search), YouTube, AdMob, and the Google Display Network.
+ Simply set a budget and cost per acquisition and Google takes care of the
+ rest. <a href="{@docRoot}distribute/users/promote-with-ads.html">Learn
+ more</a>.
</p>
+
+<div class="wrap">
+ <h3 id="listing-experiments">Store Listing Experiments</h3>
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-3of12">
+ <p>
+ Test variations of the images and text used to promote and describe
+ your app on your Play store listing. Then when enough data has been
+ collected, choose to make the winning combination visible on Google
+ Play. <a href="{@docRoot}distribute/users/experiments.html">Learn
+ more</a>.
+ </p>
+
+ <p class="aside">
+ <strong>Tip:</strong> You can even try out different orders for your
+ screenshots and other images to discover which grabs users’ attention
+ the best.
+ </p>
+ </div>
+
+ <div class="col-8of12 col-push-1of12">
+ <img src=
+ "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png"
+ srcset=
+ "{@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment.png 1x, {@docRoot}images/distribute/googleplay/dev-console_store-listing-experiment_2x.png 2x"
+ width="500">
+ </div>
+ </div>
+
+ <h3 id="user-perf-report">User Acquisition performance report</h3>
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-3of12">
+ <p>
+ Discover where visitors to your Play Store listing come from, how many
+ go on to install your app, and how many buy your in-app products in the
+ User Acquisition performance report; compare cohorts, examine
+ acquisition channels, and see details of users and buyers. <a href=
+ "{@docRoot}distribute/users/user-acquisition.html">Learn more</a>.
+ </p>
+ </div>
+
+ <div class="col-8of12 col-push-1of12">
+ <img src=
+ "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png"
+ srcset=
+ "{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png 1x, {@docRoot}images/distribute/googleplay/dev-console_conversion-funnel_2x.png 2x"
+ width="500">
+ </div>
+ </div>
</div>
-<p>
- Google Play makes it easy for users to submit reviews of your app for the
- benefit of other users. The reviews give you usability feedback, support
- requests, and details of important functionality issues direct from your
- customers.
-</p>
+<h2 id="insights">Actionable insights</h2>
-<p>
- Use crash reports for debugging and improving your app. You can see crash
- reports with stack trace and other data, submitted automatically from Android
- devices.
-</p>
+<div class="wrap">
-<div class="headerLine">
- <h2 id="app-stats">
- App Statistics
- </h2>
+<h3 id="player-analytics">Player Analytics</h3>
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-3of12">
+ <p>
+ With Google Play game services integration, discover more about the
+ behaviour of your game players; how they play and how they buy. Also get
+ help setting and monitoring revenue budgets. <a href=
+ "{@docRoot}distribute/engage/game-services.html">Learn more</a>.
+ </p>
+ </div>
+ <div class="col-8of12 col-push-1of12">
+ <img src=
+ "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png"
+ srcset=
+ "{@docRoot}images/distribute/googleplay/dev-console_player-analytics.png 1x, {@docRoot}images/distribute/googleplay/dev-console_player-analytics_2x.png 2x"
+ width="500">
+ </div>
+ </div>
+
+<h3 id="stats">Detailed statistics and reports</h3>
+
+ <div class="cols" style="margin-top:2em;">
+ <div class="col-3of12">
+ <p>
+ Get a wide range of reports on the performance of your app and behaviour
+ of users; such as installs, revenue, crashes, and more. Turn on email
+ alerts to be notified of any sudden changes to important stats. <a href=
+ "https://support.google.com/googleplay/android-developer/topic/3450942?ref_topic=3450986"
+ class="external-link">Learn more.</a>
+ </p>
+ </div>
+
+ <div class="col-8of12 col-push-1of12">
+ <img src=
+ "{@docRoot}images/distribute/googleplay/dev-console_statistics.png" srcset=
+ "{@docRoot}images/distribute/googleplay/dev-console_statistics.png 1x, {@docRoot}images/distribute/googleplay/dev-console_statistics_2x.png 2x"
+ width="500">
+ </div>
+ </div>
</div>
-<div class="figure" style="width:500px">
- <img src="{@docRoot}images/gp-dc-stats.png">
- <p class="img-caption">
- <b>App statistics page</b>: Shows you a variety of statistics about a
- specific app's installation performance.
- </p>
-</div>
+
+<h3 id="optimization"> Optimization tips</h3>
<p>
- You get detailed statistics on the install performance of your app.
+ Get tips, based on automatic app scanning, on ways in which you can improve
+ your app, everything from updating old APIs to suggestions for languages you
+ should consider localizing to.
</p>
-<p>
- See installation metrics measured by unique users as well as by unique
- devices. View active installs, total installs, upgrades, daily installs and
- uninstalls, and metrics about ratings.
-</p>
+<h2 id="manage">Manage your app</h2>
+
+<h3 id="manage-apks">Manage your APKs</h3>
<p>
- Zoom into the installation numbers by metric, including Android platform
- version, device, country, language, app version, and carrier. View the
- installation data for each dimension on timeline charts.
+ Upload and manage your Android application packages (APK) to the Developer
+ Console as drafts or to your Alpha, Beta, or Production channels. <a href=
+ "https://support.google.com/googleplay/android-developer/answer/113469?ref_topic=3450986"
+ class="external-link">Learn more.</a>
</p>
+<p class="aside">
+ <strong>Tip:</strong> Ensure users get the best possible experience for the
+ smallest app downloads by creating multiple APKs with just the right content
+ for device screen size, hardware features and more.
+</p>
+
+<h3 id="iap">In-app products and subscriptions</h3>
+
<p>
- These charts highlight your app’s installation peaks and longer-term trends.
- They help you learn your user’s adoption behavior, correlate statistics to
- promotions, see the effect of app improvements, and other factors. Focus in
- on data inside a dimension by adding specific points to the timeline.
+ Manage your in-app products and price them for local markets accordingly.
+ Offer weekly, monthly, annual, or seasonal subscriptions and take advantage
+ of features such as grace periods and trials. <a href=
+ "https://support.google.com/googleplay/android-developer/topic/3452896?ref_topic=3452890"
+ class="external-link">Learn more.</a>
+</p>
+
+<h3 id="pricing">Pricing and distribution</h3>
+
+<p>
+ Control the price of your app for each country you choose to distribute to.
+ Make your app available to new audiences — opt-in to Android Auto, Android
+ TV, and Android Wear, as well as Designed for Families, Google Play for Work,
+ and Google Play for Education. <a href=
+ "https://support.google.com/googleplay/android-developer/answer/113469#pricing"
+ class="external-link">Learn more</a>.
+</p>
+
+<p class="external-link">
+ <strong>Tip:</strong> You can set prices in other countries automatically
+ based on current exchange rates using the <strong>auto-convert prices
+ now</strong> feature.
</p>
<p style="clear:both">
@@ -596,7 +295,7 @@
</div>
<div class="resource-widget resource-flow-layout col-13"
- data-query="collection:distribute/googleplay/developerconsole"
+ data-query="collection:distribute/googleplay/developerconsole/related"
data-sortOrder="-timestamp"
data-cardSizes="9x3"
data-maxResults="6"></div>
diff --git a/docs/html/distribute/googleplay/googleplay_toc.cs b/docs/html/distribute/googleplay/googleplay_toc.cs
index f84dbf2..b7b59c0 100644
--- a/docs/html/distribute/googleplay/googleplay_toc.cs
+++ b/docs/html/distribute/googleplay/googleplay_toc.cs
@@ -142,4 +142,4 @@
buildToggleLists();
changeNavLang(getLangPref());
//-->
-</script>
\ No newline at end of file
+</script>
diff --git a/docs/html/distribute/users/banners.jd b/docs/html/distribute/users/banners.jd
new file mode 100644
index 0000000..8a7ccc0
--- /dev/null
+++ b/docs/html/distribute/users/banners.jd
@@ -0,0 +1,64 @@
+page.title=Add An App Install Banner On Your Mobile Website
+page.metaDescription=Add a native app install banner to your mobile website and allow visitors to install your app straight from your site.
+page.image=images/cards/distribute/users/banners.png
+page.tags="banner, chrome, web"
+Xnonavpage=true
+
+@jd:body
+
+<!--
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>In this document</h2>
+ <ol>
+ <li>TOC item</li>
+ </ol>
+ </div>
+</div>
+-->
+
+<div class="figure" style="width:138px">
+ <img src="{@docRoot}images/distribute/users/banners.png"
+ srcset="{@docRoot}images/distribute/users/banners.png 1x,
+ {@docRoot}images/distribute/users/banners_2x.png 2x"
+ width="138">
+</div>
+
+<p>
+ Add a native app install banner to your mobile website and offer visitors the
+ added convenience of installing your app or game straight from your site.
+</p>
+
+<p>
+ Learn how to <a href=
+ "https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native"
+ class="external-link">add a native app install banner</a> to your mobile
+ site.
+</p>
+
+<h3 id="how">How it Works</h3>
+
+<p>
+ App install banners are offered as an extension of Chrome’s ability to
+ deliver Web App install banners. You can setup this feature in a web app
+ manifest file. In the manifest you define how your app will appear on the
+ user’s system, how it should be launched, and whether its banner has priority
+ over the banner for your Web App. Then, as long as your site is delivered
+ over HTTPS, after a user visits your site on two separate days within a two
+ week period they’ll be shown your app’s install banner.
+</p>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="collection:distribute/googleplay/banners/related"
+ data-sortOrder="-timestamp"
+ data-cardSizes="9x3"
+ data-maxResults="6"></div>
+ </div>
diff --git a/docs/html/distribute/users/experiments.jd b/docs/html/distribute/users/experiments.jd
new file mode 100644
index 0000000..215d3a2
--- /dev/null
+++ b/docs/html/distribute/users/experiments.jd
@@ -0,0 +1,121 @@
+page.title=Increase installs with Store Listing Experiments
+page.metaDescription=Run experiments to find the best possible Play Store listing page.
+page.image=images/cards/distribute/users/experiments.png
+page.tags="ab testing, experiments, testing"
+Xnonavpage=true
+
+@jd:body
+
+<p>
+ First impressions matter, so having the best possible Play Store listing page
+ for your app is vital. Store Listing Experiments let you test combinations of
+ text and graphics to find the ones that bring you the most installs.
+</p>
+
+<img src="{@docRoot}images/distribute/googleplay/hero-store-listing-experiment.png"
+ srcset="{@docRoot}images/distribute/googleplay/hero-store-listing-experiment.png 1x,
+ {@docRoot}images/distribute/googleplay/hero-store-listing-experiment_2x.png 2x"
+ width="460">
+
+<p>
+ Learn how to <a href=
+ "https://support.google.com/googleplay/android-developer/answer/6227309"
+ class="external-link">get started with Store Listing Experiments.</a>
+</p>
+
+<h3 id="planning">Tips for planning a successful experiment</h3>
+<ul>
+ <li>Make sure that you have a question or objective in mind when designing
+ your experiments.
+ </li>
+
+ <li>Test one attribute at a time to get the clearest results, but test
+ similar changes in icons and feature graphics together, for example comparing
+ use of character art against objects from a game.
+ </li>
+
+ <li>Start testing with your app icon, because it can have a huge impact on
+ whether users pick your app from search results and category lists.
+ </li>
+
+ <li>Test all of your listing’s attributes; after icons, test screenshots and
+ short descriptions as they are seen by users from search results and category
+ lists. Test the feature graphic as a priority, as it has such a presence on
+ your store listing’s page.
+ </li>
+</ul>
+
+<h3 id="graphics">Tips for your graphics and text</h3>
+<ul>
+ <li>Create up to three alternatives for your hi-res icon, feature graphic,
+ screenshots, promo video, short description, and full description.
+ </li>
+
+ <li>Set up a Global experiment for graphics against your default language or
+ a Localized experiment for both text and graphics in a specific language.
+ Experiment with screenshots and their order.
+ </li>
+
+ <li>Be bold about testing different artwork, but iterate on the results to
+ confirm and improve your findings.
+ </li>
+
+ <li>Make sure short descriptions clearly demonstrate an app or game’s value
+ to users.
+ </li>
+</ul>
+
+<h3 id="success">Tips for running successful experiments</h3>
+<ul>
+ <li>Test one asset at a time, unless testing completely different designs for
+ a store listing page against one another.
+ </li>
+
+ <li>Run your experiment for at least 7 days, even if you have enough traffic
+ to get meaningful results in a few days. Depending on the percentage of your
+ audience you’re showing the experiment too and the traffic on your listings
+ page it may take anything from a few days to several weeks to get a
+ result.
+ </li>
+
+ <li>Run your experiments with 50 percent of your audience, the maximum
+ allowed, to get results faster; particularly for localized tests that may be
+ visible to only a small percentage of your users.
+ </li>
+
+ <li>Check the banner on the Experiments page to see progress. Once enough
+ data has been collected the winner is displayed and you can apply it to your
+ store listing.
+ </li>
+</ul>
+
+<p style="clear:both">
+</p>
+
+<!-- TBA
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="successes">See how other developers have successfully run Store
+ Listing Experiments
+</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="collection:distribute/googleplay/experiments/successes"
+ data-sortOrder="-timestamp"
+ data-cardSizes="9x3"
+ data-maxResults="9"></div>
+ </div>
+-->
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="collection:distribute/googleplay/experiments/related"
+ data-sortOrder="-timestamp"
+ data-cardSizes="6x6"
+ data-maxResults="6"></div>
+ </div>
diff --git a/docs/html/distribute/users/user-acquisition.jd b/docs/html/distribute/users/user-acquisition.jd
new file mode 100644
index 0000000..3f073f5
--- /dev/null
+++ b/docs/html/distribute/users/user-acquisition.jd
@@ -0,0 +1,102 @@
+page.title=Understand Where Your Users Come From
+page.metaDescription=Use the Developer Console to identify the channels that bring the greatest volume of high-value users.
+page.image=images/cards/distribute/users/user-acquisition.jpg
+page.tags="user acquisition, reports, cohorts"
+Xnonavpage=true
+
+@jd:body
+
+<!--
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>In this document</h2>
+ <ol>
+ <li>TOC item</li>
+ </ol>
+ </div>
+</div>
+-->
+
+<p>
+ Whether you pay to acquire users or not, you want to focus your acquisition
+ efforts on the channels that bring you the greatest volume of high-value
+ users. It’s now easy to identify those channels from the User Acquisition
+ page in the Developer Console.
+</p>
+
+<img src="{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png"
+ srcset="{@docRoot}images/distribute/googleplay/dev-console_conversion-funnel.png 1x,
+ {@docRoot}images/distribute/googleplay/dev-console_conversion-funnel_2x.png 2x"
+ width="500">
+
+<p>
+ From the performance report you can follow users — whether originating as
+ organic or paid traffic — from discovery to installation then onto their
+ purchase of your in-app products, with convenient predefined reporting
+ criteria. With the improved understanding of where your most valuable users
+ come from, you can better focus your efforts.
+</p>
+
+<p>
+ Learn more about how to <a href=
+ "https://support.google.com/googleplay/android-developer/answer/6263332"
+ class="external-link">measure your app’s user acquisition channels.</a>
+</p>
+
+<h2 id="how-to">How to use the User Acquisition performance report</h2>
+
+<ul>
+ <li>
+ <strong>Compare cohorts:</strong> In this report, a <em>cohort</em> is a
+ group of users who’ve visited your app’s store listing during a selected
+ date range. For example, if you update your app’s icon on the Play Store,
+ you’ll want to see how the change affects installs and in-app purchases.
+ You can do this by selecting cohorts before and after your app update, and
+ measure how your change impacted conversion rates.
+ </li>
+
+ <li>
+ <strong>Examine acquisition channels:</strong> For your defined cohort, you
+ can explore how user behaviour and value differ between acquisition
+ channels, such as organic Play Store traffic, AdWords campaigns, tracked
+ channels, and searches. Drill down into specific channels to explore user
+ behaviour in detail.
+ </li>
+
+ <li>
+ <strong>See users:</strong> Get stats for all the <strong>store listing
+ visitors</strong> (users who visited your app’s store listing) and
+ <strong>installers</strong>. This helps you understand how prospects are
+ converting into users.
+ </li>
+
+ <li>
+ <strong>See buyers:</strong> If you sell in-app products, the funnel report
+ can also tell you about <strong>new buyers</strong> and <strong>repeat
+ buyers</strong>. This helps you understand how quickly your in-app products
+ and subscriptions are gaining traction with users.
+ </li>
+</ul>
+
+<p class="aside">
+ <strong>Tip:</strong> If you’re directing your users to your mobile app from
+ your website, you can track conversions by adding a UTM campaign source and a
+ campaign name tag to the <a href=
+ "https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder"
+ class="external-link">Google Play store URL.</a>
+</p>
+
+<p style="clear:both">
+</p>
+
+<div class="dynamic-grid">
+<div class="headerLine">
+<h2 id="related-resources">Related Resources</h2>
+</div>
+
+<div class="resource-widget resource-flow-layout col-13"
+ data-query="collection:distribute/googleplay/useracquisition/related"
+ data-sortOrder="-timestamp"
+ data-cardSizes="9x3"
+ data-maxResults="6"></div>
+ </div>
diff --git a/docs/html/distribute/users/users_toc.cs b/docs/html/distribute/users/users_toc.cs
index 1e4085b..f84c926 100644
--- a/docs/html/distribute/users/users_toc.cs
+++ b/docs/html/distribute/users/users_toc.cs
@@ -47,6 +47,26 @@
</a>
</div>
</li>
+
+ <li class="nav-section">
+ <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/experiments.html">
+ <span class="en">Increase installs with Store Listing Experiments</span>
+ </a>
+ </div>
+ </li>
+ <li class="nav-section">
+ <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/banners.html">
+ <span class="en">Add an App Install Banner On Your Mobile Website</span>
+ </a>
+ </div>
+ </li>
+ <li class="nav-section">
+ <div class="nav-section-header empty" style="font-weight:normal"><a href="<?cs var:toroot?>distribute/users/user-acquisition.html">
+ <span class="en">Understand Where Your Users Come From</span>
+ </a>
+ </div>
+ </li>
+
</ul>
diff --git a/docs/html/google/play/billing/billing_overview.jd b/docs/html/google/play/billing/billing_overview.jd
index 4ec4946..cc56468 100644
--- a/docs/html/google/play/billing/billing_overview.jd
+++ b/docs/html/google/play/billing/billing_overview.jd
@@ -32,6 +32,11 @@
<li><a href="{@docRoot}training/in-app-billing/preparing-iab-app.html#GetSample">Sample
Application (V3)</a></li>
</ol>
+ <h2>Related Videos</h2>
+ <ol>
+ <li><a href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">Implementing
+ Freemium</a></li>
+ </ol>
</div>
</div>
diff --git a/docs/html/guide/components/bound-services.jd b/docs/html/guide/components/bound-services.jd
index c2ac607..f71ba87 100644
--- a/docs/html/guide/components/bound-services.jd
+++ b/docs/html/guide/components/bound-services.jd
@@ -15,7 +15,11 @@
<li><a href="#Messenger">Using a Messenger</a></li>
</ol>
</li>
- <li><a href="#Binding">Binding to a Service</a></li>
+ <li><a href="#Binding">Binding to a Service</a>
+ <ol>
+ <li><a href="#Additional_Notes">Additional notes</a></li>
+ </ol>
+ </li>
<li><a href="#Lifecycle">Managing the Lifecycle of a Bound Service</a></li>
</ol>
@@ -309,8 +313,11 @@
android.content.ServiceConnection#onServiceConnected onServiceConnected()} callback. The next
section provides more information about this process of binding to the service.</p>
-<p class="note"><strong>Note:</strong> The example above doesn't explicitly unbind from the service,
-but all clients should unbind at an appropriate time (such as when the activity pauses).</p>
+<p class="note"><strong>Note:</strong> In the example above, the
+{@link android.app.Activity#onStop onStop()} method unbinds the client from the service. Clients
+should unbind from services at appropriate times, as discussed in
+<a href="#Additional_Notes">Additional Notes</a>.
+</p>
<p>For more sample code, see the <a
href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html">{@code
@@ -538,10 +545,11 @@
the methods defined by the interface.</li>
<li>To disconnect from the service, call {@link
android.content.Context#unbindService unbindService()}.
- <p>When your client is destroyed, it will unbind from the service, but you should always unbind
-when you're done interacting with the service or when your activity pauses so that the service can
-shutdown while its not being used. (Appropriate times to bind and unbind is discussed
-more below.)</p>
+ <p>If your client is still bound to a service when your app destroys the client, destruction
+causes the client to unbind. It is better practice to unbind the client as soon as it is done
+interacting with the service. Doing so allows the idle service to shut down. For more information
+about appropriate times to bind and unbind, see <a href="#Additional_Notes">Additional Notes</a>.
+</p>
</li>
</ol>
@@ -591,7 +599,7 @@
</ul>
-<h3>Additional notes</h3>
+<h3 id="Additional_Notes">Additional notes</h3>
<p>Here are some important notes about binding to a service:</p>
<ul>
diff --git a/docs/html/guide/topics/security/permissions.jd b/docs/html/guide/topics/security/permissions.jd
index d9d867b..ea54d08 100644
--- a/docs/html/guide/topics/security/permissions.jd
+++ b/docs/html/guide/topics/security/permissions.jd
@@ -76,7 +76,8 @@
<p>This document describes how application developers can use the
security features provided by Android. A more general <a
-href="http://source.android.com/tech/security/index.html"> Android Security
+href="http://source.android.com/tech/security/index.html"
+class="external-link">Android Security
Overview</a> is provided in the Android Open Source Project.</p>
@@ -98,7 +99,7 @@
<p>The application sandbox does not depend on the technology used to build
an application. In particular the Dalvik VM is not a security boundary, and
-any app can run native code (see <a href="/sdk/ndk/index.html">the Android
+any app can run native code (see <a href="{@docRoot}tools/sdk/ndk/index.html">the Android
NDK</a>). All types of applications — Java, native, and hybrid —
are sandboxed in the same way and have the same degree of security from each
other.</p>
@@ -114,9 +115,9 @@
for Android applications to use self-signed certificates. The purpose of
certificates in Android is to distinguish application authors. This allows
the system to grant or deny applications access to <a
-href="/guide/topics/manifest/permission-element.html#plevel">signature-level
+href="{@docRoot}guide/topics/manifest/permission-element.html#plevel">signature-level
permissions</a> and to grant or deny an application's <a
-href="/guide/topics/manifest/manifest-element.html#uid">request to be given
+href="{@docRoot}guide/topics/manifest/manifest-element.html#uid">request to be given
the same Linux identity</a> as another application.</p>
<a name="userid"></a>
@@ -806,7 +807,7 @@
<dd>Information about Android works on different types of devices and an introduction
to how you can optimize your app for each device or restrict your app's availability
to different devices.</dd>
- <dt><a href="{@docRoot}http://source.android.com/devices/tech/security/index.html"
+ <dt><a href="http://source.android.com/devices/tech/security/index.html"
class="external-link">Android Security Overview</a></dt>
<dd>A detailed discussion about the Android platform's security model.</dd>
</dl>
diff --git a/docs/html/images/ads_hero@2x.jpg b/docs/html/images/ads_hero@2x.jpg
new file mode 100644
index 0000000..e202943
--- /dev/null
+++ b/docs/html/images/ads_hero@2x.jpg
Binary files differ
diff --git a/docs/html/images/ads_hero_17@2x.jpg b/docs/html/images/ads_hero_17@2x.jpg
new file mode 100644
index 0000000..409381a
--- /dev/null
+++ b/docs/html/images/ads_hero_17@2x.jpg
Binary files differ
diff --git a/docs/html/images/cards/admob-analytics_2x.png b/docs/html/images/cards/admob-analytics_2x.png
new file mode 100644
index 0000000..5c024b5
--- /dev/null
+++ b/docs/html/images/cards/admob-analytics_2x.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/engage/beta.jpg b/docs/html/images/cards/distribute/engage/beta.jpg
new file mode 100644
index 0000000..40eb901
--- /dev/null
+++ b/docs/html/images/cards/distribute/engage/beta.jpg
Binary files differ
diff --git a/docs/html/images/cards/distribute/engage/card-game-services.png b/docs/html/images/cards/distribute/engage/card-game-services.png
new file mode 100644
index 0000000..54a3a94
--- /dev/null
+++ b/docs/html/images/cards/distribute/engage/card-game-services.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/users/banners.png b/docs/html/images/cards/distribute/users/banners.png
new file mode 100644
index 0000000..ced01ae
--- /dev/null
+++ b/docs/html/images/cards/distribute/users/banners.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/users/experiments.png b/docs/html/images/cards/distribute/users/experiments.png
new file mode 100644
index 0000000..06ea9ab
--- /dev/null
+++ b/docs/html/images/cards/distribute/users/experiments.png
Binary files differ
diff --git a/docs/html/images/cards/distribute/users/user-acquisition.jpg b/docs/html/images/cards/distribute/users/user-acquisition.jpg
new file mode 100644
index 0000000..8704e7a
--- /dev/null
+++ b/docs/html/images/cards/distribute/users/user-acquisition.jpg
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_developer_page.png b/docs/html/images/distribute/googleplay/about_developer_page.png
new file mode 100644
index 0000000..9e28a2f
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_developer_page.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_hero_play-opportunity.png b/docs/html/images/distribute/googleplay/about_hero_play-opportunity.png
new file mode 100644
index 0000000..97598e9
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_hero_play-opportunity.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_hero_play-opportunity_2x.png b/docs/html/images/distribute/googleplay/about_hero_play-opportunity_2x.png
new file mode 100644
index 0000000..9d0109c
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_hero_play-opportunity_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_personalized_home.png b/docs/html/images/distribute/googleplay/about_personalized_home.png
new file mode 100644
index 0000000..af35c35c
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_personalized_home.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_play_store_home.png b/docs/html/images/distribute/googleplay/about_play_store_home.png
new file mode 100644
index 0000000..6e2b52c
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_play_store_home.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_play_store_listing.png b/docs/html/images/distribute/googleplay/about_play_store_listing.png
new file mode 100644
index 0000000..985456a
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_play_store_listing.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/about_search_results.png b/docs/html/images/distribute/googleplay/about_search_results.png
new file mode 100644
index 0000000..8dbc3f4
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/about_search_results.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab.png b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab.png
new file mode 100644
index 0000000..efad065
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab_2x.png b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab_2x.png
new file mode 100644
index 0000000..b60eed3
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_cloud-test-lab_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_conversion-funnel.png b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel.png
new file mode 100644
index 0000000..e2d3769
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_conversion-funnel_2x.png b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel_2x.png
new file mode 100644
index 0000000..531ed86
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_conversion-funnel_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_player-analytics.png b/docs/html/images/distribute/googleplay/dev-console_player-analytics.png
new file mode 100644
index 0000000..aa4f39e
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_player-analytics.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_player-analytics_2x.png b/docs/html/images/distribute/googleplay/dev-console_player-analytics_2x.png
new file mode 100644
index 0000000..b44e7f0
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_player-analytics_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test.png b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test.png
new file mode 100644
index 0000000..cf8ebca
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test_2x.png b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test_2x.png
new file mode 100644
index 0000000..dcea50e
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_running-a-beta-test_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_statistics.png b/docs/html/images/distribute/googleplay/dev-console_statistics.png
new file mode 100644
index 0000000..4bddd1a
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_statistics.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_statistics_2x.png b/docs/html/images/distribute/googleplay/dev-console_statistics_2x.png
new file mode 100644
index 0000000..e1ab470
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_statistics_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment.png b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment.png
new file mode 100644
index 0000000..52fa217
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment_2x.png b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment_2x.png
new file mode 100644
index 0000000..ea5d0a4
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/dev-console_store-listing-experiment_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/gp-devconsole-home.png b/docs/html/images/distribute/googleplay/gp-devconsole-home.png
new file mode 100644
index 0000000..a1af0ef
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/gp-devconsole-home.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/hero-store-listing-experiment.png b/docs/html/images/distribute/googleplay/hero-store-listing-experiment.png
new file mode 100644
index 0000000..ad54c2a
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/hero-store-listing-experiment.png
Binary files differ
diff --git a/docs/html/images/distribute/googleplay/hero-store-listing-experiment_2x.png b/docs/html/images/distribute/googleplay/hero-store-listing-experiment_2x.png
new file mode 100644
index 0000000..2925aa5
--- /dev/null
+++ b/docs/html/images/distribute/googleplay/hero-store-listing-experiment_2x.png
Binary files differ
diff --git a/docs/html/images/distribute/users/banners.png b/docs/html/images/distribute/users/banners.png
new file mode 100644
index 0000000..44a2418
--- /dev/null
+++ b/docs/html/images/distribute/users/banners.png
Binary files differ
diff --git a/docs/html/images/distribute/users/banners_2x.png b/docs/html/images/distribute/users/banners_2x.png
new file mode 100644
index 0000000..2c1cb46
--- /dev/null
+++ b/docs/html/images/distribute/users/banners_2x.png
Binary files differ
diff --git a/docs/html/images/editorschoice_ann.png b/docs/html/images/editorschoice_ann.png
deleted file mode 100644
index c4f2c06..0000000
--- a/docs/html/images/editorschoice_ann.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/google/gps-play_games_logo.png b/docs/html/images/google/gps-play_games_logo.png
index 19692fa..9a107b2 100644
--- a/docs/html/images/google/gps-play_games_logo.png
+++ b/docs/html/images/google/gps-play_games_logo.png
Binary files differ
diff --git a/docs/html/images/google/gps-play_games_logo_2x.png b/docs/html/images/google/gps-play_games_logo_2x.png
new file mode 100644
index 0000000..fcc0c27
--- /dev/null
+++ b/docs/html/images/google/gps-play_games_logo_2x.png
Binary files differ
diff --git a/docs/html/images/gp-about-0.jpg b/docs/html/images/gp-about-0.jpg
deleted file mode 100644
index 2dd6a8c..0000000
--- a/docs/html/images/gp-about-0.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-about-listing.jpg b/docs/html/images/gp-about-listing.jpg
deleted file mode 100644
index 256c051..0000000
--- a/docs/html/images/gp-about-listing.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-about-picks1.jpg b/docs/html/images/gp-about-picks1.jpg
deleted file mode 100644
index 555bd7b..0000000
--- a/docs/html/images/gp-about-picks1.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-about-picks2.jpg b/docs/html/images/gp-about-picks2.jpg
deleted file mode 100644
index ec25e74..0000000
--- a/docs/html/images/gp-about-picks2.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-about-picks3.jpg b/docs/html/images/gp-about-picks3.jpg
deleted file mode 100644
index eb57da9..0000000
--- a/docs/html/images/gp-about-picks3.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-about-top.jpg b/docs/html/images/gp-about-top.jpg
deleted file mode 100644
index 01a2744..0000000
--- a/docs/html/images/gp-about-top.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-devconsole-home.png b/docs/html/images/gp-devconsole-home.png
deleted file mode 100644
index b29dc25..0000000
--- a/docs/html/images/gp-devconsole-home.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/gp-rating-web.png b/docs/html/images/gp-rating-web.png
deleted file mode 100644
index 14582af..0000000
--- a/docs/html/images/gp-rating-web.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/topdev_ann.png b/docs/html/images/topdev_ann.png
deleted file mode 100644
index 9564387..0000000
--- a/docs/html/images/topdev_ann.png
+++ /dev/null
Binary files differ
diff --git a/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png b/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png
index 99e60e9..06361af 100644
--- a/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png
+++ b/docs/html/images/training/auto-desktop-head-unit-context-menu-enabled.png
Binary files differ
diff --git a/docs/html/images/training/auto-desktop-head-unit-server-running.png b/docs/html/images/training/auto-desktop-head-unit-server-running.png
index 5aa3b83..f8e1f38 100644
--- a/docs/html/images/training/auto-desktop-head-unit-server-running.png
+++ b/docs/html/images/training/auto-desktop-head-unit-server-running.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_button_move.mp4 b/docs/html/images/training/snackbar/snackbar_button_move.mp4
new file mode 100644
index 0000000..0a1cefc
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_button_move.mp4
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_drive.png b/docs/html/images/training/snackbar/snackbar_drive.png
new file mode 100644
index 0000000..1483a84
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_drive.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_drive_2x.png b/docs/html/images/training/snackbar/snackbar_drive_2x.png
new file mode 100644
index 0000000..6d45b8c
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_drive_2x.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_undo_action.png b/docs/html/images/training/snackbar/snackbar_undo_action.png
new file mode 100644
index 0000000..979d127
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_undo_action.png
Binary files differ
diff --git a/docs/html/images/training/snackbar/snackbar_undo_action_2x.png b/docs/html/images/training/snackbar/snackbar_undo_action_2x.png
new file mode 100644
index 0000000..1f150af
--- /dev/null
+++ b/docs/html/images/training/snackbar/snackbar_undo_action_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_again.png b/docs/html/images/training/wear/ask_again.png
new file mode 100644
index 0000000..33c110b
--- /dev/null
+++ b/docs/html/images/training/wear/ask_again.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_again_2x.png b/docs/html/images/training/wear/ask_again_2x.png
new file mode 100644
index 0000000..8996203
--- /dev/null
+++ b/docs/html/images/training/wear/ask_again_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_in_context.png b/docs/html/images/training/wear/ask_in_context.png
new file mode 100644
index 0000000..61fa478
--- /dev/null
+++ b/docs/html/images/training/wear/ask_in_context.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_in_context_2x.png b/docs/html/images/training/wear/ask_in_context_2x.png
new file mode 100644
index 0000000..20c1f47
--- /dev/null
+++ b/docs/html/images/training/wear/ask_in_context_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_up_front.png b/docs/html/images/training/wear/ask_up_front.png
new file mode 100644
index 0000000..ced2228
--- /dev/null
+++ b/docs/html/images/training/wear/ask_up_front.png
Binary files differ
diff --git a/docs/html/images/training/wear/ask_up_front_2x.png b/docs/html/images/training/wear/ask_up_front_2x.png
new file mode 100644
index 0000000..ef7eb46
--- /dev/null
+++ b/docs/html/images/training/wear/ask_up_front_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/deny.png b/docs/html/images/training/wear/deny.png
new file mode 100644
index 0000000..a1e9562
--- /dev/null
+++ b/docs/html/images/training/wear/deny.png
Binary files differ
diff --git a/docs/html/images/training/wear/deny_2x.png b/docs/html/images/training/wear/deny_2x.png
new file mode 100644
index 0000000..721c271
--- /dev/null
+++ b/docs/html/images/training/wear/deny_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_in_context.png b/docs/html/images/training/wear/educate_in_context.png
new file mode 100644
index 0000000..c8ac641
--- /dev/null
+++ b/docs/html/images/training/wear/educate_in_context.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_in_context_2x.png b/docs/html/images/training/wear/educate_in_context_2x.png
new file mode 100644
index 0000000..92baead
--- /dev/null
+++ b/docs/html/images/training/wear/educate_in_context_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_up_front.png b/docs/html/images/training/wear/educate_up_front.png
new file mode 100644
index 0000000..2e4fdf7
--- /dev/null
+++ b/docs/html/images/training/wear/educate_up_front.png
Binary files differ
diff --git a/docs/html/images/training/wear/educate_up_front_2x.png b/docs/html/images/training/wear/educate_up_front_2x.png
new file mode 100644
index 0000000..1f6f491
--- /dev/null
+++ b/docs/html/images/training/wear/educate_up_front_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_services.png b/docs/html/images/training/wear/for_services.png
new file mode 100644
index 0000000..0aaae10
--- /dev/null
+++ b/docs/html/images/training/wear/for_services.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_services_2x.png b/docs/html/images/training/wear/for_services_2x.png
new file mode 100644
index 0000000..a7f92f2
--- /dev/null
+++ b/docs/html/images/training/wear/for_services_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_settings.png b/docs/html/images/training/wear/for_settings.png
new file mode 100644
index 0000000..fde50c7
--- /dev/null
+++ b/docs/html/images/training/wear/for_settings.png
Binary files differ
diff --git a/docs/html/images/training/wear/for_settings_2x.png b/docs/html/images/training/wear/for_settings_2x.png
new file mode 100644
index 0000000..c2daa7c
--- /dev/null
+++ b/docs/html/images/training/wear/for_settings_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/multiple_permissions.png b/docs/html/images/training/wear/multiple_permissions.png
new file mode 100644
index 0000000..65e3e08
--- /dev/null
+++ b/docs/html/images/training/wear/multiple_permissions.png
Binary files differ
diff --git a/docs/html/images/training/wear/multiple_permissions_2x.png b/docs/html/images/training/wear/multiple_permissions_2x.png
new file mode 100644
index 0000000..cbaace8
--- /dev/null
+++ b/docs/html/images/training/wear/multiple_permissions_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/open_on_phone.png b/docs/html/images/training/wear/open_on_phone.png
new file mode 100644
index 0000000..1899839
--- /dev/null
+++ b/docs/html/images/training/wear/open_on_phone.png
Binary files differ
diff --git a/docs/html/images/training/wear/open_on_phone_2x.png b/docs/html/images/training/wear/open_on_phone_2x.png
new file mode 100644
index 0000000..e5c2c96
--- /dev/null
+++ b/docs/html/images/training/wear/open_on_phone_2x.png
Binary files differ
diff --git a/docs/html/images/training/wear/phone_requests_wear.png b/docs/html/images/training/wear/phone_requests_wear.png
new file mode 100644
index 0000000..4d0b09d
--- /dev/null
+++ b/docs/html/images/training/wear/phone_requests_wear.png
Binary files differ
diff --git a/docs/html/images/training/wear/phone_requests_wear_2x.png b/docs/html/images/training/wear/phone_requests_wear_2x.png
new file mode 100644
index 0000000..1c98f4a
--- /dev/null
+++ b/docs/html/images/training/wear/phone_requests_wear_2x.png
Binary files differ
diff --git a/docs/html/index.jd b/docs/html/index.jd
index fbf5497..6c1b30a 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -53,7 +53,7 @@
<span class="dac-sprite dac-auto-chevron-large"></span>
Browse Samples
</a></div>
- <div><a href="//www.youtube.com/user/androiddevelopers">
+ <div><a href="https://www.youtube.com/user/androiddevelopers">
<span class="dac-sprite dac-auto-chevron-large"></span>
Watch Videos
</a></div>
diff --git a/docs/html/jd_collections.js b/docs/html/jd_collections.js
index 6f9915c..0f2ba3e 100644
--- a/docs/html/jd_collections.js
+++ b/docs/html/jd_collections.js
@@ -353,6 +353,10 @@
"distribute/users/ota-installs.html",
"distribute/users/youtube.html",
"distribute/users/house-ads.html",
+ "distribute/users/experiments.html",
+ "distribute/users/user-acquisition.html",
+ "distribute/users/banners.html",
+ "distribute/users/beta.html"
]
},
"distribute/engagelanding": {
@@ -366,6 +370,8 @@
"distribute/engage/easy-signin.html",
"distribute/analyze/build-better-apps.html",
"distribute/engage/gcm.html",
+ "distribute/engage/beta.html"
+
]
},
"distribute/monetize": {
@@ -555,13 +561,46 @@
"https://support.google.com/googleplay/android-developer"
]
},
- "distribute/googleplay/developerconsole": {
+ "distribute/googleplay/developerconsole/related": {
"title": "Developer Console",
"resources": [
"google/play/billing/index.html",
"https://support.google.com/googleplay/android-developer/answer/138294"
]
},
+ "distribute/googleplay/beta": {
+ "title": "Alpha and Beta Testing",
+ "resources": [
+ "https://support.google.com/googleplay/android-developer/answer/3131213",
+ "https://support.google.com/googleplay/android-developer/answer/3131213#games",
+ "distribute/googleplay/experiments.html"
+ ]
+ },
+ "distribute/googleplay/experiments/successes": {
+ "title": "Store Listing Experiment successes",
+ "resources": [
+ ]
+ },
+ "distribute/googleplay/experiments/related": {
+ "title": "Store Listing Experiments",
+ "resources": [
+ "https://support.google.com/googleplay/android-developer/answer/6227309",
+ "https://www.youtube.com/watch?v=B6ydLpkhq04",
+ "https://support.google.com/tagmanager/answer/6003007"
+ ]
+ },
+ "distribute/googleplay/banners/related": {
+ "title": "App Install Banners",
+ "resources": [
+ "https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native"
+ ]
+ },
+ "distribute/googleplay/useracquisition/related": {
+ "title": "User Acquisition",
+ "resources": [
+ "https://support.google.com/googleplay/android-developer/answer/6263332"
+ ]
+ },
"distribute/googleplay/cast": {
"title": "Google Cast",
"resources": [
@@ -997,11 +1036,13 @@
"https://developers.google.com/cloud-messaging/android/client",
]
},
- "distribute/engage/googleplaygames": {
+ "distribute/engage/gamesservices/related": {
"title": "",
"resources": [
- "google/play-services/games.html",
- "distribute/essentials/best-practices/games.html"
+ "https://developers.google.com/games/services/",
+ "distribute/analyze/start.html",
+ "distribute/googleplay/cardboard.html",
+ "http://www.google.com/admob/"
]
},
"distribute/engage/gplus": {
diff --git a/docs/html/jd_extras.js b/docs/html/jd_extras.js
index e102b2f..8e2f040 100644
--- a/docs/html/jd_extras.js
+++ b/docs/html/jd_extras.js
@@ -17,6 +17,72 @@
/* TODO Remove standard resources from here, such as below
*/
{
+ "title":"Measure your app’s user acquisition channels",
+ "titleFriendly":"",
+ "summary":"Get details on how to use the Developer Console User Acquisitions reports to discover where your users come from.",
+ "url":"https://support.google.com/googleplay/android-developer/answer/6263332",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"images/play_dev.jpg",
+ "type":"google"
+ },
+ {
+ "title":"Set up native app install banners in Chrome",
+ "titleFriendly":"",
+ "summary":"Get the details you need to add your native app or game to your site’s web app manifest file.",
+ "url":"https://developers.google.com/web/updates/2015/03/increasing-engagement-with-app-install-banners-in-chrome-for-android#native",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"images/play_dev.jpg",
+ "type":"google"
+ },
+ {
+ "title":"Optimize your store listing pages with experiments",
+ "titleFriendly":"",
+ "summary":"You can run experiments to find the most effective graphics and localized text for your app.",
+ "url":"https://support.google.com/googleplay/android-developer/answer/6227309",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"images/play_dev.jpg",
+ "type":"google"
+ },
+ {
+ "title":"Content Experiments for Mobile Apps",
+ "titleFriendly":"",
+ "summary":"Google Analytics Content Experiments allows you to test multiple variations of a given web page.",
+ "url":"https://support.google.com/tagmanager/answer/6003007",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"images/play_dev.jpg",
+ "type":"google"
+ },
+ {
+ "title":"Store Listing Experiments for Google Play",
+ "titleFriendly":"",
+ "summary":"Learn how to use Google Play’s new store listing optimization feature to get more installs of your app.",
+ "url":"https://www.youtube.com/watch?v=B6ydLpkhq04",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"http://i1.ytimg.com/vi/B6ydLpkhq04/maxresdefault.jpg",
+ "type":"video"
+ },
+ {
+ "title":"Use alpha/beta testing & staged rollouts",
+ "titleFriendly":"",
+ "summary":"Using the Google Play Developer Console, you can choose groups of users to test different versions of your app.",
+ "url":"https://support.google.com/googleplay/android-developer/answer/3131213",
+ "group":"",
+ "keywords": [],
+ "tags": [],
+ "image":"images/play_dev.jpg",
+ "type":"google"
+ },
+ {
"title":"Quizlet Developer Story",
"titleFriendly":"",
"summary":"Quizlet is an extremely popular online learning tool for students. See how they optimized for the classroom with Android and the power of Google Play for Education.",
@@ -553,15 +619,47 @@
{
"title":"Google Play Game Services",
"titleFriendly":"",
- "summary":"Tools to offer a better game experience.",
- "url":"google/play-services/games.html",
+ "summary":"Make your games social with Google Play game services. Add achievements, leaderboards, real-time multiplayer, and other popular features using the Google Play game services SDK.",
+ "url":"https://developers.google.com/games/services/",
"group":"",
"keywords": ["games","play games"],
"tags": [],
"image":"images/google/gps-play_games_logo.png",
"type":"google"
},
-
+ {
+ "title":"Get Started with Analytics",
+ "titleFriendly":"",
+ "summary":"Get advanced insight into how players discover and play your games.",
+ "url":"distribute/analyze/start.html",
+ "group":"",
+ "keywords": ["analytics"],
+ "tags": [],
+ "image": "images/cards/analytics-mobile_2x.jpg",
+ "type": "distribute"
+ },
+ {
+ "title":"Build VR with Google Cardboard",
+ "titleFriendly":"",
+ "summary":"Turn any phone into a virtual reality headset with a Cardboard viewer and experiment with adding virtual reality to your games with the Cardboard SDK.",
+ "url":"distribute/googleplay/cardboard.html",
+ "group":"",
+ "keywords": ["cardboard"],
+ "tags": [],
+ "image":"images/cards/card-cardboard_2x.png",
+ "type": "distribute"
+ },
+ {
+ "title":"Monetize your apps intelligently",
+ "titleFriendly":"",
+ "summary":"Generate revenue from your free games with ads tailored to match your game's look and feel.",
+ "url":"http://www.google.com/admob/",
+ "group":"",
+ "keywords": ["AdMob"],
+ "tags": [],
+ "image":"images/cards/admob-analytics_2x.png",
+ "type": "distribute"
+ },
{
"lang": "en",
"group": "",
@@ -577,7 +675,6 @@
"type": "blog",
"titleFriendly": ""
},
-
{
"lang": "en",
"group": "",
@@ -3776,4 +3873,4 @@
"tags":["io15"],
"summary": "The games industry has never been more promising and full of opportunities. This talk from Google I/O 2015 covers how Google is helping developers across a broad range of existing and emerging platforms.",
}
-};
\ No newline at end of file
+};
diff --git a/docs/html/ndk/downloads/index.jd b/docs/html/ndk/downloads/index.jd
index 94e9ae9..391a7d5 100644
--- a/docs/html/ndk/downloads/index.jd
+++ b/docs/html/ndk/downloads/index.jd
@@ -56,7 +56,12 @@
Open Source Project, which is located at the following URL: http://source.android.com/, as updated
from time to time.
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android
+Compatibility Definition document, which can be found at the Android compatibility website
+(http://source.android.com/compatibility) and which may be updated from time to time; and (ii)
+successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600
Amphitheatre Parkway, Mountain View, CA 94043, United States.
@@ -78,25 +83,26 @@
<h3>3. SDK License from Google</h3>
3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
+royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to
+develop applications to run on the Android platform.
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible
+implementations of Android) or to develop another SDK. You are of course free to develop
+applications for other platforms, including non-compatible implementations of Android, provided
+that this SDK is not used for that purpose.
+
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the
SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement.
+3.4 You may not use the SDK for any purpose not expressly permitted by this License Agreement.
Except to the extent required by applicable third party licenses, you may not: (a) copy (except for
backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create
derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile
handset or any other hardware device except a personal computer, combine any part of the SDK with
other software, or distribute any software or device incorporating a part of the SDK.
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of
-Android, including but not limited to distributing, participating in the creation of, or promoting
-in any way a software development kit derived from the SDK.
-
3.5 Use, reproduction and distribution of components of the SDK licensed under an open source
software license are governed solely by the terms of that open source software license and not this
License Agreement.
@@ -304,7 +310,7 @@
injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-<em>November 13, 2012</em>
+<em>November 20, 2015</em>
</div>
diff --git a/docs/html/sdk/index.jd b/docs/html/sdk/index.jd
index 1afb0fb..5db013c 100644
--- a/docs/html/sdk/index.jd
+++ b/docs/html/sdk/index.jd
@@ -5,28 +5,28 @@
header.hide=1
page.metaDescription=Download the official Android IDE and developer tools to build apps for Android phones, tablets, wearables, TVs, and more.
-studio.version=1.4.1.0
+studio.version=1.5.1.0
-studio.linux_bundle_download=android-studio-ide-141.2343393-linux.zip
-studio.linux_bundle_bytes=381078272
-studio.linux_bundle_checksum=c38eb7afec75fe529efecd2f05500f1715e82cfe
+studio.linux_bundle_download=android-studio-ide-141.2456560-linux.zip
+studio.linux_bundle_bytes=380943097
+studio.linux_bundle_checksum=b8460a2197abe26979d88e3b01b3c8bfd80a37db
-studio.mac_bundle_download=android-studio-ide-141.2343393-mac.dmg
-studio.mac_bundle_bytes=364890127
-studio.mac_bundle_checksum=f99f7e4916b39d0248ab7278765d105a7ce342fb
+studio.mac_bundle_download=android-studio-ide-141.2456560-mac.dmg
+studio.mac_bundle_bytes=367456698
+studio.mac_bundle_checksum=d0807423985757195ad5ae4717d580deeba1dbd8
-studio.win_bundle_download=android-studio-ide-141.2343393-windows.zip
-studio.win_bundle_bytes=373749630
-studio.win_bundle_checksum=ac5eea9cdd0ec7f0321ad459c0420c5fa7e1b332
+studio.win_bundle_download=android-studio-ide-141.2456560-windows.zip
+studio.win_bundle_bytes=375635150
+studio.win_bundle_checksum=64882fb967f960f2142de239200104cdc9b4c75b
-studio.win_bundle_exe_download=android-studio-bundle-141.2343393-windows.exe
-studio.win_bundle_exe_bytes=1192115784
-studio.win_bundle_exe_checksum=de9e6172533fa02051efabb9ed3a485995582e13
+studio.win_bundle_exe_download=android-studio-bundle-141.2456560-windows.exe
+studio.win_bundle_exe_bytes=1209163328
+studio.win_bundle_exe_checksum=6ffe608b1dd39041a578019eb3fedb5ee62ba545
-studio.win_notools_exe_download=android-studio-ide-141.2343393-windows.exe
-studio.win_notools_exe_bytes=348552720
-studio.win_notools_exe_checksum=227160920052916e538512f8ccbf49296bb2b1f2
+studio.win_notools_exe_download=android-studio-ide-141.2456560-windows.exe
+studio.win_notools_exe_bytes=351419656
+studio.win_notools_exe_checksum=8d016b90bf04ebac6ce548b1976b0c8a4f46b5f9
@@ -113,7 +113,9 @@
1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
<h3>2. Accepting this License Agreement</h3>
@@ -127,13 +129,13 @@
<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications for compatible implementations of Android.
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+3.4 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
@@ -234,7 +236,7 @@
14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-<em>December 8, 2014</em>
+<em>November 20, 2015</em>
</div>
diff --git a/docs/html/sdk/installing/index.jd b/docs/html/sdk/installing/index.jd
index 0375a2f..1e732da 100644
--- a/docs/html/sdk/installing/index.jd
+++ b/docs/html/sdk/installing/index.jd
@@ -42,7 +42,7 @@
JDK 6 or higher (the JRE alone is not sufficient)—JDK 7 is required when
developing for Android 5.0 and higher. To check if you
have JDK installed (and which version), open a terminal and type <code>javac -version</code>.
-If the JDK is not available or the version is lower than version 6, download the
+If the JDK is not available or the version is lower than version 6, download the
<a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html" class="external-link"
>Java SE Development Kit 7</a>.</p>
@@ -90,12 +90,6 @@
<li>Launch the {@code .dmg} file you just downloaded.</li>
<li>Drag and drop Android Studio into the Applications folder.
<li>Open Android Studio and follow the setup wizard to install any necessary SDK tools.
- <p>
- Depending on your security settings, when you attempt to open Android Studio, you might
- see a warning that says the package is damaged and should be moved to the trash. If this
- happens, go to <strong>System Preferences > Security & Privacy</strong> and under
- <strong>Allow applications downloaded from</strong>, select <strong>Anywhere</strong>.
- Then open Android Studio again.</p>
</li>
</ol>
diff --git a/docs/html/sdk/installing/studio-build.jd b/docs/html/sdk/installing/studio-build.jd
old mode 100644
new mode 100755
index b68b176..54691bf
--- a/docs/html/sdk/installing/studio-build.jd
+++ b/docs/html/sdk/installing/studio-build.jd
@@ -13,7 +13,6 @@
<li><a href="{@docRoot}sdk/installing/studio.html">
Getting Started with Android Studio</a></li>
<li><a href="{@docRoot}tools/studio/index.html">Android Studio Basics</a></li>
- <li><a href="{@docRoot}sdk/installing/migrate.html">Migrating from Eclipse</a></li>
</div>
</div>
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
index b8511a4..6c944ab 100644
--- a/docs/html/sdk/installing/studio-tips.jd
+++ b/docs/html/sdk/installing/studio-tips.jd
@@ -204,7 +204,7 @@
<p>With language injection, the Android Studio IDE allows you to work with islands of different
languages embedded in the source code. This extends the syntax, error highlighting and coding
assistance to the embedded language. This can be especially useful for checking regular expression
-values inline, and validating XML and SQL statements.</p>
+values inline and validating XML.</p>
<h3>Code folding</h3>
diff --git a/docs/html/sdk/terms.jd b/docs/html/sdk/terms.jd
index 74e5254..d7477b6 100644
--- a/docs/html/sdk/terms.jd
+++ b/docs/html/sdk/terms.jd
@@ -15,7 +15,9 @@
1.2 “Android” means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
<h3>2. Accepting this License Agreement</h3>
@@ -29,13 +31,13 @@
<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive, and non-sublicensable license to use the SDK solely to develop applications to run on the Android platform.
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+3.4 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
@@ -136,7 +138,7 @@
14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-<em>November 13, 2012</em>
+<em>November 20, 2015</em>
</div>
</div>
\ No newline at end of file
diff --git a/docs/html/sdk/terms_body.html b/docs/html/sdk/terms_body.html
index 35e1655..af3ca60 100644
--- a/docs/html/sdk/terms_body.html
+++ b/docs/html/sdk/terms_body.html
@@ -1,109 +1,126 @@
-
-<p>This is the Android Software Development Kit License Agreement.</p>
-
-<h2>
+
+<p>This is the Android Software Development Kit License Agreement.</p>
+
+<h2>
1. Introduction
-</h2>
-<p>
- 1.1 The Android Software Development Kit (referred to in this License Agreement as the "SDK"
+</h2>
+<p>
+ 1.1 The Android Software Development Kit (referred to in the License Agreement as the "SDK"
and specifically including the Android system files, packaged APIs, and Google APIs add-ons) is
-licensed to you subject to the terms of this License Agreement. This License Agreement forms a
+licensed to you subject to the terms of the License Agreement. The License Agreement forms a
legally binding contract between you and Google in relation to your use of the SDK.
-
-</p>
-<p>
- 1.2 "Google" means Google Inc., a Delaware corporation with principal place of business at
-1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
-</p>
-<h2>
+</p>
+<p>
+ 1.2 "Android" means the Android software stack for devices, as made available under the
+ Android Open Source Project, which is located at the following URL: http://source.android.com/,
+ as updated from time to time.
+</p>
+<p>
+ 1.3 A "compatible implementation" means any Android device that (i) complies with the
+ Android Compatibility Definition document, which can be found at the Android compatibility
+ website (http://source.android.com/compatibility) and which may be updated from time to time;
+ and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+</p>
+<p>
+ 1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at
+ 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+</p>
+<h2>
2. Accepting this License Agreement
-</h2>
-<p>
+</h2>
+<p>
2.1 In order to use the SDK, you must first agree to this License Agreement. You may not use
the SDK if you do not accept this License Agreement.
-</p>
-<p>
+</p>
+<p>
2.2 You can accept this License Agreement by:
-</p>
-<p>
+</p>
+<p>
(A) clicking to accept or agree to this License Agreement, where this option is made
available to you; or
-</p>
-<p>
+</p>
+<p>
(B) by actually using the SDK. In this case, you agree that use of the SDK constitutes
acceptance of the Licensing Agreement from that point onwards.
-</p>
-<p>
+</p>
+<p>
2.3 You may not use the SDK and may not accept the Licensing Agreement if you are a person
barred from receiving the SDK under the laws of the United States or other countries including the
country in which you are resident or from which you use the SDK.
-</p>
-<p>
+</p>
+<p>
2.4 If you are agreeing to be bound by this License Agreement on behalf of your employer or
other entity, you represent and warrant that you have full legal authority to bind your employer or
such entity to this License Agreement. If you do not have the requisite authority, you may not
accept the Licensing Agreement or use the SDK on behalf of your employer or other entity.
-</p>
-<h2>
+</p>
+<h2>
3. SDK License from Google
-</h2>
-<p>
+</h2>
+<p>
3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide,
-royalty-free, non- assignable and non-exclusive license to use the SDK solely to develop
-applications to run on the Android platform.
-</p>
-<p>
- 3.2 You agree that Google or third parties own all legal right, title and interest in and to
+royalty-free, non- assignable, non-exclusive, and non-sublicensable license to use the SDK solely
+to develop applications to run on the Android platform.
+</p>
+<p>
+ 3.2 You may not use this SDK to develop applications for other platforms (including
+ non-compatible implementations of Android) or to develop another SDK. You are of course free
+ to develop applications for other platforms, including non-compatible implementations of
+ Android, provided that this SDK is not used for that purpose.
+</p>
+<p>
+ 3.3 You agree that Google or third parties own all legal right, title and interest in and to
the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property
Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law,
-and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-
-</p>
-<p>
- 3.3 Except to the extent required by applicable third party licenses, you may not copy
-(except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble,
-or create derivative works of the SDK or any part of the SDK. Except to the extent required by
-applicable third party licenses, you may not load any part of the SDK onto a mobile handset or any
-other hardware device except a personal computer, combine any part of the SDK with other software,
-or distribute any software or device incorporating a part of the SDK.
-</p>
-<p>
- 3.4 Use, reproduction and distribution of components of the SDK licensed under an open
+and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+
+</p>
+<p>
+ 3.4 You may not use the SDK for any purpose not expressly permitted by the License Agreement.
+ Except to the extent required by applicable third party licenses, you may not: (a) copy (except
+ for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or
+ create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto
+ a mobile handset or any other hardware device except a personal computer, combine any part of
+ the SDK with other software, or distribute any software or device incorporating a part of the
+ SDK.
+</p>
+<p>
+ 3.5 Use, reproduction and distribution of components of the SDK licensed under an open
source software license are governed solely by the terms of that open source software license and
not this License Agreement.
-</p>
-<p>
- 3.5 You agree that the form and nature of the SDK that Google provides may change without
+</p>
+<p>
+ 3.6 You agree that the form and nature of the SDK that Google provides may change without
prior notice to you and that future versions of the SDK may be incompatible with applications
developed on previous versions of the SDK. You agree that Google may stop (permanently or
temporarily) providing the SDK (or any features within the SDK) to you or to users generally at
Google's sole discretion, without prior notice to you.
-</p>
-<p>
- 3.6 Nothing in this License Agreement gives you a right to use any of Google's trade names,
+</p>
+<p>
+ 3.7 Nothing in this License Agreement gives you a right to use any of Google's trade names,
trademarks, service marks, logos, domain names, or other distinctive brand features.
-</p>
-<p>
- 3.7 You agree that you will not remove, obscure, or alter any proprietary rights notices
+</p>
+<p>
+ 3.8 You agree that you will not remove, obscure, or alter any proprietary rights notices
(including copyright and trademark notices) that may be affixed to or contained within the SDK.
-</p>
-<h2>
+</p>
+<h2>
4. Use of the SDK by You
-</h2>
-<p>
+</h2>
+<p>
4.1 Google agrees that it obtains no right, title or interest from you (or your licensors)
under this License Agreement in or to any software applications that you develop using the SDK,
-including any intellectual property rights that subsist in those applications.
-</p>
-<p>
+including any intellectual property rights that subsist in those applications.
+</p>
+<p>
4.2 You agree to use the SDK and write applications only for purposes that are permitted by
(a) this License Agreement and (b) any applicable law, regulation or generally accepted practices or
guidelines in the relevant jurisdictions (including any laws regarding the export of data or
software to and from the United States or other relevant countries).
-</p>
-<p>
+</p>
+<p>
4.3 You agree that if you use the SDK to develop applications for general public users, you
will protect the privacy and legal rights of those users. If the users provide you with user names,
passwords, or other login information or personal information, your must make the users aware that
@@ -112,53 +129,53 @@
provided by users, it must do so securely. If the user provides your application with Google Account
information, your application may only use that information to access the user's Google Account
when, and for the limited purposes for which, the user has given you permission to do so.
-</p>
-<p>
+</p>
+<p>
4.4 You agree that you will not engage in any activity with the SDK, including the
development or distribution of an application, that interferes with, disrupts, damages, or accesses
in an unauthorized manner the servers, networks, or other properties or services of any third party
including, but not limited to, Google or any mobile communications carrier.
-</p>
-<p>
+</p>
+<p>
4.5 You agree that you are solely responsible for (and that Google has no responsibility to
you or to any third party for) any data, content, or resources that you create, transmit or display
through the Android platform and/or applications for the Android platform, and for the consequences
of your actions (including any loss or damage which Google may suffer) by doing so.
-</p>
-<p>
+</p>
+<p>
4.6 You agree that you are solely responsible for (and that Google has no responsibility to
you or to any third party for) any breach of your obligations under this License Agreement, any
applicable third party contract or Terms of Service, or any applicable law or regulation, and for
the consequences (including any loss or damage which Google or any third party may suffer) of any
such breach.
-</p>
-<h2>
+</p>
+<h2>
5. Your Developer Credentials
-</h2>
-<p>
+</h2>
+<p>
5.1 You agree that you are responsible for maintaining the confidentiality of any developer
credentials that may be issued to you by Google or which you may choose yourself and that you will
be solely responsible for all applications that are developed under your developer credentials.
-</p>
-<h2>
+</p>
+<h2>
6. Privacy and Information
-</h2>
-<p>
+</h2>
+<p>
6.1 In order to continually innovate and improve the SDK, Google may collect certain usage
statistics from the software including but not limited to a unique identifier, associated IP
address, version number of the software, and information on which tools and/or services in the SDK
are being used and how they are being used. Before any of this information is collected, the SDK
will notify you and seek your consent. If you withhold consent, the information will not be
collected.
-</p>
-<p>
+</p>
+<p>
6.2 The data collected is examined in the aggregate to improve the SDK and is maintained in
accordance with Google's Privacy Policy.
-</p>
-<h2>
+</p>
+<h2>
7. Third Party Applications for the Android Platform
-</h2>
-<p>
+</h2>
+<p>
7.1 If you use the SDK to run applications developed by a third party or that access data,
content or resources provided by a third party, you agree that Google is not responsible for those
applications, data, content, or resources. You understand that all data, content or resources which
@@ -166,108 +183,108 @@
which they originated and that Google is not liable for any loss or damage that you may experience
as a result of the use or access of any of those third party applications, data, content, or
resources.
-</p>
-<p>
+</p>
+<p>
7.2 You should be aware the data, content, and resources presented to you through such a
third party application may be protected by intellectual property rights which are owned by the
providers (or by other persons or companies on their behalf). You may not modify, rent, lease, loan,
sell, distribute or create derivative works based on these data, content, or resources (either in
whole or in part) unless you have been specifically given permission to do so by the relevant
owners.
-</p>
-<p>
+</p>
+<p>
7.3 You acknowledge that your use of such third party applications, data, content, or
resources may be subject to separate terms between you and the relevant third party. In that case,
this License Agreement does not affect your legal relationship with these third parties.
-</p>
-<h2>
+</p>
+<h2>
8. Using Android APIs
-</h2>
-<p>
+</h2>
+<p>
8.1 Google Data APIs
-</p>
-<p>
+</p>
+<p>
8.1.1 If you use any API to retrieve data from Google, you acknowledge that the data may be
protected by intellectual property rights which are owned by Google or those parties that provide
the data (or by other persons or companies on their behalf). Your use of any such API may be subject
to additional Terms of Service. You may not modify, rent, lease, loan, sell, distribute or create
derivative works based on this data (either in whole or in part) unless allowed by the relevant
Terms of Service.
-</p>
-<p>
+</p>
+<p>
8.1.2 If you use any API to retrieve a user's data from Google, you acknowledge and agree
that you shall retrieve data only with the user's explicit consent and only when, and for the
-limited purposes for which, the user has given you permission to do so.
-
-</p>
-<h2>
+limited purposes for which, the user has given you permission to do so.
+
+</p>
+<h2>
9. Terminating this License Agreement
-</h2>
-<p>
+</h2>
+<p>
9.1 This License Agreement will continue to apply until terminated by either you or Google
as set out below.
-</p>
-<p>
+</p>
+<p>
9.2 If you want to terminate this License Agreement, you may do so by ceasing your use of
the SDK and any relevant developer credentials.
-</p>
-<p>
+</p>
+<p>
9.3 Google may at any time, terminate this License Agreement with you if:
-</p>
-<p>
+</p>
+<p>
(A) you have breached any provision of this License Agreement; or
-</p>
-<p>
+</p>
+<p>
(B) Google is required to do so by law; or
-</p>
-<p>
+</p>
+<p>
(C) the partner with whom Google offered certain parts of SDK (such as APIs) to you has
terminated its relationship with Google or ceased to offer certain parts of the SDK to you; or
-</p>
-<p>
+</p>
+<p>
(D) Google decides to no longer providing the SDK or certain parts of the SDK to users in
the country in which you are resident or from which you use the service, or the provision of the SDK
or certain SDK services to you by Google is, in Google's sole discretion, no longer commercially
viable.
-</p>
-<p>
+</p>
+<p>
9.4 When this License Agreement comes to an end, all of the legal rights, obligations and
liabilities that you and Google have benefited from, been subject to (or which have accrued over
time whilst this License Agreement has been in force) or which are expressed to continue
indefinitely, shall be unaffected by this cessation, and the provisions of paragraph 14.7 shall
continue to apply to such rights, obligations and liabilities indefinitely.
-</p>
-<h2>
+</p>
+<h2>
10. DISCLAIMER OF WARRANTIES
-</h2>
-<p>
+</h2>
+<p>
10.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT YOUR USE OF THE SDK IS AT YOUR SOLE RISK AND
THAT THE SDK IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTY OF ANY KIND FROM GOOGLE.
-</p>
-<p>
+</p>
+<p>
10.2 YOUR USE OF THE SDK AND ANY MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE
OF THE SDK IS AT YOUR OWN DISCRETION AND RISK AND YOU ARE SOLELY RESPONSIBLE FOR ANY DAMAGE TO YOUR
COMPUTER SYSTEM OR OTHER DEVICE OR LOSS OF DATA THAT RESULTS FROM SUCH USE.
-</p>
-<p>
+</p>
+<p>
10.3 GOOGLE FURTHER EXPRESSLY DISCLAIMS ALL WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES AND CONDITIONS OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-</p>
-<h2>
+</p>
+<h2>
11. LIMITATION OF LIABILITY
-</h2>
-<p>
+</h2>
+<p>
11.1 YOU EXPRESSLY UNDERSTAND AND AGREE THAT GOOGLE, ITS SUBSIDIARIES AND AFFILIATES, AND
ITS LICENSORS SHALL NOT BE LIABLE TO YOU UNDER ANY THEORY OF LIABILITY FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL CONSEQUENTIAL OR EXEMPLARY DAMAGES THAT MAY BE INCURRED BY YOU, INCLUDING ANY
LOSS OF DATA, WHETHER OR NOT GOOGLE OR ITS REPRESENTATIVES HAVE BEEN ADVISED OF OR SHOULD HAVE BEEN
AWARE OF THE POSSIBILITY OF ANY SUCH LOSSES ARISING.
-</p>
-<h2>
+</p>
+<h2>
12. Indemnification
-</h2>
-<p>
+</h2>
+<p>
12.1 To the maximum extent permitted by law, you agree to defend, indemnify and hold
harmless Google, its affiliates and their respective directors, officers, employees and agents from
and against any and all claims, actions, suits or proceedings, as well as any and all losses,
@@ -276,62 +293,62 @@
copyright, trademark, trade secret, trade dress, patent or other intellectual property right of any
person or defames any person or violates their rights of publicity or privacy, and (c) any
non-compliance by you with this License Agreement.
-</p>
-<h2>
+</p>
+<h2>
13. Changes to the License Agreement
-</h2>
-<p>
+</h2>
+<p>
13.1 Google may make changes to the License Agreement as it distributes new versions of the
SDK. When these changes are made, Google will make a new version of the License Agreement available
on the website where the SDK is made available.
-</p>
-<h2>
+</p>
+<h2>
14. General Legal Terms
-</h2>
-<p>
+</h2>
+<p>
14.1 This License Agreement constitute the whole legal agreement between you and Google and
govern your use of the SDK (excluding any services which Google may provide to you under a separate
written agreement), and completely replace any prior agreements between you and Google in relation
to the SDK.
-</p>
-<p>
+</p>
+<p>
14.2 You agree that if Google does not exercise or enforce any legal right or remedy which
is contained in this License Agreement (or which Google has the benefit of under any applicable
law), this will not be taken to be a formal waiver of Google's rights and that those rights or
remedies will still be available to Google.
-</p>
-<p>
+</p>
+<p>
14.3 If any court of law, having the jurisdiction to decide on this matter, rules that any
provision of this License Agreement is invalid, then that provision will be removed from this
License Agreement without affecting the rest of this License Agreement. The remaining provisions of
this License Agreement will continue to be valid and enforceable.
-</p>
-<p>
+</p>
+<p>
14.4 You acknowledge and agree that each member of the group of companies of which Google is
the parent shall be third party beneficiaries to this License Agreement and that such other
companies shall be entitled to directly enforce, and rely upon, any provision of this License
Agreement that confers a benefit on (or rights in favor of) them. Other than this, no other person
or company shall be third party beneficiaries to this License Agreement.
-</p>
-<p>
+</p>
+<p>
14.5 EXPORT RESTRICTIONS. THE SDK IS SUBJECT TO UNITED STATES EXPORT LAWS AND REGULATIONS.
YOU MUST COMPLY WITH ALL DOMESTIC AND INTERNATIONAL EXPORT LAWS AND REGULATIONS THAT APPLY TO THE
SDK. THESE LAWS INCLUDE RESTRICTIONS ON DESTINATIONS, END USERS AND END USE.
-</p>
-<p>
+</p>
+<p>
14.6 The rights granted in this License Agreement may not be assigned or transferred by
either you or Google without the prior written approval of the other party. Neither you nor Google
shall be permitted to delegate their responsibilities or obligations under this License Agreement
without the prior written approval of the other party.
-</p>
-<p>
+</p>
+<p>
14.7 This License Agreement, and your relationship with Google under this License Agreement,
shall be governed by the laws of the State of California without regard to its conflict of laws
provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located
within the county of Santa Clara, California to resolve any legal matter arising from this License
Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for
injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-</p>
-<p>
- <em>April 10, 2009</em>
-</p>
\ No newline at end of file
+</p>
+<p>
+ <em>November 20, 2015</em>
+</p>
\ No newline at end of file
diff --git a/docs/html/sdk/win-usb.jd b/docs/html/sdk/win-usb.jd
index c287a0c..cb3e7bd 100644
--- a/docs/html/sdk/win-usb.jd
+++ b/docs/html/sdk/win-usb.jd
@@ -23,7 +23,9 @@
1.2 "Android" means the Android software stack for devices, as made available under the Android Open Source Project, which is located at the following URL: http://source.android.com/, as updated from time to time.
-1.3 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
+1.3 A "compatible implementation" means any Android device that (i) complies with the Android Compatibility Definition document, which can be found at the Android compatibility website (http://source.android.com/compatibility) and which may be updated from time to time; and (ii) successfully passes the Android Compatibility Test Suite (CTS).
+
+1.4 "Google" means Google Inc., a Delaware corporation with principal place of business at 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
<h3>2. Accepting this License Agreement</h3>
@@ -37,13 +39,13 @@
<h3>3. SDK License from Google</h3>
-3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable and non-exclusive license to use the SDK solely to develop applications to run on the Android platform.
+3.1 Subject to the terms of this License Agreement, Google grants you a limited, worldwide, royalty-free, non-assignable, non-exclusive and non-sublicensable license to use the SDK solely to develop applications to run on the Android platform.
-3.2 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
+3.2 You may not use this SDK to develop applications for other platforms (including non-compatible implementations of Android) or to develop another SDK. You are of course free to develop applications for other platforms, including non-compatible implementations of Android, provided that this SDK is not used for that purpose.
-3.3 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
+3.3 You agree that Google or third parties own all legal right, title and interest in and to the SDK, including any Intellectual Property Rights that subsist in the SDK. "Intellectual Property Rights" means any and all rights under patent law, copyright law, trade secret law, trademark law, and any and all other proprietary rights. Google reserves all rights not expressly granted to you.
-3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.
+3.4 You may not use the SDK for any purpose not expressly permitted by this License Agreement. Except to the extent required by applicable third party licenses, you may not: (a) copy (except for backup purposes), modify, adapt, redistribute, decompile, reverse engineer, disassemble, or create derivative works of the SDK or any part of the SDK; or (b) load any part of the SDK onto a mobile handset or any other hardware device except a personal computer, combine any part of the SDK with other software, or distribute any software or device incorporating a part of the SDK.
3.5 Use, reproduction and distribution of components of the SDK licensed under an open source software license are governed solely by the terms of that open source software license and not this License Agreement.
@@ -144,7 +146,7 @@
14.7 This License Agreement, and your relationship with Google under this License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from this License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
-<em>November 13, 2012</em>
+<em>November 20, 2015</em>
</div><!-- thin wrapper around tos doc -->
diff --git a/docs/html/tools/help/theme-editor.jd b/docs/html/tools/help/theme-editor.jd
new file mode 100644
index 0000000..19f765f
--- /dev/null
+++ b/docs/html/tools/help/theme-editor.jd
@@ -0,0 +1,166 @@
+page.title=Theme Editor
+parent.title=Tools
+parent.link=index.html
+page.tags=theme
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+ <h2>In this document</h2>
+<ol>
+ <li><a href="#basics">Theme Editor Basics</a></li>
+ <li><a href="#themes">Themes and Colors</a></li>
+ <li><a href="#device">Device-Specific Configurations</a></li>
+</ol>
+
+
+ <h2>Dependencies and Prerequisites</h2>
+ <ul>
+ <li>Android Studio 1.4.1 or higher</li>
+ </ul>
+
+</div>
+</div>
+
+<p>
+The Theme Editor is a visual assistant that helps you:
+</p>
+ <li>Create and modify
+<a href="{@docRoot}guide/topics/ui/themes.html">
+themes</a> for your app.</li>
+ <li>Adjust themes for different resource classifiers.</li>
+ <li>Visualize the effect of color changes on common UI elements.</li>
+
+<p>
+This page introduces the fundamental tasks that you can perform with the Theme
+Editor, and explains how to do so.
+</p>
+
+
+<h2 id="basics">Theme Editor Basics</h2>
+
+<p>
+This section describes how to access the Theme Editor, and how it is laid out.
+</p>
+
+<h3>Accessing the Theme Editor</h3>
+
+<p>There are two ways to open the Theme Editor:</p>
+
+<li>From an open {@code styles.xml} file, click <strong>Open editor</strong> near the top-right
+of the file window.</li>
+
+<li>From the <strong>Tools</strong> menu, select <strong>Android</strong> >
+<strong>Theme Editor</strong>.</p>
+
+<h3 id="layout">Navigating the Theme Editor</h3>
+<p>
+The Theme Editor's main screen is divided into two sections. The left side of the editor
+shows what specific UI elements, such as the app bar or a raised button, look like
+when you apply the current theme to them. The right side of the editor displays
+the settings for the color resources, such as <strong>Theme parent</strong> and
+<strong>colorPrimary</strong>, that comprise the current theme. You can modify design
+themes by changing these resource settings.
+</p>
+
+<h2 id="themes">Themes and Colors</h2>
+
+<p>
+The Theme Editor allows you to create new themes, modify existing ones, and manage the
+colors that make up the themes.
+</p>
+
+<h3 id="create">Creating New Themes</h3>
+
+<p>
+To create a theme, follow these steps:
+</p>
+ <ol>
+ <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
+side of the Theme Editor.</li>
+ <li>Select <strong>Create New Theme</strong>. The <em>New Theme</em> dialog appears.</li>
+ <li>Enter a name for the new theme.</li>
+ <li>In the <em>Parent theme name:</em> field, select the parent from which the theme
+ inherits initial resources.</li>
+ </ol>
+
+<h3 id="rename">Renaming Themes</h3>
+
+<p>
+To rename a theme, perform the following steps:
+</p>
+ <ol>
+ <li>Open the <strong>Theme</strong> dropdown menu near the top of the right
+side of the Theme Editor.</li>
+ <li>Select <strong>Rename AppTheme</strong>. The <em>Rename</em> dialog appears.</li>
+ <li>Enter a new name for the theme.</li>
+ <li>(optional) To see how the changes will look, click <strong>Preview</strong>.</li>
+ <li>To apply the changes, click <strong>Refactor</strong>.</li>
+ </ol>
+
+<h3 id="changing">Changing Color Resources</h3>
+
+<p>To change an existing color resource, such as <strong>colorPrimary</strong>,
+follow these steps:
+</p>
+<ol>
+<li>Click the colored square next to the name of the resource you want to change.
+The <em>Resources</em> dialog appears, containing a color picker, material-color
+palette, and other settings and information.</li>
+<li>Change the color, opacity, and name of a theme's resources as desired.</p>
+<li>To ensure that your theme uses a color from the material
+palette, click <strong>CLOSEST MATERIAL COLOR</strong>, located next to <em>Custom
+color</em>. Android Studio changes the color you picked to the material color most like it,
+and replaces <em>Custom color</em> with the name of the color from the material palette.</li>
+</ol>
+
+<p>You can also directly select colors from the material palette, which the editor displays
+as two rows of colored squares beneath the color picker.</p>
+
+<h3 id="viewing">Viewing State Lists and Colors</h3>
+
+<p>
+The Theme Editor allows you to preview
+<a href="{@docRoot}guide/topics/resources/color-list-resource.html">
+colors associated with different states.</a> To do so, open the <em>Resource</em> dialog, and click
+the <em>State List</em> tab that appears at the top of the dialog.</p>
+
+<p>
+To more fully control the states themselves, you can directly view and edit their
+properties in the XML file,
+such as {@code colors.xml}, that defines them. For more information, see the
+documentation for the {@link android.content.res.ColorStateList} class.
+</p>
+
+<h2 id="device">Device-Specific Configurations</h2>
+
+<p>
+You can choose
+<a href="{@docRoot}guide/topics/resources/providing-resources.html#Compatibility">
+device-specific</a> configurations for your app to support. Perform
+the following steps to do so:
+</p>
+
+<ol>
+<li>Click the triangle next to <em>Location</em>, near the bottom of the <a href="#changing">
+<em>Resources</em></a> dialog. The <em>Location</em> section expands, revealing
+the name of the XML file containing the
+resource, as well as a list of configuration-specific directories in which to
+place that file.</li>
+<li>If necessary, change the XML file name.</li>
+<li>Check the boxes next to the directories corresponding to the
+device-specific configurations you wish to support. Any configuration
+for which you do not specify a directory defaults to using the
+{@code values} directory.</li>
+</ol>
+
+<p>For more information about the relationship
+between directory names and configurations, see
+<a href="{@docRoot}guide/practices/screens_support.html#ConfigurationExamples">
+Supporting Multiple Screens</a>. For more information about
+supported directory names, see
+<a href="{@docRoot}guide/topics/resources/providing-resources.html#ResourceTypes">
+Providing Resources</a>.
+</p>
+
+
diff --git a/docs/html/tools/help/vector-asset-studio.jd b/docs/html/tools/help/vector-asset-studio.jd
index 58e53cc..491a699 100644
--- a/docs/html/tools/help/vector-asset-studio.jd
+++ b/docs/html/tools/help/vector-asset-studio.jd
@@ -34,7 +34,7 @@
<h2>Dependencies and Prerequisites</h2>
<ul>
- <li>Gradle 1.4.0 or higher</li>
+ <li><a href="{@docRoot}tools/building/plugin-for-gradle.html">Android Plugin for Gradle</a> 1.5.0 or higher</li>
</ul>
</div>
@@ -98,7 +98,8 @@
project; also, at build time, Gradle creates Portable Network Graphic (PNG) raster images at various
resolutions. Gradle generates the PNG densities specified by the Domain Specific Language (DSL)
<a href="http://google.github.io/android-gradle-dsl/1.4/com.android.build.gradle.internal.dsl.ProductFlavor.html#com.android.build.gradle.internal.dsl.ProductFlavor:generatedDensities" class="external-link">generatedDensities</a> property
-in a <code>build.gradle</code> file. To generate PNGs, the build system requires Gradle 1.4.0 or higher.</p>
+in a <code>build.gradle</code> file. To generate PNGs, the build system requires Android
+Plugin for Gradle 1.5.0 or higher.</p>
<p>For Android 5.0 (API level 21) and higher, Vector Asset Studio supports all of the {@link
android.graphics.drawable.VectorDrawable} elements. For backward compatibility with Android 4.4 (API
@@ -106,7 +107,7 @@
<div class="wrap">
<div class="cols">
- <div class="col-1of2">
+ <div class="col-1of3">
<p><code><vector></code></p>
<ul>
@@ -119,8 +120,23 @@
</div>
+<div class="col-1of3">
-<div class="col-1of2">
+<p><code><group></code></p>
+<ul>
+ <li><code>android:rotation</code></li>
+ <li><code>android:pivotX</code></li>
+ <li><code>android:pivotY</code></li>
+ <li><code>android:scaleX</code></li>
+ <li><code>android:scaleY</code></li>
+ <li><code>android:translateX</code></li>
+ <li><code>android:translateY</code></li>
+</ul>
+
+</div>
+
+
+<div class="col-1of3">
<p><code><path></code></p>
<ul>
@@ -130,6 +146,9 @@
<li><code>android:strokeWidth</code></li>
<li><code>android:strokeAlpha</code></li>
<li><code>android:fillAlpha</code></li>
+ <li><code>android:strokeLineCap</code></li>
+ <li><code>android:strokeLineJoin</code></li>
+ <li><code>android:strokeMiterLimit</code></li>
</ul>
</div>
@@ -163,12 +182,12 @@
<p>Vector Asset Studio appears.</p>
<img src="{@docRoot}images/tools/vas-materialicon.png" />
<li>If a <em>Need newer Android plugin for Gradle</em> dialog appears instead, correct
- your Gradle version as follows.</li>
+ your Gradle version as follows:</li>
<ol type="a">
<li>Select <strong>File</strong> > <strong>Project Structure</strong>.</li>
<li>In the <em>Project Structure</em> dialog, select <strong>Project</strong>.</li>
- <li>In the <strong>Android Plugin Version</strong> field, change the Gradle version to
- <strong>1.4.0</strong> or higher, and click <strong>OK</strong>.</li>
+ <li>In the <strong>Android Plugin Version</strong> field, change the Android Plugin for Gradle
+ version to <strong>1.5.0</strong> or higher, and click <strong>OK</strong>.</li>
<p>Gradle syncs the project.</p>
<li>In the <a href="{@docRoot}sdk/installing/create-project.html#ProjectView">Android view</a>
of the <em>Project</em> window, right-click the <strong>res</strong> folder and select
@@ -480,7 +499,7 @@
<ul>
<li>Create one APK that includes both the vector images and the corresponding raster
- representations. This is the easiest solution.</li>
+ representations. This solution is the simplest to implement.</li>
<li>Create separate APKs for different API levels. When you don’t include the corresponding
raster images in the APK for Android 5.0 (API level 21) and higher, the APK can be much smaller in
size. For more information, see <a href="{@docRoot}google/play/publishing/multiple-apks.html">Multiple APK Support</a>.</li>
diff --git a/docs/html/tools/revisions/build-tools.jd b/docs/html/tools/revisions/build-tools.jd
old mode 100644
new mode 100755
index 1912bb2..2202649
--- a/docs/html/tools/revisions/build-tools.jd
+++ b/docs/html/tools/revisions/build-tools.jd
@@ -26,31 +26,7 @@
<p>To use a specific version of the Build Tools in your application project:</p>
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
- />Using Eclipse</a></p>
- <div class="toggle-content-toggleme">
- <ol>
- <li>In the root folder of your application project, find the {@code project.properties}
- file.</li>
- <li>Open the file and specify the Build Tools version by adding a {@code buildtools} property
- on a separate line:
-<pre>
-sdk.buildtools=17.0.0
-</pre>
- </li>
- </ol>
- </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
- />Using Android Studio</a></p>
-
- <div class="toggle-content-toggleme">
<ol>
<li>In the root folder of your application project, find the {@code build.gradle}
file.</li>
@@ -65,8 +41,6 @@
</pre>
</li>
</ol>
- </div>
-</div>
<h2 id="notes">Revisions</h2>
@@ -78,6 +52,30 @@
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>Build Tools, Revision 23.0.2</a> <em>(November 2015)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+ <ul>
+ <li>Improved the merging performance of the <code>dx</code> tool.</li>
+ <li>Fixed issues in the <a href="{@docRoot}guide/topics/renderscript/compute.html">RenderScript</a>
+ compiler for Windows.</li>
+ </ul>
+ </div>
+</div>
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+ alt=""/>Build Tools, Revision 23.0.1</a> <em>(October 2015)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+ <p>Fixed issues in the RenderScript tools.</p>
+ </div>
+</div>
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>Build Tools, Revision 23.0.0</a> <em>(August 2015)</em>
</p>
<div class="toggle-content-toggleme">
diff --git a/docs/html/tools/revisions/gradle-plugin.jd b/docs/html/tools/revisions/gradle-plugin.jd
index 0477603..b7d7630 100644
--- a/docs/html/tools/revisions/gradle-plugin.jd
+++ b/docs/html/tools/revisions/gradle-plugin.jd
@@ -36,10 +36,105 @@
<p>For a summary of known issues in Android Plugin for Gradle, see <a
href="http://tools.android.com/knownissues">http://tools.android.com/knownissues</a>.</p>
-
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>Android Plugin for Gradle, Revision 1.5.0</a> <em>(November 2015)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+
+ <dl>
+ <dt>Dependencies:</dt>
+
+ <dd>
+ <ul>
+ <li>Gradle 2.2.1 or higher.</li>
+ <li>Build Tools 21.1.1 or higher.</li>
+ </ul>
+ </dd>
+
+ <dt>General Notes:</dt>
+ <dd>
+ <ul>
+ <li>Integrated the Data Binding Plugin into the Android Plugin for Gradle. To enable it, add
+ the following code to each per-project <code>build.gradle</code> file that uses the
+ plugin:</li>
+<pre>
+android {
+ dataBinding {
+ enabled = true
+ }
+}
+</pre>
+ <li>Added a new <a href="http://google.github.io/android-gradle-dsl/javadoc/1.5/" class="external-link">Transform API</a>
+ to allow third-party plugins to manipulate compiled <code>.class</code> files before they’re
+ converted to <code>.dex</code> files. The Transform API simplifies injecting custom class
+ manipulations while offering more flexibility regarding what you can manipulate. To insert a
+ transform into a build, create a new class implementing one of the <code>Transform</code>
+ interfaces, and register it with <code>android.registerTransform(theTransform)</code> or
+ <code>android.registerTransform(theTransform, dependencies)</code>. There’s no need to
+ wire tasks together. Note the following about the Transform API:</li>
+ <ul>
+ <li>A transform can apply to one or more of the following: the current project, subprojects,
+ and external libraries.</li>
+ <li>A transform must be registered globally, which applies them to all variants.</li>
+ <li>Internal code processing, through the Java Code Coverage Library (JaCoCo), ProGuard,
+ and MultiDex, now uses the Transform API. However, the Java Android Compiler Kit
+ (Jack) doesn’t use this API: only the <code>javac/dx</code> code path does.</li>
+ <li>Gradle executes the transforms in this order: JaCoCo, third-party plugins, ProGuard.
+ The execution order for third-party plugins matches the order in which the transforms are
+ added by the third party plugins; third-party plugin developers can't control the execution
+ order of the transforms through an API.</li>
+ </ul>
+ <li>Deprecated the <code>dex</code> getter from the <code>ApplicationVariant</code> class.
+ You can't access the <code>Dex</code> task through the variant API anymore because it’s now
+ accomplished through a transform. There's
+ currently no replacement for controlling the dex process.</li>
+ <li>Fixed incremental support for assets.</li>
+ <li>Improved MultiDex support by making it available for test projects, and
+ tests now automatically have the <code>com.android.support:multidex-instrumentation</code>
+ dependency.</li>
+ <li>Added the ability to properly fail a Gradle build and report the underlying error cause
+ when the Gradle build invokes asynchronous tasks and there’s a failure in the worker
+ process.</li>
+ <li>Added support for configuring a specific Application Binary Interface (ABI) in variants
+ that contain multiple ABIs.</li>
+ <li>Added support for a comma-separated list of device serial numbers for the
+ <code>ANDROID_SERIAL</code> environment variable when installing or running tests.</li>
+ <li>Fixed an installation failure on devices running Android 5.0 (API level 20) and higher
+ when the APK name contains a space.</li>
+ <li>Fixed various issues related to the Android Asset Packaging Tool (AAPT) error output.</li>
+ <li>Added JaCoCo incremental instrumentation support for faster incremental builds. The
+ Android Plugin for Gradle now invokes the JaCoCo instrumenter directly. To force a newer
+ version of the JaCoCo instrumenter, you need to add it as a build script dependency.</li>
+ <li>Fixed JaCoCo support so it ignores files that aren’t classes.</li>
+ <li>Added vector drawable support for generating PNGs at build time for backward-compatibility.
+ Android Plugin for Gradle generates PNGs for every vector drawable found in a resource
+ directory that doesn’t specify an API version or specifies an
+ <code>android:minSdkVersion</code> attribute of 20 or lower in the
+ <code><uses-sdk></code> element in the app manifest. You can set PNG densities by
+ using the <code>generatedDensities</code> property in the <code>defaultConfig</code> or
+ <code>productFlavor</code> sections of a <code>build.gradle</code> file.</li>
+ <li>Added sharing of the mockable <code>android.jar</code>, which the plugin generates only
+ once and uses for unit testing. Multiple modules, such as <code>app</code> and
+ <code>lib</code>, now share it. Delete <code>$rootDir/build</code> to regenerate it. </li>
+ <li>Changed the processing of Java resources to occur before the obfuscation tasks instead of
+ during the packaging of the APK. This change allows the obfuscation tasks to have a chance
+ to adapt the Java resources following packages obfuscation.</li>
+ <li>Fixed an issue with using Java Native Interface (JNI) code in the experimental library
+ plugin.</li>
+ <li>Added the ability to set the platform version separately from the
+ <code>android:compileSdkVersion</code> attribute in the experimental library
+ plugin.</li>
+ </ul>
+ </dd>
+ </div>
+</div>
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>Android Plugin for Gradle, Revision 1.3.1</a> <em>(August 2015)</em>
</p>
@@ -62,7 +157,7 @@
consume the output of the previous task when using a customized filename. </li>
<li>Fixed <a href="{@docRoot}guide/topics/renderscript/compute.html">Renderscript</a>
packaging with the <a href="{@docRoot}tools/sdk/ndk/index.html">NDK</a>. </li>
- <li>Maintained support for the <code>createDebugCoverageReport</code> build task. </li>
+ <li>Maintained support for the <code>createDebugCoverageReport</code> build task. </li>
<li>Fixed support for customized use of the <code>archiveBaseName</code> property
in the <code>build.gradle</code> build> file. </li>
<li>Fixed the <code>Invalid ResourceType</code>
diff --git a/docs/html/tools/revisions/platforms.jd b/docs/html/tools/revisions/platforms.jd
index 61bfcbb..a054da5 100644
--- a/docs/html/tools/revisions/platforms.jd
+++ b/docs/html/tools/revisions/platforms.jd
@@ -26,7 +26,7 @@
version, instead read the highlights in the <a href="{@docRoot}about/index.html">About</a>
section.</p>
-<p>In order to compile your application against a particular version of Android, you must use the
+<p>To compile your application against a particular version of Android, you must use the
<a href="{@docRoot}tools/help/sdk-manager.html">SDK Manager</a> to download and install the SDK
Platform for that release. If you want to test your application on an emulator, you must also
download at least one System Image for that Android version.</p>
@@ -59,6 +59,24 @@
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png"
+class="toggle-content-img" alt="" />Revision 2</a> <em>(November 2015)</em>
+ </p>
+
+ <div class="toggle-content-toggleme">
+
+ <p>Fixed bugs in the layout rendering library used by Android Studio.</p>
+ <p>Dependencies:</p>
+ <ul>
+ <li>Android SDK Platform-tools r23 or higher is required.</li>
+ <li>Android SDK Tools 24.3.4 or higher is required.</li>
+ </ul>
+ </div>
+
+</div>
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png"
class="toggle-content-img" alt="" />Revision 1</a> <em>(August 2015)</em>
</p>
diff --git a/docs/html/tools/revisions/studio.jd b/docs/html/tools/revisions/studio.jd
index e2de5b9..f7353c6 100644
--- a/docs/html/tools/revisions/studio.jd
+++ b/docs/html/tools/revisions/studio.jd
@@ -42,6 +42,90 @@
<div class="toggle-content opened">
<p><a href="#" onclick="return toggleContent(this)">
<img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img"
+ alt=""/>Android Studio v1.5.1</a> <em>(December 2015)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+ <p>Fixes and enhancements:</p>
+ <ul>
+ <li>Fixed a rendering failure issue in the Layout Editor.
+ <a href="http://b.android.com/194612">Issue: 194612</a> </li>
+ <li>Added the ability to vary <code>description</code> manifest attributes by configuration.
+ <a href="http://b.android.com/194705">Issue: 194705</a>
+ </li>
+ <li>Improved the contrast of the Android Studio Darcula appearance theme in Vector Asset Studio.
+ <a href="http://b.android.com/191819">Issue: 191819</a>
+ </li>
+ <li>Added <em>Help</em> button support to Vector Asset Studio.
+ </li>
+ <li>Added support for the <code>%</code> operator for data binding. <a href="http://b.android.com/194045">Issue: 194045</a>
+ </li>
+ <li>Fixed a case where launching an app for debugging resulted in the debugger connecting to the
+ wrong device. <a href="http://b.android.com/195167">Issue: 195167</a>
+ </li>
+ <li>Fixed a null pointer exception that could occur when attempting to run an app in
+ certain scenarios.
+ </li>
+ </ul>
+ </div>
+</div>
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
+ alt=""/>Android Studio v1.5.0</a> <em>(November 2015)</em>
+ </p>
+ <div class="toggle-content-toggleme">
+ <p>Fixes and enhancements:</p>
+ <ul>
+ <li>Added new Memory Monitor analysis abilities to Android Monitor. When you view an HPROF file
+ captured from this monitor, the display is now more helpful so you can more quickly locate
+ problems, such as memory leaks. To use this monitor, click <strong>Android Monitor</strong> at
+ the bottom of the main window. In Android Monitor, click the <strong>Memory</strong> tab. While
+ the monitor is running, click the <strong>Dump Java Heap</strong> icon, and then click
+ <strong>Captures</strong> in the main window and double-click the file to view it. Click
+ <em>Capture Analysis</em> on the right. (The
+ Android Device Monitor can't be running at the same time as Android Monitor.)</li>
+ <li>Added new deep link and app link support. The Code Editor can automatically create an
+ intent filter for deep linking in the <code>AndroidManifest.xml</code> file. It can also
+ generate code to help you integrate with the
+ <a href="http://developers.google.com/app-indexing/android/publish" class="external-link">App Indexing API</a>
+ in an activity in a Java file. A deep link testing feature
+ helps you verify that a specified deep link can launch an app. In the <strong>General</strong>
+ tab of the <em>Run/Debug Configurations</em> dialog, you can specify deep link launch
+ options. You can also test App Indexing API calls in an activity by using the Android Monitor
+ <strong>logcat</strong> display. The Android <code>lint</code> tool now has warnings for
+ certain issues involving deep links and the App Indexing API.
+ </li>
+ <li>Added the ability to use short names when code-completing custom views in the Code Editor.
+ </li>
+ <li>Added support for more {@link android.graphics.drawable.VectorDrawable} elements to
+ <a href="{@docRoot}tools/help/vector-asset-studio.html">Vector Asset Studio</a>
+ for backward-compatibility. Vector Asset Studio can use these elements to convert vector
+ drawables into PNG raster images to use with Android 4.4 (API level 20) and lower.
+ </li>
+ <li>Added new <code>lint</code> checks for Android TV and Android Auto to give you
+ immediate, actionable feedback in Android Studio, along with several quick fixes. For example,
+ for Android TV, it can report and provide a quick fix for permissions, unsupported hardware,
+ <code>uses-feature</code> element, and missing banner issues. For Android Auto, it can
+ validate the correct usage in the descriptor file referred from your
+ <code>AndroidManifest.xml</code> file, report if there isn't an intent filter for the
+ <code>MediaBrowserService</code> class, and identify certain voice actions issues.
+ </li>
+ <li>Added new <code>lint</code> checks for insecure broadcast receivers,
+ <code>SSLCertificateSocketFactory</code> and <code>HostnameVerifier</code> class uses, and
+ <code>File.setReadable()</code> and <code>File.setWritable()</code> calls. It also detects
+ invalid manifest resource lookups, especially for resources that vary by configuration.
+ </li>
+ <li>Fixed a number of stability issues.
+ </li>
+ </ul>
+ </div>
+</div>
+
+
+<div class="toggle-content closed">
+ <p><a href="#" onclick="return toggleContent(this)">
+ <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img"
alt=""/>Android Studio v1.4.1</a> <em>(October 2015)</em>
</p>
<div class="toggle-content-toggleme">
@@ -72,7 +156,7 @@
<a href="http://b.android.com/187665">Issue: 187665</a>
</li>
</ul>
- </div>
+</div>
</div>
diff --git a/docs/html/tools/support-library/setup.jd b/docs/html/tools/support-library/setup.jd
old mode 100644
new mode 100755
index 8112071..8fbcee1
--- a/docs/html/tools/support-library/setup.jd
+++ b/docs/html/tools/support-library/setup.jd
@@ -104,31 +104,6 @@
<p>To add a Support Library without resources to your application project:</p>
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
- />Using Eclipse</a></p>
-
- <div class="toggle-content-toggleme">
- <ol>
- <li>Make sure you have downloaded the <strong>Android Support Library</strong>
- using the <a href="#download">SDK Manager</a>.</li>
- <li>Create a {@code libs/} directory in the root of your application project.</li>
- <li>Copy the JAR file from your Android SDK installation directory (e.g.,
- {@code <sdk>/extras/android/support/v4/android-support-v4.jar}) into your
- application's project {@code libs/} directory.
- <li>Right click the JAR file and select <strong>Build Path > Add to Build Path</strong>.
- </li>
- </ol>
- </div>
-</div>
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
- />Using Android Studio</a></p>
-
- <div class="toggle-content-toggleme">
<ol>
<li>Make sure you have downloaded the <strong>Android Support Repository</strong>
using the <a href="#download">SDK Manager</a>.</li>
@@ -143,8 +118,6 @@
</pre>
</li>
</ol>
- </div>
-</div>
<h3 id="libs-with-res">Adding libraries with resources</h3>
@@ -153,77 +126,6 @@
<a href="{@docRoot}tools/support-library/features.html#v7-appcompat">v7
appcompat</a> for action bar) to your application project:</p>
-<div class="toggle-content closed">
- <p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
- />Using Eclipse</a></p>
- <div class="toggle-content-toggleme">
-
-<p>Create a <a href="{@docRoot}tools/projects/index.html#LibraryProjects">library
-project</a> based on the support library code:</p>
-
-<ol>
- <li>Make sure you have downloaded the <strong>Android Support Library</strong>
- using the <a href="#download">SDK Manager</a>.</li>
- <li>Create a library project and ensure the required JAR files are included in the project's
- build path:
- <ol>
- <li>Select <strong>File > Import</strong>.</li>
- <li>Select <strong>Existing Android Code Into Workspace</strong> and click
- <strong>Next</strong>.</li>
- <li>Browse to the SDK installation directory and then to the Support Library folder.
- For example, if you are adding the {@code appcompat} project, browse to
- <code><sdk>/extras/android/support/v7/appcompat/</code>.</li>
- <li>Click <strong>Finish</strong> to import the project. For the v7 appcompat project, you
- should now see a new project titled <em>android-support-v7-appcompat</em>.</li>
- <li>In the new library project, expand the {@code libs/} folder, right-click each {@code .jar}
- file and select <strong>Build Path > Add to Build Path</strong>. For example, when
- creating the the v7 appcompat project, add both the {@code android-support-v4.jar} and
- {@code android-support-v7-appcompat.jar} files to the build path.</li>
- <li>Right-click the library project folder and select <strong>Build Path > Configure
- Build Path</strong>.</li>
- <li>In the <strong>Order and Export</strong> tab, check the <code>.jar</code> files you just
- added to the build path, so they are available to projects that depend on this library
- project. For example, the {@code appcompat} project requires you to export both the
- {@code android-support-v4.jar} and {@code android-support-v7-appcompat.jar} files.</li>
- <li>Uncheck <strong>Android Dependencies</strong>.</li>
- <li>Click <strong>OK</strong> to complete the changes.</li>
- </ol>
- </li>
-</ol>
-
-<p>You now have a library project for your selected Support Library that you can use with one or
- more application projects.</p>
-
-<p>Add the library to your application project:</p>
- <ol>
- <li>In the Project Explorer, right-click your project and select <strong>Properties</strong>.</li>
- <li>In the category panel on the left side of the dialog, select <strong>Android</strong>.</li>
- <li>In the Library pane, click the <strong>Add</strong> button.</li>
- <li>Select the library project and click <strong>OK</strong>. For example, the
- {@code appcompat} project should be listed as <strong>android-support-v7-appcompat</strong>.
- </li>
- <li>In the properties window, click <strong>OK</strong>.</li>
- </ol>
-
-<p class="note">
- <strong>Note:</strong> If you are using the {@code android-support-v7-mediarouter} support
- library, you should note that it depends on the {@code android-support-v7-appcompat} library.
- In order for the v7 mediarouter library to compile, you must import both library projects into
- your development workspace. Then follow the procedure above to add the v7 appcompat project as a
- library to the v7 mediarouter library project.
-</p>
-
- </div>
-</div>
-
-
-<div class="toggle-content closed">
-<p style="margin-top:5px"><a href="#" onclick="return toggleContent(this)">
- <img src="/assets/images/triangle-closed.png" class="toggle-content-img" alt=""
- />Using Android Studio</a></p>
-
- <div class="toggle-content-toggleme">
<ol>
<li>Make sure you have downloaded the <strong>Android Support Repository</strong>
using the <a href="#download">SDK Manager</a>.</li>
@@ -240,8 +142,6 @@
</pre>
</li>
</ol>
- </div>
-</div>
<h2 id="using-apis">Using Support Library APIs</h2>
diff --git a/docs/html/tools/tools_toc.cs b/docs/html/tools/tools_toc.cs
index d183f42..b7595ce 100644
--- a/docs/html/tools/tools_toc.cs
+++ b/docs/html/tools/tools_toc.cs
@@ -174,10 +174,12 @@
<li><a href="<?cs var:toroot ?>tools/help/proguard.html" zh-cn-lang="ProGuard">ProGuard</a></li>
<li><a href="<?cs var:toroot ?>tools/help/sdk-manager.html">SDK Manager</a></li>
<li><a href="<?cs var:toroot ?>tools/help/systrace.html">Systrace</a></li>
+ <li><a href="<?cs var:toroot ?>tools/help/theme-editor.html">Theme Editor</a></li>
<li><a href="<?cs var:toroot ?>tools/help/gltracer.html">Tracer for OpenGL ES</a></li>
<li><a href="<?cs var:toroot ?>tools/help/traceview.html">Traceview</a></li>
<li><a href="<?cs var:toroot ?>tools/help/vector-asset-studio.html">Vector Asset Studio</a></li>
<li><a href="<?cs var:toroot ?>tools/help/zipalign.html">zipalign</a></li>
+
</ul>
</li>
diff --git a/docs/html/training/articles/wear-permissions.jd b/docs/html/training/articles/wear-permissions.jd
new file mode 100644
index 0000000..5f226e4
--- /dev/null
+++ b/docs/html/training/articles/wear-permissions.jd
@@ -0,0 +1,323 @@
+page.title=Requesting Permissions on Android Wear
+page.tags="Permissions"
+
+page.article=true
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>In this document</h2>
+<ol class="nolist">
+ <li><a href="#scenarios">Permission Scenarios</a></li>
+ <li><a href="#requesting">Requesting Permissions</a></li>
+ <li><a href="#services">Permissions for Services</a></li>
+ <li><a href="#settings">Settings</a></li>
+</ol>
+<!-- Required platform, tools, add-ons, devices, knowledge, etc. -->
+<h2>Dependencies and prerequisites</h2>
+<ul>
+ <li><a href="{@docRoot}about/versions/marshmallow/index.html">Android 6.0</a>
+ (API Level 23) or higher on the wearable and accompanying device</li>
+ <li><a href="{@docRoot}google/play-services/index.html">Google Play
+services</a> 8.3 or higher</li>
+ <li>An <a href="{@docRoot}wear/index.html">Android Wear</a> device</li>
+</ul>
+<h2>See also</h2>
+<ul>
+ <li><a href="{@docRoot}guide/topics/security/permissions.html">System Permissions</a></li>
+ <li><a href="{@docRoot}training/permissions/index.html">Working with System Permissions</a></li>
+</ul>
+</div></div>
+
+<p><a href="{@docRoot}about/versions/marshmallow/index.html">Android 6.0</a> (API level 23)
+introduces a new <a href="{@docRoot}training/permissions/requesting.html">permissions model</a>,
+bringing some changes that are specific to Wear, and other changes that apply to all Android-powered
+devices.</p>
+
+<p>The user must now grant permissions to Wear apps separately from the handset versions of the
+apps. Previously, when a user installed a Wear app, it automatically inherited the set of
+permissions that the user had granted to the handset version of the app. However, from Android 6.0
+(API level 23), the Wear app no longer inherits these permissions. Thus, for example,
+a user might grant a handset app permission to use location data, and subsequently
+have to grant the same permission to the Wear version of the app.</p>
+
+<p>For both Wear and handset apps, the Android 6.0 (API level 23) permissions model also
+streamlines app installation and upgrade by eliminating the requirement that the user grant upfront
+every permission an app may ever need. Instead, the app does not request permissions until it
+actually needs them.</p>
+
+<p class="note"><strong>Note: </strong> For an app to use the new permissions model, it must
+specify a value of {@code 23} for both
+<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code uses-sdk-element}</a>
+and <a href="{@docRoot}tools/building/configuring-gradle.html">{@code compileSdkVersion}</a>.</p>
+
+<p>The rest of this document discusses how to use the Android 6.0 (API level 23) permissions model
+when developing Android Wear apps.</p>
+
+<h2 id="scenarios">Permission Scenarios</h2>
+
+<p>Broadly speaking, there are four scenarios you may encounter when requesting
+<a href="{@docRoot}guide/topics/security/permissions.html#normal-dangerous">dangerous permissions</a>
+on Android Wear:</p>
+
+<ul>
+ <li>The <em>Wear app</em> requests permissions for an app running on the <em>wearable</em>
+ device.</li>
+
+ <li>The <em>Wear app</em> requests permissions for an app running on the <em>handset</em>.</li>
+
+ <li>The <em>handset app</em> requests permissions for an app running on the
+ <em>wearable</em> device.</li>
+
+ <li>The wearable app uses a <em>different permission model</em> from its handset counterpart.
+ </li>
+</ul>
+
+<p>The rest of this section explains each of these scenarios. For more detailed information
+about requesting permissions, see <a href="#requesting">Requesting Permissions</a>.</p>
+
+<h3 id="wear-app-wear-perm">Wear app requests permission for an app running on the wearable
+device</h3>
+
+<p>When the Wear app requests a permission for an app running on the wearable device, the system
+displays a dialog to prompt the user for that permission. An app or service can only call the
+{@link android.support.v4.app.ActivityCompat#requestPermissions requestPermissions()}
+method from an activity. If the user interacts with your app
+<a href="#services">via a service</a>, such as
+a watch face, the service must open an activity before requesting the permission.</p>
+
+<p>Your app requests permissions in context when it’s clear why the
+permissions are needed to perform a given operation. If it's obvious that your app requires
+certain permissions, your app can prompt for them on launch. If it may not be so obvious,
+you may choose to provide additional education before prompting for a permission.</p>
+
+<p>If an app or watch face requires more than one permission at a time,
+permission requests appear one after the other.</p>
+
+<img src="{@docRoot}images/training/wear/multiple_permissions.png"
+srcset="{@docRoot}images/training/wear/multiple_permissions.png 1x,
+{@docRoot}images/training/wear/multiple_permissions_2x.png 2x"
+alt="Multiple permission screens, one after another." width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 1.</strong> Permission screens appearing in succession.
+</p>
+
+<p class="note"><strong>Note:</strong> From Android 6.0 (API level 23), Android Wear
+automatically syncs Calendar, Contact, and Location data to the Wear device. As a result, this
+scenario is the applicable one when Wear requests this data.</p>
+
+<h3>Wear app requests handset permission</h3>
+
+<p>When the Wear app requests a handset permission, the
+Wear app must send the user to the handset to accept the permission. There, the handset app can
+provide additional education to the user via an activity. The activity should include two buttons:
+one for granting, and one for denying, the permission.</p>
+
+<img src="{@docRoot}images/training/wear/open_on_phone.png"
+srcset="{@docRoot}images/training/wear/open_on_phone.png 1x,
+{@docRoot}images/training/wear/open_on_phone_2x.png 2x"
+alt="The Wear app sends the user to the handset to grant permission." width="700"
+height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 2.</strong> Sending the user to the handset to grant permission.
+</p>
+<h3>Handset app requests wearable permission</h3>
+
+<p>When the user is in a handset app and the app requires a wearable permission, the
+handset app must send the user to the wearable to accept the permission.
+The handset app uses the
+{@link android.support.v4.app.ActivityCompat#requestPermissions requestPermissions()}
+method on the wearable to trigger the system permissions dialog.</p>
+
+<img src="{@docRoot}images/training/wear/phone_requests_wear.png"
+srcset="{@docRoot}images/training/wear/phone_requests_wear.png 1x,
+{@docRoot}images/training/wear/phone_requests_wear_2x.png 2x"
+alt="The handset app sends the user to the wearable to grant permission."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 3.</strong> Sending the user to the wearable to grant permission.
+</p>
+
+<h3>Mismatching permission models between wearable and handset app</h3>
+
+<p>If your handset app begins using the Android 6.0 (API level 23) model but your
+wearable app does not, the system downloads the Wear app, but does not install it.
+The first time the user launches the app, the system prompts them to grant all pending permissions.
+Once they do so, it installs the app.
+If your app, for example a watch face, does not have a launcher, the system displays a
+stream notification asking the user to grant the permissions the app needs.
+</p>
+
+<h2 id="requesting">Permission-Request Patterns</h2>
+
+<p>There are different patterns for requesting permission from users. In order of
+priority, they are:</p>
+
+<ul>
+ <li><a href="#aic">Ask in context</a> when the permission is obviously necessary for a specific
+ functionality, but is not necessary for the app to run at all.</li>
+
+ <li><a href="#eic">Educate in context</a> when the reason for requesting the permission is
+ not obvious, and the permission is not necessary for the app to run at all.</li>
+
+ <li><a href="#auf">Ask up front</a> when the need for the permission is obvious, and the
+ permission is required in order for the app to run at all.</li>
+
+ <li><a href="#euf">Educate up front</a> when the need for the permission is not obvious, but
+ the permission is required in order for the app to run at all.</li>
+</ul>
+
+<h3 id="aic">Ask in context</h3>
+
+<p>Your app should request permissions when it’s clear why they are needed in order to perform a
+given operation. Users are more likely to grant a permission when they understand its connection to
+the feature they want to use.</p>
+
+<p>For example, an app may require a user’s location in order to show nearby
+places of interest. When the user taps to search for nearby places, the app can
+immediately request the location permission, because there is a clear
+relationship between searching for nearby places and the need for the location
+permission. The obviousness of this relationship makes it unnecessary for the app to display
+additional education screens.</p>
+
+<img src="{@docRoot}images/training/wear/ask_in_context.png"
+srcset="{@docRoot}images/training/wear/ask_in_context.png 1x,
+{@docRoot}images/training/wear/ask_in_context_2x.png 2x"
+alt="The app requests permission when it's obviously necessary."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 4.</strong> Asking in context.
+
+<h3 id="eic">Educate in context</h3>
+
+<p>If necessary, you may choose to provide additional education before prompting
+for a permission. Again, your app should do this in context of a specific
+action, if it’s unclear why your app needs access to the requested permission
+in order to complete that action.</p>
+
+<p>Figure 5 shows an example of in-context education. The app does not require permissions
+in order to start the timer, but an inline educational cue shows that part of the
+activity (location detection) is locked. When the user taps the cue, a permission-request screen
+appears, allowing the user to unlock location-detection.</p>
+
+<p>You can use the {@link
+ android.support.v4.app.ActivityCompat#shouldShowRequestPermissionRationale
+ shouldShowRequestPermissionRationale()} method to help your app decide whether to provide more
+ information. For additional details, see <a
+ href="{@docRoot}training/permissions/requesting.html#explain">Requesting Permissions
+ at Run Time</a>.</p>
+
+
+<img src="{@docRoot}images/training/wear/educate_in_context.png"
+srcset="{@docRoot}images/training/wear/educate_in_context.png 1x,
+{@docRoot}images/training/wear/educate_in_context_2x.png 2x"
+alt="When the need for the permission arises, the app explains why the permission is necessary."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 5.</strong> Educating in context.
+
+<h3 id="auf">Ask up front</h3>
+
+<p>If your app clearly requires a permission in order to work at all, you can prompt for that
+permission when the user launches the app. For example, a maps app clearly requires access
+to the device’s location to run its expected activities. No further education
+is necessary for this permission.</p>
+
+<img src="{@docRoot}images/training/wear/ask_up_front.png"
+srcset="{@docRoot}images/training/wear/ask_up_front.png 1x,
+{@docRoot}images/training/wear/ask_up_front_2x.png 2x"
+alt="If the app obviously needs a permission to run at all, it can ask for it immediately on
+launch."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 6.</strong> Asking up front.
+
+
+<h3 id="euf">Educate up front</h3>
+
+<p>In some cases, the app requires a permission for basic functionality, but the need for that
+permission is not obvious. In these cases, when the user first
+starts the app or sets a watch face, the app or watch face may choose to educate the user and
+ask for the permission.</p>
+
+<img src="{@docRoot}images/training/wear/educate_up_front.png"
+srcset="{@docRoot}images/training/wear/educate_up_front.png 1x,
+{@docRoot}images/training/wear/educate_up_front_2x.png 2x"
+alt="When requesting a permission on launch, the app can explain why it needs the permission."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 7.</strong> Educating up front.
+
+<h3 id="nope">Handling Rejection</h3>
+
+<p>If a user denies a requested permission that is not critical to an intended
+activity, do not block them from continuing the activity. If certain parts of
+the activity are disabled by the denied permission, provide visual, actionable
+feedback. Figure 8 shows the use of a lock icon to indicate that a feature is
+locked because the user did not grant permission to use it.</p>
+
+<img src="{@docRoot}images/training/wear/deny.png"
+srcset="{@docRoot}images/training/wear/deny.png 1x,
+{@docRoot}images/training/wear/deny_2x.png 2x"
+alt="When the user denies permission, a lock icon is shown alongside the associated feature."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 8.</strong> Lock icon, showing a feature is locked because of denied permission.
+</p>
+<p>When a previously denied wearable permission dialog appears a second
+time, it includes a <strong>Deny, don't show again</strong> option. If the user
+chooses this option, then the only way for them to allow this permission in the
+future is to go into the wearable's Settings app.</p>
+
+<img src="{@docRoot}images/training/wear/ask_again.png"
+srcset="{@docRoot}images/training/wear/ask_again.png 1x,
+{@docRoot}images/training/wear/ask_again_2x.png 2x"
+alt="The system offers to stop requesting permission."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 9.</strong> Offering not to show the permission-request screen anymore.
+
+<h2 id="services">Permissions for Services</h2>
+
+<p>As mentioned above, only an activity can call the
+{@link android.support.v4.app.ActivityCompat#requestPermissions requestPermissions()}
+method, so if the user interacts with your app via a service,
+for example a watch face, the service must open a background activity before requesting
+the permission. This activity could provide additional education, or it could simply
+be an invisible activity that brings up the system dialog.</p>
+
+<p>If your wearable app runs a service that is not a watch face, and the user does not launch
+an app in which it might make sense to request a permission,
+you can post an educational notification on the wearable. The notification can
+provide an action to open an activity that then triggers the system permissions
+dialog.</p>
+
+<p class="note"><strong>Note:</strong> This is the only acceptable use of a stream notification
+for permissions requests.</p>
+
+<img src="{@docRoot}images/training/wear/for_services.png"
+srcset="{@docRoot}images/training/wear/for_services.png 1x,
+{@docRoot}images/training/wear/for_services_2x.png 2x"
+alt="The user may need to grant a permission when indirectly interacting with an app, via a
+service."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 10.</strong> A service requesting permission.
+
+<h2 id="settings">Settings</h2>
+
+<p>As with the handset, the user can change a Wear app’s permissions in Settings at any time.
+Therefore, when the user tries to do something that requires a
+permission, the app should always first call the
+{@link android.support.v4.content.ContextCompat#checkSelfPermission(android.content.Context,java.lang.String) checkSelfPermission()}
+method to see if the app currently has permission to perform this operation. The app should perform
+this check even if it knows the user has previously granted that permission, since the
+user might have subsequently revoked that permission.</p>
+
+<img src="{@docRoot}images/training/wear/for_settings.png"
+srcset="{@docRoot}images/training/wear/for_settings.png 1x,
+{@docRoot}images/training/wear/for_settings_2x.png 2x"
+alt="The user can change permissions through the Settings app."
+width="700" height="" id="permission-flow" />
+<p class="img-caption">
+ <strong>Figure 11.</strong> Changing settings via the Settings app.
diff --git a/docs/html/training/auto/start/index.jd b/docs/html/training/auto/start/index.jd
index b9996ca..0206a24 100644
--- a/docs/html/training/auto/start/index.jd
+++ b/docs/html/training/auto/start/index.jd
@@ -220,7 +220,7 @@
<ol>
<li>On the mobile device, enable Android Auto developer mode by starting the Android Auto
- companion app, and then tapping the header image 10 times.
+ companion app, and then tapping the <i>Android Auto</i> toolbar title 10 times.
This step is only required the first time you run the companion app.
</li>
<li>If the server is not already running, select <strong>Start head unit server</strong>
diff --git a/docs/html/training/improving-layouts/reusing-layouts.jd b/docs/html/training/improving-layouts/reusing-layouts.jd
index 87431d3..8c63afb 100644
--- a/docs/html/training/improving-layouts/reusing-layouts.jd
+++ b/docs/html/training/improving-layouts/reusing-layouts.jd
@@ -43,7 +43,7 @@
<p>Reusing layouts is particularly powerful as it allows you create reusable complex layouts. For
example, a yes/no button panel, or custom progress bar with description text.
It also means that any elements of your application that are common across multiple layouts can be
-extracted, managed separately, then included in each layout. So while
+extracted, managed separately, then included in each layout. So while
you can create individual UI components by writing a custom {@link android.view.View}, you can
do it even more easily by re-using a layout file.</p>
@@ -56,14 +56,14 @@
<pre>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width=”match_parent”
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/titlebar_bg">
<ImageView android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/gafricalogo" />
-</FrameLayout>
+ android:layout_height="wrap_content"
+ android:src="@drawable/gafricalogo" />
+</FrameLayout>
</pre>
<p>The root {@link android.view.View} should be exactly how you'd like it to appear in each
@@ -80,18 +80,18 @@
<pre>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width=”match_parent”
- android:layout_height=”match_parent”
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
android:background="@color/app_bg"
- android:gravity="center_horizontal">
+ android:gravity="center_horizontal">
- <strong><include layout="@layout/titlebar"/></strong>
+ <strong><include layout="@layout/titlebar"/></strong>
- <TextView android:layout_width=”match_parent”
+ <TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
- android:padding="10dp" />
+ android:padding="10dp" />
...
@@ -103,10 +103,10 @@
example:</p>
<pre>
-<include android:id=”@+id/news_title”
- android:layout_width=”match_parent”
- android:layout_height=”match_parent”
- layout=”@layout/title”/>
+<include android:id="@+id/news_title"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ layout="@layout/title"/>
</pre>
<p>However, if you want to override layout attributes using
@@ -130,17 +130,17 @@
{@code <merge>} element as the root view for the re-usable layout. For example:</p>
<pre>
-<merge xmlns:android="http://schemas.android.com/apk/res/android">
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Button
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:text="@string/add"/>
+ android:text="@string/add"/>
<Button
- android:layout_width="fill_parent"
+ android:layout_width="fill_parent"
android:layout_height="wrap_content"
- android:text="@string/delete"/>
+ android:text="@string/delete"/>
</merge>
</pre>
diff --git a/docs/html/training/in-app-billing/preparing-iab-app.jd b/docs/html/training/in-app-billing/preparing-iab-app.jd
index 17cd0d51..ca33008 100644
--- a/docs/html/training/in-app-billing/preparing-iab-app.jd
+++ b/docs/html/training/in-app-billing/preparing-iab-app.jd
@@ -30,18 +30,35 @@
</div>
</div>
+<a class="notice-developers-video wide"
+href="https://www.youtube.com/watch?v=UvCl5Xx7Z5o">
+<div>
+ <h3>Video</h3>
+ <p>Implementing Freemium</p>
+ </div>
+ </a>
+
<p>Before you can start using the In-app Billing service, you'll need to add the library that contains the In-app Billing Version 3 API to your Android project. You also need to set the permissions for your application to communicate with Google Play. In addition, you'll need to establish a connection between your application and Google Play. You should also verify that the In-app Billing API version that you are using in your application is supported by Google Play.</p>
<h2 id="GetSample">Download the Sample Application</h2>
<p>In this training class, you will use a reference implementation for the In-app Billing Version 3 API called the {@code TrivialDrive} sample application. The sample includes convenience classes to quickly set up the In-app Billing service, marshal and unmarshal data types, and handle In-app Billing requests from the main thread of your application.</p>
<p>To download the sample application:</p>
<ol>
-<li>Open the <a href="{@docRoot}tools/help/sdk-manager.html">Android SDK Manager</a>.</li>
-<li>In the SDK Manager, expand the {@code Extras} section.</li>
-<li>Select <strong>Google Play Billing Library</strong>.</li>
-<li>Click <strong>Install packages</strong> to complete the download.</li>
+<li>Open Android Studio and then close any open projects until you are
+presented with the welcome screen.</li>
+<li>Choose <strong>Import an Android code sample</strong> from the
+ <strong>Quick Start</strong> list on the right side the window.</li>
+<li>Type {@code Trivial Drive} into the search bar and select the
+ <strong>Trivial Drive</strong> sample.</li>
+<li>Follow the rest of the instructions in the <strong>Import Sample</strong>
+ wizard to import the sample to a directory of your choosing. The sample code
+ is in the <strong>TrivialDrive</strong> subdirectory of the repository.</li>
</ol>
-<p>The sample files will be installed to {@code <sdk>/extras/google/play_billing/}.</p>
+
+<p>Alternatively, you can use {@code git} to manually clone
+ the repository from <a
+ href="https://github.com/googlesamples/android-play-billing"
+ class="external-link">https://github.com/googlesamples/android-play-billing</a></p>
<h2 id="AddToDevConsole">Add Your Application to the Developer Console</h2>
<p>The Google Play Developer Console is where you publish your In-app Billing application and manage the various digital goods that are available for purchase from your application. When you create a new application entry in the Developer Console, it automatically generates a public license key for your application. You will need this key to establish a trusted connection from your application to the Google Play servers. You only need to generate this key once per application, and don’t need to repeat these steps when you update the APK file for your application.</p>
diff --git a/docs/html/training/location/geofencing.jd b/docs/html/training/location/geofencing.jd
index 13dd790..1cf89fd 100644
--- a/docs/html/training/location/geofencing.jd
+++ b/docs/html/training/location/geofencing.jd
@@ -113,8 +113,8 @@
<h3>Create geofence objects</h3>
<p>
- First, use <code><a href="{@docRoot}reference/com/google/android/gms/location/Geofence.Builder.
- html">Geofence.Builder</a></code> to create a geofence, setting the desired radius, duration, and
+ First, use <code><a href="{@docRoot}reference/com/google/android/gms/location/Geofence.Builder.html">
+ Geofence.Builder</a></code> to create a geofence, setting the desired radius, duration, and
transition types for the geofence. For example, to populate a list object named
{@code mGeofenceList}:
</p>
diff --git a/docs/html/training/managing-audio/audio-focus.jd b/docs/html/training/managing-audio/audio-focus.jd
index 6dcaa7f..8d820db 100644
--- a/docs/html/training/managing-audio/audio-focus.jd
+++ b/docs/html/training/managing-audio/audio-focus.jd
@@ -11,7 +11,7 @@
@jd:body
-<div id="tb-wrapper">
+<div id="tb-wrapper">
<div id="tb">
<h2>This lesson teaches you to</h2>
@@ -27,21 +27,21 @@
<li><a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a></li>
</ul>
-</div>
</div>
-
+</div>
+
<p>With multiple apps potentially playing audio it's important to think about how they should
interact. To avoid every music app playing at the same time, Android uses audio focus to moderate
audio playback—only apps that hold the audio focus should play audio.</p>
-<p>Before your app starts playing audio it should request—and receive—the audio focus.
+<p>Before your app starts playing audio it should request—and receive—the audio focus.
Likewise, it should know how to listen for a loss of audio focus and respond appropriately when that
happens.</p>
-
-<h2 id="RequestFocus">Request the Audio Focus</h2>
-
+
+<h2 id="RequestFocus">Request the Audio Focus</h2>
+
<p>Before your app starts playing any audio, it should hold the audio focus for the stream
it will be using. This is done with a call to {@link android.media.AudioManager#requestAudioFocus
requestAudioFocus()} which returns
@@ -55,7 +55,7 @@
<p>The following snippet requests permanent audio focus on the music audio stream. You should
request the audio focus immediately before you begin playback, such as when the user presses
play or the background music for the next game level begins.</p>
-
+
<pre>
AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
...
@@ -66,7 +66,7 @@
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN);
-
+
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
am.registerMediaButtonEventReceiver(RemoteControlReceiver);
// Start playback.
@@ -80,7 +80,7 @@
this allows any interupted app to continue playback.</p>
<pre>
-// Abandon audio focus when playback complete
+// Abandon audio focus when playback complete
am.abandonAudioFocus(afChangeListener);
</pre>
@@ -97,7 +97,7 @@
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
-
+
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// Start playback.
}
@@ -111,7 +111,7 @@
registered when requesting focus.</p>
-<h2 id="HandleFocusLoss">Handle the Loss of Audio Focus</h2>
+<h2 id="HandleFocusLoss">Handle the Loss of Audio Focus</h2>
<p>If your app can request audio focus, it follows that it will in turn lose that focus when another
app requests it. How your app responds to a loss of audio focus depends on the manner of that
@@ -139,26 +139,27 @@
unregisters our media button event receiver and stops monitoring audio focus changes.<p>
<pre>
-OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() {
- public void onAudioFocusChange(int focusChange) {
- if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT
- // Pause playback
- } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
- // Resume playback
- } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
- am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
- am.abandonAudioFocus(afChangeListener);
- // Stop playback
+AudioManager.OnAudioFocusChangeListener afChangeListener =
+ new AudioManager.OnAudioFocusChangeListener() {
+ public void onAudioFocusChange(int focusChange) {
+ if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT) {
+ // Pause playback
+ } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+ // Resume playback
+ } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) {
+ am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);
+ am.abandonAudioFocus(afChangeListener);
+ // Stop playback
+ }
}
- }
-};
+ };
</pre>
-
+
<p>In the case of a transient loss of audio focus where ducking is permitted, rather than pausing
playback, you can "duck" instead.</p>
-<h2 id="DUCK">Duck!</h2>
+<h2 id="DUCK">Duck!</h2>
<p>Ducking is the process of lowering your audio stream output volume to make transient audio from
another app easier to hear without totally disrupting the audio from your own application.</p>
diff --git a/docs/html/training/snackbar/action.jd b/docs/html/training/snackbar/action.jd
new file mode 100644
index 0000000..58a18a5
--- /dev/null
+++ b/docs/html/training/snackbar/action.jd
@@ -0,0 +1,94 @@
+page.title=Adding an Action to a Message
+page.tags="Snackbar" "action" "popup"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+ <div id="tb">
+
+<!--
+ <h2>This lesson teaches you to</h2>
+
+ <ol>
+ <li>
+ <a href="#id">heading</a>
+ </li>
+
+ <li>
+ <a href="#id">heading</a>
+ </li>
+ </ol>
+-->
+
+ <h2>See Also</h2>
+ <ul>
+ <li><a href="{@docRoot}guide/topics/ui/ui-events.html">
+ Input Events</a></li>
+ </ul>
+
+
+ </div>
+</div>
+
+<p>
+ You can add an action to a {@link android.support.design.widget.Snackbar},
+ allowing the user to respond to your message. If you add an action to a
+ {@link android.support.design.widget.Snackbar}, the
+ {@link android.support.design.widget.Snackbar} puts a button
+ next to the message text. The user can trigger your action by pressing the
+ button. For example, an email app might put an <em>undo</em> button on its
+ "email archived" message; if the user clicks the <em>undo</em> button, the
+ app takes the email back out of the archive.
+</p>
+
+<img src="{@docRoot}images/training/snackbar/snackbar_undo_action_2x.png"
+ srcset="{@docRoot}images/training/snackbar/snackbar_undo_action.png 1x,
+ {@docRoot}images/training/snackbar/snackbar_undo_action_2x.png 2x"
+ width="400" alt="">
+
+<p class="img-caption">
+ <strong>Figure 1.</strong> This Snackbar has an <strong>Undo</strong>
+ button, which restores the item that was just removed.
+</p>
+
+<p>
+ To add an action to a {@link android.support.design.widget.Snackbar} message,
+ you need to define a listener object that implements the {@link
+ android.view.View.OnClickListener} interface. The system calls your
+ listener's {@link android.view.View.OnClickListener#onClick onClick()} method
+ if the user clicks on the message action. For example, this snippet shows a
+ listener for an undo action:
+</p>
+
+<pre>public class MyUndoListener implements View.OnClickListener{
+
+ &Override
+ public void onClick(View v) {
+
+ // Code to undo the user's last action
+ }
+}</pre>
+
+<p>
+ Use one of the
+ {@link android.support.design.widget.Snackbar#setAction(int, android.view.View.OnClickListener)
+ SetAction()} methods to attach the listener to your {@link
+ android.support.design.widget.Snackbar}. Be sure to attach the listener
+ before you call {@link android.support.design.widget.Snackbar#show show()},
+ as shown in this code sample:
+</p>
+
+<pre>Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
+ R.string.email_archived, Snackbar.LENGTH_SHORT);
+<strong>mySnackbar.setAction(R.string.undo_string, new MyUndoListener());</strong>
+mySnackbar.show();</pre>
+
+<p class="note">
+ <strong>Note:</strong> A {@link android.support.design.widget.Snackbar}
+ automatically goes away after a short time, so you can't count on the user
+ seeing the message or having a chance to press the button. For this reason,
+ you should consider offering an alternate way to perform any {@link
+ android.support.design.widget.Snackbar} action.
+</p>
diff --git a/docs/html/training/snackbar/index.jd b/docs/html/training/snackbar/index.jd
new file mode 100644
index 0000000..312f10c
--- /dev/null
+++ b/docs/html/training/snackbar/index.jd
@@ -0,0 +1,94 @@
+page.title=Showing Pop-Up Messages
+page.tags="Snackbar","Toast"
+helpoutsWidget=true
+trainingnavtop=true
+startpage=true
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+
+<h2>Dependencies and prerequisites</h2>
+<ul>
+ <li><a href="{@docRoot}tools/support-library/features.html#design">Design
+ Support Library</a></li>
+</ul>
+
+
+<h2>You should also read</h2>
+<ul>
+ <li><a href="{@docRoot}training/implementing-navigation/index.html">
+ Implementing Effective Navigation</a></li>
+ <li><a href="https://www.google.com/design/spec/components/snackbars-toasts.html">
+ Material Design: Snackbars & toasts</a></li>
+</ul>
+
+</div>
+</div>
+
+<p>
+ There are many situations where you might want your app to show a quick
+ message to the user, without necessarily waiting for the user to respond.
+ For example, when a user performs an action like sending an email or deleting
+ a file, your app should show a quick confirmation to the user. Often the user
+ doesn't need to respond to the message. The message needs to be prominent
+ enough that the user can see it, but not so prominent that it prevents the
+ user from working with your app.
+</p>
+
+<p>
+ Android provides the {@link android.support.design.widget.Snackbar} widget
+ for this common use case.
+ A {@link android.support.design.widget.Snackbar} provides a quick pop-up
+ message to the user. The current activity remains visible and interactive
+ while the {@link android.support.design.widget.Snackbar} is displayed. After a
+ short time, the Snackbar automatically dismisses itself.
+</p>
+
+<p>
+ This class teaches you how to use {@link
+ android.support.design.widget.Snackbar} to show pop-up messages.
+</p>
+
+<div class="figure" style="width:400px">
+ <img src="{@docRoot}images/training/snackbar/snackbar_drive_2x.png"
+ srcset="{@docRoot}images/training/snackbar/snackbar_drive.png 1x,
+ {@docRoot}images/training/snackbar/snackbar_drive_2x.png 2x"
+ width="400" alt="">
+ <p class="img-caption">
+ <strong>Figure 1.</strong> A {@link android.support.design.widget.Snackbar}
+ shows a message at the bottom of the
+ activity, but the rest of the activity is still usable.
+ </p>
+</div>
+
+<p class="note">
+ <strong>Note:</strong> The {@link
+ android.support.design.widget.Snackbar} class supersedes {@link
+ android.widget.Toast}. While {@link android.widget.Toast} is currently still
+ supported, {@link android.support.design.widget.Snackbar} is now the
+ preferred way to display brief, transient messages to the user.
+</p>
+
+<h2>Lessons</h2>
+
+<dl>
+ <dt>
+ <b><a href="showing.html">Using a Snackbar to Show a Message</a></b>
+ </dt>
+
+ <dd>
+ Learn how to use a {@link android.support.design.widget.Snackbar} to display
+ a brief message to the user.
+ </dd>
+
+ <dt>
+ <b><a href="action.html">Adding an Action to a Message</a></b>
+ </dt>
+
+ <dd>
+ Learn how to add an action to a message, allowing the user to respond to
+ the message.
+ </dd>
+</dl>
diff --git a/docs/html/training/snackbar/showing.jd b/docs/html/training/snackbar/showing.jd
new file mode 100644
index 0000000..c178c0b
--- /dev/null
+++ b/docs/html/training/snackbar/showing.jd
@@ -0,0 +1,204 @@
+page.title=Building and Displaying a Pop-Up Message
+page.tags="Snackbar" "popup" "pop-up"
+helpoutsWidget=true
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+ <div id="tb">
+
+ <h2>This lesson teaches you to</h2>
+
+ <ol>
+ <li><a href="#coordinator">Use a CoordinatorLayout</a></li>
+ <li><a href="#display">Display a Message</a></li>
+ </ol>
+
+ <h2>You should also read</h2>
+ <ul>
+ <li><a href="{@docRoot}tools/support-library/setup.html"
+ >Support Library Setup</a></li>
+ </ul>
+ </div>
+</div>
+
+
+<p>
+ You can use a {@link android.support.design.widget.Snackbar} to display a brief
+ message to the user. The message automatically goes away after a short
+ period. A {@link android.support.design.widget.Snackbar} is ideal
+ for brief messages that the user doesn't necessarily need to act on. For
+ example, an email app could use a {@link
+ android.support.design.widget.Snackbar} to tell the user that the app
+ successfully sent an email.
+</p>
+
+<h2 id="coordinator">Use a CoordinatorLayout</h2>
+
+<p>
+ A {@link android.support.design.widget.Snackbar} is attached to a view. The
+ {@link android.support.design.widget.Snackbar} provides basic functionality
+ if it is attached to any object derived from the {@link android.view.View}
+ class, such as any of the common layout objects. However, if the
+ {@link android.support.design.widget.Snackbar}
+ is attached to a {@link android.support.design.widget.CoordinatorLayout}, the
+ {@link android.support.design.widget.Snackbar} gains additional features:
+</p>
+
+<ul>
+ <li>The user can dismiss the {@link android.support.design.widget.Snackbar}
+ by swiping it away.
+ </li>
+
+ <li>The layout moves some other UI elements when the {@link
+ android.support.design.widget.Snackbar} appears. For example, if the layout
+ has a {@link android.support.design.widget.FloatingActionButton}, the layout
+ moves the button up when it shows a {@link
+ android.support.design.widget.Snackbar}, instead of drawing the {@link
+ android.support.design.widget.Snackbar} on top of the button. You can see how
+ this looks in Figure 1.
+ </li>
+</ul>
+
+<p>
+ The {@link android.support.design.widget.CoordinatorLayout} class provides a superset
+ of the functionality of {@link android.widget.FrameLayout}. If your app
+ already uses a {@link android.widget.FrameLayout}, you can just replace that
+ layout with a {@link android.support.design.widget.CoordinatorLayout} to
+ enable the full {@link android.support.design.widget.Snackbar} functionality.
+ If your app uses other layout objects, the simplest thing to do is wrap your
+ existing layout elements in a {@link
+ android.support.design.widget.CoordinatorLayout}, as in this example:
+</p>
+
+<pre><android.support.design.widget.CoordinatorLayout
+ android:id="@+id/myCoordinatorLayout"
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <!-- Here are the existing layout elements, now wrapped in
+ a CoordinatorLayout -->
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <!-- …Toolbar, other layouts, other elements… -->
+
+ </LinearLayout>
+
+</android.support.design.widget.CoordinatorLayout></pre>
+
+<p>
+ Make sure to set an <code>android:id</code> tag for your {@link
+ android.support.design.widget.CoordinatorLayout}. You need the layout's ID
+ when you display the message.
+</p>
+
+<div class="framed-nexus5-port-span-5" id="video-coord">
+ <video class="play-on-hover" autoplay loop
+ alt="If the Snackbar is attached to a CoordinatorLayout, the layout
+ moves other elements up when it shows the Snackbar.">
+ <!-- Preferred video size 216x384 (portrait) -->
+ <source src="{@docRoot}images/training/snackbar/snackbar_button_move.mp4">
+ </video>
+</div>
+
+<p class="img-caption">
+ <strong>Figure 1.</strong> The {@link android.support.design.widget.CoordinatorLayout}
+ moves the {@link android.support.design.widget.FloatingActionButton} up
+ when the {@link android.support.design.widget.Snackbar} appears.
+</p>
+
+<h2 id="display">
+ Display a Message
+</h2>
+
+<p>
+ There are two steps to displaying a message. First, you create a {@link
+ android.support.design.widget.Snackbar} object with the message text. Then,
+ you call that object's {@link android.support.design.widget.Snackbar#show
+ show()} method to display the message to the user.
+</p>
+
+<h3 id="create-snackbar">Creating a Snackbar object</h3>
+
+<p>
+ Create a {@link android.support.design.widget.Snackbar} object by
+ calling the static {@link android.support.design.widget.Snackbar#make
+ Snackbar.make()} method. When you create the {@link
+ android.support.design.widget.Snackbar}, you specify both the message it
+ displays, and the length of time to show the message:
+</p>
+
+<pre>Snackbar mySnackbar = Snackbar.make(viewId, stringId, duration);</pre>
+
+<dl>
+ <dt>
+ <em>viewId</em>
+ </dt>
+
+ <dd>
+ The view to attach the {@link android.support.design.widget.Snackbar} to.
+ The method actually searches up the view hierarchy from the passed
+ <em>viewId</em> until it reaches either a {@link
+ android.support.design.widget.CoordinatorLayout}, or the window decor's
+ content view. Ordinarily, it's simplest to just pass the ID of the {@link
+ android.support.design.widget.CoordinatorLayout} enclosing your content.
+ </dd>
+
+ <dt>
+ <em>stringId</em>
+ </dt>
+
+ <dd>
+ The resource ID of the message you want to display. This can be formatted
+ or unformatted text.
+ </dd>
+
+ <dt>
+ <em>duration</em>
+ </dt>
+
+ <dd>
+ The length of time to show the message. This can be either {@link
+ android.support.design.widget.Snackbar#LENGTH_SHORT LENGTH_SHORT} or {@link
+ android.support.design.widget.Snackbar#LENGTH_LONG LENGTH_LONG}.
+ </dd>
+</dl>
+
+<h3 id="show-snackbar">Showing the message to the user</h3>
+
+<p>
+ Once you have created the {@link android.support.design.widget.Snackbar},
+ call its {@link android.support.design.widget.Snackbar#show show()} method to
+ display the {@link android.support.design.widget.Snackbar} to the user:
+</p>
+
+<pre>mySnackbar.show();</pre>
+
+<p>
+ The system does not show multiple {@link
+ android.support.design.widget.Snackbar} objects at the same time, so if the
+ view is currently displaying another {@link
+ android.support.design.widget.Snackbar}, the system queues your {@link
+ android.support.design.widget.Snackbar} and displays it after the current
+ {@link android.support.design.widget.Snackbar} expires or is dismissed.
+</p>
+
+<p>
+ If you just want to show a message to the user and won't need to call any of
+ the {@link android.support.design.widget.Snackbar} object's utility methods,
+ you don't need to keep the reference to the {@link
+ android.support.design.widget.Snackbar} after you call {@link
+ android.support.design.widget.Snackbar#show show()}. For this reason, it's
+ common to use method chaining to create and show a {@link
+ android.support.design.widget.Snackbar} in one statement:
+</p>
+
+<pre>Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent,
+ Snackbar.LENGTH_SHORT)
+ .show();</pre>
diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs
index 85733bf..b16b569 100644
--- a/docs/html/training/training_toc.cs
+++ b/docs/html/training/training_toc.cs
@@ -1008,6 +1008,21 @@
"How to detect location data on Android Wear devices."
>Detecting Location</a>
</li>
+
+ <li>
+ <a href="<?cs var:toroot ?>training/articles/wear-permissions.html"
+ description=
+ "How to request permissions on Android Wear devices."
+ >Requesting Permissions</a>
+ </li>
+
+ <li>
+ <a href="<?cs var:toroot ?>training/wearables/wearable-sounds.html"
+ description=
+ "How to use the speaker on Android Wear devices."
+ >Using the Speaker</a>
+ </li>
+
</ul>
</li>
<!-- End Building for wearables -->
@@ -1464,6 +1479,24 @@
</ul>
</li>
+ <li class="nav-section">
+ <div class="nav-section-header">
+ <a href="<?cs var:toroot ?>training/snackbar/index.html"
+ description=
+ "How to use the support library's Snackbar widget to display a
+ brief pop-up message."
+ >Showing Pop-Up Messages</a>
+ </div>
+ <ul>
+ <li><a href="<?cs var:toroot ?>training/snackbar/showing.html"
+ >Building and Displaying a Pop-Up Message</a>
+ </li>
+ <li><a href="<?cs var:toroot ?>training/snackbar/action.html"
+ >Adding an Action to a Message</a>
+ </li>
+ </ul>
+ </li>
+
<li class="nav-section">
<div class="nav-section-header">
<a href="<?cs var:toroot ?>training/custom-views/index.html"
diff --git a/docs/html/training/tv/index.jd b/docs/html/training/tv/index.jd
index 081680a..4a6bcb8 100644
--- a/docs/html/training/tv/index.jd
+++ b/docs/html/training/tv/index.jd
@@ -10,3 +10,20 @@
<p class="note"><strong>Note:</strong> For details on how to publish your TV apps in Google Play,
see <a href="{@docRoot}distribute/googleplay/tv.html">Distribute to Android TV</a>.</p>
+
+<div class="wrap">
+ <div class="cols">
+ <div class="col-1of2">
+ <p>If you prefer to learn through interactive video training, check out this online course
+ about extending your apps to work with Android TV.</p>
+ <p><a href="https://www.udacity.com/course/ud875B" class="button">
+ Start the video course</a>
+ </p>
+ </div>
+ <div class="col-1of2">
+ <iframe width="300" height="169"
+ src="//www.youtube.com/embed/anJtq2rtrA8?autohide=1&showinfo=0"
+ frameborder="0" allowfullscreen="" style="float: right; margin: 0 0 20px 20px;"></iframe>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/docs/html/training/tv/start/hardware.jd b/docs/html/training/tv/start/hardware.jd
index b1e39cb..9a66c09 100644
--- a/docs/html/training/tv/start/hardware.jd
+++ b/docs/html/training/tv/start/hardware.jd
@@ -100,10 +100,6 @@
<td>{@code android.hardware.camera}</td>
</tr>
<tr>
- <td>Bluetooth</td>
- <td>{@code android.hardware.bluetooth}</td>
- </tr>
- <tr>
<td>Near Field Communications (NFC)</td>
<td>{@code android.hardware.nfc}</td>
</tr>
@@ -159,8 +155,6 @@
android:required="false"/>
<uses-feature android:name="android.hardware.camera"
android:required="false"/>
-<uses-feature android:name="android.hardware.bluetooth"
- android:required="false"/>
<uses-feature android:name="android.hardware.nfc"
android:required="false"/>
<uses-feature android:name="android.hardware.location.gps"
diff --git a/docs/html/training/tv/start/layouts.jd b/docs/html/training/tv/start/layouts.jd
index 2b190b4..4ca77d0 100644
--- a/docs/html/training/tv/start/layouts.jd
+++ b/docs/html/training/tv/start/layouts.jd
@@ -117,25 +117,43 @@
This behavior is generally referred to as <em>overscan</em>.
</p>
-<p>
- Avoid screen elements being clipped due to overscan and by incorporating a 10% margin
- on all sides of your layout. This translates into a 48dp margin on the left and right edges and
- a 27dp margin on the top and bottom of your base layouts for activities. The following
- example layout demonstrates how to set these margins in the root layout for a TV app:
+<p>Screen elements that must be visible to the user at all times should be positioned within the
+overscan safe area. Adding a 5% margin of 48dp on the left and right edges and 27dp on the top and
+bottom edges to a layout ensures that screen elements in that layout will be within the overscan
+safe area.
+</p>
+
+<p>Background screen elements that the user doesn't directly interact with should not be adjusted or
+clipped to the overscan safe area. This approach ensures that background screen elements look
+correct on all screens.
+</p>
+
+<p>The following example shows a root layout that can contain background elements, and a nested
+child layout that has a 5% margin and can contain elements within the overscan safe area:
</p>
<pre>
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/base_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:layout_marginTop="27dp"
- android:layout_marginLeft="48dp"
- android:layout_marginRight="48dp"
- android:layout_marginBottom="27dp" >
-</LinearLayout>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ >
+
+ <!-- Screen elements that can render outside the overscan safe area go here -->
+
+ <!-- Nested RelativeLayout with overscan-safe margin -->
+ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="27dp"
+ android:layout_marginBottom="27dp"
+ android:layout_marginLeft="48dp"
+ android:layout_marginRight="48dp">
+
+ <!-- Screen elements that need to be within the overscan safe area go here -->
+
+ </RelativeLayout>
+</RelativeLayout>
</pre>
<p class="caution">
diff --git a/docs/html/training/tv/start/start.jd b/docs/html/training/tv/start/start.jd
index e55e202..743b61b 100644
--- a/docs/html/training/tv/start/start.jd
+++ b/docs/html/training/tv/start/start.jd
@@ -228,6 +228,27 @@
design guide.
</p>
+<h3 id="transition-color">Change the launcher color</h3>
+
+<p>When a TV app launches, the system displays an animation that resembles an expanding, filled
+ circle. To customize the color of this animation, set the <code>android:colorPrimary</code>
+ attribute of your TV app or activity to a specific color. You should also set two additional
+ transition overlap attributes to <code>true</code>, as shown in the following snippet from a
+ theme resource XML file:</p>
+
+<pre>
+<resources>
+ <style ... >
+ <item name="android:colorPrimary">@color/primary</item>
+ <item name="android:windowAllowReturnTransitionOverlap">true</item>
+ <item name="android:windowAllowEnterTransitionOverlap">true</item>
+ </style>
+</resources>
+</pre>
+
+<p>For more information about working with themes and styles, see
+<a href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a>.</p>
+
<h2 id="tv-libraries">Add TV Support Libraries</h3>
<p>
diff --git a/docs/html/training/wearables/watch-faces/performance.jd b/docs/html/training/wearables/watch-faces/performance.jd
index c2c411c..4a96545 100644
--- a/docs/html/training/wearables/watch-faces/performance.jd
+++ b/docs/html/training/wearables/watch-faces/performance.jd
@@ -15,6 +15,8 @@
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
+ <li><a href="http://android-developers.blogspot.com/2014/12/making-performant-watch-face.html">
+Making a performant watch face</a></li>
</ul>
</div>
</div>
diff --git a/docs/html/training/wearables/wearable-sounds.jd b/docs/html/training/wearables/wearable-sounds.jd
new file mode 100644
index 0000000..3c3c135
--- /dev/null
+++ b/docs/html/training/wearables/wearable-sounds.jd
@@ -0,0 +1,63 @@
+page.title=Using Speakers on Wearables
+
+@jd:body
+
+<div id="tb-wrapper">
+<div id="tb">
+<h2>This lesson teaches you to</h2>
+<ol>
+ <li><a href="#Detect">Detect the Speaker</a></li>
+ <li><a href="#Play">Play Sounds</a></li>
+</ol>
+<h2>You should also read</h2>
+<ul>
+ <li><a href="{@docRoot}design/wear/watchfaces.html">Watch Faces for Android Wear</a></li>
+</ul>
+</div>
+</div>
+
+<p>Some Android Wear devices include speakers, enabling them to incorporate sound into their
+apps and offer an extra dimension of engagement with the user. A speaker-equipped Wear device might
+trigger a clock or timer alarm, complete with audio notification. Games on Wear become become more
+entertaining by offering not just sight, but sound.</p>
+
+<p>This page describes how apps on Wear devices running Android 6.0 (API level 23) can use
+familiar Android APIs to play sounds through the device speaker.</p>
+
+<h2 id="Detect">Detect the Speaker</h2>
+
+<p>A Wear app must first detect whether the wearable device has a speaker. In the following example,
+the app uses the {@link android.media.AudioManager#getDevices(int) getDevices() } method in
+conjunction with the value of {@link android.content.pm.PackageManager#FEATURE_AUDIO_OUTPUT} to
+confirm that the device is equipped with a speaker.</p>
+
+<pre>
+PackageManager packageManager = context.getPackageManager();
+AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
+
+// Check whether the device has a speaker.
+if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ // Check FEATURE_AUDIO_OUTPUT to guard against false positives.
+ if (!packageManager.hasSystemFeature(PackageManager.FEATURE_AUDIO_OUTPUT)) {
+ return false;
+ }
+
+ AudioDeviceInfo[] devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
+ for (AudioDeviceInfo device : devices) {
+ if (device.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
+ return true;
+ }
+ }
+}
+return false;
+</pre>
+
+<h2 id="Play">Play Sounds</h2>
+
+<p>Once you've detected the speaker, the process for playing sound on Android Wear is the
+same as for a handset or other device. For more information, see
+<a href="{@docRoot}guide/topics/media/mediaplayer.html">Media Playback</a>.</p>
+
+<p>If you also want to record audio from the microphone on the wearable, your app must also get
+permission to use the microphone. To learn more, see
+<a href="{@docRoot}training/articles/wear-permissions.html">Permissions on Android Wear.</a></p>
\ No newline at end of file
diff --git a/docs/image_sources/distribute/googleplay/about_developer_page_original.png b/docs/image_sources/distribute/googleplay/about_developer_page_original.png
new file mode 100644
index 0000000..4ccbfe9
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_developer_page_original.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_personalized_home_orig.png b/docs/image_sources/distribute/googleplay/about_personalized_home_orig.png
new file mode 100644
index 0000000..a5214d6
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_personalized_home_orig.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_play_store_home_original.png b/docs/image_sources/distribute/googleplay/about_play_store_home_original.png
new file mode 100644
index 0000000..3a4cba4
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_play_store_home_original.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_play_store_listing_original.png b/docs/image_sources/distribute/googleplay/about_play_store_listing_original.png
new file mode 100644
index 0000000..63d6e9b
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_play_store_listing_original.png
Binary files differ
diff --git a/docs/image_sources/distribute/googleplay/about_search_results_orig.png b/docs/image_sources/distribute/googleplay/about_search_results_orig.png
new file mode 100644
index 0000000..af775d3
--- /dev/null
+++ b/docs/image_sources/distribute/googleplay/about_search_results_orig.png
Binary files differ
diff --git a/docs/image_sources/training/snackbar/snackbar_drive_original.png b/docs/image_sources/training/snackbar/snackbar_drive_original.png
new file mode 100644
index 0000000..7094a11
--- /dev/null
+++ b/docs/image_sources/training/snackbar/snackbar_drive_original.png
Binary files differ
diff --git a/docs/image_sources/training/snackbar/snackbar_undo_action_original.png b/docs/image_sources/training/snackbar/snackbar_undo_action_original.png
new file mode 100644
index 0000000..ec50c13
--- /dev/null
+++ b/docs/image_sources/training/snackbar/snackbar_undo_action_original.png
Binary files differ