Merge "Docs: Updated localizations for N Developer Preview docs." into nyc-dev

This commit is contained in:
David Friedman
2016-06-15 01:39:40 +00:00
committed by Android (Google) Code Review
360 changed files with 27358 additions and 5246 deletions

View File

@@ -0,0 +1,342 @@
toc:
- title: Información general del programa
path: /preview/overview.html
path_attributes:
- name: es-lang
value: Información general del programa
- name: in-lang
value: Ikhtisar Program
- name: ja-lang
value: プログラム概要
- name: ko-lang
value: 프로그램 개요
- name: pt-br-lang
value: Visão geral do programa
- name: ru-lang
value: Обзор программы
- name: vi-lang
value: Tổng quan về Chương trình
- name: zh-cn-lang
value: 计划概览
- name: zh-tw-lang
value: 程式總覽
- title: Compatibilidad y notas de la versión
path: /preview/support.html
- title: Configuración de Preview
path: /preview/setup-sdk.html
path_attributes:
- name: es-lang
value: Configurar el SDK de la versión preliminar
- name: in-lang
value: Menyiapkan Preview
- name: ja-lang
value: Preview SDK のセットアップ
- name: ko-lang
value: 미리 보기 SDK 설정하기
- name: pt-br-lang
value: Configuração do Preview SDK
- name: ru-lang
value: Настройка пакета SDK Preview
- name: vi-lang
value: Kiểm thử trên Thiết bị
- name: zh-cn-lang
value: 设置预览版 SDK
- name: zh-tw-lang
value: 設定預覽版 SDK
- title: Probar en un dispositivo
path: /preview/download.html
path_attributes:
- name: es-lang
value: Probar en un dispositivo
- name: in-lang
value: Menguji pada Perangkat
- name: ja-lang
value: デバイス上でテストする
- name: ko-lang
value: 기기에서 테스트
- name: pt-br-lang
value: Testar em um dispositivo
- name: ru-lang
value: Тестирование на устройстве
- name: vi-lang
value: Kiểm thử trên Thiết bị
- name: zh-cn-lang
value: 在设备上测试
- name: zh-tw-lang
value: 在裝置上測試
- title: Cambios en los comportamientos
path: /preview/behavior-changes.html
path_attributes:
- name: es-lang
value: Cambios en los comportamientos
- name: in-lang
value: Perubahan Perilaku
- name: ja-lang
value: 動作の変更点
- name: ko-lang
value: 동작 변경
- name: pt-br-lang
value: Mudanças de comportamento
- name: ru-lang
value: Изменения в работе
- name: vi-lang
value: Các thay đổi Hành vi
- name: zh-cn-lang
value: 行为变更
- name: zh-tw-lang
value: 行為變更
section:
- title: Background Optimizations
path: /preview/features/background-optimization.html
path_attributes:
- name: es-lang
value: Optimizaciones en segundo plano
- name: in-lang
value: Optimisasi Latar Belakang
- name: ja-lang
value: バックグラウンド処理の最適化
- name: ko-lang
value: 백그라운드 최적화
- name: pt-br-lang
value: Otimizações em segundo plano
- name: ru-lang
value: Оптимизация фоновых процессов
- name: vi-lang
value: Tối ưu hóa Chạy ngầm
- name: zh-cn-lang
value: 后台优化
- name: zh-tw-lang
value: 背景最佳化
- title: Idioma y configuración regional
path: /preview/features/multilingual-support.html
path_attributes:
- name: es-lang
value: Idioma y configuración regional
- name: in-lang
value: Bahasa dan Lokal
- name: ja-lang
value: 言語とロケール
- name: ko-lang
value: 언어 및 로케일
- name: pt-br-lang
value: Idioma e localidade
- name: ru-lang
value: Язык и языковой стандарт
- name: vi-lang
value: Ngôn ngữ và Bản địa
- name: zh-cn-lang
value: 语言和区域设置
- name: zh-tw-lang
value: 語言和地區設定
- title: Android N for Developers
path: /preview/api-overview.html
path_attributes:
- name: es-lang
value: Información general de la API
- name: in-lang
value: Android N untuk Pengembang
- name: ja-lang
value: API の概要
- name: ko-lang
value: API 개요
- name: pt-br-lang
value: Visão geral da API
- name: ru-lang
value: Обзор API-интерфейсов
- name: vi-lang
value: Android N cho Nhà phát triển
- name: zh-cn-lang
value: API 概览
- name: zh-tw-lang
value: API 總覽
section:
- title: Compatibilidad con ventanas múltiples
path: /preview/features/multi-window.html
path_attributes:
- name: es-lang
value: Compatibilidad con ventanas múltiples
- name: in-lang
value: Dukungan Multi-Jendela
- name: ja-lang
value: マルチ ウィンドウのサポート
- name: ko-lang
value: 다중 창 지원
- name: pt-br-lang
value: Suporte a várias janelas
- name: ru-lang
value: Поддержка многооконного режима
- name: vi-lang
value: Hỗ trợ đa cửa sổ
- name: zh-cn-lang
value: 多窗口支持
- name: zh-tw-lang
value: 多視窗支援
- title: Notificaciones
path: /preview/features/notification-updates.html
path_attributes:
- name: es-lang
value: Notificaciones
- name: in-lang
value: Pemberitahuan
- name: ja-lang
value: 通知
- name: ko-lang
value: 알림
- name: pt-br-lang
value: Notificações
- name: ru-lang
value: Уведомления
- name: vi-lang
value: Thông báo
- name: zh-cn-lang
value: 通知
- name: zh-tw-lang
value: 通知
- title: Ahorro de datos
path: /preview/features/data-saver.html
- title: Grabación de TV
path: /preview/features/tv-recording-api.html
path_attributes:
- name: es-lang
value: Grabación de TV
- name: in-lang
value: Perekaman TV
- name: ja-lang
value: TV の録画
- name: ko-lang
value: TV 녹화
- name: pt-br-lang
value: Gravação para TV
- name: ru-lang
value: Запись ТВ
- name: vi-lang
value: Ghi lại TV
- name: zh-cn-lang
value: TV 录制
- name: zh-tw-lang
value: 電視錄製
- title: Configuración de seguridad de la red
path: /preview/features/security-config.html
path_attributes:
- name: es-lang
value: Configuración de seguridad de la red
- name: ja-lang
value: ネットワーク セキュリティ構成
- name: ko-lang
value: 네트워크 보안 구성
- name: pt-br-lang
value: Configurações de segurança de rede
- name: ru-lang
value: Конфигурация сетевой безопасности
- name: vi-lang
value: Cấu hình Bảo mật mạng
- name: zh-cn-lang
value: 网络安全配置
- name: zh-tw-lang
value: 網路安全性設定
- title: Compatibilidad con ICU4J
path: /preview/features/icu4j-framework.html
path_attributes:
- name: es-lang
value: API de ICU4J del framework de Android
- name: in-lang
value: ICU4J Android Framework API
- name: ja-lang
value: ICU4J Android フレームワーク API
- name: ko-lang
value: ICU4J Android 프레임워크 API
- name: pt-br-lang
value: APIs de estrutura do Android para ICU4J
- name: ru-lang
value: API-интерфейсы ICU4J в платформе Android
- name: vi-lang
value: API Khuôn khổ Android ICU4J
- name: zh-cn-lang
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Funciones del lenguaje Java 8
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Actualizaciones para Android for Work
path: /preview/features/afw.html
- title: Acceso a directorios determinados
path: /preview/features/scoped-folder-access.html
path_attributes:
- name: es-lang
value: Acceso a directorios determinados
- name: ja-lang
value: 特定のディレクトリへのアクセス
- name: ko-lang
value: 범위가 지정된 디렉터리 액세스
- name: pt-br-lang
value: Acesso a diretórios com escopo
- name: ru-lang
value: Доступ к выделенным каталогам
- name: vi-lang
value: Truy cập Thư mục theo Phạm vi
- name: zh-cn-lang
value: 作用域目录访问
- name: zh-tw-lang
value: 限定範圍目錄存取
- title: Ejemplos
path: /preview/samples.html
path_attributes:
- name: es-lang
value: Ejemplos
- name: in-lang
value: Contoh
- name: ja-lang
value: サンプル
- name: ko-lang
value: 샘플
- name: pt-br-lang
value: Exemplos
- name: ru-lang
value: Примеры
- name: zh-cn-lang
value: 示例
- name: zh-tw-lang
value: 範例
- title: Contrato de licencia
path: /preview/license.html
path_attributes:
- name: es-lang
value: Contrato de licencia
- name: ja-lang
value: 使用許諾契約
- name: ko-lang
value: 라이선스 계약
- name: pt-br-lang
value: Contrato de licença
- name: ru-lang
value: Лицензионное соглашение
- name: zh-cn-lang
value: 许可协议
- name: zh-tw-lang
value: 授權協議

View File

@@ -1,5 +1,5 @@
page.title=Android N para desarrolladores
meta.tags=“preview”, “Android N”
page.title=Android N for Developers
meta.tags="preview", "androidn"
page.tags="preview", "developer preview"
page.image=images/cards/card-n-apis_2x.png
@jd:body
@@ -16,13 +16,15 @@ page.image=images/cards/card-n-apis_2x.png
<li><a href="#notification_enhancements">Notificaciones</a></li>
<li><a href="#jit_aot">Compilación de JIT y AOT</a></li>
<li><a href="#quick_path_to_app_install">Acceso rápido a la instalación de aplicaciones</a></li>
<li><a href="#doze_on_the_go">Doze en movimiento</a></li>
<li><a href="#doze_on_the_go">Descanso en movimiento</a></li>
<li><a href="#background_optimizations">Optimizaciones en segundo plano</a></li>
<li><a href="#data_saver">Ahorro de datos</a></li>
<li><a href="#tile_api">API para Mosaico de Configuración rápida</a></li>
<li><a href="#vulkan">API Vulkan</a></li>
<li><a href="#tile_api">API para mosaicos de Quick Settings</a></li>
<li><a href="#number-blocking">Bloqueo de números</a></li>
<li><a href="#call_screening">Filtración de llamadas</a></li>
<li><a href="#multi-locale_languages">Configuraciones regionales e idiomas</a></li>
<li><a href="#emoji">Nuevos emojis</a></li>
<li><a href="#icu4">API de ICU4J en Android</a></li>
<li><a href="#gles_32">API de OpenGL ES 3.2</a></li>
<li><a href="#android_tv_recording">Grabación de Android TV</a></li>
@@ -32,8 +34,14 @@ page.image=images/cards/card-n-apis_2x.png
<li><a href="#key_attestation">Atestación de claves</a></li>
<li><a href="#network_security_config">Configuración de seguridad de la red</a></li>
<li><a href="#default_trusted_ca">CA de confianza predeterminada</a></li>
<li><a href="apk_signature_v2">Esquema de firma de APK v2</a></li>
<li><a href="#apk_signature_v2">Esquema de firma de APK v2</a></li>
<li><a href="#scoped_directory_access">Acceso a directorios determinados</a></li>
<li><a href="#keyboard_shortcuts_helper">Ayuda en los métodos abreviados del teclado</a></li>
<li><a href="#sustained_performance_api">API de rendimiento sostenido</a></li>
<li><a href="#vr">Soporte de RV</a></li>
<li><a href="#print_svc">Mejoras del servicio de impresión</a></li>
<li><a href="#virtual_files">Archivos virtuales</a></li>
<li><a href="#framemetrics_api">API FrameMetricsListener</a></li>
</ol>
</div>
</div>
@@ -60,13 +68,13 @@ en la plataforma: la compatibilidad con ventanas múltiples. </p>
<p>Los usuarios ahora pueden abrir dos aplicaciones al mismo tiempo en la pantalla. </p>
<ul>
<li>En teléfonos y tabletas
con Android N, los usuarios pueden ejecutar dos aplicaciones en paralelo
con Android N, los usuarios pueden ejecutar dos aplicaciones en paralelo
una encima otra en el modo de pantalla dividida. También tienen la posibilidad de modificar el tamaño de las aplicaciones arrastrando
la línea divisoria que se encuentra entre ellas. </li>
<li>En los dispositivos con Android TV, las aplicaciones pueden habilitar en forma automática el <a href="{@docRoot}preview/features/picture-in-picture.html">modo "picture-in
-picture"</a>. Esto les permite continuar mostrando contenido mientras el usuario explora otras
aplicaciones o interactúa con ellas. Consulta las secciones siguientes para obtener más información. </li>
<li>En los dispositivos con Android TV, las aplicaciones pueden habilitar en forma automática el <a href="{@docRoot}preview/features/picture-in-picture.html">modo
"picture-in-picture"</a>. Esto les permite continuar mostrando contenido mientras el usuario explora otras
aplicaciones o interactúa con ellas.</li>
</ul>
<div class="col-4of10">
@@ -74,47 +82,55 @@ aplicaciones o interactúa con ellas. Consulta las secciones siguientes para obt
<p class="img-caption">
<strong>Figura 1:</strong> Aplicaciones en ejecución en el modo de pantalla dividida.
</p>
</div>
<p>En las tabletas, en particular, y en otros dispositivos de pantallas más grandes, la compatibilidad con ventanas múltiples
ofrece nuevas maneras de captar a los usuarios. Puedes, incluso, habilitar acciones de arrastrar y soltar en
tu aplicación para que los usuarios arrastren contenido hacia tu aplicación o desde ella; es una excelente
ofrece nuevas maneras de atraer a los usuarios Puedes, habilitar acciones de arrastrar y soltar en
tu aplicación para que los usuarios arrastren contenido hacia tu aplicación &mdash;o desde ella; es una excelente
manera de mejorar su experiencia. </p>
<p>Es sencillo agregar compatibilidad con ventanas múltiples a tu aplicación y configurar la manera en que
administra la visualización de estas ventanas. Por ejemplo, puedes especificar las dimensiones mínimas
permitidas de tu actividad, y evitar así que los usuarios den a la actividad un tamaño inferior
al que establecen estas. También puedes deshabilitar la visualización de ventanas múltiples para tu aplicación, lo cual
garantiza que en el sistema solo se muestre tu aplicación en el modo de pantalla completa.</p>
permitidas de tu actividad y evitar así que los usuarios den a la actividad un
tamaño inferior. También puedes inhabilitar la visualización de ventanas múltiples para tu aplicación, lo que
garantiza que el sistema solo muestre tu aplicación en modo de pantalla completa.</p>
<p>
Para obtener más información, consulta la documentación sobre <a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con ventanas múltiples</a>
para desarrolladores.
Para obtener más información, consulta la documentación <a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con ventanas múltiples</a>
para desarrolladores.
</p>
<h2 id="notification_enhancements">Mejoras en las notificaciones</h2>
<p>En Android N, hemos rediseñado las notificaciones para facilitar y agilizar su
uso. Entre los cambios se incluyen los siguientes:</p>
uso. Entre los cambios, se incluyen los siguientes:</p>
<ul>
<li>
<strong>Actualizaciones en las plantillas</strong>: actualizaremos las plantillas de notificaciones para
poner nuevo énfasis en la imagen de héroe y el avatar. Los desarrolladores podrán
aprovechar las nuevas plantillas con una cantidad mínima de ajustes en su código.
<strong>Actualizaciones de plantillas</strong>: estamos actualizando las plantillas de notificaciones para
poner nuevo énfasis en la imagen de héroe y el avatar. Los desarrolladores podrán
aprovechar las nuevas plantillas con una cantidad mínima de ajustes en el código.
</li>
<li>
<strong>Personalización del estilo de mensaje</strong>: puedes personalizar más etiquetas
de la interfaz de usuario asociadas con tus notificaciones utilizando la clase
<code>MessageStyle</code>. Puedes configurar el mensaje, el título de
la conversación y la vista del contenido.
</li>
<li>
<strong>Notificaciones agrupadas</strong>: el sistema puede agrupar mensajes
(por ejemplo, por tema) y mostrar el grupo. Un usuario puede
aplicar acciones, como “Dismiss” o “Archive”, en ellos. Si
aplicar acciones, como Dismiss o Archive, en ellos. Si
has implementado notificaciones para Android Wear, ya estarás familiarizado con
este modelo.
</li>
<li>
<strong>Respuesta directa</strong>: en el caso de las aplicaciones de comunicación en tiempo real, el
sistema de Android admite respuestas en línea para que los usuarios puedan responder en forma rápida a
sistema de Android admite respuestas en línea para que los usuarios puedan responder rápidamente a
un mensaje SMS o de texto directamente dentro en la interfaz de notificaciones.
</li>
@@ -143,75 +159,75 @@ uso. Entre los cambios se incluyen los siguientes:</p>
</p>
<p>Para obtener información acerca de cómo implementar las nuevas funciones, consulta la guía
<a href="{@docRoot}preview/features/notification-updates.html">Notificaciones</a>.</p>
<a href="{@docRoot}preview/features/notification-updates.html">Notificaciones</a>.
</p>
<h2 id="jit_aot">Compilación de JIT y AOT guiada por perfiles</h2>
<p>En Android N, agregamos un compilador “Just in Time” (JIT) con generación de perfiles de código para
ART, lo cual le permite mejorar constantemente el rendimiento de las aplicaciones de Android mientras se
ejecutan. El compilador JIT complementa al compilador “Ahead of Time” (AOT) actual de ART
<p>En Android N, agregamos un compilador Just in Time (JIT) con generación de perfiles de código para
ART, lo cual te permite mejorar constantemente el rendimiento de las aplicaciones con Android mientras se
ejecutan. El compilador JIT complementa el compilador Ahead of Time (AOT) actual de ART
y permite mejorar el rendimiento del tiempo de ejecución, ahorrar espacio de almacenamiento y acelerar las actualizaciones
de aplicaciones y del sistema.</p>
<p>La compilación guiada por perfiles permite que ART maneje la compilación de AOT y JIT de cada aplicación
conforme a su uso real, además de las condiciones en el dispositivo. Por
ejemplo, conserva un perfil de los métodos directos de cada aplicación, y puede compilar previamente
y almacenar en el caché dichos métodos para obtener el mejor rendimiento. A su vez, deja otras partes de la aplicación
sin compilar hasta que se aplican verdaderamente.</p>
ejemplo, ART conserva un perfil de los métodos directos de cada aplicación, y puede compilar previamente
y almacenar en caché dichos métodos para obtener el mejor rendimiento. A su vez, deja otras partes de la aplicación
sin compilar hasta que se usan realmente.</p>
<p>Además de mejorar el rendimiento de partes claves de la aplicación, la compilación guiada por
perfiles permite reducir la superficie de memora RAM total de una aplicación, incluidos los archivos binarios
asociados. Esta función tiene particular importancia en los dispositivos de memoria reducida.</p>
<p>ART administra la compilación guiada por perfiles de una manera que minimiza el impacto sobre la batería
<p>ART administra la compilación guiada por perfiles de una manera que minimiza el impacto en la batería
del dispositivo. Realiza compilaciones previas únicamente cuando el dispositivo se encuentra inactivo y
en proceso de carga, con lo cual permite ahorrar tiempo y batería al hacer el trabajo en forma anticipada.</p>
en proceso de carga, lo cual permite ahorrar tiempo y batería haciendo el trabajo de manera anticipada.</p>
<h2 id="quick_path_to_app_install">Acceso rápido a la instalación de aplicaciones</h2>
<p>Uno de los beneficios más palpables del compilador JIT de ART es la velocidad de instalación de las
aplicaciones y de actualización del sistema. Incluso las aplicaciones de mayor tamaño, en cuyos casos se necesitaban varios minutos para la
aplicaciones y de actualización del sistema. Incluso las aplicaciones de mayor tamaño, en las que se necesitaban varios minutos para la
optimización y la instalación en Android 6.0, ahora pueden instalarse en cuestión de
segundos. Las actualizaciones del sistema también son más rápidas debido a que ya no hay paso de optimización. </p>
segundos. Las actualizaciones del sistema también son más rápidas, debido a que ya no hay un paso de optimización. </p>
<h2 id="doze_on_the_go">Doze en movimiento...</h2>
<h2 id="doze_on_the_go">Descanso en movimiento...</h2>
<p>En Android 6.0 se presentó Doze, un modo de sistema que ahorra batería al aplazar
<p>En Android 6.0, se presentó Descanso, un modo de sistema que ahorra batería aplazando
actividades de CPU y red de las aplicaciones cuando el dispositivo se encuentra inactivo; por ejemplo, al hallarse
sobre una mesa o en un cajón. </p>
<p>Ahora, en Android N, el modo Doze ofrece el beneficio adicional de ahorrar batería en movimiento.
<p>Ahora, en Android N, el modo Descanso ofrece el beneficio adicional de ahorrar batería en movimiento.
Siempre que la pantalla permanezca apagada durante un tiempo y el dispositivo esté desenchufado,
Doze aplicará un subconjunto de las restricciones de CPU y red conocidas a las aplicaciones.
Descanso aplicará un subconjunto de las restricciones de CPU y red conocidas a las aplicaciones.
Esto significa que los usuarios pueden ahorrar batería aun cuando lleven sus dispositivos
en los bolsillos.</p>
<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
<p class="img-caption">
<strong>Figura 3:</strong> Doze ahora aplica
<strong>Figura 3:</strong> Descanso ahora aplica
restricciones para prolongar la duración de la batería aun cuando el dispositivo no está quieto.
</p>
<p>Poco tiempo después de que la pantalla se apaga, cuando el dispositivo no está enchufado, Doze
<p>Poco tiempo después de que la pantalla se apaga, cuando el dispositivo no está enchufado, Descanso
restringe el acceso a la red y aplaza tareas y sincronizaciones. Durante períodos de mantenimiento
breves, las aplicaciones tienen acceso a la red y se ejecutan todas sus
tareas y sincronizaciones aplazadas. Al encenderse la pantalla o enchufarse el dispositivo se desactiva el modo
Doze del dispositivo.</p>
breves, las aplicaciones tienen acceso a la red y se ejecutan todas las
tareas y sincronizaciones aplazadas. Ten en cuenta que, cuando se activa la pantalla o se enchufa el dispositivo, se
desactiva el modo Descanso.</p>
<p>Cuando el dispositivo vuelve a estar quieto, desenchufado y con la pantalla apagada durante un
tiempo, Doze aplica todas las restricciones de CPU y redes en {@link
tiempo, Descanso aplica todas las restricciones de CPU y redes en {@link
android.os.PowerManager.WakeLock}, alarmas de {@link android.app.AlarmManager} y análisis de
GPS o Wi-Fi.</p>
<p>Las prácticas recomendadas para adaptar tu aplicación a Doze no varían si el
<p>Las prácticas recomendadas para adaptar tu aplicación a Descanso no varían si el
dispositivo estará en movimiento o no. Por lo tanto, si ya actualizaste tu aplicación para que administre
Doze en forma equilibrada, estarás listo. Si no lo hiciste, comienza a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptarla
a Doze</a> ahora.</p>
Descanso correctamente, no tienes nada más que hacer. Si no lo hiciste, comienza a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptarla
a Descanso</a> ahora.</p>
<h2 id="background_optimizations">Project Svelte: Optimizaciones en segundo plano</h2>
@@ -220,7 +236,7 @@ en los diferentes dispositivos Android del ecosistema. En Android N, el objetivo
Svelte es optimizar la manera en que las aplicaciones se ejecutan en segundo plano. </p>
<p>El procesamiento en segundo plano es una parte esencial de la mayoría de las aplicaciones. Cuando se maneja en forma adecuada, puede
hacer que la experiencia de tu usuario sea increíble (inmediata, rápida y pertinente al contexto).
hacer que la experiencia de tu usuario sea increíble &mdash;(inmediata, rápida y pertinente al contexto).
Cuando no se maneja de tal manera, el procesamiento en segundo plano puede suponer un consumo innecesario de memoria RAM (y
batería), y afectar el rendimiento del sistema para otras aplicaciones. </p>
@@ -242,18 +258,18 @@ simpleza, y nuestro deseo es que todas las aplicaciones lo usen. </p>
casos de uso de tus aplicaciones; por ejemplo, en Android N ahora puedes programar procesos
en segundo plano según los cambios de los proveedores de contenido. Al mismo tiempo, comenzaremos a
dejar de usar algunos de los patrones anteriores que pueden reducir el rendimiento del sistema,
en especial en dispositivos de memoria reducida.</p>
en especial, en dispositivos de memoria reducida.</p>
<p>En Android N, eliminaremos tres difusiones implícitas que se usan normalmente (
<p>En Android N, eliminaremos tres transmisiones implícitas que se usan normalmente &mdash;(
{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
android.hardware.Camera#ACTION_NEW_PICTURE} y {@link
android.hardware.Camera#ACTION_NEW_VIDEO}), ya que pueden activar los
procesos en segundo plano de varias aplicaciones al mismo tiempo, y así exigir la memoria y la batería. Si
tu aplicación recibe estas difusiones, aprovecha la N Developer Preview y
realiza la migración a <code>JobScheduler</code> y hacia las API relacionadas, como alternativa. </p>
tu aplicación recibe estas transmisiones, aprovecha la N Developer Preview y
realiza la migración a <code>JobScheduler</code> y las API relacionadas, como alternativa. </p>
<p>
Para obtener información detallada, consulta la documentación de <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
Para obtener información detallada, consulta la documentación <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
en segundo plano</a>.
</p>
@@ -268,31 +284,76 @@ tu aplicación recibe estas difusiones, aprovecha la N Developer Preview y
</p>
</div>
<p>Durante la vida útil de un dispositivo móvil, el costo de un plan de datos móviles normalmente
superará el costo del propio dispositivo. Para muchos usuarios, los datos móviles son un
<p>Durante la vida útil de un dispositivo móvil, el costo de un plan de datos móviles puede
superar fácilmente el costo del propio dispositivo. Para muchos usuarios, los datos móviles son un
recurso costoso que desean conservar. </p>
<p>En Android N se presenta el modo de ahorro de datos, un nuevo servicio del sistema que permite reducir
<p>En Android N, se presenta el modo de ahorro de datos, un nuevo servicio del sistema que permite reducir
el uso de datos móviles de las aplicaciones, ya sea con servicio de itinerancia, cerca del final del ciclo de facturación
o con un paquete de datos prepagos. El ahorro de datos permite que los usuarios controlen la manera en que las aplicaciones
usan los datos móviles y que los desarrolladores brinden un servicio más eficaz cuando el ahorro
de datos se encuentra activo. </p>
<p>Cuando un usuario habilita el ahorro de datos en <strong>Settings</strong> y el dispositivo está
conectado a una red de uso medido, el sistema bloquea el uso de datos en segundo plano y ordena a las aplicaciones
conectado a una red o, el sistema bloquea el uso de datos en segundo plano y ordena a las aplicaciones
usar menos datos en primer plano siempre que sea posible (por ejemplo, limitando
la tasa de bits para la transmisión, reduciendo la calidad de la imagen y aplazando el valor optimista de almacenamiento previo en caché,
entre otras posibilidades). Los usuarios pueden permitir que aplicaciones específicas habiliten el uso de datos medidos en segundo plano
aun cuando esté activo el ahorro de datos.</p>
entre otras posibilidades). Los usuarios pueden incluir aplicaciones específicas en la lista blanca para
permitir el uso de datos medidos en segundo plano, incluso cuando está activado el ahorro de datos.</p>
<p>Android N extiende {@link android.net.ConnectivityManager} para que las aplicaciones
tengan una manera de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar las
preferencias de ahorro de datos del usuario</a> y los <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitor
cambios en estas</a>. Todas las aplicaciones deben verificar si el usuario habilitó el ahorro de
datos e intentar limitar el uso de datos en primer y segundo plano.</p>
preferencias de ahorro de datos del usuario</a> y<a href="{@docRoot}preview/features/data-saver.html#monitor-changes"> monitorear
cambios en estas</a>. Todas las aplicaciones deben verificar si el usuario habilitó el ahorro
de datos e intentar limitar el uso de datos en primer y segundo plano.</p>
<h2 id="tile_api">API para Mosaico de Configuración rápida</h2>
<h2 id="vulkan">API Vulkan</h2>
<p>
Android N integra <a href="http://www.khronos.org/vulkan" class="external-link">Vulkan™</a>, una nueva API de visualización 3D, en la plataforma. Al igual que
<a href="https://www.khronos.org/opengles/" class="external-link">OpenGL™
ES</a>, Vulkan es un estándar abierto para gráficos y visualización 3D, cuyo mantenimiento está a cargo de
Khronos Group.
</p>
<p>
Vulkan se diseñó desde el principio para minimizar la sobrecarga de CPU en el controlador,
y permite que tu aplicación controle el funcionamiento de la unidad de procesamiento de gráficos más directamente. También
hace posible contar con un mejor trabajo en paralelo, ya que permite que varios subprocesos diversos realicen
trabajos, como la construcción del búfer de comandos, a la vez.
</p>
<p>
Las herramientas y las bibliotecas de desarrollo de Vulkan son parte del NDK de Android. Esto
incluye lo siguiente:
</p>
<ul>
<li>Encabezados
</li>
<li>Capas de validación (bibliotecas de depuración)
</li>
<li>Compilador SPIR-V
</li>
<li>Biblioteca de compilación de tiempo de ejecución de SPIR-V
</li>
</ul>
<p>
Vulkan solo está disponible en las aplicaciones en dispositivos con hardware compatible con Vulkan,
como Nexus 5X, Nexus 6P y Nexus Player. Estamos trabajando estrechamente con nuestros
socios para que Vulkan se pueda utilizar en más dispositivos lo más pronto posible.
</p>
<p>
Para obtener más información, consulta la <a href="{@docRoot}ndk/guides/graphics/index.html">documentación de la API</a>.
</p>
<h2 id="tile_api">API para mosaicos de Quick Settings</h2>
<div style="float:right;max-width:320px">
@@ -305,7 +366,7 @@ datos e intentar limitar el uso de datos en primer y segundo plano.</p>
</div><p>Quick Settings es una manera popular y simple de exhibir configuraciones y acciones claves
directamente desde el panel de notificaciones. En Android N, expandimos el alcance de
Quick Settings para que sea más útil y práctico. </p>
Quick Settings para que sea todavía más útil y práctico. </p>
<p>Agregamos más espacio para mosaicos adicionales de Quick Settings, a los cuales los usuarios pueden
acceder desde un área de visualización paginada deslizando el dedo hacia la izquierda o la derecha. También permitimos
@@ -327,8 +388,8 @@ se mostrarán; pueden agregar o mover mosaicos con solo arrastrarlos y soltarlos
</p>
<p>
Para obtener información sobre la creación de un mosaico de aplicación, consulta
<code>android.service.quicksettings.Tile</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> descargable.
Para obtener información sobre la creación de un mosaico de aplicación, consulta la documentación de
<code>android.service.quicksettings.Tile</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
</p>
@@ -342,7 +403,7 @@ escritura en la lista de números bloqueados. Otras aplicaciones no pueden acced
<p>Al hacer que el bloqueo de números sea una función estándar de la plataforma, Android permite que las
aplicaciones admitan de manera uniforme el bloqueo de números en una amplia variedad de
dispositivos. Entre los demás beneficios que pueden aprovecharse en las aplicaciones, se encuentran los siguientes:</p>
dispositivos. Entre los demás beneficios que pueden aprovechar las aplicaciones, se encuentran los siguientes:</p>
<ul>
<li> Los números bloqueados en las llamadas también se bloquean en los mensajes de texto.
@@ -358,7 +419,7 @@ por cualquier medio, como terminales VOIP o teléfonos con transferencia de llam
<p>
Para obtener más información, consulta <code>android.provider.BlockedNumberContract</code>
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API
</a>descargable.
</p>
@@ -379,7 +440,7 @@ por cualquier medio, como terminales VOIP o teléfonos con transferencia de llam
<p>
Para obtener más información, consulta <code>android.telecom.CallScreeningService</code>
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API
</a>descargable.
</p>
@@ -389,31 +450,73 @@ por cualquier medio, como terminales VOIP o teléfonos con transferencia de llam
<p>Android N permite a los usuarios seleccionar <strong>varias configuraciones regionales</strong> en Settings,
para brindar una mejor compatibilidad con casos de uso de dos idiomas. Las aplicaciones pueden usar
una nueva API para obtener las configuraciones regionales seleccionadas del usuario y luego ofrecer experiencias
más sofisticadas para usuarios que usen varias configuraciones regionales; por ejemplo, pueden mostrar resultados de búsqueda en
una nueva API para obtener las configuraciones regionales seleccionadas del usuario y luego ofrecer experiencias más sofisticadas
para usuarios que usen varias configuraciones regionales; por ejemplo, pueden mostrar resultados de búsqueda en
varios idiomas y no ofrecer traducciones de páginas web con idiomas que el
usuario conozca.</p>
<p>Además de la compatibilidad con varias configuraciones regionales, en Android N también se amplía la variedad de idiomas
disponibles para los usuarios. Se ofrecen 25 variantes, cada una de ellas para idiomas de uso
disponibles para los usuarios. Se ofrecen más de 25 variantes, cada una de ellas para idiomas de uso
común, como el inglés, el español, el francés y el árabe. También se agrega compatibilidad
parcial con más de 100 idiomas nuevos.</p>
<p>Las aplicaciones pueden obtener la lista de configuraciones regionales establecida por el usuario llamando a <code>LocaleList.GetDefault()</code>. A fin de admitir la cantidad ampliada de configuraciones regionales, en Android N se modificará la forma de
resolver recursos. Asegúrate de controlar que tus aplicaciones
<p>Las aplicaciones pueden obtener la lista de configuraciones regionales establecida por el usuario llamando a
<code>LocaleList.GetDefault()</code>. A fin de admitir la cantidad ampliada de configuraciones regionales, en Android N, se
modificará la forma de resolver recursos. Asegúrate de controlar que tus aplicaciones
funcionen de la manera esperada con la nueva lógica de resolución de recursos.</p>
<p>Para obtener información sobre el nuevo comportamiento de resolución de recursos y las prácticas recomendadas que
debes aplicar, consulta <a href="{@docRoot}preview/features/multilingual-support.html">Compatibilidad con varios idiomas</a>.</p>
<h2 id="emoji">Nuevos emojis</h2>
<p>
Android N presenta más emojis y funciones relacionadas con estos, como
emojis con diferentes tonos de piel y compatibilidad con selectores de
variación. Si tu aplicación admite emojis,
sigue las pautas a continuación para aprovechar estas funciones relacionadas con emojis.
</p>
<ul>
<li>
<strong>Comprueba que el dispositivo contenga el emoji antes de insertarlo.</strong>
Para corroborar qué emojis tiene la fuente del
sistema, usa el método {@link android.graphics.Paint#hasGlyph(String)}.
</li>
<li>
<strong>Comprueba que el emoji admita los selectores de variación.</strong>
Los selectores de variación te permiten
presentar determinados emojis en color o en blanco y negro.
En los dispositivos móviles, las aplicaciones deben representar los emojis en color, en lugar de hacerlo en blanco y negro. Sin embargo,
si tu aplicación muestra los emojis alineados con el texto, debe usar la variación de blanco y negro.
A fin de determinar si un emoji tiene una variación, usa el selector de variación.
Para conocer la lista completa de caracteres con variaciones, consulta la sección de
<em>secuencias de variación de emojis</em> de la
<a class="external-link" href="http://www.unicode.org/Public/9.0.0/ucd/StandardizedVariants-9.0.0d1.txt">
documentación de Unicode sobre variaciones</a>.
</li>
<li>
<strong>Comprueba que el emoji admita tonos de piel.</strong> Android N permite que los usuarios modifiquen el
tono de piel presentado de los emojis según su preferencia. Las aplicaciones de teclado deben brindar indicaciones
visuales para los emojis que tienen múltiples tonos de piel y permitir que los usuarios
seleccionen el tono que prefieran. Para determinar qué emojis del sistema tienen
modificadores del tono de piel, usa el método {@link android.graphics.Paint#hasGlyph(String)}.
Puedes determinar qué emojis usan tonos de piel leyendo la
<a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">
documentación de Unicode</a>.
</li>
</ul>
<h2 id="icu4">API de ICU4J en Android</h2>
<p>
Android N ahora ofrece un subconjunto de API de <a href="http://site.icu-project.org/">ICU4J</a> dentro del framework de Android, en el paquete
<code>android.icu</code>. La migración es sencilla y en mayor medida implica
Android N ahora ofrece un subconjunto de las API de <a href="http://site.icu-project.org/">ICU4J</a> dentro del framework de Android, en
el paquete <code>android.icu</code>. La migración es sencilla y en mayor medida implica
simplemente un cambio del espacio de nombres <code>com.java.icu</code> a
<code>android.icu</code>. Si ya usas el paquete ICU4J en tus
aplicaciones, el cambio a las API de <code>android.icu</code> en el framework de Android
aplicaciones, el cambio a las API <code>android.icu</code> en el framework de Android
puede reducir notablemente el tamaño del APK.
</p>
@@ -428,7 +531,8 @@ debes aplicar, consulta <a href="{@docRoot}preview/features/multilingual-support
<p>En Android N se agregan interfaces de framework y compatibilidad con plataformas para OpenGL ES 3.2, entre las que se incluye lo siguiente:</p>
<ul>
<li> todas las extensiones del <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">paquete de extensiones de Android</a></a> (AEP), a excepción de <code>EXT_texture_sRGB_decode</code>;
<li> todas las extensiones del <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">
paquete de extensiones de Android</a></a> (AEP), a excepción de <code>EXT_texture_sRGB_decode</code>;
<li> búferes de fotogramas de punto flotante para HDR y sombreado aplazado;
<li> llamadas a draw a través de BaseVertex para mejorar el procesamiento por lotes y la transmisión;
<li> sólido control de acceso a búfer para reducir la sobrecarga de WebGL.
@@ -440,12 +544,12 @@ requisito en tu archivo de manifiesto, con la etiqueta <code>&lt;uses-feature&gt
atributo <code>android:glEsVersion</code>. </p>
<p>Para obtener información sobre el uso de OpenGL ES, incluida la manera de comprobar la
versión de OpenGL ES que admite el dispositivo durante el tiempo de ejecución, consulta la<a href="{@docRoot}guide/topics/graphics/opengl.html">guía de la API OpenGL ES</a>.</p>
versión de OpenGL ES que admite el dispositivo durante el tiempo de ejecución, consulta la<a href="{@docRoot}guide/topics/graphics/opengl.html"> guía de la API OpenGL ES</a>.</p>
<h2 id="android_tv_recording">Grabación de Android TV</h2>
<p>En Android N se agrega la capacidad de grabar y reproducir contenido de servicios
<p>En Android N, se agrega la capacidad de grabar y reproducir contenido de servicios
de entrada de Android TV a través de las nuevas API de grabación. Aprovechando las mejoras existentes de las API time shifting
, los servicios de entrada de TV pueden controlar los datos de canales que pueden grabarse y la manera
en que se guardan las sesiones grabadas, y administrar la interacción del usuario con el contenido grabado. </p>
@@ -456,14 +560,15 @@ en que se guardan las sesiones grabadas, y administrar la interacción del usuar
<h2 id="android_for_work">Android for Work</h2>
<p>Android for Work suma muchas funciones y API nuevas para dispositivos con Android N.
A continuación, se muestran algunos aspectos destacados. Para hallar una lista completa de actualizaciones de Android for Work
relacionadas con Android N, consulta la sección de cambios en Android for Work.</p>
A continuación, se muestran algunos aspectos destacados. Para ver la lista completa de cambios, consulta
<a href="{@docRoot}preview/features/afw.html">Actualizaciones de Android for Work</a>.</p>
<h3 id="work_profile_security_challenge">Comprobación de seguridad para perfiles de trabajo </h3>
<p>
Quienes posean perfiles pueden especificar una comprobación de seguridad separada para aplicaciones que se ejecuten en el
perfil de trabajo. La comprobación para perfiles de trabajo se muestra cuando un usuario intenta abrir
Los propietarios de perfiles orientados al SDK de Android N
pueden especificar una comprobación de seguridad independiente para las aplicaciones que se ejecutan en
el perfil de trabajo. La comprobación para perfiles de trabajo se muestra cuando un usuario intenta abrir
aplicaciones de trabajo. Cuando la comprobación de seguridad es exitosa, se desbloquea el
perfil de trabajo y se descifra si es necesario. Para quienes posean perfiles,
<code>ACTION_SET_NEW_PASSWORD</code> solicita al usuario establecer una comprobación de
@@ -472,13 +577,13 @@ relacionadas con Android N, consulta la sección de cambios en Android for Work.
</p>
<p>
Quienes posean perfiles pueden establecer políticas de contraseñas diferentes
Quienes posean perfiles pueden establecer políticas de contraseñas diferentes para la comprobación de seguridad de trabajo
(por ejemplo, la extensión que debe tener el PIN o la posibilidad de usar una huella digital
para desbloquear el perfil) usando <code>setPasswordQuality()</code>,
<code>setPasswordMinimumLength()</code> y métodos relacionados. También
pueden establecer el bloqueo del dispositivo usando la instancia de <code>DevicePolicyManager</code>
devuelta por el nuevo método <code>getParentProfileInstance()</code>.
Además, tiene la posibilidad de personalizar la pantalla de credenciales de la
Además, tienen la posibilidad de personalizar la pantalla de credenciales de la
comprobación de trabajo usando los nuevos métodos <code>setOrganizationColor()</code> y
<code>setOrganizationName()</code>.
</p>
@@ -487,8 +592,8 @@ relacionadas con Android N, consulta la sección de cambios en Android for Work.
<p>En dispositivos con perfil de trabajo, los usuarios pueden alternar el modo de trabajo. Cuando este último está
inactivo, el usuario administrado queda deshabilitado temporalmente, con lo cual se desactivan las aplicaciones de perfiles
de trabajo, la sincronización en segundo plano y las notificaciones. Esto incluye la aplicación del propietario del
perfil. Cuando el modo de trabajo está inactivo, en el sistema se muestra un icono de estado persistente
para recordar al usuario que no puede iniciar aplicaciones de trabajo. El lanzador
perfil. Cuando el modo de trabajo está inactivo, en el sistema se muestra un ícono
de estado persistente para recordar al usuario que no puede iniciar aplicaciones de trabajo. El launcher
indica que no es posible acceder a aplicaciones ni widgets de trabajo. </p>
<h3 id="always_on_vpn">Always on VPN </h3>
@@ -505,57 +610,67 @@ inicio del dispositivo.</p>
<p>Debido a que los servicios de VPN pueden enlazarse directamente a través del sistema sin interacción con
aplicaciones, los clientes de VPN deben administrar nuevos puntos de entrada para Always on VPN. Al igual que
antes, los servicios se indican al sistema con una clase <code>android.net.VpnService</code> de acción de coincidencia de filtro
de intenciones. </p>
antes, los servicios se indican al sistema con una
clase <code>android.net.VpnService</code> de acción de coincidencia de filtro de intents. </p>
<p>
Los usuarios también pueden establecer clientes Always on VPN que implementen métodos
<code>VPNService</code> en el usuario principal con
<strong>Settings&gt;More&gt;Vpn</strong>.
<strong>Settings &gt; More &gt; Vpn</strong>.
</p>
<h3 id="custom_provisioning">Aprovisionamiento personalizado</h3>
<p>
En una aplicación, se pueden personalizar los flujos de aprovisionamiento
del propietario del perfil y del dispositivo con logos y colores corporativos.
<code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code> personaliza el
color del flujo. <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
personaliza el flujo con un logotipo corporativo.
</p>
<h2 id="accessibility_enhancements">Mejoras de accesibilidad</h2>
<p>Android N ahora ofrece Vision Settings directamente en la pantalla de Bienvenida para la configuración de
<p>Android N ahora ofrece Vision Settings directamente en la pantalla de bienvenida para la configuración de
dispositivos nuevos. Esto permite a los usuarios descubrir y configurar de manera mucho más sencilla
funciones de accesibilidad en sus dispositivos, como el gesto de ampliación, el tamaño
de fuente, el tamaño de pantalla y TalkBack. </p>
<p>Al tener estas funciones de accesibilidad una disposición más prominente, es más probable
que tus usuarios prueben tu aplicación con ellas habilitadas. Asegúrate de probar tus aplicaciones
en forma anticipada con esta configuración habilitada. Puedes activarla en Settings &gt;
anticipadamente con esta configuración habilitada. Puedes habilitarla en Settings &gt;
Accessibility.</p>
<p>Otra posibilidad en Android N: los servicios de accesibilidad ahora pueden asistir a los usuarios con discapacidades
motoras para el uso de la pantalla. La nueva API permite crear servicios con
<p>Además, los servicios de accesibilidad de Android N ahora pueden asistir a los usuarios con discapacidades
motrices con el uso de la pantalla. La nueva API permite crear servicios con
funciones como el seguimiento de rostros u ojos y la exploración por puntos, entre otros, para satisfacer
las necesidades de estos usuarios.</p>
<p>Para obtener más información, consulta <code>android.accessibilityservice.GestureDescription</code>
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API </a>descargable.</p>
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.</p>
<h2 id="direct_boot">Inicio directo</h2>
<p>El inicio directo optimiza los tiempos de inicio del dispositivo y permite una funcionalidad
limitada de las aplicaciones aun después de un reinicio inesperado.
Por ejemplo, si un dispositivo cifrado se reinicia mientras el usuario duerme,
Por ejemplo, si un dispositivo encriptado se reinicia mientras el usuario duerme,
este último puede continuar recibiendo en forma normal notificaciones de alarmas, llamadas entrantes y mensajes
registrados. Esto también significa que los servicios de accesibilidad también pueden estar
disponibles de inmediato después de un reinicio.</p>
<p>El inicio directo aprovecha el cifrado basado en archivos de Android N,
a fin de habilitar políticas de cifrado específicas para datos del sistema y de aplicaciones.
El sistema usa un depósito cifrado por el dispositivo para datos de sistema seleccionados y datos de aplicaciones
explícitamente registrados. En forma predeterminada, se usa un depósito cifrado con credenciales para los
<p>El inicio directo aprovecha la encriptación basada en archivos de Android N,
a fin de habilitar políticas de encriptación específicas para datos del sistema y de aplicaciones.
El sistema usa un encriptado por el dispositivo para datos de sistema seleccionados y datos de aplicaciones
explícitamente registrados. De forma predeterminada, se usa un depósito encriptado con credenciales para los
datos de sistema, los datos de usuario, las aplicaciones y los datos de aplicaciones restantes. </p>
<p>Durante el inicio, el sistema se carga en un modo restringido con acceso únicamente
a datos cifrados por el dispositivo y sin acceso general a aplicaciones o datos.
a datos encriptados por el dispositivo y sin acceso general a aplicaciones o datos.
Si hay componentes que deseas ejecutar en este modo, puedes registrarlos
configurando un marcador en el manifiesto. Después del reinicio, el sistema activa
componentes registrados transmitiendo la intención
<code>LOCKED_BOOT_COMPLETED</code>. El sistema garantiza que estén disponibles los datos de aplicaciones cifrados por el dispositivo
componentes registrados transmitiendo la intent <code>LOCKED_BOOT_COMPLETED</code>
. El sistema garantiza que estén disponibles los datos de aplicaciones encriptados por el dispositivo
antes de la desactivación del bloqueo. No es posible acceder a los demás datos hasta que el usuario confirme sus credenciales de pantalla de
bloqueo para descifrarlos. </p>
@@ -571,14 +686,14 @@ Linux, vulnerabilidades potenciales de Android y extracciones
de dispositivos con derechos de administrador.</p>
<p>Para hacer más sencillo y seguro el uso de depósitos de claves guardados en hardware,
en Android N se presenta la atestación de claves. En las aplicaciones y en los servicios que no dependen de los dispositivos se puede usar la atestación
en Android N, se presenta la atestación de claves. En las aplicaciones y en los servicios que no dependen de los dispositivos se puede usar la atestación
de claves para determinar fehacientemente el almacenamiento de un par de claves RSA o EC se
en hardware, las propiedades de dicho par y las
limitaciones aplicadas a su uso y validez. </p>
<p>Los servicios que no dependen de los dispositivos y las aplicaciones pueden solicitar información acerca de un par de claves
a través de un certificado de atestación X.509 que debe firmarse con una clave de atestación
válida. La claves de atestación es una clave de firma ECDSA que se
válida. La clave de atestación es una clave de firma ECDSA que se
inyecta en el depósito de claves guardado en hardware en la fábrica.
Por lo tanto, un certificado de atestación firmado con una clave de atestación
válida confirma la existencia de un depósito de claves guardado en hardware y de información detallada
@@ -595,7 +710,7 @@ seguro (TEE)</a>:</p>
</ul>
<p>Para obtener más información sobre la función de depósitos de claves guardados en hardware,
consulta la guía de<a href="https://source.android.com/security/keystore/" class="external-link">Depósito de clave guardado en hardware</a>.</p>
consulta la guía de<a href="https://source.android.com/security/keystore/" class="external-link"> Depósito de clave guardado en hardware</a>.</p>
<p>Además de la atestación de claves, en Android N también se presentan
claves enlazadas a huellas digitales no revocadas en la inscripción con estas huellas.</p>
@@ -609,17 +724,17 @@ convencionales, propensas a generar errores (p. ej., X509TrustManager).</p>
<p>Funciones admitidas:</p>
<ul>
<li><b>Anclajes de veracidad personalizados:</b> permite personalizar a través a una aplicación las
entidades de certificación (CA) de confianza para las conexiones protegidas; por
ejemplo, certificados con firmas automáticas en particular o un conjunto de CA públicas.
<li><b>Anclajes de confianza personalizados.</b> Permite personalizar qué autoridades de
certificado (CA) son de confianza para las conexiones de seguridad de una aplicación. Por ejemplo,
confiar en certificados autofirmados particulares o un conjunto restringido de CA públicas.
</li>
<li><b>Anulaciones exclusivas de depuración:</b> permite que un desarrollador depure en forma segura
conexiones protegidas de sus aplicaciones sin riesgos adicionales para la base
<li><b>Anulaciones de solo depuración.</b> Permite que el desarrollador de una aplicación depure en forma segura
conexiones protegidas de su aplicación sin riesgos adicionales para la base
instalada.
</li>
<li><b>Desactivación de tráfico de Cleartext:</b> permite que una aplicación se proteja a sí misma contra
<li><b>Desactivación del tráfico de Cleartext.</b> Permite que una aplicación se proteja a sí misma contra
el uso accidental de tráfico de Cleartext.</li>
<li><b>Fijación de certificados:</b> función avanzada que permite a una aplicación
<li><b>Fijación de certificados.</b> Esta es una función avanzada que permite a una aplicación
limitar las claves de servidores en las que se pueda confiar para conexiones protegidas.</li>
</ul>
@@ -629,33 +744,68 @@ la red</a>.</p>
<h2 id="default_trusted_ca">Entidad de certificación de confianza predeterminada</h2>
<p>De manera predeterminada, en las aplicaciones orientadas a Android N solo se consideran como confiables los certificados proporcionados por el sistema
y ya no se da esta misma consideración a las entidades de certificación (CA) añadidas por usuarios. En aquellas aplicaciones orientadas a Android
y ya no se da esta misma consideración a las entidades de certificación (CA) agregadas por usuarios. En aquellas aplicaciones orientadas a Android
N para las cuales se desee considerar tales CA como válidas, se debe usar la
<a href="{@docRoot}preview/features/security-config.html">Configuración de seguridad de la red</a> a fin de
especificar los términos de confianza de dichas CA.</p>
<h2 id="apk_signature_v2">Esquema de firma de APK v2</h2>
<p>La clase PackageManager ahora admite la verificación de aplicaciones con el esquema
de firma de APK v2. Se trata de un esquema de firma de archivos completos
que agiliza considerablemente la verificación y refuerza las garantías de
integridad al detectar todos los cambios no autorizados en archivos APK.</p>
<p>
Android N presenta el esquema de firma de APK v2, un nuevo esquema de firma de aplicaciones que
ofrece instalación más rápida de las aplicaciones y mayor protección contra alteraciones
no autorizadas de archivos APK. De forma predeterminada, Android Studio 2.2 y el complemento de Android
para Gradle 2.2 firman tu aplicación con el esquema de firma de APK v2 y
el esquema de firma tradicional, que utiliza la firma JAR.
</p>
<p>Para conservar la compatibilidad con versiones anteriores, se debe firmar un APK con el esquema de firma
v1 (esquema de firma JAR) antes de la firma con el esquema de firma v2.
Si se usa este último, la verificación experimenta errores cuando se firma el APK con un
certificado adicional después de la firma con el esquema v2. </p>
<p>
Aunque recomendamos que implementes el esquema de firma de APK v2 en tu aplicación, este esquema
nuevo no es obligatorio. Si la aplicación no se compila correctamente con el
esquema de firma de APK v2, puedes deshabilitar este esquema nuevo. Si se deshabilita el proceso,
Android Studio 2.2 y el complemento de Android para Gradle 2.2 firman tu
aplicación con el esquema de firma tradicional solamente. Para firmar solo con el
esquema tradicional, abre el archivo <code>build.gradle</code> del nivel del módulo, a continuación,
agrega la línea <code>v2SigningEnabled false</code> a la configuración de firma
de la versión:
</p>
<p>Se ofrecerá disponibilidad con el esquema de firma de APK v2 más adelante en la N Developer
Preview.</p>
<pre>
android {
...
defaultConfig { ... }
signingConfigs {
release {
storeFile file("myreleasekey.keystore")
storePassword "password"
keyAlias "MyReleaseKey"
keyPassword "password"
<strong>v2SigningEnabled false</strong>
}
}
}
</pre>
<p class="caution"><strong>Advertencia: </strong> Si firmas la aplicación con el
esquema de firma de APK v2 y luego la modificas, se invalida
la firma de la aplicación. Por este motivo, usa herramientas como <code>zipalign</code>
antes de firmar la aplicación con el esquema de firma de APK v2, y no después.
</p>
<p>
Para obtener más información, lee los documentos de Android Studio que describen cómo
<a href="{@docRoot}studio/publish/app-signing.html#release-mode">
firmar una aplicación</a> en Android Studio y cómo<a href="{@docRoot}studio/build/build-variants.html#signing"> configurar
el archivo de compilación para firmar aplicaciones</a> con el complemento de Android para Gradle.
</p>
<h2 id="scoped_directory_access">Acceso a directorios determinados</h2>
<p>En Android N, las aplicaciones pueden usar nuevas API para solicitar acceso a directorios de<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">almacenamiento
<p>En Android N, las aplicaciones pueden usar nuevas API para solicitar acceso a directorios de <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">almacenamiento
externo</a> específicos, incluidos los directorios de medios extraíbles, como las tarjetas
SD. Las nuevas API simplifican enormemente la manera en que tu aplicación accede a directorios
de almacenamiento externo estándares, como <code>Pictures</code>. Las aplicaciones
de fotografía pueden usar estas API en lugar de
de fotografía, por ejemplo, pueden usar estas API en lugar de
<code>READ_EXTERNAL_STORAGE</code>, que otorga acceso a todos los directorios
de almacenamiento, o del framework de acceso a almacenamiento, con el cual el usuario debe navegar hasta
el directorio.</p>
@@ -665,12 +815,225 @@ externo. Cuando se usan las nuevas API, el sistema emplea una IU de
permisos simple en la que se detallan claramente los directorios a los cuales
la aplicación solicita acceso.</p>
<p>Para obtener más información, consulta la documentación sobre
<p>Para obtener más información, consulta la documentación
<a href="{@docRoot}preview/features/scoped-folder-access.html">Acceso
a directorios determinados</a> para desarrolladores.</p>
<h2 id="keyboard_shortcuts_helper">Ayuda en los métodos abreviados del teclado</h2>
<p>
En Android N, el usuario puede presionar "Alt + /" para activar una pantalla de <em>métodos abreviados del teclado</em>
que muestra todos los métodos abreviados disponibles, tanto para el
sistema como la aplicación que esté en primer plano. Estos se recuperan automáticamente del menú de la aplicación si
están disponibles, pero los desarrolladores pueden proporcionar sus propios métodos abreviados perfeccionados
para la pantalla. Puedes hacerlo anulando el nuevo método
<code>Activity.onProvideKeyboardShortcuts()</code>, lo que se describe en la
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
</p>
<p>
Para activar la ayuda en los métodos abreviados del teclado desde cualquier ubicación en la aplicación,
llama a {@code Activity.requestKeyboardShortcutsHelper()} para la actividad relevante.
</p>
<h2 id="sustained_performance_api">API de rendimiento sostenido</h2>
<p>
El rendimiento puede fluctuar considerablemente en las aplicaciones de ejecución prolongada porque el
sistema limita los motores de sistemas en chip cuando los componentes del dispositivo alcanzan los
límites de temperatura. Esta fluctuación presenta un objetivo móvil para los desarrolladores
de aplicaciones que crean aplicaciones de alto rendimiento y ejecución prolongada.
</p>
<p>
Android N incluye compatibilidad opcional para un
<em>modo de rendimiento sostenido</em>, que permite que los fabricantes de equipo original (OEM) arrojen datos sobre las capacidades de rendimiento del dispositivo
para las aplicaciones de ejecución prolongada. Los desarrolladores
de aplicaciones pueden usar estos datos para perfeccionar sus aplicaciones y alcanzar un nivel
uniforme y predecible de rendimiento en el dispositivo durante períodos prolongados.
</p>
<p>
Los desarrolladores de aplicaciones solo pueden probar esta API nueva en la N Developer Preview instalada solo en dispositivos con
Nexus 6P. Para usar esta función,
establece el indicador de rendimiento sostenido de la ventana
que deseas ejecutar en el modo de rendimiento sostenido. Establece este indicador con el método
{@code Window.setSustainedPerformanceMode()}. El sistema deshabilita
automáticamente este modo cuando la ventana deja de estar en primer plano.
</p>
<h2 id="vr">Soporte de RV</h2>
<p>
Android N agrega compatibilidad y optimizaciones de plataforma para un modo de RV nuevo, con el objetivo de que los
desarrolladores puedan forjar experiencias de RV móviles de alta calidad para los usuarios. Hay varias mejoras en el
rendimiento, entre las que se incluye el acceso a un núcleo de CPU exclusivo para aplicaciones de RV.
Dentro de tus aplicaciones, puedes aprovechar el seguimiento de cabeza inteligente
y las notificaciones en sonido estéreo que funcionan para la RV. Un dato muy importante es que Android N presenta
muy pocos gráficos de baja latencia. Para obtener información completa sobre el desarrollo de aplicaciones de RV para Android N,
consulta <a href="https://developers.google.com/vr/android/">Google VR SDK para Android</a>.
</p>
<h2 id="print_svc">Mejoras del servicio de impresión</h2>
<p>
En Android N, los desarrolladores de servicios de impresión ahora pueden publicar información adicional
sobre impresoras y trabajos de impresión individuales.
</p>
<p>
Al enumerar las impresoras individuales, un servicio de impresión ahora puede establecer íconos
por impresora de dos maneras:
</p>
<ul>
<li>Puedes establecer un ícono desde el id. de un recurso llamando a
<code>PrinterInfo.Builder.setResourceIconId()</code>.
</li>
<li>Puedes mostrar un ícono de la red llamando a
<code>PrinterInfo.Builder.setHasCustomPrinterIcon()</code> y configurando un
callback para cuando se solicite el ícono con
<code>android.printservice.PrinterDiscoverySession.onRequestCustomPrinterIcon()</code>.
</li>
</ul>
<p>
Además, puedes proporcionar las actividades por impresora para mostrar información
adicional llamando a <code>PrinterInfo.Builder.setInfoIntent()</code>.
</p>
<p>
Puedes indicar el progreso y el estado de los trabajos de impresión en la notificación de
trabajo de impresión llamando a
<code>android.printservice.PrintJob.setProgress()</code> y
<code>android.printservice.PrintJob.setStatus()</code>, respectivamente.
</p>
<p>
Para obtener más información sobre estos métodos, consulta la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
</p>
<h2 id="framemetrics_api">API FrameMetricsListener</h2>
<p>
La API FrameMetricsListener permite que una aplicación monitoree el rendimiento de la representación
de la IU. La API brinda esta capacidad mediante la exposición de una transmisión de API Pub/Sub para transferir información sobre el tiempo
de los cuadros para la ventana actual de la aplicación. Los datos devueltos son
equivalentes a lo que muestra <code><a href="{@docRoot}tools/help/shell.html#shellcommands">adb shell</a>
dumpsys gfxinfo framestats</code>, pero no se limita a los últimos 120 cuadros.
</p>
<p>
Puedes usar FrameMetricsListener para medir el rendimiento de
la IU del nivel de interacción en producción sin contar con una conexión USB. Esta API
permite recopilar datos con una especificidad mayor que
{@code adb shell dumpsys gfxinfo}. Esta especificidad mayor es posible porque
el sistema puede recopilar datos para interacciones determinadas en la aplicación, sin que sea
necesario que el sistema obtenga un resumen global del
rendimiento de toda la aplicación o borre un estado global. Puedes usar esta
capacidad con el objetivo de recopilar datos de rendimiento e identificar regresiones en el rendimiento de la IU
para casos de uso reales dentro de una aplicación.
</p>
<p>
Para monitorear una ventana, implementa el callback <code>FrameMetricsListener.onMetricsAvailable()</code>
y regístralo en esa ventana. Para obtener más información, consulta
la documentación de la clase {@code FrameMetricsListener}
en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
</p>
<p>
La API proporciona un objeto {@code FrameMetrics}, que contiene datos de intervalos que
el subsistema de representación informa sobre varios hitos en el ciclo de vida de un marco.
Las métricas compatibles son {@code UNKNOWN_DELAY_DURATION},
{@code INPUT_HANDLING_DURATION}, {@code ANIMATION_DURATION},
{@code LAYOUT_MEASURE_DURATION}, {@code DRAW_DURATION}, {@code SYNC_DURATION},
{@code COMMAND_ISSUE_DURATION}, {@code SWAP_BUFFERS_DURATION},
{@code TOTAL_DURATION} y {@code FIRST_DRAW_FRAME}.
</p>
<h2 id="virtual_files">Archivos virtuales</h2>
<p>
En versiones anteriores de Android, tu aplicación podía usar el framework
de acceso al almacenamiento para permitir a los usuarios seleccionar archivos de cuentas de almacenamiento en la nube,
como Google Drive. Sin embargo, no se podían representar los archivos que no
tenían una representación directa en código de bits; cada archivo debía brindar
un flujo de entrada.
</p>
<p>
Android N incorpora el concepto de <em>archivos virtuales</em> al framework
de acceso al almacenamiento. La función de archivos virtuales permite que tu
{@link android.provider.DocumentsProvider} devuelva URI de documentos que se pueden
usar en una intent {@link android.content.Intent#ACTION_VIEW} incluso si
no tienen una representación directa en código de bits. Android N también te permite
ofrecer formatos alternativos para archivos del usuario, virtuales u otros.
</p>
<p>
Para obtener un URI para un documento virtual en tu aplicación, primero crea una
{@link android.content.Intent} a fin de abrir la IU del selector de archivos. Como una aplicación
no puede abrir directamente un archivo virtual con el método
{@link android.content.ContentResolver#openInputStream(Uri) openInputStream()},
la aplicación no recibe ningún archivo virtual si incluyes la categoría
{@link android.content.Intent#CATEGORY_OPENABLE}.
</p>
<p>
Cuando el usuario realiza una selección, el sistema llama al método
{@link android.app.Activity#onActivityResult onActivityResult()}.
La aplicación puede recuperar el URI del archivo virtual y obtener un flujo de entrada, como
se demuestra en el fragmento de código a continuación.
</p>
<pre>
// Other Activity code ...
final static private int REQUEST_CODE = 64;
// We listen to the OnActivityResult event to respond to the user's selection.
&#64;Override
public void onActivityResult(int requestCode, int resultCode,
Intent resultData) {
try {
if (requestCode == REQUEST_CODE &amp;&amp;
resultCode == Activity.RESULT_OK) {
Uri uri = null;
if (resultData != null) {
uri = resultData.getData();
ContentResolver resolver = getContentResolver();
// Before attempting to coerce a file into a MIME type,
// check to see what alternative MIME types are available to
// coerce this file into.
String[] streamTypes =
resolver.getStreamTypes(uri, "*/*");
AssetFileDescriptor descriptor =
resolver.openTypedAssetFileDescriptor(
uri,
streamTypes[0],
null);
// Retrieve a stream to the virtual file.
InputStream inputStream = descriptor.createInputStream();
}
}
} catch (Exception ex) {
Log.e("EXCEPTION", "ERROR: ", ex);
}
}
</pre>
<p>
Para obtener más información sobre el acceso a archivos del usuario, consulta la
<a href="{@docRoot}guide/topics/providers/document-provider.html">guía
Frameworks de acceso a almacenamiento</a>.
</p>

View File

@@ -1,6 +1,6 @@
page.title=Cambios en los comportamientos
page.keywords=preview,sdk,compatibility
meta.tags=“preview”, “compatibilidad”
page.keywords=versión preliminar,sdk,compatibilidad
meta.tags="preview", "compatibility"
page.tags="preview", "developer preview"
page.image=images/cards/card-n-changes_2x.png
@jd:body
@@ -9,24 +9,28 @@ page.image=images/cards/card-n-changes_2x.png
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#perf">Mejoras de rendimiento</a>
<ol>
<li><a href="#doze">Doze</a></li>
<li><a href="#doze">Descanso</a></li>
<li><a href="#bg-opt">Optimizaciones en segundo plano</a></li>
</ol>
</li>
<li><a href="#perm">Cambios en los permisos</a></li>
<li><a href="#perm">Cambios en los permisos</a>
</li>
<li><a href="#sharing-files">Intercambio de archivos entre aplicaciones</a></li>
<li><a href="#accessibility">Mejoras de accesibilidad</a>
<ol>
<li><a href="#screen-zoom">Zoom de la pantalla</a></li>
<li><a href="#vision-settings">Vision Settings en el asistente de configuración</a></li>
</ol>
</li>
<li><a href="#ndk">Aplicaciones de NDK con vínculos a bibliotecas de plataformas</a></li>
<li><a href="#ndk">Aplicaciones del NDK con vínculos a bibliotecas de plataformas</a></li>
<li><a href="#afw">Android for Work</a></li>
<li><a href="#annotations">Retención de anotaciones</a></li>
<li><a href="#other">Otros aspectos importantes</a></li>
</ol>
<h2>Consulta también</h2>
@@ -40,9 +44,9 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Además de nuevas funciones y capacidades, en Android N
se incluyen varios cambios en el comportamiento del sistema y de las API. En este documento
se destacan algunos de los cambios principales que debes comprender y tener en cuenta
Además de nuevas características y capacidades, Android N
incluye diversos cambios en el sistema y en los comportamientos de la API. En este documento,
se destacan algunos de los cambios principales que debes comprender y justificar
en tus aplicaciones.
</p>
@@ -52,23 +56,22 @@ page.image=images/cards/card-n-changes_2x.png
</p>
<h2 id="perf">Mejoras de rendimiento</h2>
<h2 id="perf">Batería y memoria</h2>
<p>
Android N contiene cambios en el comportamiento del sistema destinados a lograr mejoras en la duración
de las baterías de los dispositivos, el uso de la memoria RAM y el rendimiento de las aplicaciones. Estos cambios pueden tener efecto en la
disponibilidad de recursos y notificaciones de sistema para tu aplicación. Debes
revisar estos cambios y evaluar las posibles formas en que tu aplicación deba adecuarse a
ellas.
Android N incluye cambios en los comportamientos del sistema para mejorar la duración de la batería
de los dispositivos y reducir el uso de la memoria RAM. Estos cambios pueden afectar el acceso de tu aplicación a
recursos del sistema, además de la manera en que tu aplicación interactúa con otras aplicaciones mediante
determinadas intents implícitas.
</p>
<h3 id="doze">Doze</h3>
<h3 id="doze">Descanso</h3>
<p>
Doze, presentado en Android 6.0 (nivel de API 23), prolonga la duración de la batería
aplazando actividades de CPU y red cuando un usuario deja un dispositivo desenchufado,
quieto y con la pantalla apagada. En Android N se ofrecen más
mejoras para Doze a través de la aplicación de un subconjunto de restricciones de CPU y red
Descanso, presentado en Android 6.0 (nivel de API 23), prolonga la duración de la batería
aplazando actividades de CPU y red cuando un usuario deja un dispositivo desenchufado,
quieto y con la pantalla apagada. En Android N se ofrecen más
mejoras para Descanso a través de la aplicación de un subconjunto de restricciones de CPU y red
mientras el dispositivo se encuentra desenchufado y con la pantalla apagada, aunque no necesariamente
quieto; por ejemplo, al ir dentro del bolsillo de un usuario en movimiento.
</p>
@@ -76,18 +79,18 @@ page.image=images/cards/card-n-changes_2x.png
<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
<p class="img-caption">
<strong>Figura 1:</strong> Ilustración del modo en que Doze aplica un primer nivel de
<strong>Figura 1:</strong> Ilustración del modo en que Descanso aplica un primer nivel de
restricciones de actividad del sistema para prolongar la duración de la batería.
</p>
<p>
Cuando un dispositivo funciona con la batería y la pantalla permanece apagada durante un tiempo
determinado, se activa en este el modo Doze y se aplica el primer subconjunto de restricciones: se desactiva
el acceso de las aplicaciones a la red y se aplazan tareas y sincronizaciones. Si el dispositivo
permanece quieto durante un tiempo determinado tras activarse el modo Doze, el sistema aplica el
resto de las restricciones del modo a alarmas de {@link android.os.PowerManager.WakeLock},
{@link android.app.AlarmManager} y análisis de GPS o Wi-Fi. Independientemente de que
se apliquen algunas o todas las restricciones del modo Doze, el sistema activa el
determinado, se activa en este el modo Descanso y se aplica el primer subconjunto de restricciones: se
desactiva el acceso de las aplicaciones a la red y se aplazan tareas y sincronizaciones. Si el dispositivo
permanece quieto durante un tiempo determinado tras activarse el modo Descanso, el sistema aplica el
resto de las restricciones del modo a {@link android.os.PowerManager.WakeLock},
alarmas de {@link android.app.AlarmManager}, GPS y análisis de Wi-Fi. Independientemente de que
se apliquen algunas o todas las restricciones del modo Descanso, el sistema activa el
dispositivo durante plazos de mantenimiento breves en los cuales las aplicaciones tienen
acceso a la red y pueden ejecutar sincronizaciones o procesos aplazados.
</p>
@@ -95,49 +98,49 @@ page.image=images/cards/card-n-changes_2x.png
<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
<p class="img-caption">
<strong>Figura 2:</strong> Ilustración del modo en que Doze aplica un segundo nivel de
<strong>Figura 2:</strong> Ilustración del modo en que Descanso aplica un segundo nivel de
restricciones de actividad del sistema después de que el dispositivo permanece quieto durante un tiempo determinado.
</p>
<p>
Ten en cuenta que cuando se activar la pantalla o se enchufa el dispositivo se desactiva el modo Doze y
se retiran estas restricciones de procesamiento. El comportamiento adicional no
Ten en cuenta que, cuando se activa la pantalla o se enchufa el dispositivo, se desactiva el modo Descanso y
se retiran estas restricciones de procesamiento. El comportamiento adicional no
tiene efecto sobre las recomendaciones ni las prácticas recomendadas para adaptar tu aplicación a la versión
anterior de Doze, presentada en Android 6.0 (nivel de API 23), según lo descrito en
<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
Optimización para Doze y App Standby</a>. De todos modos, debes
anterior de Descanso, presentada en Android 6.0 (nivel de API 23), según lo descrito en
<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
Optimización para Descanso y App Standby</a>. De todos modos, debes
seguir las recomendaciones; por ejemplo, la de usar Google Cloud Messaging (GCM) para
enviar y recibir mensajes, y la de planificar actualizaciones para considerar
el comportamiento adicional de Doze.
enviar y recibir mensajes, y la de planificar actualizaciones para adaptar
el comportamiento adicional de Descanso.
</p>
<h3 id="bg-opt">Project Svelte: Optimizaciones en segundo plano</h3>
<p>
En Android N se eliminan tres difusiones implícitas para optimizar el uso de la
memoria y el consumo de energía. Este cambio es necesario porque las difusiones
En Android N, se eliminan tres transmisiones implícitas para ayudar a optimizar el uso de la
memoria y el consumo de energía. Este cambio es necesario porque las transmisiones
implícitas a menudo inician aplicaciones que se registran para realizar un seguimiento de ellas en
segundo plano. La eliminación de estas difusiones puede mejorar sustancialmente el rendimiento
del dispositivo y la experiencia del usuario.
segundo plano. La eliminación de estas transmisiones puede mejorar sustancialmente el rendimiento del dispositivo
y la experiencia del usuario.
</p>
<p>
Los dispositivos móviles están sujetos a cambios de conectividad frecuentes
entre los modos de datos Wi-Fi y móviles. Actualmente, las aplicaciones pueden realizar controles en busca de cambios en la
conectividad registrando un receptor para la difusión implícita {@link
conectividad registrando un receptor para la transmisión implícita {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} en su
manifiesto. Debido a que muchas aplicaciones se registran para recibir esta difusión, un cambio de
red puede hacer que todas se activen y procesen la difusión a la
manifiesto. Debido a que muchas aplicaciones se registran para recibir esta transmisión, un cambio de
red puede hacer que todas se activen y procesen la transmisión a la
vez.
</p>
<p>
Asimismo, las aplicaciones pueden registrarse para recibir las difusiones implícitas {@link
Asimismo, en versiones anteriores de Android, las aplicaciones podían registrarse para recibir las transmisiones implícitas {@link
android.hardware.Camera#ACTION_NEW_PICTURE} y {@link
android.hardware.Camera#ACTION_NEW_VIDEO} de otras aplicaciones, como la
cámara. Cuando un usuario toma una foto con la aplicación de la cámara, estas aplicaciones se activan
para procesar la difusión.
para procesar la transmisión.
</p>
<p>
@@ -146,71 +149,121 @@ page.image=images/cards/card-n-changes_2x.png
</p>
<ul>
<li>Las aplicaciones orientadas a Android N no reciben difusiones {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION}, aún cuando contengan
entradas de manifiesto que les permitan solicitar notificaciones de estos eventos. No obstante, las aplicaciones que se ejecuten
en primer plano pueden realizar el seguimiento de {@code CONNECTIVITY_CHANGE} en sus subprocesos
principales si solicitan notificación a través de {@link
android.content.BroadcastReceiver}.
<li>Las aplicaciones orientadas a Android N no reciben transmisiones {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION}, aun cuando contengan
entradas de manifiesto que les permitan solicitar notificaciones de estos eventos. Las aplicaciones que
se ejecutan aún pueden escuchar {@code CONNECTIVITY_CHANGE} en su subproceso principal
si solicitan una notificación con un {@link android.content.BroadcastReceiver}.
</li>
<li>Las aplicaciones no pueden enviar ni recibir difusiones {@link
<li>Las aplicaciones no pueden enviar ni recibir transmisiones {@link
android.hardware.Camera#ACTION_NEW_PICTURE} ni {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Esta optimización
afecta a todas las aplicaciones, no solo a las que estén orientadas a Android N.
afecta a todas las aplicaciones, no solo a aquellas orientadas a Android N.
</li>
</ul>
<p>
En versiones futuras de Android, es posible que dejen de usarse más difusiones implícitas y
servicios en segundo plano no asociados. Por esta razón, debes evitar dependencias en receptores declarados en manifiestos para difusiones implícitas o
eliminarlas de ellos,
y aplicar lo mismo a los servicios en segundo plano.
</p>
<p>
El framework de Android proporciona varias soluciones para reducir la necesidad de
difusiones implícitas o servicios en segundo plano. Por ejemplo, la API de {@link
<p>Si la aplicación utiliza cualquiera de estas intents, debes quitar las dependencias
en ellas lo antes posible a fin de poder orientar los dispositivos con Android N correctamente.
El framework de Android ofrece varias soluciones para mitigar la necesidad de
estas transmisiones implícitas. Por ejemplo, la API {@link
android.app.job.JobScheduler} proporciona un mecanismo sólido para programar
operaciones de red cuando se cumplen condiciones especificadas, como la conexión a una red
de uso no medido. Puedes incluso usar {@link
android.app.job.JobScheduler} para responder a cambios de los proveedores de contenido.
operaciones de red cuando se cumplen las condiciones especificadas, como una conexión a una
red de uso no medido. Puedes usar {@link
android.app.job.JobScheduler} para responder a cambios en proveedores de contenido.
</p>
<p>
Para obtener más información sobre este cambio en el comportamiento y la manera de adaptar tu aplicación,
Para obtener más información sobre optimizaciones en segundo plano en Android N y la manera de adaptar tu aplicación,
consulta <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
en segundo plano</a>.
</p>
<h2 id="perm">Cambios en los permisos</h2>
<p>
En Android N se incorporan cambios en permisos que pueden tener efecto en tu aplicación.
Se incluyen cambios en permisos de cuentas de usuarios y un nuevo permiso para operaciones de escritura en
dispositivos de almacenamiento externo. A continuación, se ofrece un resumen de los permisos que se modificaron en
la muestra:
En Android N, se incorporan cambios en permisos que pueden afectar tu aplicación.
</p>
<h3 id="permfilesys">Cambios en los permisos del sistema de archivos</h3>
<p>
Para mejorar la seguridad de los archivos privados, el directorio privado de
las aplicaciones orientadas a Android N o versiones posteriores tiene acceso restringido. (<code>0700</code>).
Esta configuración evita la fuga de metadatos de archivos privados, como su tamaño
o existencia. Este cambio en los permisos tiene varios efectos secundarios:
</p>
<ul>
<li>{@code GET_ACCOUNTS} (Obsoleto).
<p>
El permiso GET_ACCOUNTS ha quedado en desuso. El sistema ignora este
permiso para las aplicaciones orientadas a Android N.
<li>
Los propietarios ya no pueden reducir los permisos de archivo de los archivos privados,
y un intento de hacerlo utilizando
{@link android.content.Context#MODE_WORLD_READABLE} o
{@link android.content.Context#MODE_WORLD_WRITEABLE} activará una
{@link java.lang.SecurityException}.
<p class="note">
<strong>Nota:</strong> Desde ahora, esta restricción no se aplica planamente.
Las aplicaciones pueden seguir modificando los permisos para sus directorios privados con
las API nativas o la API {@link java.io.File File}. Sin embargo, desaconsejamos
reducir los permisos para el directorio privado.
</p>
</li>
<li>
Pasar URI <code>file://</code> fuera del dominio del paquete puede dar al
receptor una ruta de acceso inaccesible. Por lo tanto, los intentos de pasar un
URI <code>file://</code> activan una
<code>FileUriExposedException</code>. La manera recomendada para compartir el
contenido de un archivo privado consiste en utilizar el {@link
android.support.v4.content.FileProvider}.
</li>
<li>
El {@link android.app.DownloadManager} ya no puede compartir archivos
almacenados de manera privada por nombre de archivo. Las aplicaciones heredadas pueden terminar con una
ruta de acceso inaccesible cuando acceden a {@link
android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Las aplicaciones orientadas a
Android N o versiones posteriores activan una {@link java.lang.SecurityException} cuando
intentan acceder a
{@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}.
Las aplicaciones heredadas que establecen la ubicación de descarga en una ubicación pública
usando
{@link
android.app.DownloadManager.Request#setDestinationInExternalFilesDir
DownloadManager.Request.setDestinationInExternalFilesDir()} o
{@link
android.app.DownloadManager.Request#setDestinationInExternalPublicDir
DownloadManager.Request.setDestinationInExternalPublicDir()}
siguen teniendo acceso a la ruta de acceso en
{@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}; sin embargo, se desaconseja
seguir este método. El método preferido para acceder a un archivo
expuesto por el{@link android.app.DownloadManager} consiste en utilizar
{@link android.content.ContentResolver#openFileDescriptor
ContentResolver.openFileDescriptor()}.
</li>
</ul>
<h2 id="sharing-files">Intercambio de archivos entre aplicaciones</h2>
<p>
En las aplicaciones orientadas a Android N, el framework de Android aplica
la política de la API {@link android.os.StrictMode} que prohíbe exponer URI {@code file://}
fuera de la aplicación. Si una intent con un URI de archivo sale de tu aplicación, la aplicación falla
con una excepción {@code FileUriExposedException}.
</p>
<p>
Para compartir archivos entre aplicaciones, debes enviar un URI {@code content://}
y otorgar un permiso de acceso temporal en el URI. La forma más sencilla de otorgar este permiso es
utilizando la clase {@link android.support.v4.content.FileProvider}. Para obtener más información
sobre permisos e intercambio de archivos,
consulta <a href="{@docRoot}training/secure-file-sharing/index.html">Intercambio de archivos</a>.
</p>
<h2 id="accessibility">Mejoras de accesibilidad</h2>
<p>
En Android N se incluyen cambios destinados a mejorar la utilidad de la
En Android N, se incluyen cambios destinados a mejorar la usabilidad de la
plataforma para usuarios con defectos o discapacidades visuales. Estos cambios
generalmente no exigirán modificaciones en el código de tu aplicación. Sin embargo, debes revisar
generalmente no deben exigir modificaciones en el código de tu aplicación. Sin embargo, debes revisar
estas funciones y probarlas con tu aplicación para avaluar el posible impacto en la experiencia
del usuario.
</p>
@@ -220,9 +273,9 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Android N permite a los usuarios configurar <strong>Display size</strong>, el ajuste que expande
o contrae todos los elementos de la pantalla lo cual mejora la accesibilidad al dispositivo
para usuarios con poca visión. Estos no podrán superar el valor de zoom mínimo de zoom de
<a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
o contrae todos los elementos de la pantalla, lo cual mejora la accesibilidad al dispositivo
para usuarios con poca visión. Estos no podrán superar el valor de zoom
mínimo de <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
sw320dp</a> para el ancho de pantalla, que es el ancho de un Nexus 4, un teléfono común de tamaño intermedio.
</p>
@@ -249,16 +302,16 @@ page.image=images/cards/card-n-changes_2x.png
<ul>
<li>Si una aplicación se orienta hacia el nivel de API 23 o uno inferior, el sistema automáticamente finaliza
todos sus procesos en segundo plano. Esto significa que si un usuario hace a un lado
todos los procesos en segundo plano. Esto significa que, si un usuario hace a un lado
dicha aplicación para abrir la pantalla <em>Settings</em> y cambiar la configuración de
<strong>Display size</strong>, el sistema finalizará la aplicación tal
como lo haría en una situación de bajos recursos de memoria. Si en la aplicación hay procesos en
primer plano activos, el sistema notifica a estos el cambio en la configuración como se
primer plano, el sistema notifica a estos procesos el cambio en la configuración como se
indica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Manejo de cambios
en tiempo de ejecución</a>, así como lo haría si cambiara la orientación del dispositivo.
</li>
<li>Si una aplicación se orienta hacia Android N, se notifica a todos sus procesos
<li>Si una aplicación se orienta hacia Android N, se notifica a todos los procesos
(en primer y segundo plano) el cambio en la configuración, como se
indica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Manejo de cambios
en tiempo de ejecución</a>.
@@ -266,8 +319,8 @@ page.image=images/cards/card-n-changes_2x.png
</ul>
<p>
En la mayoría de las aplicaciones no se necesitan cambios para admitir esta función, ya que
en ellas rigen prácticas recomendadas de Android. Verificaciones específicas que deben realizarse:
En la mayoría de las aplicaciones, no se necesitan cambios para admitir esta función, si
en ellas se siguen las prácticas recomendadas de Android. Verificaciones específicas que deben realizarse:
</p>
<ul>
@@ -278,12 +331,12 @@ page.image=images/cards/card-n-changes_2x.png
<li>Cuando se modifique la configuración del dispositivo, actualiza la información almacenada en caché que
dependa de la densidad, como los mapas de bits o recursos almacenados en caché que se carguen desde la
red. Realiza una inspección en busca de cambios en la configuración cuando se reanude la actividad de la aplicación, después de la
red. Busca de cambios en la configuración cuando se reanude la actividad de la aplicación, después de la
pausa.
<p class="note">
<strong>Nota:</strong> Si almacenaste en caché datos que dependen de la configuración, te
convendrá incluir metadatos relacionados, como el tamaño de pantalla
correspondiente o la densidad de píxeles para dichos datos. Guardar estos metadatos de permite
correspondiente o la densidad de píxeles para dichos datos. Guardar estos metadatos te permite
decidir si necesitas actualizar los datos almacenados en caché después de un cambio en la
configuración.
</p>
@@ -299,7 +352,7 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Vision Settings se incluye en la pantalla de Bienvenida de Android N, en la cual los usuarios pueden
pueden configurar los siguientes ajustes de accesibilidad para un nuevo dispositivo:
configurar los siguientes ajustes de accesibilidad para un nuevo dispositivo:
<strong>Magnification gesture</strong>, <strong>Font size</strong>,
<strong>Display size</strong> y <strong>TalkBack</strong>. Este cambio
aumenta la visibilidad de errores relacionados con diferentes ajustes de pantalla. Para
@@ -308,7 +361,7 @@ page.image=images/cards/card-n-changes_2x.png
Accessibility</strong>.
</p>
<h2 id="ndk">Aplicaciones de NDK con vínculos a bibliotecas de plataformas</h2>
<h2 id="ndk">Aplicaciones del NDK con vínculos a bibliotecas de plataformas</h2>
<p>
En Android N, se incluyen cambios en el espacio de nombres a fin de evitar la carga de API no públicas.
@@ -320,15 +373,15 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Con el propósito de alertarte sobre el uso de API no públicas, las aplicaciones que funcionen en un dispositivo con
Android N producirán un error de salida de logcat cuando una de ellas llame a una API no pública.
Este error también aparecerá en la pantalla del dispositivo con forma de mensaje para
Este error también aparecerá en la pantalla del dispositivo como un mensaje para ayudar a
generar conciencia respecto de la situación. Debes revisar el código de tu aplicación para
eliminar el uso de API de plataforma no públicas y probar por completo tus aplicaciones con
quitar el uso de API de plataformas no públicas y probar por completo tus aplicaciones con
un dispositivo de prueba o emulador.
</p>
<p>
Si tu aplicación depende de bibliotecas de plataformas, consulta la documentación sobre NDK para hallar
soluciones típicas para el reemplazo de API privadas comunes por API equivalentes.
Si tu aplicación depende de bibliotecas de plataformas, consulta la documentación sobre el NDK a fin de hallar
soluciones típicas para el reemplazo de API privadas comunes por API públicas equivalentes.
También es posible que establezcas vínculos con bibliotecas de plataformas sin notarlo,
en especial si tu aplicación usa una biblioteca que forma parte de la plataforma (como
<code>libpng</code>), pero no del NDK. En ese caso, asegúrate de que
@@ -336,7 +389,7 @@ page.image=images/cards/card-n-changes_2x.png
</p>
<p class="caution">
<strong>Precaución:</strong> Algunas bibliotecas de terceros pueden establecer vínculos con API
<strong>Advertencia:</strong> Algunas bibliotecas de terceros pueden establecer vínculos con API
no públicas. Si tu aplicación usa estas bibliotecas, es probable que se bloquee al ejecutarse
en la próxima versión oficial de Android.
</p>
@@ -345,15 +398,15 @@ page.image=images/cards/card-n-changes_2x.png
Las aplicaciones no deben depender de bibliotecas nativas no incluidas en el NDK
ni usarlas, ya que pueden modificarse o eliminarse en la transición de una versión de Android a
otra. El cambio de OpenSSL a BoringSSL es un ejemplo de modificaciones como esta.
A su vez, los diferentes dispositivos pueden ofrecer distintos niveles de compatibilidad debido a que
A su vez, los diferentes dispositivos pueden ofrecer distintos niveles de compatibilidad, debido a que
no existen requisitos de compatibilidad para bibliotecas de plataformas no incluidas
en el NDK. Si debes acceder a bibliotecas no relacionadas en dispositivos anteriores, haz que la
carga dependa del nivel de la Android API.
en el NDK. Si debes acceder a bibliotecas no relacionadas con el NDK en dispositivos anteriores, haz que la
carga dependa del nivel de la API de Android.
</p>
<p>
Para ayudarte a diagnosticar estos tipos de problemas, a continuación se ofrecen ejemplos de errores de Java y
NDK que podrías hallar al intentar crear tu aplicación con Android N:
Para ayudarte a diagnosticar estos tipos de problemas, a continuación, se ofrecen ejemplos de errores de Java y
del NDK que podrías hallar al intentar compilar tu aplicación con Android N:
</p>
<p>Ejemplo de error de Java:</p>
@@ -374,7 +427,7 @@ dlopen failed: cannot locate symbol "__system_property_get" referenced by ...
<ul>
<li>getJavaVM y getJNIEnv de libandroid_runtime.so pueden reemplazarse
por funciones de JNI:
por funciones estándares de JNI:
<pre class="no-pretty-print">
AndroidRuntime::getJavaVM -&gt; GetJavaVM from &lt;jni.h&gt;
AndroidRuntime::getJNIEnv -&gt; JavaVM::GetEnv or
@@ -382,16 +435,16 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
</pre>
</li>
<li>La utilización del símbolo {@code property_get} de {@code libcutils.so} puede
reemplazarse por la alternativa pública {@code __system_property_get}.
Para hacerlo, usa {@code __system_property_get} con el siguiente include:
<li>El símbolo {@code property_get} de {@code libcutils.so} puede
reemplazarse por la API pública {@code alternative __system_property_get}.
Para hacerlo, usa {@code __system_property_get} con el siguiente elemento include:
<pre>
#include &lt;sys/system_properties.h&gt;
</pre>
</li>
<li>El símbolo {@code SSL_ctrl} de {@code libcrypto.so} debe
reemplazarse por una versión local de la aplicación. Por ejemplo, debes establecer un vínculo estático de
reemplazarse por una versión local de la aplicación. Por ejemplo, debes establecer un vínculo estático de
{@code libcyrpto.a} en tu archivo {@code .so} o incluir un vínculo dinámico propio de
{@code libcrypto.so} de BoringSSL u OpenSSL en tu aplicación.
</li>
@@ -401,9 +454,9 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
<p>
Android N contiene cambios para aplicaciones orientadas a Android for Work, entre los que se incluyen
modificaciones en la instalación de certificados, el restablecimiento de contraseñas, la gestión de usuarios
secundarios y el acceso a identificadores de dispositivos. Si planeas crear aplicaciones para entornos de
Android for Work, debes repasar estos cambios y modificar
tu aplicación de manera correspondiente.
secundarios y el acceso a identificadores de dispositivos. Si creas aplicaciones para entornos de
Android for Work, debes estudiar estos cambios y modificar
tu aplicación según corresponda.
</p>
<ul>
@@ -416,23 +469,23 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
<code>IllegalArgumentException</code>.
</li>
<li>Las restricciones de contraseñas para administradores de dispositivos ahora se aplican a los propietarios de
<li>Las restricciones de restablecimiento de contraseñas para administradores de dispositivos ahora se aplican a los propietarios de
perfiles. Los administradores de dispositivos ya no pueden usar
<code>DevicePolicyManager.resetPassword()</code> para borrar contraseñas ni modificar
{@code DevicePolicyManager.resetPassword()} para borrar contraseñas ni modificar
las que ya están establecidas. No obstante, pueden establecer una contraseña, aunque solo
cuando el dispositivo no tiene contraseña, PIN ni patrón.
</li>
<li>Los propietarios de dispositivos y perfiles pueden administrar cuentas aun cuando haya
restricciones. Tienen la posibilidad de llamar a las API de administración de cuentas
incluso al haber restricciones de <code>DISALLOW_MODIFY_ACCOUNTS</code> para el usuario.
incluso al haber restricciones <code>DISALLOW_MODIFY_ACCOUNTS</code> para el usuario.
</li>
<li>Los propietarios de dispositivos pueden administrar usuarios secundarios de manera más sencilla. Cuando un dispositivo
funciona en el modo de propietario de dispositivo, se establece la restricción de <code>DISALLOW_ADD_USER</code>
en forma automática. Esto evita que los usuarios creen usuarios secundarios no
funciona en el modo de propietario de dispositivo, automáticamente se establece la restricción <code>DISALLOW_ADD_USER</code>
. Esto evita que los usuarios creen usuarios secundarios no
administrados. A su vez, los métodos <code>CreateUser()</code> y
<code>createAndInitial()</code> han quedado en desuso; los reemplaza el nuevo método
<code>createAndInitializeUser()</code> han sido dados de baja; los reemplaza el nuevo método
<code>DevicePolicyManager.createAndManageUser()</code>.
</li>
@@ -441,6 +494,10 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
<code>DevicePolicyManagewr.getWifiMacAddress()</code>. Si nunca se habilitó la función Wi-Fi
en el dispositivo, este método devuelve un valor {@code null}.
</li>
<li>La configuración Work Mode controla el acceso a las aplicaciones de trabajo. Cuando este ajuste está desactivado, el
launcher del sistema indica que las aplicaciones de trabajo no están disponibles atenuándolas. Para volver
a restaurar el comportamiento normal, habilita el modo de trabajo nuevamente.
</ul>
<p>
@@ -448,10 +505,29 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
<a href="{@docRoot}preview/features/afw.html">Actualizaciones de Android for Work</a>.
</p>
<h2 id="annotations">Retención de anotaciones</h2>
<p>
Android N soluciona un error por el cual la visibilidad de las anotaciones se había ignorado.
Este problema permitió que el tiempo de ejecución accediera a anotaciones a las que no debía
tener acceso. Entre estas anotaciones se incluyen las siguientes:
</p>
<ul>
<li>{@code VISIBILITY_BUILD}: destinada a ser visible solo en el momento de compilación.</li>
<li>{@code VISIBILITY_SYSTEM}: destinada a ser visible en el tiempo de ejecución, pero únicamente al
sistema subyacente.</li>
</ul>
<p>
Si tu aplicación se basa en este comportamiento, agrega una política de retención para las anotaciones que deben
estar disponibles en el tiempo de ejecución. Para ello, usa {@code @Retention(RetentionPolicy.RUNTIME)}.
</p>
<h2 id="other">Otros aspectos importantes</h2>
<ul>
<li>Cuando una aplicación funcione en Android N, esté orientada a un nivel de API inferior
<li>Cuando una aplicación funcione en Android N, pero esté orientada a un nivel de API inferior,
y el usuario modifique el tamaño de pantalla, el proceso de la aplicación finalizará. La aplicación
debe tener capacidad para manejar correctamente esta situación. De lo contrario, se bloqueará
cuando el usuario la restaure desde Recents.
@@ -476,5 +552,59 @@ modificando el tamaño de la fuente (<strong>Setting</strong> &gt;
<strong>Display</strong> &gt; <strong>Font size</strong>) y restaurándolas
desde Recents.
</li>
<li>
Debido a un error en versiones anteriores de Android, el sistema no indicaba la escritura
a un socket del TCP en el subproceso principal como una violación del modo strict. En Android N, se corrige este error.
Las aplicaciones que tienen este comportamiento, ahora emiten una {@code android.os.NetworkOnMainThreadException}.
Generalmente, realizar operaciones de red en el subproceso principal no es una buena idea porque estas operaciones
suelen tener una latencia alta de cola que genera mensajes que indican que la aplicación no responde y bloqueos.
</li>
<li>
De manea predeterminada, la familia de métodos {@code Debug.startMethodTracing()} ahora
almacena los resultados en el directorio específico del paquete en el almacenamiento compartido,
en lugar de hacerlo en el nivel superior
de la tarjeta SD. Esto significa que las aplicaciones ya no tienen que solicitar el permiso {@code WRITE_EXTERNAL_STORAGE} para usar estas API.
</li>
<li>
Muchas API de la plataforma han comenzado a controlar en busca del envío de cargas grandes
a través de transacciones {@link android.os.Binder}. Además, el
sistema ahora vuelve a emitir {@code TransactionTooLargeExceptions}
como {@code RuntimeExceptions}, en lugar de registrarlas o suprimirlas silenciosamente. Un
ejemplo común es almacenar demasiados datos en
{@link android.app.Activity#onSaveInstanceState Activity.onSaveInstanceState()},
lo que hace que {@code ActivityThread.StopInfo} emita una
{@code RuntimeException} cuando la aplicación se orienta a Android N.
</li>
<li>
Si una aplicación publica tareas {@link java.lang.Runnable} en una {@link android.view.View}, y
la {@link android.view.View}
no está anexada a una ventana, el sistema
pone en cola la tarea {@link java.lang.Runnable} con la {@link android.view.View}.
La tarea {@link java.lang.Runnable} no se ejecuta hasta que la
{@link android.view.View} esté anexada
a una ventana. Este comportamiento soluciona los siguientes errores:
<ul>
<li>Si una aplicación publicaba una {@link android.view.View} desde un subproceso que no fuera el subproceso de la IU
de la ventana prevista, la tarea {@link java.lang.Runnable} podía ejecutarse en el subproceso incorrecto.
</li>
<li>Si la tarea {@link java.lang.Runnable} se publicaba desde un subproceso que no fuera
un subproceso de looper, la aplicación podía exponer la terea {@link java.lang.Runnable}.</li>
</ul>
</li>
<li>
Si una aplicación en Android N con el permiso
{@link android.Manifest.permission#DELETE_PACKAGES DELETE_PACKAGES}
intentaba borrar un paquete instalado por otra aplicación,
el sistema solicitaba la confirmación del usuario. En este escenario, las aplicaciones debían esperar recibir el estado
{@link android.content.pm.PackageInstaller#STATUS_PENDING_USER_ACTION STATUS_PENDING_USER_ACTION}
al invocar
{@link android.content.pm.PackageInstaller#uninstall PackageInstaller.uninstall()}.
</li>
</ul>

View File

@@ -0,0 +1,324 @@
page.title=Aplicación de imágenes inalámbricas de dispositivo
@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
Android Preview SDK, 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 Android SDK Preview (el “Contrato de licencia”).
1. Introducción
1.1 Se le otorga la licencia de la versión Android SDK Preview (denominada “Preview” en el Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Preview, 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 realice de la Preview.
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 “Compatible con Android” se refiere a cualquier implementación de Android que (i) cumpla con el documento Definición de compatibilidad de Android, disponible en el sitio web de compatibilidad de Android (http://source.android.com/compatibility) y que puede actualizarse esporádicamente; y (ii) apruebe satisfactoriamente la prueba de Compatibilidad con Android, "CTS” (en inglés, Android Compatibility Test Suite).
1.4 “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 Preview, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Preview.
2.2 Al hacer clic para aceptar o utilizar la Preview, por medio del presente, usted acepta los términos del Contrato de licencia.
2.3 No puede utilizar la Preview ni aceptar el Contrato de licencia si tiene prohibido recibir la Preview 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 Preview.
2.4 Si utilizará la Preview de forma interna, dentro de su empresa 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 usted no posee la autoridad requerida, no podrá aceptar el Contrato de licencia ni utilizar la Preview en representación de su empleador u otra entidad.
3. Licencia de la Preview de Google
3.1 Conforme a los términos de este contrato de licencia, Google le otorga una licencia limitada, con validez mundial, libre de regalías, no asignable, no exclusiva y sin la posibilidad de otorgar una sublicencia, para utilizar la Preview con el único propósito de desarrollar aplicaciones para ejecutar en implementaciones compatibles de Android.
3.2 No puede utilizar esta Preview para desarrollar aplicaciones para otras plataformas (entre las que se incluyen implementaciones incompatibles de Android) o para desarrollar otro SDK. Desde luego, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, entre las que se incluyen implementaciones incompatibles de Android, siempre y cuando esta Preview no se utilice con ese propósito.
3.3 Usted acepta que Google o terceros poseen todos los derechos legales, títulos e intereses en relación con la Preview, incluidos derechos de propiedad intelectual que existan en esta. "Derechos de propiedad intelectual" hace referencia a todos los derechos de la ley de patentes, la ley de derechos de autor, la ley de secreto comercial, la ley de marca comercial y cualquier otro derecho de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
3.4 Usted no podrá utilizar la Preview 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 Preview ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Preview 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 Preview con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Preview.
3.5 El uso, la reproducción y la distribución de los componentes de la Preview 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 regla con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerte de realizar acción alguna que pudiera poner fin, suspender o violar dichos derechos.
3.6 Acepta que la forma y la naturaleza de la Preview que proporciona Google pueden cambiar sin tener que brindarle aviso previo, y que las versiones futuras de la Preview pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Preview. Usted acepta que Google, generalmente a su entera discreción, puede dejar de proporcionarle a usted o a los demás usuarios (de forma permanente o temporal) la Preview (o cualquiera de sus funciones) sin previo aviso.
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 quitará, ocultará o alterará ninguna de las notificaciones de derechos de autor (entre las que se incluyen las notificaciones de copyright y marcas comercias) que pudieran estar anexadas o implícitas en la Preview.
4. Uso que usted realiza de la Preview
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 Preview, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
4.2 Usted acepta utilizar la Preview 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 y pertinentes en las jurisdicciones relevantes (entre las que se incluyen 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 Preview 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 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 Preview, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Preview contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Preview, dado que esta Preview ya no se admitirá tras el lanzamiento del Android SDK oficial.
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 pudiera escoger usted mismo, 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 Con el objetivo de poder innovar y mejorar de forma continua la Preview, Google podría recopilar ciertas estadísticas de uso del software, entre las que se incluyen, de forma enunciativa, 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 Preview que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Preview 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 Preview 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 Preview 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 el permiso específico 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.
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 con base 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 cualquier 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 cuando, y para 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 Preview y de las credenciales de desarrollador pertinentes.
9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, luego de notificárselo.
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 Preview 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 Android SDK.
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 Preview, 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 PREVIEW ES BAJO SU PROPIO RIESGO Y QUE LA PREVIEW 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 PREVIEW Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA PREVIEW 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><!-- 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">
<p>
Esta página cuenta con enlaces a imágenes de dispositivos inalámbricos y describe
cómo aplicar una actualización inalámbrica a un dispositivo de forma manual. Este procedimiento puede ser útil
para recuperar dispositivos que hayan recibido actualizaciones inalámbricas por medio del Programa
Android Beta y no enciendan luego de instalada la aplicación.
</p>
<h2 id="install-ota">Instalar imágenes inalámbricas</h2>
<p></p>
<p>Para instalar un paquete inalámbrico en un dispositivo sigue estos pasos:</p>
<ol>
<li>Descargar una imagen de dispositivo inalámbrico de la tabla que verás a continuación.</li>
<li>Reinicia el dispositivo en modo Recuperación. Para leer más información sobre cómo
aplicar este modo en dispositivos Nexus, visita la sección
<a href="https://support.google.com/nexus/answer/4596836">Reset your Nexus
device to factory settings</a>.
</li>
<li>En el dispositivo, selecciona <strong>ADB sideload</strong>.</li>
<li>Conecta el dispositivo a una computadora con el entorno de desarrollo Android
cargado y la herramienta Android Debug Bridge (ADB) instalada.</li>
<li>Ejecuta el comando siguiente:
<pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
</li>
</ol>
<h2 id="ota-images">Imágenes inalámbricas de dispositivo</h2>
<table>
<tr>
<th scope="col">Dispositivo</th>
<th scope="col">Descarga/sumas de comprobación</th>
</tr>
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
<td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
<td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
MD5: e8b12f7721c53af9a450f7058928a5fc<br>
SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
<td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
MD5: 3fac09fef759dde26e57cb80b20b6477<br>
SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
<td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
MD5: 58312c4a5971818ef5c77a3f446003da<br>
SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
<td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
<td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
MD5: 1461622ad53ea842b2722fa7b49b8172<br>
SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
<td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
MD5: c60117f3640cc6db12386fd632289c7d<br>
SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
<td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
</td>
</tr>
</table>
</div><!-- landing -->
</div><!-- relative wrapper -->
<script>
var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
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>

View File

@@ -1,5 +1,5 @@
page.title=Pruebe en un dispositivo
meta.tags=“Versión preliminar”, “Nexus”,“imagen de sistema”
page.title=Prueba en un dispositivo
meta.tags="preview", "nexus","system image"
page.tags="preview", "androidn"
page.image=images/cards/card-n-downloads_2x.png
@@ -16,53 +16,53 @@ page.image=images/cards/card-n-downloads_2x.png
<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”).
Este es el Contrato de licencia de la versión Android SDK Preview (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 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, con respecto a la utilización que usted haga de la Preview.
1.1 Se le otorga la licencia de la versión Android SDK Preview (denominada “Preview” en el Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Preview, 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 realice de la Preview.
1.2 "Android" hace referencia al conjunto de software Android para dispositivos, tal como se encuentra disponible en el proyecto de código abierto de Android, ubicado en la siguiente dirección URL: http://source.android.com/, y sus actualizaciones frecuentes.
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 “Compatible con Android” se refiere a cualquier implementación de Android que (i) cumpla con el documento Definición de compatibilidad de Android, que está disponible en el sitio web de compatibilidad de Android (http://source.android.com/compatibility) y que puede actualizarse esporádicamente; y (ii) apruebe satisfactoriamente la prueba de Compatibilidad con Android, “CTS” (en inglés, Android Compatibility Test Suite).
.1.3 “Compatible con Android” se refiere a cualquier implementación de Android que (i) cumpla con el documento Definición de compatibilidad de Android, disponible en el sitio web de compatibilidad de Android (http://source.android.com/compatibility) y que puede actualizarse esporádicamente; y (ii) apruebe satisfactoriamente la prueba de Compatibilidad con Android, "CTS” (en inglés, Android Compatibility Test Suite).
1.4 "Google" significa Google Inc., una empresa de Delaware con su sede principal en 1600 Amphitheatre Parkway, Mountain View, CA 94043, Estados Unidos.
1.4 “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.1 Para poder utilizar la Preview, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Preview.
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.2 Al hacer clic para aceptar o utilizar la Preview, 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.3 No puede utilizar la Preview ni aceptar el Contrato de licencia si tiene prohibido recibir la Preview 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 Preview.
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.
2.4 Si utilizará la Preview de forma interna, dentro de su empresa 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 usted no posee la autoridad requerida, no podrá aceptar el Contrato de licencia ni utilizar la Preview en representación de su empleador u otra entidad.
3. Licencia de la Preview de Google
3.1 Conforme a los términos de este contrato de licencia, Google le otorga una licencia limitada, con validez mundial, libre de regalías, no asignable, no exclusiva y que no puede otorgar una sublicencia para utilizar la Preview con el único propósito de desarrollar aplicaciones para ejecutar en implementaciones compatibles de Android.
3.1 Conforme a los términos de este contrato de licencia, Google le otorga una licencia limitada, con validez mundial, libre de regalías, no asignable, no exclusiva y sin la posibilidad de otorgar una sublicencia, para utilizar la Preview con el único propósito de desarrollar aplicaciones para ejecutar en implementaciones compatibles de Android.
3.2 No puede utilizar esta Preview para desarrollar aplicaciones para otras plataformas (incluyendo implementaciones incompatibles de Android) o para desarrollar otro SDK. Por supuesto, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, incluyendo implementaciones incompatibles de Android, siempre y cuando esta Preview no sea utilizada con ese propósito.
3.2 No puede utilizar esta Preview para desarrollar aplicaciones para otras plataformas (entre las que se incluyen implementaciones incompatibles de Android) o para desarrollar otro SDK. Desde luego, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, entre las que se incluyen implementaciones incompatibles de Android, siempre y cuando esta Preview no se utilice con ese propósito.
3.3 Usted acepta que Google o terceros poseen todos los derechos legales, títulos e intereses en relación con la Preview, incluidos derechos de propiedad intelectual que existan en ésta. "Derechos de propiedad intelectual" hace referencia a todos los derechos de la ley de patentes, la ley de derechos de autor, la ley de secreto comercial, la ley de marca comercial y cualquier otro derecho de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
3.3 Usted acepta que Google o terceros poseen todos los derechos legales, títulos e intereses en relación con la Preview, incluidos derechos de propiedad intelectual que existan en esta. "Derechos de propiedad intelectual" hace referencia a todos los derechos de la ley de patentes, la ley de derechos de autor, la ley de secreto comercial, la ley de marca comercial y cualquier otro derecho de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
3.4 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 Preview ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Preview 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 Preview con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Preview.
3.4 Usted no podrá utilizar la Preview 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 Preview ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Preview 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 Preview con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Preview.
3.5 El uso, la reproducción y la distribución de los componentes de la Preview 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.5 El uso, la reproducción y la distribución de los componentes de la Preview 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 regla con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerte de realizar acción alguna que pudiera 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.6 Acepta que la forma y la naturaleza de la Preview que proporciona Google pueden cambiar sin tener que brindarle aviso previo, y que las versiones futuras de la Preview pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Preview. Usted acepta que Google, generalmente a su entera discreción, puede dejar de proporcionarle a usted o a los demás usuarios (de forma permanente o temporal) la Preview (o cualquiera de sus funciones) sin previo aviso.
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.
3.8 Usted acepta que no quitará, ocultará o alterará ninguna de las notificaciones de derechos de autor (entre las que se incluyen las notificaciones de copyright y marcas comercias) que pudieran estar anexadas o implícitas en la Preview.
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.
4. Uso que usted realiza de la Preview
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 Preview, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
4.2 Usted acepta utilizar la Preview 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 y pertinentes en las jurisdicciones relevantes (entre las que se incluyen las leyes sobre la exportación de datos o software hacia los Estados Unidos u otros países relevantes y desde ellos).
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.3 Usted acepta que si utiliza la Preview 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 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.
@@ -70,53 +70,53 @@ Este es el Contrato de licencia de la versión preliminar del SDK de Android (el
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.
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 Preview, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Preview contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Preview, dado que esta Preview ya no se admitirá tras el lanzamiento del Android SDK oficial.
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.
5.1 Usted acepta que es responsable de mantener la confidencialidad de toda credencial de desarrollador que Google pudiera otorgarle o que pudiera escoger usted mismo, 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.1 Con el objetivo de poder innovar y mejorar de forma continua la Preview, Google podría recopilar ciertas estadísticas de uso del software, entre las que se incluyen, de forma enunciativa, 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 Preview que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Preview 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/.
6.2 Los datos recopilados se analizan en el agregado para mejorar la Preview 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.1 Si utiliza la Preview 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.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 el permiso específico 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
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.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 con base 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.
8.1.2 Si utiliza cualquier 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 cuando, y para 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.2 Si desea rescindir el Contrato de licencia, puede hacerlo al interrumpir el uso que realiza de la Preview 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.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, luego de notificárselo.
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.
(A) cuando Google deje de proporcionar la Preview 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 Android SDK.
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.
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 Preview, 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.1 USTED COMPRENDE Y ACEPTA EXPRESAMENTE QUE EL USO QUE REALICE DE LA PREVIEW ES BAJO SU PROPIO RIESGO Y QUE LA PREVIEW 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.2 EL USO QUE USTED REALICE DE LA PREVIEW Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA PREVIEW 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.
@@ -142,7 +142,7 @@ Este es el Contrato de licencia de la versión preliminar del SDK de Android (el
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. ESAS LEYES INCLUYEN RESTRICCIONES EN RELACIÓN CON LOS DESTINOS, USUARIOS FINALES Y USO FINAL.
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.
@@ -167,7 +167,7 @@ Este es el Contrato de licencia de la versión preliminar del SDK de Android (el
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#device-preview">Configurar un dispositivo de hardware</a>
<ol>
@@ -182,8 +182,8 @@ Este es el Contrato de licencia de la versión preliminar del SDK de Android (el
</div>
<p>
Para ejecutar y probar tu aplicación en la plataforma nueva necesitas configurar el tiempo de ejecución de Android N
. Puedes realizar eso de las siguientes maneras:
Para ejecutar y probar tu aplicación en la plataforma nueva necesitas configurar el entorno de ejecución
de Android N. Puedes llevar a cabo la configuración de las siguientes maneras:
</p>
<ul>
@@ -192,15 +192,15 @@ Este es el Contrato de licencia de la versión preliminar del SDK de Android (el
</ul>
<p>
Si deseas un entorno para realizarle pruebas básicas de compatibilidad a tu aplicación en la plataforma nueva
, todo lo que necesitas es tu actual APK y un dispositivo de hardware o
emulador. No necesitas actualizar todo tu entorno de desarrollo
Si deseas un entorno para realizarle pruebas básicas de compatibilidad a tu aplicación en la
plataforma nueva, todo lo que necesitas es tu APK actual y un dispositivo de hardware o
emulador. No necesitas actualizar todo tu entorno de desarrollo
para realizar pruebas básicas.
</p>
<p>
Si deseas modificar tu aplicación para seleccionar como destino Android N o usar las API nuevas de Android N,
debes configurar un entorno de desarrollo que esté actualizado para que admita
debes configurar un entorno de desarrollo actualizado y que seas compatible con
Android N. En <a href="{@docRoot}preview/setup-sdk.html">Configuración para el desarrollo de
Android N</a> se ofrece información detallada.
</p>
@@ -209,87 +209,87 @@ Este es el Contrato de licencia de la versión preliminar del SDK de Android (el
<h2 id="device-preview">Configurar un dispositivo de hardware</h2>
<p>
En la N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware
En N Developer Preview se ofrecen actualizaciones del sistema para una variedad de dispositivos de hardware
que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta tablets y TV.
</p>
<p>
Si tienes acceso a un dispositivo compatible, puedes actualizarlo a una versión "milestone" de la Developer Preview
de las siguientes maneras:
Si tienes acceso a un dispositivo compatible, puedes actualizarlo a una compilación "milestone" de la Developer
Preview de las siguientes maneras:
</p>
<ul>
<li><strong>Registrar el dispositivo en actualizaciones automáticas del sistema vía OTA</strong> a través del
<a href="https://g.co/androidbeta">Programa de Android beta</a>. Una vez registrado, tu dispositivo recibirá actualizaciones inalámbricas regulares (OTA)
de todas las compilaciones de hitos en la N Developer Preview. Se recomienda este
enfoque porque te permite realizar una transición sin inconvenientes desde tu entorno actual
a través de varios lanzamientos de la N Developer Preview.</li>
<li><strong>Descargar una imagen de sistema de la Developer Preview y actualizar el dispositivo</strong>.
Las actualizaciones OTA no se proporcionan de manera automática para los dispositivos que actualizas de manera manual, pero
puedes registrar esos dispositivos en el Programa de Android beta para obtener actualizaciones OTA. </li>
<li><strong>Registrar el dispositivo en actualizaciones automáticas inalámbricas</strong> a través del
<a href="https://g.co/androidbeta">Programa Android Beta</a>. Una vez registrado, tu dispositivo recibirá actualizaciones inalámbricas periódicas
de todas las compilaciones "milestone" en la N Developer Preview. Se recomienda este
enfoque porque te permite realizar una transición sin inconvenientes desde tu entorno
actual a través de varios lanzamientos de la N Developer Preview.</li>
<li><strong>Descargar una imagen de sistema de la Developer Preview y actualizar el dispositivo de manera manual</strong>.
Las actualizaciones inalámbricas no se proporcionan de manera automática para los dispositivos que actualizas de manera manual, pero
puedes registrar esos dispositivos en el Programa de Android Beta para obtener actualizaciones inalámbricas. </li>
</ul>
<h3 id="ota">Registrar el dispositivo en actualizaciones automáticas OTA</h3>
<h3 id="ota">Registrar el dispositivo en actualizaciones automáticas inalámbricas</h3>
<p>
Si tienes acceso a un dispositivo compatible (consulta la lista en la tabla de descargas
), puedes recibir actualizaciones inalámbricas para mostrar versiones de Android
registrando el dispositivo en el <a href="https://g.co/androidbeta">Programa de Android beta</a>. Estas actualizaciones
se descargan de manera automática y actualizarán tu dispositivo como otras
actualizaciones oficiales del sistema.
Si tienes acceso a un dispositivo compatible (consulta la lista en la tabla de
descargas), puedes recibir actualizaciones inalámbricas para versiones de la Android Preview
registrando el dispositivo en el <a href="https://g.co/androidbeta">Programa de Android Beta</a>. Estas actualizaciones
se descargan de manera automática y actualizarán tu dispositivo como otras actualizaciones
oficiales del sistema.
</p>
<p>
Puedes dar de baja el registro de un dispositivo en cualquier momento. El dispositivo recibirá una actualización OTA
Puedes dar de baja el dispositivo en cualquier momento. El dispositivo recibirá una actualización inalámbrica
para la versión de producción más reciente de Android que se encuentre disponible para ese dispositivo
(por ejemplo, Android 6.0 Marshmallow). La actualización requiere un restablecimiento completo del dispositivo
, entonces se quitarán los datos del usuario en el dispositivo. Asegúrate de <strong>realizar una
copia de seguridad de los datos importantes</strong> antes de dar de baja un dispositivo.
(por ejemplo, Android 6.0 Marshmallow). La actualización requiere un restablecimiento
completo del dispositivo, por lo que se eliminarán los datos del usuario del dispositivo. No te olvides de crear una <strong>copia
de seguridad de los datos importantes</strong> antes de dar de baja un dispositivo.
</p>
<p>
Para obtener más información y para registrar tu dispositivo, consulta
el sitio web del <a href="https://g.co/androidbeta">Programa de Android beta</a> .
el sitio web del <a href="https://g.co/androidbeta">Programa de Android Beta</a> .
</p>
<p class="note"><strong>Nota:</strong>
Dar de baja el registro requiere un restablecimiento completo del dispositivo. Realice una copia de seguridad de los
datos importantes primero.
Dar de baja el registro requiere un restablecimiento completo del dispositivo. Crea una copia de seguridad
de los datos importantes.
</p>
<h3 id="flash">Actualizar un dispositivo manualmente</h3>
<h3 id="flash">Actualizar un dispositivo de forma manual</h3>
<p>
En cualquier momento, puedes descargar las últimas imágenes de sistema de la Developer Preview y
puedes actualizarlas manualmente en tu dispositivo. Consulta la siguiente tabla para descargar la imagen de
sistema para tu dispositivo de prueba. La actualización manual de un dispositivo es útil si necesitas
En cualquier momento, puedes descargar la última imagen de sistema de la Developer Preview y
actualizarla de forma manual en tu dispositivo. Consulta la tabla siguiente para descargar la imagen
de sistema para tu dispositivo de prueba. La actualización manual de un dispositivo es útil si necesitas
un control preciso del entorno de prueba o necesitas reinstalar con frecuencia,
como en pruebas automatizadas.
como en pruebas automatizadas.
</p>
<!-- You can flash by ota or system image --><p>
El proceso de instalación de una imagen de sistema en un dispositivo <strong>elimina todos los datos del
dispositivo</strong>, por lo tanto, deberás hacer una copia de seguridad de los datos en primer lugar.
dispositivo</strong>, por lo tanto, es recomendable crear una copia de seguridad de los datos.
</p>
<p>
Después de que realices una copia de seguridad y que descargues la siguiente imagen de sistema que
Después de que crees una copia de seguridad y descargues la siguiente imagen de sistema que
se adecua a tu dispositivo, sigue las instrucciones que se describen en <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
para actualizar la imagen en tu dispositivo.
para actualizar la imagen en tu dispositivo de manera manual.
</p>
<p>
Las imágenes de sistema actualizadas de manera manual <strong>no
reciben actualizaciones OTA de manera automática</strong> para posteriores "milestone"
de la Developer Preview. Asegúrate de mantener tu entorno actualizado y actualiza una
nueva imagen de sistema en cada "milestone" de la Developer Preview.
reciben actualizaciones inalámbricas de forma automática</strong> para posteriores compilaciones "milestone"
de la Developer Preview. No te olvides de mantener tu entorno actualizado y actualiza una
imagen de sistema nueva en cada versión "milestone" de la Developer Preview.
</p>
<p>
Si decides que quieres obtener actualizaciones OTA después de actualizar de manera manual un dispositivo,
Si decides que quieres obtener actualizaciones inalámbricas después de actualizar un dispositivo de manera manual,
lo único que debes hacer es registrar el dispositivo en el <a href="https://g.co/androidbeta">Programa
de Android beta</a>. Puedes registrar el dispositivo en cualquier momento para recibir la siguiente actualización de la Preview
vía inalámbrica.
de Android Beta</a>. Puedes registrar el dispositivo en cualquier momento para recibir la siguiente actualización
de la Preview de manera inalámbrica.
</p>
<table>
@@ -299,65 +299,73 @@ que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta
</tr>
<tr id="bullhead">
<td>Nexus 5X <br>“bullhead”</td>
<td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
MD5: b5cf874021023b398f5b983b24913f5d<br>
SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
<td>Nexus 5X <br>"bullhead"</td>
<td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>“shamu”</td>
<td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
MD5: af183638cf34e0eb944a1957d7696f60<br>
SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
<td>Nexus 6 <br>"shamu"</td>
<td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>“angler”</td>
<td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
MD5: bc4934ea7bd325753eee1606d3725a24<br>
SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
<td>Nexus 6P <br>"angler"</td>
<td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
MD5: e93de7949433339856124c3729c15ebb<br>
SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>“volantis”</td>
<td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
MD5: c901334c6158351e945f188167ae56f4<br>
SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
<td>Nexus 9 <br>"volantis"</td>
<td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
MD5: 565be87ebb2d5937e2abe1a42645864b<br>
SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>“volantisg”</td>
<td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
<td>Nexus 9G <br>"volantisg"</td>
<td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
MD5: a8464e15c6683fe2afa378a63e205fda<br>
SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>“fugu”</td>
<td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
<td>Nexus Player <br>"fugu"</td>
<td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
MD5: c0dbb7db671f61b2785da5001cedefcb<br>
SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>“ryu”</td>
<td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
<td>Pixel C <br>"ryu"</td>
<td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
</td>
</tr>
<tr id="seed">
<td>4G móviles en general (Android One) <br>“seed”</td>
<td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
<td>General Mobile 4G (Android One) <br>"seed"</td>
<td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
</td>
</tr>
<tr id="xperia">
<td>Sony Xperia Z3 <br> (D6603 and D6653)</td>
<td>Descarga: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
Para más información, visita la sección <a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Prueba la Android N Developer Preview en Xperia Z3</a>.
</td>
</tr>
@@ -366,29 +374,29 @@ que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta
<h3 id="revertDevice">Desinstalar la Preview de un dispositivo</h3>
<p>
Si quieres desinstalar la Preview de un dispositivo, puedes hacerlo de las
Si quieres desinstalar la muestra desde un dispositivo, puedes hacerlo de las
siguientes maneras: </p>
<ul>
<li><strong>Obtener una imagen de sistema con las especificaciones de fábrica</strong> y luego actualízala de manera manual
para el dispositivo.
<ul>
<li>Para <strong>los dispositivos Nexus y Pixel C</strong>, consulta la página
<a href="http://developers.google.com/android/nexus/images">Imágenes de fábrica para dispositivos Nexus
</a>para descargas. </li>
<li>Para <strong>los dispositivos Nexus y Pixel C</strong>, consulta
la página <a href="http://developers.google.com/android/nexus/images">Imágenes de fábrica
para dispositivos Nexus </a>para descargas. </li>
<li>Para <strong>otros dispositivos</strong>, comunícate directamente con el fabricante del dispositivo
. De manera alternativa, si el dispositivo es compatible con
el Programa de Android beta, puedes registrar el dispositivo en el
. Como alternativa, si el dispositivo es compatible con
el Programa de Android Beta, puedes registrar el dispositivo en el
programa y luego darlo de baja (consulta a continuación).</li>
</ul>
</li>
<li><strong>Dar de baja el dispositivo del Programa de Android beta</strong>. Si el
dispositivo se registra en el <a href="https://g.co/androidbeta">Programa de Android beta
</a>, independientemente del dispositivo, puedes simplemente darlo de baja desde el programa.
<li><strong>Dar de baja el dispositivo del Programa Android Beta</strong>. Si el
dispositivo se registra en el <a href="https://g.co/androidbeta">Programa de Android
Beta</a>, sin importar el dispositivo, puedes darlo de baja desde el programa fácilmente.
<p>
El dispositivo recibirá una actualización OTA para la versión de producción más reciente
de Android que se encuentre disponible para ese dispositivo (por ejemplo, Android 6.0 Marshmallow).
La actualización requiere un restablecimiento completo del dispositivo, entonces se quitarán
los datos del usuario en el dispositivo. Asegúrate de <strong>realizar una copia de seguridad de los datos importantes</strong> antes
El dispositivo recibirá una actualización inalámbricas para la versión de producción más reciente de
Android que se encuentre disponible para ese dispositivo (por ejemplo, Android 6.0 Marshmallow).
La actualización requiere un restablecimiento completo del dispositivo, por lo que se eliminarán los datos del usuario del
dispositivo. No te olvides de crear una <strong>copia de seguridad de los datos importantes</strong> antes
de dar de baja un dispositivo.
</p>
</li>
@@ -397,22 +405,22 @@ que puedes usar para realizarle pruebas a tu aplicación, desde teléfonos hasta
<p class="note"><strong>Nota:</strong>
Desinstalar una imagen de sistema de la Developer Preview antes
del final del programa requiere un restablecimiento completo del dispositivo y elimina todos los datos del usuario
en el dispositivo.
que se encuentren en él.
</p>
<h2 id="setupAVD">Configurar un emulador</h2>
<p>Para usar el emulador de Android para la ejecución de la Android N Preview, necesitas
descargar Android N Preview SDK y crear un dispositivo virtual para el
descargar el Android N Preview SDK y crear un dispositivo virtual para el
emulador.</p>
<p>Primero, descarga Android N Preview SDK de la siguiente manera (si
ya lo obtuviste durante <a href="{@docRoot}preview/setup-sdk.html">la configuración
<p>Primero, descarga el Android N Preview SDK de la siguiente manera (si
ya la obtuviste durante <a href="{@docRoot}preview/setup-sdk.html">la configuración
para desarrollar Android N</a>, puedes omitir esta parte):
<ol>
<li>En Android Studio, abre el diálogo de configuración
<li>En Android Studio, abre el cuadro de diálogo de configuración
(<strong>File &gt; Settings</strong> en Windows y Linux, o
<strong>Android Studio &gt; Preferences</strong> en Mac). En el panel
izquierdo, selecciona <strong>Appearance &amp; Behavior &gt;
@@ -447,28 +455,22 @@ ejecutar las imágenes de sistema x86_64 para Android N.</p>
<li>Selecciona un dispositivo como Nexus 5X, Nexus 6P, Nexus 9, o Android TV,
luego haz clic en <strong>Next</strong>.</li>
<li>Selecciona la imagen de sistema <strong>N</strong> (con la ABI
<strong>x86</strong> ), luego haz clic en <strong>Next</strong>.
(Solo las imágenes de sistema x86 son actualmente compatibles con el emulador de Android
<strong>x86</strong>), luego haz clic en <strong>Next</strong>.
(De momento, solo las imágenes de sistema x86 son compatibles con el emulador de Android
para la Android N Preview).
<li>Completa el resto de la configuración AVD y haz clic en
<strong>Finish</strong>.</li>
</ol>
<p>Ahora puedes lanzar el emulador de Android con el AVD de la Android N Preview.</p>
<p>Ahora puedes ejecutar el emulador de Android con el AVD de la Android N Preview.</p>
<p>
A fin de garantizar la mejor experiencia en el emulador de Android, instala la
Android Studio 2.1 Preview, que admite el <a href="http://tools.android.com/tech-docs/emulator">emulador Android 2.0 Beta</a>
con mayor rendimiento en comparación con el emulador en
A fin de garantizar la mejor experiencia en el emulador de Android, verifica que estás utilizando
Android Studio 2.1 o una versión superior, compatible con el <a href="http://tools.android.com/tech-docs/emulator">emulador de Android 2.0</a>,
cuyo rendimiento es mayor si se lo compara con el emulador utilizado en
Android Studio 1.5.</p>
<p class="note"><strong>Nota:</strong>
Si actualmente estás usando Android Studio 2.0 Beta, existe un problema conocido
que no te permite crear AVD con las imágenes de sistema de la N Preview;
por el momento necesitas usar la muestra de Android Studio 2.1 para crear AVD.
</p>
<p>Para obtener más información sobre la creación de dispositivos virtuales, consulte la <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales.</a>
<p>Para obtener más información sobre la creación de dispositivos virtuales, consulta <a href="{@docRoot}tools/devices/index.html">Administración de dispositivos virtuales</a>.
</p>

View File

@@ -0,0 +1,552 @@
page.title=Actualizaciones de Android for Work
page.metaDescription=Nuevas API y funciones de Android for Work en Android N.
page.keywords="android for work", "android N", "enterprise", "QR code"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>En este documento</h2>
<ol>
<li><a href="#qr">Provisión de código QR
</a></li>
<li><a href="#sec-challenge">Comprobación de seguridad para perfiles de trabajo
</a></li>
<li><a href="#suspend">Inhabilitar acceso a aplicaciones
</a></li>
<li><a href="#toggle-work">Activar o desactivar el modo de trabajo
</a></li>
<li><a href="#always-on-vpn">VPN siempre visibles
</a></li>
<li><a href="#contacts">Integración de contactos con el perfil de trabajo
</a></li>
<li><a href="#remote-reboot">Reinicio remoto
</a></li>
<li><a href="#disable-roaming">Inhabilitar roaming de datos
</a></li>
<li><a href="#process-logging">Registros de procesos empresariales
</a></li>
<li><a href="#bug-reports">Informes de errores remotos
</a></li>
<li><a href="#remove-cert">Quitar un certificado de cliente
</a></li>
<li><a href="#grant-cert-on-install">Otorgar acceso a certificado de cliente
en la instalación</a></li>
<li><a href="#ui-policy">Transparencia de la política de IU del sistema
</a></li>
<li><a href="#restrictions-mgmt">Mejoras en la administración de restricciones de aplicaciones
</a></li>
<li><a href="#location-off">Interruptor de desactivación de los servicios de ubicación
</a></li>
<li><a href="#custom-provisioning">Provisión personalizada
</a></li>
<li><a href="#multi-wifi-ca">Múltiples certificados de CA de Wi-Fi
</a></li>
<li><a href="#custom-lock">Mensaje personalizado en la pantalla bloqueada
</a></li>
<li><a href="#work-connectionservice">ConnectionService del perfil de trabajo
</a></li>
<li><a href="#lock-wp">Bloquear fondo de pantalla
</a></li>
<li><a href="#lock-user-icon">Bloquear ícono de usuario
</a></li>
<li><a href="#health-monitoring">Control del estado del dispositivo
</a></li>
</ol>
<h2>Consulta también</h2>
<ul>
<li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK
</a></li>
</ul>
</div>
</div>
<p>En este documento, se describen las nuevas funciones de Android for Work que se proporcionan en
Android N.</p>
<h2 id="qr">Provisión de código QR</h2>
<p>
Android for Work ahora es compatible con la utilización de códigos QR para aprovisionar dispositivos
de responsabilidad corporativa. Gracias al asistente de configuración, ahora puedes escanear un código QR para aprovisionar
el dispositivo.
</p>
<h2 id="sec-challenge">Comprobación de seguridad para perfiles de trabajo</h2>
<p>
Los propietarios de perfiles pueden solicitar que los usuarios especifiquen una comprobación de seguridad para las aplicaciones
que se ejecutan en el perfil de trabajo. Dicha comprobación se muestra en el sistema cuando el
usuario intenta abrir cualquier aplicación de trabajo. Si el usuario completa con éxito la
comprobación de seguridad, el sistema desbloquea el perfil de trabajo y lo descifra
si es necesario.
</p>
<p>
Si el propietario de un perfil envía una intent {@link
android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD}, el
sistema le pide al usuario que configure una comprobación de seguridad. El propietario del perfil también puede
enviar una intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code>
para que el usuario establezca un bloqueo de dispositivo.
</p>
<p>
Los propietarios de perfiles pueden elegir establecer las políticas de contraseña para la comprobación del perfil de trabajo de modo que sean
diferentes de aquellas para las contraseñas de otros dispositivos. Por ejemplo, la
longitud mínima para la respuesta de comprobación del dispositivo puede ser diferente de la
longitud necesaria para otras contraseñas. Los propietarios de perfiles establecen las políticas de
comprobación mediante los métodos {@link android.app.admin.DevicePolicyManager}
comunes, como por ejemplo, {@link
android.app.admin.DevicePolicyManager#setPasswordQuality
setPasswordQuality()} y {@link
android.app.admin.DevicePolicyManager#setPasswordMinimumLength
setPasswordMinimumLength()}. El propietario del perfil también puede establecer el bloqueo del dispositivo mediante
la utilización de la instancia de{@link android.app.admin.DevicePolicyManager} devuelta
por el nuevo método <code>DevicePolicyManager.getParentProfileInstance()</code>
. Además, los propietarios de perfiles pueden personalizar la pantalla de credenciales para
la comprobación de trabajo mediante la utilización de los nuevos métodos de la clase{@link android.app.admin.DevicePolicyManager}
<code>setOrganizationColor()</code> y
<code>setOrganizationName()</code>.
</p>
<p>
Para obtener detalles sobre los nuevos métodos y constantes, consulta la página de referencia de
<code>DevicePolicyManager</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK</a>.
</p>
<h2 id="suspend">Inhabilitar acceso a aplicaciones</h2>
<p>
Los propietarios de perfiles y dispositivos pueden suspender temporariamente el acceso a los paquetes
mediante una llamada al nuevo método <code>DevicePolicyManager.setPackagesSuspended()</code>
. Los propietarios pueden utilizar el mismo método para volver a habilitar esos paquetes.
</p>
<p>
Mientras un paquete está suspendido, este no puede comenzar actividades, se suprimen las notificaciones al
paquete y se oculta la entrada de la aplicación en la <a href="{@docRoot}guide/components/recents.html">pantalla de información general</a>.
Los paquetes suspendidos no aparecen en la <a href="{@docRoot}guide/components/recents.html">pantalla de información general</a> y
no pueden mostrar diálogos (incluidos avisos y snackbars). Además, no pueden reproducir
audio ni hacer vibrar el dispositivo.
</p>
<p>
Los lanzadores deben aplicar una IU distintiva para las aplicaciones suspendidas a fin de mostrar que las
aplicaciones no están actualmente disponibles; por ejemplo, el ícono de la aplicación puede aparecer en color
gris. Los lanzadores pueden averiguar si una aplicación está suspendida llamando al nuevo método
<code>DevicePolicyManager.getPackageSuspended()</code>.
</p>
<h2 id="toggle-work">Activar o desactivar el modo de trabajo</h2>
<p>
En dispositivos de perfil doble, los usuarios pueden activar o desactivar el modo de trabajo. Mientras este último está
desactivado, el perfil administrado se encuentra inactivo temporariamente. Se inhabilitan
todas las aplicaciones del perfil de trabajo, la sincronización en segundo plano y las notificaciones, incluida
la aplicación del propietario del perfil. Mientras el perfil de trabajo está deshabilitado, en el sistema
se muestra un ícono de estado persistente para recordarles a los usuarios que no pueden iniciar aplicaciones
de trabajo. El launcher del sistema indica que no se puede acceder a aplicaciones ni widgets
de trabajo.
</p>
<h2 id="always-on-vpn">VPN siempre visibles</h2>
<p>
Los propietarios de dispositivos y perfiles pueden solicitar que las aplicaciones de trabajo siempre se conecten a la red
a través de una VPN especificada. Si los propietarios establecen este requisito, el
dispositivo inicia automáticamente esa VPN en el inicio.
</p>
<p>
Los propietarios pueden requerir el uso de una VPN llamando al nuevo método
<code>DevicePolicyManager.setAlwaysOnVpnPackage()</code>. Para averiguar
si el propietario ha establecido un requisito de VPN, llama al nuevo método
<code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code>.
</p>
<p>
Debido a que los servicios de VPN pueden enlazarse directamente a través del sistema sin interacción con aplicaciones,
los clientes de VPN deben administrar nuevos puntos de entrada para VPN siempre visibles. Como antes, puedes
encontrar servicios activos mediante la utilización de un filtro de intent que coincida con la acción
{@link android.net.VpnService android.net.VpnService}.
</p>
<p>
Para configurar manualmente un cliente de VPN que esté siempre visible y que implemente {@link
android.net.VpnService}, los usuarios deben ir a <strong>Settings &gt; More &gt;
pantalla VPN</strong>.
</p>
<h2 id="contacts">Integración de contactos con el perfil de trabajo</h2>
<p>
Los propietarios de perfiles pueden permitir la búsqueda local y la búsqueda en directorio de los contactos de trabajo
a partir del usuario principal. Por ejemplo, un usuario puede acceder a contactos personales y laborales del directorio
desde el teléfono personal o la aplicación de contactos (si
así lo permite el administrador del perfil).
</p>
<p>
Los desarrolladores que aprovechan el proveedor de contactos pueden utilizar la API de contactos empresariales
para acceder a las entradas del directorio del perfil de trabajo desde el usuario principal si así lo permiten
las siguientes políticas:
</p>
<ul>
<li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
</li>
<li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
</li>
</ul>
<p>
Los propietarios de perfiles pueden controlar la visibilidad de los contactos laborales en el usuario
principal por medio de los nuevos métodos a continuación:
</p>
<ul>
<li>
<code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
</li>
<li>
<code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
</li>
</ul>
<h2 id="remote-reboot">Reinicio remoto</h2>
<p>
Los propietarios pueden reiniciar sus dispositivos de forma remota. En algunos casos, no se puede acceder al botón de encendido de los dispositivos implementados en
lugares públicos dentro de recintos. Si se debe
reiniciar un dispositivo, los administradores pueden hacerlo utilizando el nuevo método
<code>DevicePolicyManager.reboot()</code>.
</p>
<h2 id="disable-roaming">Inhabilitar roaming de datos</h2>
<p>
Los propietarios de dispositivos pueden inhabilitar el roaming de datos mediante la nueva restricción de usuario de {@link
android.os.UserManager} denominada <code>DISALLOW_DATA_ROAMING</code>.
</p>
<h2 id="process-logging">Registros de procesos empresariales</h2>
<p>
Los propietarios de dispositivos pueden identificar actividades sospechosas mediante un rastreo remoto de la actividad del
dispositivo, incluidos inicios de aplicaciones, actividad adb y desbloqueos de pantalla. Los registros de
procesos no requieren del consentimiento del usuario. Para recuperar registros, los propietarios de dispositivos habilitan
los registros de dispositivos mediante <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
</p>
<p>
Entre los cambios en la API, se incluyen los siguientes:
</p>
<ul>
<li>
La nueva clase <code>android.app.admin.SecurityLog</code> y sus
métodos
</li>
<li>
<code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
</li>
<li>
<code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
</li>
<li>
<code>List&lt;SecurityEvent&gt;
DevicePolicyManager.retrieveSecurityLogs()</code>
</li>
<li>
<code>List&lt;SecurityEvent&gt;
DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
</li>
<li>
<code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
</li>
</ul>
<h2 id="bug-reports">Informes de errores remotos</h2>
<p>
Los propietarios de dispositivos pueden activar y recuperar de forma remota un informe de errores que contenga un
archivo de descarga sobre el estado del dispositivo, lo que permite llevar a cabo una investigación forense de un
incidente conocido o un dispositivo afectado. Debido a la naturaleza detallada del informe de errores,
se requiere el consentimiento del usuario.
</p>
<p>
Android N incluye los siguientes agregados de API para ofrecer compatibilidad con esta función. Para obtener
detalles, consulte la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK
</a>.
</p>
<ul>
<li>
<code>DevicePolicyManager.requestBugreport()</code>
</li>
<li>
<code>DeviceAdminReceiver.onBugreportFailed()</code>
</li>
<li>
<code>DeviceAdminReceiver.onBugreportShared()</code>
</li>
<li>
<code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
</li>
<li>
<code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
</li>
<li>
<code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
</li>
</ul>
<h2 id="remove-cert">Quitar un certificado de cliente</h2>
<p>
Los propietarios de perfiles y dispositivos ahora pueden quitar certificados de cliente que se
instalaron a través de {@link android.app.admin.DevicePolicyManager#installKeyPair
installKeyPair()} llamando al nuevo método
<code>DevicePolicyManager.removeKeyPair()</code>.
</p>
<h2 id="grant-cert-on-install">Otorgar acceso a certificado de cliente
en la instalación</h2>
<p>
Si un propietario de perfil o dispositivo otorga a una aplicación de terceros la capacidad de
administrar certificados, dicha aplicación puede acceder por sí sola a los certificados que
instala sin intervención alguna por parte del propietario.
</p>
<p>
La API existente para administrar certificados se extiende para incluir lo siguiente:
</p>
<ul>
<li><code>DevicePolicyManager.installKeyPair()</code>
</li>
</ul>
<h2 id="ui-policy">Transparencia de la política de IU del sistema</h2>
<p>
Las políticas que afectan la experiencia del usuario o restringen las configuraciones del usuario se divulgan
en su totalidad al usuario, y los propietarios de perfiles y dispositivos pueden atribuir la
política al departamento de TI de la empresa. Además de un mensaje “Action
not allowed” consistente en Settings, los administradores de TI pueden configurar un
mensaje de soporte específico para la organización en la configuración del dispositivo con los nuevos
métodos{@link android.app.admin.DevicePolicyManager} a continuación:
</p>
<ul>
<li>
<code>DevicePolicyManager.setShortSupportMessage()</code>
</li>
<li>
<code>DevicePolicyManager.setLongSupportMessage()</code>
</li>
</ul>
<h2 id="restrictions-mgmt">Mejoras en la administración de las restricciones de aplicaciones</h2>
<p>
El propietario del dispositivo o perfil puede habilitar otra aplicación para que administre las restricciones de
aplicaciones mediante el nuevo método
<code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
. La aplicación nominada puede controlar si se otorgó este permiso
llamando a
<code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
</p>
<p>
Una aplicación nominada para administrar restricciones de aplicaciones puede llamar a {@link
android.app.admin.DevicePolicyManager#setApplicationRestrictions
setApplicationRestrictions()} y {@link
android.app.admin.DevicePolicyManager#getApplicationRestrictions
getApplicationRestrictions()} para cualquier paquete dentro de ese usuario o perfil.
</p>
<h2 id="location-off">Interruptor de desactivación de los servicios de ubicación</h2>
<p>
Los usuarios pueden inhabilitar los permisos de ubicación para las aplicaciones de trabajo mientras continúan
accediendo a información sobre ubicación en sus aplicaciones personales. Mediante un interruptor independiente de acceso
a información de ubicación en Location Settings, los usuarios pueden denegar las actualizaciones de ubicación o
las consultas de última ubicación para las aplicaciones que se ejecutan en el perfil de trabajo.
</p>
<p>
Gracias al interruptor de desactivación de servicios de ubicación de nivel superior, se inhabilita el acceso a este tipo de información para
el perfil principal y el perfil administrado.
</p>
<h2 id="custom-provisioning">Aprovisionamiento personalizado</h2>
<p>
En una aplicación se pueden personalizar los flujos de provisión
del propietario del perfil y del propietario del dispositivo con logos y colores corporativos.
</p>
<dl>
<dt>
<code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
</dt>
<dd>
Permite personalizar el color del flujo.
</dd>
<dt>
<code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
</dt>
<dd>
Permite personalizar el flujo con un logo corporativo.
</dd>
</dl>
<h2 id="multi-wifi-ca">Múltiples certificados de CA de Wi-Fi</h2>
<p>
Los propietarios de perfiles y dispositivos pueden configurar múltiples certificados de CA para una configuración
de Wi-Fi determinada. Cuando las redes de Wi-Fi corporativas tienen CA independientes para
diferentes puntos de acceso con el mismo SSID, los administradores de TI pueden incluir todas las
CA relevantes en la configuración Wi-Fi utilizando el nuevo método
<code>setCaCertificates()</code>.
</p>
<p>
Las API que se agregaron son las siguientes:
</p>
<ul>
<li>
<code>WifiEnterpriseConfig.setCaCertificates()</code>
</li>
<li>
<code>WifiEnterpriseConfig.getCaCertificates()</code>
</li>
</ul>
<h2 id="custom-lock">Mensaje personalizado en la pantalla bloqueada</h2>
<p>
Los propietarios de dispositivos pueden proporcionar información de propietario para que aparezca en la pantalla bloqueada.
Esta información prevalece sobre el mensaje de la pantalla bloqueada del usuario (si se configuró
uno). Los nuevos métodos {@link android.app.admin.DevicePolicyManager} son los siguientes:
</p>
<ul>
<li>
<code>setDeviceOwnerLockScreenInfo()</code>
</li>
<li>
<code>getDeviceOwnerLockScreenInfo()</code>
</li>
</ul>
<h2 id="work-connectionservice">ConnectionService del perfil de trabajo</h2>
<p>
Los propietarios de perfiles pueden especificar una aplicación de teléfono de trabajo que utilice un
{@link android.telecom.ConnectionService} específico del trabajo para el backend
de llamadas (cuentas de llamadas). El teléfono de trabajo lleva únicamente un registro de llamadas de trabajo
y depende solo de contactos laborales. Los usuarios tienen una experiencia de IU
de llamada entrante consistente independientemente de la aplicación de marcación. Las llamadas laborales que ingresan en las
cuentas de llamadas de trabajo se distinguen de las llamadas personales que ingresan en
las cuentas de llamadas personales.
</p>
<p>
El teléfono debe controlar el nuevo marcador
<code>android.telecom.Call.PROPERTY_WORK_CALL</code> para determinar si una llamada es
de tipo laboral. Si se trata de una llamada laboral, el teléfono debe indicarlo
, por ejemplo, mediante el agregado de una insignia de trabajo.
</p>
<h2 id="lock-wp">Bloquear fondo de pantalla</h2>
<p>
Mediante una nueva restricción de usuario (<code>DISALLOW_SET_WALLPAPER</code>), se evita que el
usuario modifique el fondo de pantalla. Los propietarios de dispositivos o perfiles aún pueden
modificar el fondo de pantalla. Sin embargo, solo pueden hacerlo para el
usuario o perfil que controlan. Por ejemplo, el propietario de un perfil no puede modificar el
fondo de pantalla del usuario primario,
pero sí pueden hacerlo el propietario de un dispositivo o el propietario de un perfil en el perfil principal. El propietario de un dispositivo o perfil que desea modificar el
fondo de pantalla debe controlar si el usuario o perfil que administra posee un
fondo de pantalla ({@link android.app.WallpaperManager#isWallpaperSupported
isWallpaperSupported()}) y si puede modificarlo (con el
nuevo método <code>WallpaperManager.isWallpaperSettingAllowed()</code>).
</p>
<h2 id="lock-user-icon">Bloquear ícono de usuario</h2>
<p>
Mediante una nueva restricción de usuario (<code>DISALLOW_SET_USER_ICON</code>), se evita que el
usuario modifique el ícono de usuario. El propietario del dispositivo o del perfil del usuario
aún puede modificar el ícono. Sin embargo, un propietario de perfil solo puede modificar el ícono
de usuario del perfil que controla.
</p>
<h2 id="health-monitoring">Control del estado del dispositivo</h2>
<p>
El propietario de un perfil o dispositivo puede usar la nueva interfaz
<code>HardwarePropertiesManager</code> para recuperar información
sobre el estado del dispositivo, como por ejemplo, las temperaturas de CPU o GPU y el uso de la CPU. La nueva interfaz
de control es especialmente útil para controlar dispositivos sin supervisión
que se ejecutan en una ubicación remota.
</p>

View File

@@ -1,5 +1,5 @@
page.title=Optimizaciones en segundo plano
page.metaDescription=Nuevas restricciones para difusiones implícitas.
page.metaDescription=Nuevas restricciones para transmisiones implícitas.
page.keywords="android N", "implicit broadcasts", "job scheduler"
page.image=images/cards/card-nyc_2x.jpg
@@ -8,7 +8,7 @@ page.image=images/cards/card-nyc_2x.jpg
<div id="qv-wrapper">
<div id="qv">
<h2>
Contenido del documento
En este documento
</h2>
<ol>
@@ -18,7 +18,7 @@ page.image=images/cards/card-nyc_2x.jpg
<li>
<a href="#sched-jobs">Programación de trabajos en red en conexiones
sin medición</a>
sin medición de uso</a>
</li>
<li>
@@ -48,35 +48,37 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Los procesos en segundo plano pueden consumir mucha memoria y batería. Por ejemplo, una
difusión implícita puede iniciar muchos procesos en segundo plano registrados para
transmisión implícita puede iniciar muchos procesos en segundo plano registrados para
escucharla, aunque esos procesos quizá no desempeñen un trabajo considerable. Esto puede
afectar de forma significativa tanto el rendimiento del dispositivo como la experiencia de usuario.
afectar de forma significativa tanto el rendimiento del dispositivo como la experiencia de usuario.
</p>
<p>
Para atenuar este problema, la N Developer Preview aplica las siguientes
restricciones:
Para corregir este problema, en Android N se aplican las siguientes
restricciones:
</p>
<ul>
<li>Las aplicaciones orientadas a la Preview no reciben difusiones {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} si
en su manifiesto registran que las reciben. Las aplicaciones que se ejecutan en segundo plano
aún pueden escuchar {@code CONNECTIVITY_CHANGE} en su subproceso principal al
registrar un {@link android.content.BroadcastReceiver} con {@link
<li>Las aplicaciones orientadas a la Preview no reciben transmisiones {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} si
en su manifiesto registran que las reciben. Las aplicaciones que se ejecutan aún pueden
escuchar {@code CONNECTIVITY_CHANGE} en su subproceso principal mediante el registro de un
{@link android.content.BroadcastReceiver} con {@link
android.content.Context#registerReceiver Context.registerReceiver()}.
</li>
<li>Las aplicaciones no pueden enviar ni recibir difusiones {@link
<li>Las aplicaciones no pueden enviar ni recibir transmisiones {@link
android.hardware.Camera#ACTION_NEW_PICTURE} ni {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Esta optimización
afecta a todas las aplicaciones, no solo a las orientadas a la Preview.
afecta a todas las aplicaciones, no solo a aquellas orientadas a la Preview.
</li>
</ul>
<p>
Si la aplicación utiliza cualquiera de estas intents, debes quitar las dependencias en
ellas lo antes posible a fin de poder orientar los dispositivos Android N correctamente.
El framework de Android ofrece varias soluciones para mitigar la necesidad de
estas difusiones implícitas. Por ejemplo, {@link android.app.job.JobScheduler}
estas transmisiones implícitas. Por ejemplo, {@link android.app.job.JobScheduler}
y <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
{@code GcmNetworkManager}</a> proporcionan mecanismos sólidos para programar operaciones
de red cuando se cumplen las condiciones especificadas, como una conexión a una
@@ -98,20 +100,20 @@ page.image=images/cards/card-nyc_2x.jpg
</h2>
<p>
Las aplicaciones orientadas a la N Developer Preview no reciben difusiones {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} si en su
manifiesto registran que las reciben, y los procesos dependen de que
no se inicie esa difusión. Esto podría ser un problema para aplicaciones que buscan
escuchar los cambios en la red o realizar múltiples actividades en red cuando el
dispositivo se conecta a una red sin medición de uso. Ya existen varias soluciones
Las aplicaciones orientadas a Android N no reciben transmisiones {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} si en su manifiesto
registran que las reciben, y los procesos que dependan de esta
transmisión no se iniciarán. Esto podría ser un problema para aplicaciones que buscan
escuchar los cambios en la red o realizar múltiples actividades en red cuando el
dispositivo se conecta a una red sin medición de uso. Ya existen varias soluciones
en relación con esta restricción en el framework de Android, pero elegir
la correcta depende de lo que quieras lograr con tu aplicación.
</p>
<p class="note">
<strong>Nota:</strong> Un {@link android.content.BroadcastReceiver} registrado con
{@link android.content.Context#registerReceiver Context.registerReceiver()}
continúa recibiendo esas difusiones mientras la aplicación está en segundo plano.
{@link android.content.Context#registerReceiver Context.registerReceiver()}
continúa recibiendo estas transmisiones mientras se ejecuta la aplicación.
</p>
<h3 id="sched-jobs">
@@ -162,11 +164,10 @@ public static void scheduleJob(Context context) {
</h3>
<p>
Las aplicaciones que se ejecutan en segundo plano aún pueden escuchar {@code
CONNECTIVITY_CHANGE} con un {@link
android.content.BroadcastReceiver} registrado. No obstante, la API {@link
Las aplicaciones que se ejecutan aún pueden escuchar {@code CONNECTIVITY_CHANGE} con un
{@link android.content.BroadcastReceiver} registrado. No obstante, la API {@link
android.net.ConnectivityManager} ofrece un método más robusto para solicitar
un callback solo cuando se cumplen las condiciones de red especificadas.
un callback solo cuando se cumplen las condiciones de red especificadas.
</p>
<p>
@@ -194,12 +195,12 @@ public static void scheduleJob(Context context) {
</h2>
<p>
En la N Developer Preview, las aplicaciones no pueden enviar ni recibir difusiones {@link
En Android N, las aplicaciones no pueden enviar ni recibir transmisiones {@link
android.hardware.Camera#ACTION_NEW_PICTURE} ni {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Esta restricción ayuda a
aliviar el impacto en el rendimiento y la experiencia de usuario cuando varias aplicaciones deben
activarse para procesar una nueva imagen o video. La N Developer Preview
extiende {@link android.app.job.JobInfo} y {@link
aliviar el impacto en el rendimiento y la experiencia de usuario cuando varias aplicaciones deben
activarse para procesar una nueva imagen o video. Android N
extiende {@link android.app.job.JobInfo} y {@link
android.app.job.JobParameters} para proporcionar una solución alternativa.
</p>
@@ -208,8 +209,8 @@ public static void scheduleJob(Context context) {
</h3>
<p>
Para activar trabajos en los cambios del URI de contenido, la N Developer Preview amplía
la API {@link android.app.job.JobInfo} con los siguientes métodos:
Para activar trabajos en los cambios del URI de contenido, Android N extiende
la API {@link android.app.job.JobInfo} con los siguientes métodos:
</p>
<dl>
@@ -243,10 +244,10 @@ public static void scheduleJob(Context context) {
</dl>
<p class="note">
<strong>Nota:</strong> no se puede usar {@code TriggerContentUri()} junto
<strong>Nota:</strong> No se puede usar {@code TriggerContentUri()} junto
con {@link android.app.job.JobInfo.Builder#setPeriodic
setPeriodic()} ni {@link android.app.job.JobInfo.Builder#setPersisted
setPersisted()}. Para controlar de forma constante la presencia de cambios, programa un nuevo
setPersisted()}. Para controlar de forma constante la presencia de cambios en el contenido, programa un nuevo
{@link android.app.job.JobInfo} antes de que el {@link
android.app.job.JobService} de la aplicación termine de administrar la callback más reciente.
</p>
@@ -266,7 +267,7 @@ public static void scheduleJob(Context context) {
MY_BACKGROUND_JOB,
new ComponentName(context, MediaContentJob.class));
builder.addTriggerContentUri(
new JobInfo.TriggerContentUri(MEDIA_URI,
new JobInfo.TriggerContentUri(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
js.schedule(builder.build());
}
@@ -283,9 +284,9 @@ public static void scheduleJob(Context context) {
</h3>
<p>
La N Developer Preview también amplía {@link android.app.job.JobParameters} para
permitir que tu aplicación reciba información útil sobre qué autoridades de contenido
y URI activaron el trabajo:
Android N también amplía {@link android.app.job.JobParameters} para
permitir que tu aplicación reciba información útil sobre qué autoridades de contenido
y URI activaron el trabajo:
</p>
<dl>
@@ -355,36 +356,36 @@ public boolean onStartJob(JobParameters params) {
<p>
Optimizar tus aplicaciones para que se ejecuten en dispositivos con poca memoria o en condiciones de niveles bajos
de memoria puede mejorar el rendimiento y la experiencia del usuario. Eliminar
dependencias en servicios en segundo plano y receptores de difusiones implícitas
registrados estadísticamente puede ayudar a que tu aplicación se ejecute mejor en esos dispositivos. Si bien
la N Developer Preview toma medidas para reducir algunos de esos problemas, te
recomendamos que optimices tu aplicación para que pueda ejecutarse sin utilizar esos
procesos en segundo plano.
dependencias en servicios en segundo plano y receptores de transmisiones implícitas
registrados estadísticamente puede ayudar a que tu aplicación se ejecute mejor en esos dispositivos. Si bien
Android N toma medidas para reducir algunos de estos problemas, te
recomendamos que optimices tu aplicación para que pueda ejecutarse sin utilizar esos
procesos en segundo plano.
</p>
<p>
La N Developer Preview presenta algunos comandos adicionales de <a href="{@docRoot}tools/help/adb.html">Puente de Depuración Android (en inglés, Android Debug Bridge, ADB)</a> que
puedes usar para probar el comportamiento de la aplicación con esos procesos en segundo plano deshabilitados:
Android N presenta algunos comandos adicionales de <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> que
puedes usar para probar el comportamiento de la aplicación con esos procesos en segundo plano deshabilitados:
</p>
<ul>
<li>Para simular condiciones en las que no hay difusiones implícitas ni servicios en segundo plano
disponibles, ingresa el siguiente comando:
<li>Para simular condiciones en las que no hay transmisiones implícitas ni servicios en segundo plano
disponibles, ingresa el siguiente comando:
</li>
<li style="list-style: none; display: inline">
<pre class="no-pretty-print">
{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
{@code $ adb shell cmd appops set &lt;package&gt; RUN_IN_BACKGROUND ignore}
</pre>
</li>
<li>Para volver a habilitar las difusiones implícitas y los servicios en segundo plano, ingresa el
<li>Para volver a habilitar las transmisiones implícitas y los servicios en segundo plano, ingresa el
siguiente comando:
</li>
<li style="list-style: none; display: inline">
<pre class="no-pretty-print">
{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
{@code $ adb shell cmd appops set &lt;package&gt; RUN_IN_BACKGROUND allow}
</pre>
</li>
</ul>
</ul>

View File

@@ -0,0 +1,234 @@
page.title=Ahorro de datos
metaDescription=User-enabled data usage optimization.
page.keywords="android N", "data usage", "metered network"
page.image=images/cards/card-nyc_2x.jpg
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>
En este documento
</h2>
<ol>
<li>
<a href="#status">Verificación de las preferencias de ahorro de datos</a>
<ol>
<li>
<a href="#request-whitelist">Solicitud de permisos de lista blanca</a>
</li>
</ol>
</li>
<li>
<a href="#monitor-changes">Control de cambios en las preferencias
de ahorro de datos</a>
</li>
<li>
<a href="#testing">Pruebas con comandos de Android Debug Bridge</a>
</li>
</ol>
</div>
</div>
<p>
Durante la vida útil de un smartphone, el costo de un plan de datos móviles puede
superar fácilmente el costo del propio dispositivo. En la versión N Developer Preview, los usuarios pueden
habilitar el ahorro de datos en todo el dispositivo a fin de reducir el uso de datos, ya sea con
servicio de itinerancia, cerca del final del ciclo de facturación o con un pequeño paquete de datos prepago.
</p>
<p>
Cuando un usuario habilita el ahorro de datos en <strong>Settings</strong> y el dispositivo está conectado
a una red de uso medido, el sistema bloquea el uso de datos en segundo plano y envía señales
a las aplicaciones para que utilicen menos datos en primer plano siempre que sea posible. Los usuarios pueden
incluir aplicaciones específicas en la lista blanca para permitir el uso de datos medidos en segundo plano, incluso cuando está activado el ahorro
de datos.
</p>
<p>
La N Developer Preview extiende la API {@link android.net.ConnectivityManager}
para que las aplicaciones puedan <a href="#status">recuperar las preferencias de
ahorro de datos del usuario</a> y <a href="#monitor-changes">controlar
los cambios en las preferencias</a>. Se considera una buena práctica que las aplicaciones verifiquen si el
usuario habilitó el ahorro de datos y se esfuercen por reducir el uso de datos en primer
y segundo plano.
</p>
<h2 id="status">
Verificación de las preferencias de ahorro de datos
</h2>
<p>
En la N Developer Preview, las aplicaciones pueden utilizar la API {@link
android.net.ConnectivityManager} para determinar qué restricciones
de uso de datos se aplican. Mediante el método {@code getRestrictBackgroundStatus()}
, se devuelve uno de los siguientes valores:
</p>
<dl>
<dt>
{@code RESTRICT_BACKGROUND_STATUS_DISABLED}
</dt>
<dd>
El ahorro de datos está inhabilitado.
</dd>
<dt>
{@code RESTRICT_BACKGROUND_STATUS_ENABLED}
</dt>
<dd>
El usuario habilitó el ahorro de datos para esta aplicación. Las aplicaciones deben esforzarse por reducir
el uso de datos en primer plano y manejar correctamente las restricciones para
el uso de datos en segundo plano.
</dd>
<dt>
{@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
</dt>
<dd>
El usuario habilitó el ahorro de datos, pero la aplicación se encuentra en la lista blanca. Las aplicaciones aún deben
esforzarse por reducir el uso de datos en primer y segundo plano.
</dd>
</dl>
<p>
Se considera una buena práctica limitar el uso de datos siempre que el dispositivo esté
conectado a una red de uso medido, incluso si el ahorro de datos está deshabilitado o la aplicación
se encuentra en la lista blanca. El siguiente código de muestra utiliza {@link
android.net.ConnectivityManager#isActiveNetworkMetered
ConnectivityManager.isActiveNetworkMetered()} y {@code
ConnectivityManager.getRestrictBackgroundStatus()} para determinar la cantidad de datos
que la aplicación debe utilizar:
</p>
<pre>
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
// Checks if the device is on a metered network
if (connMgr.isActiveNetworkMetered()) {
// Checks user’s Data Saver settings.
switch (connMgr.getRestrictBackgroundStatus()) {
case RESTRICT_BACKGROUND_STATUS_ENABLED:
// Background data usage is blocked for this app. Wherever possible,
// the app should also use less data in the foreground.
case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
// The app is whitelisted. Wherever possible,
// the app should use less data in the foreground and background.
case RESTRICT_BACKGROUND_STATUS_DISABLED:
// Data Saver is disabled. Since the device is connected to a
// metered network, the app should use less data wherever possible.
}
} else {
// The device is not on a metered network.
// Use data as required to perform syncs, downloads, and updates.
}
</pre>
<h3 id="request-whitelist">
Solicitud de permisos de lista blanca
</h3>
<p>
Si la aplicación necesita utilizar datos en segundo plano, esta puede solicitar permisos de
lista blanca mediante el envío de una intent
<code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code>
que contenga un URI del nombre de paquete de la aplicación, como por ejemplo,
<code>package:MY_APP_ID</code>.
</p>
<p>
Mediante el envío de la intent y el URI, se inicia la aplicación <strong>Settings</strong> y
se muestra la configuración de uso de datos para la aplicación. El usuario luego puede decidir si
habilita los datos en segundo plano para la aplicación. Antes de enviar esta intent, resulta
buena práctica consultarle primero al usuario acerca de si desea iniciar la aplicación
<strong>Settings</strong> con el objetivo de habilitar el uso de datos
en segundo plano.
</p>
<h2 id="monitor-changes">
Control de cambios en las preferencias de ahorro de datos
</h2>
<p>
Las aplicaciones pueden controlar los cambios en las preferencias de ahorro de datos mediante la creación de un {@link
android.content.BroadcastReceiver} para escuchar {@code
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} y mediante un registro
dinámico del receptor con {@link android.content.Context#registerReceiver
Context.registerReceiver()}. Cuando una aplicación recibe esta transmisión, debe
<a href="#status">verificar si las nuevas preferencias de ahorro de datos afectan los
permisos; para ello,</a> la aplicación debe llamar a {@code
ConnectivityManager.getRestrictBackgroundStatus()}.
</p>
<p class="note">
<strong>Nota:</strong> El sistema únicamente envía esta transmisión a las aplicaciones que
se registran dinámicamente para recibirla con {@link
android.content.Context#registerReceiver Context.registerReceiver()}. Las aplicaciones
que en su manifiesto registran que la reciben no la
recibirán.
</p>
<h2 id="testing">
Pruebas con comandos de Android Debug Bridge
</h2>
<a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>
ofrece algunos comandos que puedes utilizar para verificar y configurar los permisos
de red:
<dl>
<dt>
<code>$ adb shell dumpsys netpolicy</code>
</dt>
<dd>
Se genera un informe en el que se incluyen la configuración global actual de restricciones de red
en segundo plano, los UID de paquetes que se encuentran actualmente en una lista blanca y los permisos
de red de otros paquetes conocidos.
</dd>
<dt>
<code>$ adb shell cmd netpolicy</code>
</dt>
<dd>
Se muestra una lista completa de los comandos del administrador de políticas de red (políticas de red).
</dd>
<dt>
<code>$ adb shell cmd netpolicy set restrict-background
&lt;boolean&gt;</code>
</dt>
<dd>
Se habilita o deshabilita el modo de ahorro de datos cuando se asignan los valores <code>true</code> o
<code>false</code>, respectivamente.
</dd>
<dt>
<code>$ adb shell cmd netpolicy add restrict-background-whitelist
&lt;UID&gt;</code>
</dt>
<dd>
Se agrega el UID del paquete específico a la lista blanca para permitir el uso de datos
medidos en segundo plano.
</dd>
<dt>
<code>$ adb shell cmd netpolicy remove restrict-background-whitelist
&lt;UID&gt;</code>
</dt>
<dd>
Se quita el UID del paquete específico de la lista blanca para bloquear el uso de datos
medidos en segundo plano mientras el ahorro de datos está habilitado.
</dd>
</dl>

View File

@@ -1,4 +1,4 @@
page.title=Arranque directo
page.title=Inicio directo
page.keywords=preview,sdk,direct boot
page.tags=androidn
page.image=images/cards/card-nyc_2x.jpg
@@ -7,32 +7,32 @@ page.image=images/cards/card-nyc_2x.jpg
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#run">Solicitar acceso para ejecutar durante el arranque directo</a></li>
<li><a href="#access">Acceder al almacenamiento cifrado por dispositivo</a></li>
<li><a href="#run">Solicitar acceso para ejecutar durante el inicio directo</a></li>
<li><a href="#access">Acceder al almacenamiento encriptado por dispositivo</a></li>
<li><a href="#notification">Recibir notificaciones sobre el desbloqueo del usuario</a></li>
<li><a href="#migrating">Migrar datos existentes</a></li>
<li><a href="#testing">Probar la aplicación con reconocimiento de cifrado</a></li>
<li><a href="#testing">Probar la aplicación con reconocimiento de encriptación</a></li>
</ol>
</div>
</div>
<p>Android N se ejecuta en un modo <i>de arranque directo</i> seguro
<p>Android N se ejecuta en un modo <i>de inicio directo</i> seguro
cuando el dispositivo se enciende pero el usuario no lo ha
desbloqueado. Para permitir esto, el sistema brinda dos ubicaciones de almacenamiento para los datos:</p>
<ul>
<li><i>Almacenamiento cifrado por credencial:</i>es la ubicación de almacenamiento predeterminada
<li><i>Almacenamiento encriptado por credencial: </i>es la ubicación de almacenamiento predeterminada
y solo está disponible después de que el usuario desbloquea el dispositivo.</li>
<li><i>Almacenamiento cifrado por dispositivo:</i>es una ubicación de almacenamiento que está disponible tanto
durante el modo de arranque directo como después de que el usuario desbloquea el dispositivo.</li>
<li><i>Almacenamiento encriptado por dispositivo: </i>es una ubicación de almacenamiento que está disponible tanto
durante el modo de inicio directo como después de que el usuario desbloquea el dispositivo.</li>
</ul>
<p>De forma predeterminada, las aplicaciones no se ejecutan durante el modo de arranque directo.
Si necesita que su aplicación se ejecute durante el modo de arranque directo, puede registrar
<p>De forma predeterminada, las aplicaciones no se ejecutan durante el modo de inicio directo.
Si necesitas que tu aplicación se ejecute durante el modo de inicio directo, puedes registrar
los componentes de la aplicación que deberían ejecutarse durante este modo. Algunos casos comunes de
aplicaciones que necesitan ejecutarse durante el modo de arranque directo incluyen los siguientes:</p>
aplicaciones que necesitan ejecutarse durante el modo de inicio directo incluyen los siguientes:</p>
<ul>
<li>aplicaciones que tienen notificaciones programadas, como aplicaciones
@@ -41,39 +41,39 @@ de alarma;</li>
<li>aplicaciones que brindan servicios de accesibilidad, como Talkback.</li>
</ul>
<p>Si necesita que su aplicación acceda a datos mientras se ejecuta el modo de arranque directo, use
el almacenamiento cifrado por dispositivo. Este tipo de almacenamiento contiene datos
cifrados con una clave que solo está disponible luego de que el dispositivo haya realizado un inicio
<p>Si necesitas que tu aplicación acceda a datos mientras se ejecuta el modo de inicio directo, usa
el almacenamiento encriptado por dispositivo. Este tipo de almacenamiento contiene datos
encriptados con una clave que solo está disponible luego de que el dispositivo haya realizado un inicio
verificado correctamente.</p>
<p>Para los datos que se deben cifrar con una clave asociada con credenciales del
usuario, como un PIN o una contraseña, use el almacenamiento cifrado por credencial.
usuario, como un PIN o una contraseña, usa el almacenamiento encriptado por credencial.
Este tipo de almacenamiento solo está disponible luego de que el usuario haya desbloqueado
correctamente el dispositivo y hasta que el usuario reinicie nuevamente el dispositivo. Si el
usuario habilita el bloqueo de pantalla luego de desbloquear el dispositivo, esto no bloquea
el almacenamiento cifrado por credencial.</p>
el almacenamiento encriptado por credencial.</p>
<h2 id="run">Solicitar acceso para ejecutar durante el arranque directo</h2>
<h2 id="run">Solicitar acceso para ejecutar durante el inicio directo</h2>
<p>Debes registrar los componentes de las aplicaciones con el sistema antes de que estas puedan
ejecutarse durante el modo de arranque directo o acceder al almacenamiento cifrado por
ejecutarse durante el modo de inicio directo o acceder al almacenamiento encriptado por
dispositivo. Para registrar una aplicación en el sistema, debes marcar los componentes como
<i>reconocimiento de cifrado</i>. Para marcar su dispositivo como "con reconocimiento de cifrado" , configure el atributo
<code>android:encryptionAware</code> como verdadero en el manifiesto.<p>
<i>"con reconocimiento de encriptación"</i>. Para marcar tu dispositivo como "con reconocimiento de encriptación", configura el atributo
<code>android:directBootAware</code> como verdadero en el manifiesto.<p>
<p>Los componentes con reconocimiento de cifrado pueden registrarse para recibir un mensaje de difusión
<p>Los componentes con reconocimiento de encriptación pueden registrarse para recibir un mensaje de transmisión
<code>LOCKED_BOOT_COMPLETED</code> del
sistema cuando el dispositivo se haya reiniciado. En este momento, el almacenamiento
cifrado por dispositivo está disponible, y el componente puede ejecutar tareas que se deben
ejecutar durante el modo de arranque directo, como disparar una alarma programada.</p>
sistema cuando el dispositivo se haya reiniciado. En este momento, el almacenamiento
encriptado por dispositivo está disponible, y el componente puede ejecutar tareas que se deben
ejecutar durante el modo de inicio directo, como disparar una alarma programada.</p>
<p>El siguiente fragmento de código es un ejemplo de cómo registrar un
{@link android.content.BroadcastReceiver} como reconocimiento de cifrado y de cómo agregar un
filtro de intenciones para <code>LOCKED_BOOT_COMPLETED</code> en el manifiesto de la aplicación:</p>
{@link android.content.BroadcastReceiver} como reconocimiento de encriptación y de cómo agregar un
filtro de intents para <code>LOCKED_BOOT_COMPLETED</code> en el manifiesto de la aplicación:</p>
<pre>
&lt;receiever
android:encryptionAware="true" &gt;
&lt;receiver
android:directBootAware="true" &gt;
...
&lt;intent-filter&gt;
&lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
@@ -82,34 +82,34 @@ filtro de intenciones para <code>LOCKED_BOOT_COMPLETED</code> en el manifiesto d
</pre>
<p>Una vez que el usuario haya desbloqueado el dispositivo, todos los componentes podrán acceder tanto al
almacenamiento cifrado por dispositivo como al almacenamiento cifrado por credencial.</p>
almacenamiento encriptado por dispositivo como al almacenamiento cifrado por credencial.</p>
<h2 id="access">Acceder al almacenamiento cifrado por dispositivo</h2>
<h2 id="access">Acceder al almacenamiento encriptado por dispositivo</h2>
<p>Para acceder al almacenamiento cifrado por dispositivo, crea una segunda
<p>Para acceder al almacenamiento encriptado por dispositivo, crea una segunda
instancia de {@link android.content.Context} llamando a
<code>Context.createDeviceEncryptedStorageContext()</code>. Todas las llamadas
de API de almacenamiento que se hacen usando este contexto acceden al almacenamiento cifrado por dispositivo. El siguiente
ejemplo accede al almacenamiento cifrado por dispositivo y abre un archivo de datos de la aplicación
<code>Context.createDeviceProtectedStorageContext()</code>. Todas las llamadas
de API de almacenamiento que se hacen usando este contexto acceden al almacenamiento encriptado por dispositivo. El siguiente
ejemplo accede al almacenamiento encriptado por dispositivo y abre un archivo de datos de la aplicación
existente:</p>
<pre>
Context directBootContext = Context.createDeviceEncryptedStorageContext();
Context directBootContext = appContext.createDeviceProtectedStorageContext();
// Access appDataFilename that lives in device encrypted storage
FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
// Use inStream to read content...
</pre>
<p>Solo debes usar el almacenamiento cifrado por dispositivo para
información que debe ser accesible durante el modo de arranque directo.
No uses este tipo de almacenamiento como un almacenamiento cifrado de propósito general.
Para información privada del usuario o datos cifrados que no son necesarios durante
el modo de arranque directo, usa el almacenamiento cifrado por credencial.</p>
<p>Solo debes usar el almacenamiento encriptado por dispositivo para
información que debe ser accesible durante el modo de inicio directo.
No uses este tipo de almacenamiento como un almacenamiento encriptado de propósito general.
Para información privada del usuario o datos encriptados que no son necesarios durante
el modo de inicio directo, usa el almacenamiento encriptado por credencial.</p>
<h2 id="notification">Recibir notificaciones sobre el desbloqueo del usuario</h2>
<p>Una vez que el usuario desbloquea el dispositivo después de reiniciarlo, la aplicación puede cambiar y acceder
al almacenamiento cifrado por credencial y usar servicios del sistema comunes que
al almacenamiento encriptado por credencial y usar servicios del sistema comunes que
dependen de credenciales de usuario.</p>
<p>Para recibir una notificación cuando el usuario desbloquea el dispositivo luego de reiniciarlo,
@@ -124,28 +124,28 @@ que el usuario ha desbloqueado el dispositivo.</p>
<h2 id="migrating">Migrar datos existentes</h2>
<p>Si un usuario actualiza el dispositivo para usar el modo de arranque directo, es posible que haya
datos existentes que se deben migrar al almacenamiento cifrado por dispositivo. Usa
<code>Context.migrateSharedPreferencesFrom()</code> y
<code>Context.migrateDatabaseFrom()</code> para migrar los datos de preferencia y de base de datos
del almacenamiento cifrado por credencial al almacenamiento cifrado por dispositivo.</p>
<p>Si un usuario actualiza el dispositivo para usar el modo de inicio directo, es posible que haya
datos existentes que se deban migrar al almacenamiento encriptado por dispositivo. Usa
<code>Context.moveSharedPreferencesFrom()</code> y
<code>Context.moveDatabaseFrom()</code> para migrar los datos de preferencia y de base de datos
del almacenamiento encriptado por credencial al almacenamiento encriptado por dispositivo.</p>
<p>Debes tener cuidado cuando decidas qué datos migrar entre
estos dos tipos de almacenamiento. No deberías migrar
información de usuario privada, como contraseñas o tokens de autorización, al
almacenamiento cifrado por dispositivo. En algunos casos, es posible que debas gestionar
conjuntos separados de datos en ambos tipos de almacenamiento cifrado.</p>
almacenamiento encriptado por dispositivo. En algunos casos, es posible que debas gestionar
conjuntos separados de datos en ambos tipos de almacenamiento encriptado.</p>
<h2 id="testing">Probar la aplicación con reconocimiento de cifrado</h2>
<h2 id="testing">Probar la aplicación con reconocimiento de encriptación</h2>
<p>Prueba la aplicación con reconocimiento de cifrado usando el nuevo modo de arranque directo. Hay dos
maneras de habilitar el arranque directo.</p>
<p>Prueba la aplicación con reconocimiento de encriptación usando el nuevo modo de inicio directo. Hay dos
maneras de habilitar el inicio directo.</p>
<p class="caution"><strong>Advertencia:</strong> habilitar el arranque directo
<p class="caution"><strong>Advertencia:</strong> Habilitar el inicio directo
borrará todos los datos de usuario del dispositivo.</p>
<p>Para los dispositivos compatibles que tienen Android N instalado, habilita
el arranque directo mediante una de las siguientes opciones:</p>
el inicio directo mediante una de las siguientes opciones:</p>
<ul>
<li>En el dispositivo, habilita las <b>Developer options</b> si no lo haz hecho aún
@@ -153,7 +153,7 @@ yendo a <b>Settings &gt; About phone</b> y presionando <b>Build number</b>
siete veces. Una vez que aparezca la pantalla Developer options, dirígete a
<b>Settings &gt; Developer options</b> y selecciona
<b>Convert to file encryption</b>.</li>
<li>Usa los siguientes comandos shell ADB para permitir el modo de arranque directo:
<li>Usa los siguientes comandos shell ADB para habilitar el modo de inicio directo:
<pre class="no-pretty-print">
$ adb reboot-bootloader
$ fastboot --wipe-and-use-fbe
@@ -161,9 +161,9 @@ $ fastboot --wipe-and-use-fbe
</li>
</ul>
<p>También está disponible un modo de arranque directo emulado en caso de que debas cambiar
<p>También está disponible un modo de inicio directo emulado en caso de que debas cambiar
de modo en los dispositivos de prueba. El modo emulado solo debería usarse durante
el desarrollo, y puede provocar la pérdida de datos. Para habilitar el modo de arranque directo emulado,
el desarrollo, y puede provocar la pérdida de datos. Para habilitar el modo de inicio directo emulado,
debes establecer un patrón de bloqueo en el dispositivo, elegir "No thanks" si te pregunta si deseas un
inicio seguro cuando estás estableciendo el patrón de bloqueo y, luego, usar el
siguiente comando shell ADB:</p>
@@ -172,7 +172,7 @@ siguiente comando shell ADB:</p>
$ adb shell sm set-emulate-fbe true
</pre>
<p>Para deshabilitar el modo de arranque directo emulado, usa el siguiente comando:</p>
<p>Para deshabilitar el modo de inicio directo emulado, usa el siguiente comando:</p>
<pre class="no-pretty-print">
$ adb shell sm set-emulate-fbe false

View File

@@ -1,11 +1,11 @@
page.title=API de ICU4J del framework de Android
page.title=API de ICU4J en el framework de Android
page.image=images/cards/card-nyc_2x.jpg
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento:</h2>
<h2>En este documento:</h2>
<ol>
<li><a href="#relation">Relación con ICU4J</a></li>
<li><a href="#migration">Migración hacia API de android.icu desde ICU4J</a></li>

View File

@@ -6,7 +6,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#overview">Información general</a></li>
<li><a href="#lifecycle">Ciclo de vida en modo de ventanas múltiples</a></li>
@@ -19,15 +19,16 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<ol>
<li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Aplicación de ejemplo para la
prueba de ventanas múltiples</a></li>
<li><a class="external-link" href="https://medium.com/google-developers/5-tips-for-preparing-for-multi-window-in-android-n-7bed803dda64">Cinco tips para prepararse para ventanas múltiples en Android N</a></li>
</ol>
</div>
</div>
<p>
Android N agrega compatibilidad con la visualización de más de una aplicación
a la vez. En dispositivos portátiles, se pueden ejecutar dos aplicaciones una al lado de la otra o
a la vez. En dispositivos portátiles, se pueden ejecutar dos aplicaciones una al lado de la otra o
una por encima de la otra en modo de <em>pantalla dividida</em>. En dispositivos de TV, las aplicaciones pueden
usar el modo <em>imagen en imagen</em> para continuar la reproducción de video mientras los usuarios
usar el modo <em>picture-in-picture</em> para continuar la reproducción de video mientras los usuarios
interactúan con otra aplicación.
</p>
@@ -56,7 +57,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
</li>
<li>En dispositivos Nexus Player con Android N, las aplicaciones pueden ubicarse automáticamente
en <a href="picture-in-picture.html">modo de imagen en imagen</a>, lo que les permite
en <a href="picture-in-picture.html">modo Picture-in-picture</a>, lo que les permite
continuar mostrando contenido mientras el usuario explora o interactúa con
otras aplicaciones.
</li>
@@ -129,11 +130,13 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p>
Cuando el usuario coloca una aplicación en modo de ventanas múltiples, el sistema le notifica a la
actividad acerca de un cambio de configuración, tal como se especifica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Control de cambios en
tiempo de ejecución</a>. Básicamente, este cambio tiene las mismas consecuencias en el ciclo de vida
de la actividad que cuando el sistema notifica a la aplicación que el dispositivo cambió de
modo vertical a modo horizontal, excepto porque se modifican las dimensiones del dispositivo
en lugar de intercambiarse solamente. Como se aborda en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Control de cambios en
actividad de un cambio de configuración, tal como se especifica en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Control de cambios en
tiempo de ejecución</a>. Esto también sucede cuando el usuario modifica el tamaño de la aplicación o coloca la aplicación
nuevamente en el modo de pantalla completa.
Básicamente, este cambio tiene las mismas consecuencias en el ciclo de vida
de la actividad que cuando el sistema notifica a la aplicación que el dispositivo cambió de
modo vertical a modo de paisaje, excepto porque se modifican las dimensiones del dispositivo
en lugar de intercambiarse solamente. Como se aborda en <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Control de cambios en
tiempo de ejecución</a>, tu actividad puede administrar el cambio de configuración por sí misma, o
puede permitir que el sistema destruya la actividad y la vuelva a crear con las nuevas
dimensiones.
@@ -154,8 +157,10 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
Si tu aplicación está orientada a Android N, puedes configurar cómo y
si quieres que las actividades de tu aplicación admitan la visualización de ventanas múltiples. Puedes establecer
atributos en tu manifiesto para controlar el tamaño y el diseño.
La configuración de atributos de una actividad raíz aplica a todas las actividades
de su pila de tareas.
La configuración de atributos de una actividad raíz se aplica a todas las actividades
de su pila de tareas. Por ejemplo, si
<code>android:resizeableActivity</code> está configurado en true para la actividad raíz, se puede modificar el tamaño de todas las actividades
de la pila de tareas.
</p>
<p class="note">
@@ -171,7 +176,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<h4 id="resizeableActivity">android:resizeableActivity</h4>
<p>
Establece este atributo en el nodo <code>&lt;activity&gt;</code> o
<code>&lt;application&gt;</code> de tu manifiesto para habilitar o deshabilitar la visualización
<code>&lt;application&gt;</code> de tu manifiesto para habilitar o inhabilitar la visualización
en modo de ventanas múltiples:
</p>
@@ -196,7 +201,7 @@ android:resizeableActivity=["true" | "false"]
<p>
Establece este atributo en el nodo <code>&lt;activity&gt;</code> de tu manifiesto
para indicar si la actividad admite la visualización de imagen en imagen. Este
para indicar si la actividad admite la visualización de Picture-in-picture. Este
atributo se ignora si <code>android:resizeableActivity</code> es false.
</p>
@@ -235,16 +240,16 @@ android:supportsPictureInPicture=["true" | "false"]
<dd>
Ubicación inicial de la actividad cuando se inicia en modo de forma libre. Consulta la referencia
{@link android.view.Gravity} para obtener valores adecuados.
{@link android.view.Gravity} para obtener valores adecuados.
</dd>
<dt>
<code>android:minimalSize</code>
<code>android:minimalHeight</code>, <code>android:minimalWidth</code>
</dt>
<dd>
Altura y ancho mínimos para la actividad tanto en el modo de pantalla dividida como en el
modo de forma libre. Si el usuario mueve la línea divisoria en el modo de pantalla dividida
modo de forma libre. Si el usuario mueve la línea divisoria en el modo de pantalla dividida
para reducir el tamaño respecto del tamaño mínimo especificado, el sistema recorta
la actividad para ajustarla a los requisitos del usuario.
</dd>
@@ -261,7 +266,8 @@ android:supportsPictureInPicture=["true" | "false"]
&lt;layout android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end"
android:minimalSize="450dp" /&gt;
android:minimalHeight="450dp"
android:minimalWidth="300dp" /&gt;
&lt;/activity&gt;
</pre>
@@ -295,13 +301,14 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Se agregaron los siguientes métodos nuevos a la clase {@link android.app.Activity}
para admitir la visualización de ventanas múltiples. Para obtener información detallada sobre cada método, consulta la
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia del N Preview SDK</a>.
para admitir la visualización de ventanas múltiples. Para obtener información detallada sobre cada método, consulta la
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia sobre N Preview SDK
</a>.
</p>
<dl>
<dt>
<code>Activity.inMultiWindow()</code>
<code>Activity.isInMultiWindowMode()</code>
</dt>
<dd>
@@ -309,54 +316,54 @@ android:supportsPictureInPicture=["true" | "false"]
</dd>
<dt>
<code>Activity.inPictureInPicture()</code>
<code>Activity.isInPictureInPictureMode()</code>
</dt>
<dd>
Realiza una llamada para averiguar si la actividad está en modo de imagen en imagen.
Realiza una llamada para averiguar si la actividad está en modo Picture-in-picture.
<p class="note">
<strong>Nota:</strong> El modo de Picture-in-Picture es un caso especial del
modo de ventanas múltiples. Si <code>myActivity.inPictureInPicture()</code>
devuelve true, <code>myActivity.inMultiWindow()</code> también devuelve
true.
<strong>Nota:</strong> El modo Picture-in-picture es un caso especial del
modo de ventanas múltiples. Si <code>myActivity.isInPictureInPictureMode()</code>
devuelve un valor true, <code>myActivity.isInMultiWindowMode()</code> también
devuelve un valor true.
</p>
</dd>
<dt>
<code>Activity.onMultiWindowChanged()</code>
<code>Activity.onMultiWindowModeChanged()</code>
</dt>
<dd>
El sistema llama a este método siempre que la actividad entra en modo de ventanas
múltiples o sale de él. El sistema le pasa al método un valor de true si la
actividad entra en modo de ventanas múltiples, y false si la actividad
sale del modo de ventanas múltiples.
múltiples o sale de él. El sistema le pasa al método un valor de true si la
actividad entra en modo de ventanas múltiples y false si la actividad
sale del modo de ventanas múltiples.
</dd>
<dt>
<code>Activity.onPictureInPictureChanged()</code>
<code>Activity.onPictureInPictureModeChanged()</code>
</dt>
<dd>
El sistema llama a este método siempre que la actividad entre en modo de imagen en imagen
o sale de él. El sistema le pasa al método un valor de true si
la actividad entra en modo de imagen en imagen, y false si la actividad
sale del modo de imagen en imagen.
El sistema llama a este método siempre que la actividad entra en modo Picture-in-picture
o sale de él. El sistema le pasa al método un valor de true si
la actividad entra en modo Picture-in-picture y false si la actividad
sale de dicho modo.
</dd>
</dl>
<p>
También hay versiones {@link android.app.Fragment} de cada uno de esos
métodos; por ejemplo, <code>Fragment.inMultiWindow()</code>.
métodos; por ejemplo, <code>Fragment.isInMultiWindowMode()</code>.
</p>
<h3 id="entering-pip">Cómo entrar en modo de imagen en imagen</h3>
<h3 id="entering-pip">Cómo entrar en modo Picture-in-picture</h3>
<p>
Para que una actividad entre en modo de imagen en imagen, debes llamar al nuevo método
<code>Activity.enterPictureInPicture()</code>. Este método no tiene efecto si
el dispositivo no admite el modo de imagen en imagen. Para obtener más información,
Para que una actividad entre en modo de Picture-in-picture, debes llamar al nuevo método
<code>Activity.enterPictureInPictureMode()</code>. Este método no tiene efecto si
el dispositivo no admite el modo de imagen en imagen. Para obtener más información,
consulta la documentación de <a href="picture-in-picture.html">Picture-in-Picture</a>.
</p>
@@ -490,7 +497,7 @@ android:supportsPictureInPicture=["true" | "false"]
Si tu aplicación no declara una orientación fija, debes iniciar tu aplicación
en un dispositivo con Android N e intentar colocar la aplicación en
modo de pantalla dividida. Cuando se modifique el tamaño de la aplicación de forma forzada,
comprueba que la experiencia de usuario sea aceptable.
verifica que la experiencia de usuario sea aceptable.
</p>
<p>
@@ -512,19 +519,19 @@ android:supportsPictureInPicture=["true" | "false"]
durante un momento el botón Overview. Verifica que la aplicación pase de un modo a otro correctamente.
</li>
<li>Inicia la aplicación directamente en modo de ventanas múltiples y comprueba que se
<li>Inicia la aplicación directamente en modo de ventanas múltiples y verifica que se
inicie correctamente. Puedes iniciar una aplicación en modo de ventanas múltiples al presionar el
botón Overview, luego presionar durante un momento la barra de título de la aplicación y arrastrarla
a una de las áreas resaltadas de la pantalla.
</li>
<li>Cambia el tamaño de tu aplicación en modo de pantalla dividida al arrastrar la línea divisoria.
Comprueba que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos
Verifica que la aplicación cambie de tamaño sin fallar y que estén visibles los elementos
necesarios de la IU.
</li>
<li>Si especificaste dimensiones mínimas para tu aplicación, intenta cambiar el tamaño
de la aplicación a dimensiones más bajas que las especificadas. Comprueba que no puedas modificar el tamaño de la aplicación
de la aplicación a dimensiones más bajas que las especificadas. Verifica que no puedas modificar el tamaño de la aplicación
para que sea más pequeña que la dimensión mínima especificada.
</li>
@@ -554,19 +561,19 @@ android:supportsPictureInPicture=["true" | "false"]
<li>En modo de pantalla dividida, prueba mover la barra divisora para agrandar y
achicar la aplicación. Realiza estas operaciones en las configuraciones una al lado de la otra y
una encima de la otra. Comprueba que la aplicación no falle,
una encima de la otra. Verifica que la aplicación no falle,
que las funcionalidades necesarias estén visibles y que la operación de cambio de tamaño no demore
mucho.
</li>
<li>Realiza varias operaciones de cambio de tamaño en una sucesión rápida. Comprueba que tu
<li>Realiza varias operaciones de cambio de tamaño en una sucesión rápida. Verifica que tu
aplicación no falle ni pierda memoria. Para obtener información acerca de cómo comprobar el uso de memoria
de tu aplicación, consulta <a href="{@docRoot}tools/debugging/debugging-memory.html">
Averiguación del uso de RAM</a>.
</li>
<li>Usa tu aplicación normalmente en diferentes configuraciones de ventanas y
verifica que la aplicación se comporte correctamente. Comprueba que el texto sea legible y que
verifica que la aplicación se comporte correctamente. Verifica que el texto sea legible y que
los elementos de la IU sean lo suficientemente grandes para interactuar con ellos.
</li>
</ul>

View File

@@ -1,11 +1,12 @@
page.title=Idioma y configuración regional
page.tags=androidn
page.image=images/cards/card-nyc_2x.jpg
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento:</h2>
<h2>En este documento:</h2>
<ol>
<li><a href="#preN">Desafíos para la resolución de recursos de idioma</a></li>
<li><a href="#postN">Mejoras de la estrategia de resolución de recursos</a></li>
@@ -36,22 +37,26 @@ la cantidad expandida de configuraciones regionales para permitir acceso a más
<h2 id="preN">Desafíos para la resolución de recursos de idioma</h2>
<p>Antes de Android N, Android no siempre podía
hacer coincidir correctamente las configuraciones regionales de la aplicación y del sistema. Por ejemplo, supongamos que el idioma predeterminado
de tu aplicación es inglés de EE. UU., pero que también tiene cadenas en español localizadas en archivos de recursos {@code es_ES}.
</p>
<p>Cuando el código Java se refería a las cadenas, resolvía el idioma de las cadenas como
se muestra a continuación:</p>
<ul>
<li>Si un dispositivo estaba configurado en {@code es_MX} (español de México), Android cargaba
las cadenas de los archivos de recursos {@code es_ES}.</li>
<li>Si el dispositivo estaba configurado en {@code en_AU}, Android recurría a {@code
en_US}. El sistema también usaba {@code en_US} de forma predeterminada si el usuario elegía un
idioma que no era compatible con la aplicación, como el francés.</li>
</ul>
hacer coincidir correctamente las configuraciones regionales de la aplicación y del sistema.</p>
<p>Por ejemplo, imagina que tienes la siguiente situación:</p>
<ul>
<li>El idioma predeterminado de la aplicación es {@code en_US} (inglés de EE. UU.), y también tiene
cadenas en español localizadas en archivos de recursos {@code es_ES}
.</li>
<li> Se configura un dispositivo en {@code es_MX}. </li>
<p>Cuando el código Java hace referencia a cadenas, el sistema carga
las cadenas del archivo de recursos ({@code en_US}) predeterminado, incluso si la aplicación tiene
recursos en español localizados en {@code es_ES}. Esto se debe a que, cuando el sistema
no puede encontrar una coincidencia exacta, continúa buscando recursos y se quita el
código del país de la configuración regional. Finalmente, si no se encuentra una coincidencia, el sistema regresa
a la configuración predeterminada, que es {@code en_US}. </p>
<p>Estos problemas de resolución surgieron debido a que el sistema quitaba el código de país
de la configuración regional si no podía encontrar una coincidencia exacta. Por ejemplo:</p>
<p>El sistema también usaba {@code en_US} de forma predeterminada si el usuario elegía un idioma que
no era compatible con la aplicación, como el francés. Por ejemplo:</p>
<p class="table-caption" id="t-resource-res">
<strong>Tabla 1.</strong> Resolución de recursos sin una coincidencia de configuración regional exacta.
</p>
@@ -186,7 +191,7 @@ es compatible con el idioma francés.</p>
<h2 id="design">Diseño de la aplicación para permitir configuraciones regionales adicionales</h2>
<h3>API LocaleList</h3>
<p>Android N incorpora una nueva API, {@code LocaleList.GetDefault()},
<p>Android N incorpora una nueva API, {@code LocaleList.getDefault()},
que les permite a las aplicaciones consultar directamente la lista de idiomas que ha especificado el usuario. Esta API
te permite crear un comportamiento de la aplicación
más sofisticado y una presentación de contenido más optimizada. Por ejemplo, las búsquedas

View File

@@ -16,12 +16,13 @@ trainingnavtop=true
<li><a href="#direct">Respuesta directa</a></li>
<li><a href="#bundle">Notificaciones integradas</a></li>
<li><a href="#custom">Vistas personalizadas</a></li>
<li><a href="#style">Estilo de mensajería</a></li>
</ol>
</div>
</div>
<p>Android N incluye varias API nuevas que permiten a las aplicaciones publicar
<p>Android N presenta varias API nuevas que permiten a las aplicaciones publicar
notificaciones altamente visibles e interactivas.</p>
<p>Android N amplía la API de notificación existente {@link android.support.v4.app.RemoteInput}
@@ -50,10 +51,10 @@ plantillas estándar.</p>
<p>Con la función de respuesta directa en Android N, los usuarios pueden responder
rápidamente mensajes de texto o actualizar listas de tareas directamente dentro de la interfaz de
notificación. En un dispositivo portátil, la acción de respuesta en línea aparece como un botón adicional
anexado a la notificación. Cuando un usuario responde mediante un teclado, el sistema adjunta
la respuesta de texto a la intención
que especificaste para la acción de notificación y envía la intención a tu
aplicación para dispositivos portátiles.
anexado a la notificación. Cuando un usuario responde mediante el teclado, el sistema adjunta
la respuesta de texto a la intent
que especificaste para la acción de notificación y envía la intención a tu
aplicación para dispositivos portátiles.
<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
@@ -76,7 +77,7 @@ notificación. El constructor de esta clase acepta una cadena que el sistema usa
de la entrada.
<pre>
// Key for the string that's delivered in the action's intent
// Key for the string that's delivered in the action's intent.
private static final String KEY_TEXT_REPLY = "key_text_reply";
String replyLabel = getResources().getString(R.string.reply_label);
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
@@ -88,7 +89,7 @@ RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
a una acción usando <code>addRemoteInput()</code>.
<pre>
// Create the reply action and add the remote input
// Create the reply action and add the remote input.
Notification.Action action =
new Notification.Action.Builder(R.drawable.ic_reply_icon,
getString(R.string.label), replyPendingIntent)
@@ -100,8 +101,8 @@ Notification.Action action =
<li>Aplica la acción a una notificación y emite la notificación.
<pre>
// Build the notification and add the action
Notification notification =
// Build the notification and add the action.
Notification newMessageNotification =
new Notification.Builder(mContext)
.setSmallIcon(R.drawable.ic_message)
.setContentTitle(getString(R.string.title))
@@ -109,10 +110,10 @@ Notification notification =
.addAction(action))
.build();
// Issue the notification
// Issue the notification.
NotificationManager notificationManager =
NotificationManager.from(mContext);
notificationManager.notify(notificationId, notification);
notificationManager.notify(notificationId, newMessageNotification);
</pre>
</li>
@@ -129,30 +130,32 @@ el sistema le solicitará al usuario que ingrese una respuesta. </p>
<strong>Figura 2.</strong> El usuario ingresa texto desde el panel de notificaciones.
</p>
<h3>Recuperación de entradas del usuario de la respuesta directa</h3>
<h3>
Recuperación de entradas del usuario a partir de la respuesta en línea
</h3>
<p>
Para recibir entradas del usuario de la interfaz de notificación a la actividad que
declaraste en la intent de la acción de respuesta:
</p>
<p>Para recibir entradas del usuario de la interfaz de notificación a la actividad que
declaraste en la intención de la acción de respuesta:</p>
<ol>
<li> Llama a {@link android.support.v4.app.RemoteInput#getResultsFromIntent
getResultsFromIntent()} pasando la intención de la acción de notificación como
<li>Llama a {@link android.support.v4.app.RemoteInput#getResultsFromIntent
getResultsFromIntent()} pasando la intent de la acción de notificación como
el parámetro de entrada. Este método devuelve un {@link android.os.Bundle} que
contiene la respuesta de texto.
</li>
<pre>
<pre>
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
</pre>
</li>
<li>Consulta el paquete con la clave de resultado (proporcionada al constructor {@link
android.support.v4.app.RemoteInput.Builder}).
</li>
</ol>
<li>Consulta el paquete con la clave de resultado (proporcionada al constructor {@link
android.support.v4.app.RemoteInput.Builder}). Puedes completar
este proceso y recuperar el texto de entrada mediante la creación de un método, como en el
siguiente fragmento de código:
<p>El siguiente fragmento de código ilustra cómo un método recupera el texto de entrada
de un paquete:</p>
<pre>
<pre>
// Obtain the intent that started this activity by calling
// Activity.getIntent() and pass it into this method to
// get the associated string.
@@ -160,20 +163,53 @@ de un paquete:</p>
private CharSequence getMessageText(Intent intent) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
return null;
}
</pre>
</li>
<p>Las aplicaciones pueden aplicar lógica para decir qué medidas tomar con respecto al texto
recuperado.
Para las aplicaciones interactivas (como los chats), proporciona más contexto sobre la notificación
(por ejemplo, varias líneas de historial de chat, incluidos los mensajes del usuario)
de modo que el usuario pueda responder correctamente.
Cuando el usuario responda a través de {@link android.support.v4.app.RemoteInput},
incluye el texto del historial de respuestas con el método {@code setRemoteInputHistory()}
.</p>
<li>Crea y emite otra notificación, utilizando la misma ID de notificación que
proporcionaste para la notificación anterior. El indicador de progreso
desaparece de la interfaz de notificación para informarles a los usuarios que la respuesta
fue exitosa. Al trabajar con esta nueva notificación, usa el contexto que se
pasa al método {@code onReceive()} del receptor.
<pre>
// Build a new notification, which informs the user that the system
// handled their interaction with the previous notification.
Notification repliedNotification =
new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_message)
.setContentText(getString(R.string.replied))
.build();
// Issue the new notification.
NotificationManager notificationManager =
NotificationManager.from(context);
notificationManager.notify(notificationId, repliedNotification);
</pre>
</li>
</ol>
<p>
En el caso de las aplicaciones interactivas, como los chats, podría ser útil incluir
contexto adicional cuando se administra texto recuperado. Por ejemplo, en estas aplicaciones, se podrían mostrar
múltiples líneas de historial de chat. Cuando el usuario responde a través de {@link
android.support.v4.app.RemoteInput}, puedes actualizar el historial de respuestas
por medio del método {@code setRemoteInputHistory()}.
</p>
<p>
La notificación se debe actualizar o cancelar luego de que la aplicación haya
recibido entradas remotas. Cuando el usuario responde a una actualización remota
por medio de la respuesta directa,
no canceles la notificación. En cambio, actualiza la notificación para mostrar la respuesta del usuario.
En el caso de las notificaciones que utilizan {@code MessagingStyle}, debes agregar
la respuesta como el mensaje más reciente. Cuando se utilizan otras plantillas, puedes
agregar la respuesta del usuario al historial de entradas remotas.
</p>
<h2 id="bundle">Notificaciones integradas</h2>
@@ -200,7 +236,13 @@ Builder.setGroup()} para agrupar notificaciones similares.</p>
{@docRoot}preview/images/bundles_2x.png 2x" width="300">
<p class="img-caption">
<strong>Figura 3.</strong> El usuario puede expandir progresivamente el grupo de
notificaciones.
notificaciones.
</p>
<p class="note">
<strong>Nota:</strong> Si la misma aplicación envía cuatro o más notificaciones
y no se especifica un grupo, el
sistema las agrupa automáticamente.
</p>
<p>Para obtener información acerca de cómo agregar notificaciones a un grupo, consulta
@@ -318,7 +360,7 @@ el estilo de la vista personalizada que hayas elegido.</p>
{@code DecoratedCustomViewStyle()}.</p>
<pre>
Notification noti = new Notification.Builder()
Notification notification = new Notification.Builder()
.setSmallIcon(R.drawable.ic_stat_player)
.setLargeIcon(albumArtBitmap))
.setCustomContentView(contentView);
@@ -326,3 +368,26 @@ Notification noti = new Notification.Builder()
.build();
</pre>
<h2 id="style">Estilo de mensajería</h2>
<p>
Android N presenta una nueva API para personalizar el estilo de una notificación.
Por medio de la clase <code>MessageStyle</code>, puedes modificar varias de las
etiquetas que aparecen en la notificación, incluidos el título de la conversación,
mensajes adicionales y la vista de contenido para la notificación.
</p>
<p>
El siguiente fragmento de código demuestra cómo personalizar el estilo
de una notificación mediante la clase <code>MessageStyle</code>.
</p>
<pre>
Notification notification = new Notification.Builder()
.setStyle(new Notification.MessagingStyle("Me")
.setConversationTitle("Team lunch")
.addMessage("Hi", timestamp1, null) // Pass in null for user.
.addMessage("What's up?", timestamp2, "Coworker")
.addMessage("Not much", timestamp3, null)
.addMessage("How about lunch?", timestamp4, "Coworker"));
</pre>

View File

@@ -1,4 +1,4 @@
page.title=Picture-in-picture
page.title=Modo Picture-in-picture
page.keywords=preview,sdk,PIP,Picture-in-picture
page.tags=androidn
@@ -7,16 +7,18 @@ page.tags=androidn
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#declaring">Declarar que la actividad permite
el modo Picture-in-Picture</a></li>
<li><a href="#pip_button">Cambiar la actividad al modo picture-in-picture</a>
<li><a href="#pip_button">Cambiar la actividad al modo Picture-in-picture</a>
</li>
<li><a href="#handling_ui">Gestionar las IU durante el modo picture-in-picture</a>
<li><a href="#handling_ui">Gestionar las IU durante el modo Picture-in-picture</a>
</li>
<li><a href="#continuing_playback">Continuar la reproducción de video durante
el modo picture-in-picture</a></li>
el modo Picture-in-picture</a></li>
<li><a href="#single_playback">Usar una única actividad de reproducción para
el modo Picture-in-picture</a></li>
<li><a href="#best">Prácticas recomendadas</a></li>
</ol>
@@ -52,7 +54,7 @@ principal muestra una actividad de selección de contenido.</li>
<p>La ventana de PIP es de 240x135 dp y se muestra en la capa delantera en una de las
cuatro esquinas de la pantalla que el sistema elige. El usuario puede acceder a un menú de
PIP que le permite cambiar la ventana de PIP a pantalla completa o cerrarla
PIP que le permite activar o desactivar la ventana de PIP a pantalla completa o cerrarla
presionando el botón <b>Home</b> en el control remoto. Si se comienza a reproducir
otro video en la pantalla principal, la ventana de PIP se cierra
automáticamente. Los usuarios también pueden cerrar la ventana de PIP desde Recents.</p>
@@ -94,18 +96,18 @@ incluyen elementos de IU pequeños podrían no brindar una buena experiencia de
cuando se cambian al modo PIP, porque los usuarios no podrán ver los detalles de los elementos de IU
en la ventana PIP.</p>
<h2 id="pip_button">Cambiar la actividad al modo picture-in-picture</h2>
<h2 id="pip_button">Cambiar la actividad al modo Picture-in-picture</h2>
Cuando necesites cambiar la actividad al modo PIP, llama a
<code>Activity.enterPictureInPicture()</code>. El siguiente ejemplo cambia
al modo PIP cuando el usuario selecciona un botón PIP especial en una barra
<code>Activity.enterPictureInPictureMode()</code>. En el siguiente ejemplo, se
cambia al modo PIP cuando el usuario selecciona un botón PIP especial en una barra
de control de medios:</p>
<pre>
&#64;Override
public void onActionClicked(Action action) {
if (action.getId() == R.id.lb_control_picture_in_picture) {
getActivity().enterPictureInPicture();
getActivity().enterPictureInPictureMode();
return;
}
...
@@ -127,14 +129,14 @@ las acciones de PIP de la barra de control y usa el ícono PIP.</p>
<p>Cuando la actividad ingresa al modo PIP, esta solo debería mostrar la reproducción
de video. Debes quitar los elementos de IU antes de que la actividad ingrese al modo PIP
y volver a mostrarlos cuando la actividad vuelva al modo de pantalla completa.
Sobrescribe <code>Activity.onPictureInPictureChanged()</code> o
<code>Fragment.onPictureInPictureChanged()</code> y habilita
o deshabilita los elementos de IU según sea necesario, por ejemplo:</p>
Anula <code>Activity.onPictureInPictureModeChanged()</code> o
<code>Fragment.onPictureInPictureModeChanged()</code> y habilita
o inhabilita los elementos de IU según sea necesario, por ejemplo:</p>
<pre>
&#64;Override
public void onPictureInPictureChanged(boolean inPictureInPicture) {
if (inPictureInPicture) {
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
if (isInPictureInPictureMode) {
// Hide the controls in picture-in-picture mode.
...
} else {
@@ -145,7 +147,7 @@ public void onPictureInPictureChanged(boolean inPictureInPicture) {
</pre>
<h2 id="continuing_playback">Continuar la reproducción de video durante
el modo picture-in-picture</h2>
el modo Picture-in-picture</h2>
<p>Cuando la actividad cambia al modo PIP, el sistema considera que se encuentra en
pausa y llama al método <code>onPause()</code> de la actividad. La reproducción
@@ -157,8 +159,8 @@ ejemplo:</p>
<pre>
&#64;Override
public void onPause() {
// If called due to PIP, do not pause playback
if (inPictureInPicture()) {
// If called while in PIP mode, do not pause playback
if (isInPictureInPictureMode()) {
// Continue playback
...
}
@@ -170,6 +172,31 @@ public void onPause() {
<p>Cuando la actividad sale del modo PIP y vuelve al modo de pantalla completa, el
sistema reinicia la actividad y llama al método <code>onResume()</code>.</p>
<h2 id="single_playback">Usar una única actividad de reproducción para
el modo Picture-in-picture</h2>
<p>En tu aplicación, un usuario puede seleccionar un nuevo video cuando busca contenido en la
pantalla principal, mientras una actividad de reproducción de video está en modo PIP. Reproduce el nuevo
video en la actividad de reproducción actual en modo de pantalla completa, en lugar de
iniciar una nueva actividad que podría confundir al usuario.</p>
<p>A fin de garantizar que se utilice una única actividad para las solicitudes de reproducción de video y que esta
ingrese en el modo PIP o salga de este cuando sea necesario, configura el
<code>android:launchMode</code> de la actividad en <code>singleTask</code>, en el manifiesto:
</p>
<pre>
&lt;activity android:name="VideoActivity"
...
android:supportsPictureInPicture="true"
android:launchMode="singleTask"
...
</pre>
<p>En tu actividad, anula {@link android.app.Activity#onNewIntent
Activity.onNewIntent()} y administra el nuevo video, deteniendo cualquier reproducción
de video actual si es necesario.</p>
<h2 id="best">Prácticas recomendadas</h2>
<p>El modo PIP está diseñado para actividades que reproducen un video en pantalla completa. Cuando cambies la

View File

@@ -6,7 +6,7 @@ page.tags=androidn
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#accessing">Acceder a un directorio de almacenamiento externo</a></li>
<li><a href="#removable">Acceder a un directorio de un medio extraíble</a></li>
@@ -38,12 +38,26 @@ directorio externo.</li>
<h2 id="accessing">Acceder a un directorio de almacenamiento externo</h2>
<p>Usa la clase <code>StorageManager</code> para obtener la instancia de
<code>StorageVolume</code> correcta. Luego, crea una intención llamando al
<code>StorageVolume</code> correcta. Luego, crea una intent llamando al
método <code>StorageVolume.createAccessIntent()</code> de esa instancia.
Usa esta intención para acceder a directorios de almacenamiento externo. Para obtener una lista de
todos los volúmenes disponibles, incluidos los volúmenes de medios extraíbles, usa
<code>StorageManager.getVolumesList()</code>.</p>
<p>Si tienes información sobre un archivo específico, usa
<code>StorageManager.getStorageVolume(File)</code> para obtener el
<code>StorageVolume</code> que contiene el archivo. Llama a
<code>createAccessIntent()</code> en este <code>StorageVolume</code> para acceder al
directorio de almacenamiento externo del archivo.</p>
<p>
En el caso de los volúmenes secundarios, como las tarjetas SD externas, pasa un valor nulo cuando llames a
<code>StorageVolume.createAccessIntent()</code> para solicitar acceso al volumen
completo, en lugar de un directorio específico.
<code>StorageVolume.createAccessIntent()</code> regresa un valor nulo si pasas un
valor nulo para el volumen principal o si pasas un nombre de directorio no válido.
</p>
<p>El siguiente fragmento de código es un ejemplo de cómo abrir el
directorio <code>Pictures</code> en el almacenamiento compartido principal:</p>
@@ -63,18 +77,18 @@ es necesario, confirma el acceso con el usuario usando una IU simplificada:</p>
acceso al directorio Pictures.</p>
<p>Si el usuario otorga el acceso, el sistema llama a tu
invalidación de <code>onActivityResult()</code> con un código resultante de
<code>Activity.RESULT_OK</code> y datos de intención que contienen el URI. Usa
anulación de <code>onActivityResult()</code> con un código resultante de
<code>Activity.RESULT_OK</code> y datos de intents que contienen el URI. Usa
el URI brindado para acceder a la información del directorio. Es similar a usar URI
generados por el
<a href="{@docRoot}guide/topics/providers/document-provider.html">framework
de acceso al almacenamiento</a>.</p>
<p>Si el usuario no otorga el acceso, el sistema llama a tu
invalidación de <code>onActivityResult()</code> con un código resultante de
<code>Activity.RESULT_CANCELED</code> y datos de intención nulos.</p>
anulación de <code>onActivityResult()</code> con un código resultante de
<code>Activity.RESULT_CANCELED</code> y datos de intents nulos.</p>
<p class="note"><b>Nota</b>: obtener acceso a un directorio externo específico
<p class="note"><b>Nota</b>: Obtener acceso a un directorio externo específico
también otorga el acceso a los subdirectorios de ese directorio.</p>
<h2 id="removable">Acceder a un directorio de un medio extraíble</h2>
@@ -97,7 +111,7 @@ notificación{@link android.os.Environment#MEDIA_MOUNTED}, por ejemplo:</p>
<p>Cuando el usuario conecta un medio extraíble, como una tarjeta SD, el sistema envía una
notificación{@link android.os.Environment#MEDIA_MOUNTED}. Esta notificación
brinda un objeto <code>StorageVolume</code> en los datos de intención que puedes
brinda un objeto <code>StorageVolume</code> en los datos de intents que puedes
usar para acceder a directorios del medio extraíble. El siguiente ejemplo
accede al directorio <code>Pictures</code> de medios extraíbles:</p>
@@ -121,4 +135,14 @@ usuario.</p>
<p>Si el usuario deniega el acceso a un directorio externo, no vuelvas a solicitar el
acceso inmediatamente. Hacer esto provocaría una mala experiencia
de usuario.</p>
de usuario. Si el usuario deniega una solicitud y la aplicación solicita acceso
nuevamente, aparece la casilla de verificación <b>Don't ask again</b> en la IU:</p>
<img src="{@docRoot}preview/images/scoped-folder-access-dont-ask.png" srcset="{@docRoot}preview/images/scoped-folder-access-dont-ask.png 1x,
{@docRoot}preview/images/scoped-folder-access-dont-ask_2x.png 2x" />
<p class="img-caption"><strong>Figura 1.</strong> Una aplicación que presenta una
segunda solicitud para obtener acceso a medios extraíbles.</p>
<p>Si el usuario selecciona <b>Don't ask again</b> y deniega la solicitud, todas las
solicitudes futuras que presente la aplicación para el directorio determinado se denegarán
automáticamente, y el usuario no recibirá ninguna IU de solicitud.</p>

View File

@@ -1,5 +1,5 @@
page.title=Configuración de seguridad de la red
page.keywords=preview,security,network
page.keywords=androidn,security,network
page.image=images/cards/card-nyc_2x.jpg
@jd:body
@@ -7,7 +7,7 @@ page.image=images/cards/card-nyc_2x.jpg
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#manifest">Agregar un archivo de configuración de seguridad</a></li>
<li><a href="#CustomTrust">Personalizar las CA de confianza</a>
@@ -71,12 +71,13 @@ page.image=images/cards/card-nyc_2x.jpg
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
...
&lt;app ...&gt;
&lt;manifest ... &gt;
&lt;application ... &gt;
&lt;meta-data android:name="android.security.net.config"
android:resource="@xml/network_security_config" /&gt;
...
&lt;/app&gt;
&lt;/application&gt;
&lt;/manifest&gt;
</pre>
<h2 id="CustomTrust">Personalizar las CA de confianza</h2>
@@ -109,7 +110,7 @@ page.image=images/cards/card-nyc_2x.jpg
</p>
<h3 id="ConfigCustom">Configurar una CA personalizada</h3>
<h3 id="ConfigCustom">Configurar una CA de confianza personalizada</h3>
<p>
Supongamos que deseas conectarte a tu host, el cual usa un certificado SSL
@@ -213,7 +214,7 @@ page.image=images/cards/card-nyc_2x.jpg
solo <i>son</i> de confianza cuando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
android:debuggable</a>
es {@code true} usando {@code debug-overrides}. Generalmente, las herramientas de IDE
y de compilación configuran esta marca automáticamente para las versiones que no son de lanzamiento.
y de compilación configuran esta marca automáticamente para las compilaciones que no son de lanzamiento.
</p>
<p>
@@ -242,7 +243,7 @@ android:debuggable</a>
<p>
Las aplicaciones que deseen conectarse a destinos usando solo conexiones
seguras pueden desactivar Cleartext (usando el protocolo
HTTP no cifrado en lugar del protocolo HTTPS) para esos destinos. Esta opción ayuda a prevenir
HTTP no encriptado en lugar del protocolo HTTPS) para esos destinos. Esta opción ayuda a prevenir
las regresiones accidentales en aplicaciones debido a cambios en direcciones URL generados por fuentes
externas como servidores backend.
Consulta {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
@@ -310,6 +311,7 @@ secure.example.com} se hagan siempre mediante HTTPS para proteger el tráfico se
&lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
&lt;!-- backup pin --&gt
&lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
&lt;/pin-set&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
@@ -543,7 +545,7 @@ La configuración predeterminada para aplicaciones con API nivel 23 o inferior e
<dl class="xml">
<dt>
SINTAXIS:
sintaxis:
</dt>
<dd>
@@ -568,7 +570,7 @@ La configuración predeterminada para aplicaciones con API nivel 23 o inferior e
<dd>
Sobrescrituras que se deben aplicar cuando <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
es {@code "true"}, que es, generalmente, el caso de las versiones que no sean de lanzamiento
es {@code "true"}, que es, generalmente, el caso de las compilaciones que no sean de lanzamiento
generadas por herramientas de IDE y de compilación. Los anclajes de confianza especificados en {@code
debug-overrides} se agregan a todas las demás configuraciones, y la fijación
de certificados no se lleva a cabo cuando la cadena de certificados del servidor usa uno de estos
@@ -704,9 +706,9 @@ La fuente de los certificados de CA puede ser una de las siguientes opciones:
expiran las fijaciones, lo cual deshabilita la fijación. Si el atributo no está establecido, las fijaciones
no expiran.
<p>
La expiración ayuda a evitar problemas de conectividad en aplicaciones
que no reciben actualizaciones para el conjunto de fijaciones, por ejemplo,
porque el usuario deshabilitó las actualizaciones de la aplicación.
La expiración ayuda a evitar problemas de conectividad en aplicaciones que no
reciben actualizaciones para el conjunto de fijaciones, por ejemplo, porque el usuario
deshabilitó las actualizaciones de la aplicación.
</p>
</dd>
</dl>
@@ -716,7 +718,7 @@ porque el usuario deshabilitó las actualizaciones de la aplicación.
<h3 id="pin">&lt;pin&gt;</h3>
<dl class="xml">
<dt>
SINTAXIS:
sintaxis:
</dt>
<dd>

View File

@@ -7,7 +7,7 @@ page.image=images/cards/card-nyc_2x.jpg
<div id="qv-wrapper">
<div id="qv">
<h2>Contenido del documento</h2>
<h2>En este documento</h2>
<ol>
<li><a href="#supporting">Indicar la compatibilidad para la grabación</a></li>
<li><a href="#recording">Grabar una sesión</a></li>
@@ -18,7 +18,7 @@ page.image=images/cards/card-nyc_2x.jpg
</div>
</div>
<p>Los servicios de entrada de TV le permiten al usuario pausar y reiniciar la reproducción de canales
<p>Los servicios de entrada de TV le permiten al usuario pausar y reanudar la reproducción de canales
mediante API de time-shifting. Android N expande la función de time-shifting
permitiéndoles a los usuarios guardar múltiples sesiones grabadas.</p>
@@ -31,20 +31,41 @@ debes indicarle al sistema que tu aplicación permite la grabación, implementar
la habilidad para grabar programas, gestionar y comunicar los errores que ocurren
durante la grabación y gestionar las sesiones grabadas.</p>
<p class="note"><strong>Nota:</strong> La aplicación Live Channels todavía no
permite que los usuarios creen grabaciones ni accedan a estas. Hasta que se realicen
cambios en la aplicación Live Channels, es posible que sea difícil probar completamente la
experiencia de grabación para tu servicio de entrada de TV.</p>
<h2 id="supporting">Indicar la compatibilidad para la grabación</h2>
<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, debes seguir
estos pasos:</p>
<p>Para comunicarle al sistema que tu servicio de entrada de TV permite la grabación, configura el
atributo <code>android:canRecord</code> de tu archivo XML de metadatos de servicio
en <code>true</code>:
</p>
<pre>
&lt;tv-input xmlns:android="http://schemas.android.com/apk/res/android"
<b>android:canRecord="true"</b>
android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
</pre>
<p>Para obtener más información sobre el archivo de metadatos de servicio, consulta
<a href="{@docRoot}training/tv/tif/tvinput.html#manifest">Declarar el servicio de entrada
de TV en el manifiesto</a>.
</p>
<p>De forma alternativa, puedes indicar la compatibilidad para la grabación en tu código; para ello, sigue
estos pasos:</p>
<ol>
<li>En el método <code>TvInputService.onCreate()</code>, crea un nuevo
objeto <code>TvInputInfo</code> usando la clase <code>TvInputInfo.Builder</code>.
</li>
<li>Cuando creer el nuevo objeto <code>TvInputInfo</code>, llama a
<li>Cuando crees el nuevo objeto <code>TvInputInfo</code>, llama a
<code>setCanRecord(true)</code> antes de llamar a <code>build()</code> para
indicar que tu servicio permite la grabación.</li>
<li>Registra tu objeto <code>TvInputInfo</code> con el sistema llamando a
<code>TvInputService.updateTvInputInfo()</code>.</li>
<code>TvInputManager.updateTvInputInfo()</code>.</li>
</ol>
<h2 id="recording">Grabar una sesión</h2>
@@ -100,7 +121,7 @@ use la sesión parcial.</p>
las aplicaciones de canal con funcionalidad de grabación en la tabla de proveedor de contenido <code>TvContract.RecordedPrograms</code>
. Esta información se accede mediante el URI de contenido
<code>RecordedPrograms.Uri</code>. Usa API de proveedor de contenido para
leer, agregar y eliminar entradas de esta tabla.</p>
leer, agregar y borrar entradas de esta tabla.</p>
<p>Para obtener más información sobre cómo trabajar con datos del proveedor de contenido, consulta
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">

View File

@@ -0,0 +1,190 @@
page.title=Guía de prueba
page.image=images/cards/card-n-guide_2x.png
meta.tags="preview", "testing"
page.tags="preview", "developer preview"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>En este documento</h2>
<ol>
<li><a href="#runtime-permissions">Prueba de los permisos</a></li>
<li><a href="#doze-standby">Prueba de los modos Descanso 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 N te brinda la oportunidad de garantizar que tus 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 tu 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 tu aplicación con la versión preliminar, te debes 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 tu aplicación. Debes priorizar la prueba de estas características específicas preliminares, puesto que podrían tener un alto impacto en el comportamiento de tu aplicación:
</p>
<ul>
<li><a href="#runtime-permissions">Permisos</a>
</li>
<li><a href="#doze-standby">Modos Descanso 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, consulta la sección <a href="{@docRoot}preview/setup-sdk.html">Configurar el SDK de Android N</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 tu aplicación.
En lugar de conceder todos los permisos durante el procedimiento de instalación, tu 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 tu aplicación y puede hacer que algunas características de tu 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 debes comenzar a planificar ahora la migración de tu aplicación al nuevo modelo de permisos, con el objetivo de publicar una versión actualizada de tu aplicación cuando se lance la plataforma oficial.
</p>
<h3 id="permission-test-tips">Tips para pruebas</h3>
<p>
Usa los siguientes tips para pruebas como ayuda para planificar y ejecutar las pruebas de tu aplicación con el nuevo comportamiento de permisos.
</p>
<ul>
<li>Identifica los permisos actuales de tu aplicación y las rutas de códigos relacionadas.</li>
<li>Prueba los flujos del usuario en los datos y servicios protegidos por permisos.</li>
<li>Realiza pruebas con varias combinaciones de permisos concedidos/revocados.</li>
<li>Usa la herramienta {@code adb} para administrar permisos desde la línea de comando:
<ul>
<li>Enumera los permisos y estados por grupo:
<pre>adb shell pm list permissions -d -g</pre>
</li>
<li>Concede o revoca un permiso o más permisos utilizando la siguiente sintaxis:<br>
<pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
</li>
</ul>
</li>
<li>Analiza tu 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 tu aplicación, además de la experiencia del usuario y los flujos que proporcionas a los usuarios.
Debes evaluar el uso de los permisos actuales de tu aplicación y comenzar a planificar los nuevos flujos que deseas ofrecer.
La versión oficial de la plataforma proporciona un comportamiento de compatibilidad, pero debes prever la actualización de tu aplicación y no depender de estos comportamientos.
</p>
<p>
Identifica los permisos que tu aplicación verdaderamente necesita y utiliza, y luego busca las diversas rutas de códigos que utilizan los servicios protegidos por permisos.
Puedes realizar esto mediante una combinación de pruebas en la plataforma nueva y análisis de códigos.
Al realizar las pruebas, debes centrarte 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, consulta la sección <a href="{@docRoot}preview/setup-sdk.html#">Configurar el SDK de Android N</a>.
</p>
<p>
Realiza 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, debes 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, consulta 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 Descanso y App Standby</h2>
<p>
Las características de ahorro de energía de los modos Descanso y App Standby limitan la cantidad de procesamiento en segundo plano que puede realizar tu aplicación cuando un dispositivo se encuentra en estado inactivo o mientras tu 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 tu aplicación tenga un comportamiento correcto con estas optimizaciones de ahorro de energía, debes probar tu aplicación simulando estos estados de bajo consumo.
</p>
<h4 id="doze">Cómo probar la aplicación en modo Descanso</h4>
<p>Para probar el modo Descanso con tu aplicación, realiza lo siguiente:</p>
<ol>
<li>Configura un dispositivo de hardware o un dispositivo virtual con una imagen del sistema Android N.</li>
<li>Conecta el dispositivo a tu equipo de desarrollo e instala tu aplicación.</li>
<li>Ejecuta tu aplicación y déjala activa.</li>
<li>Simula la activación del modo Descanso 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>Observa el comportamiento de tu aplicación cuando se reactive el dispositivo. Asegúrate de que se recupere correctamente cuando el dispositivo salga del modo Descanso.
</li>
</ol>
<h4 id="standby">Cómo probar aplicaciones en modo App Standby</h4>
<p>Para probar el modo App Standby con tu aplicación, realiza lo siguiente:</p>
<ol>
<li>Configura un dispositivo de hardware o un dispositivo virtual con una imagen del sistema Android N.</li>
<li>Conecta el dispositivo a tu equipo de desarrollo e instala tu aplicación.</li>
<li>Ejecuta tu aplicación y déjala activa.</li>
<li>Simula 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 &lt;packageName&gt; true
</pre>
</li>
<li>Simula la activación de tu aplicación con el siguiente comando:
<pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
</li>
<li>Observa el comportamiento de tu aplicación al reactivarse. Asegúrate de que se recupere correctamente del modo App Standby.
En particular, debes comprobar si los trabajos en segundo plano y las notificaciones de tu 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 tu 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úrate 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

View File

@@ -1,6 +1,6 @@
page.title=Android N Developer Preview
page.tags="preview","developer"
meta.tags=“preview”, “android”
meta.tags="preview", "android"
fullpage=true
forcelocalnav=true
header.hide=1
@@ -25,10 +25,10 @@ footer.hide=1
<h1 class="dac-hero-title">Android N Developer Preview</h1>
<p class="dac-hero-description">
¡Prepárate para Android N!
<strong>Prueba tus aplicaciones</strong> en Nexus y en otros dispositivos. Admite comportamientos del sistema nuevo
para <strong>ahorrar energía y memoria</strong>.
<strong>Prueba tus aplicaciones</strong> en Nexus y en otros dispositivos. Admite comportamientos del sistema
nuevo para <strong>ahorrar energía y memoria</strong>.
Amplía la funcionalidad de tus aplicaciones gracias a una <strong>IU con ventanas múltiples</strong>,
<strong>notificaciones de respuestas directas</strong> y más.
<strong>notificaciones de respuestas directas</strong> y más.
</p>
<a class="dac-hero-cta" href="{@docRoot}preview/overview.html">
@@ -102,7 +102,18 @@ footer.hide=1
</div><!-- end .wrap -->
</div>
<section class="dac-section dac-light"><div class="wrap">
<section class="dac-section dac-light dac-small" id="latest"><div class="wrap">
<h2 class="norule">Lo último</h2>
<div class="resource-widget resource-flow-layout col-16"
data-query="type:blog+tag:androidn+tag:featured, type:youtube+tag:androidn+tag:featured"
data-sortOrder="-timestamp"
data-cardSizes="6x6"
data-items-per-page="6"
data-maxResults="15"
data-initial-results="3"></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 ayudarte a preparar tus aplicaciones para Android N.

View File

@@ -15,26 +15,26 @@ page.keywords="android N", "Java 8", "Jack"
</div>
</div>
<p>En Android N se ofrece compatibilidad con funciones del idioma Java 8
que puedes usar al desarrollar aplicaciones orientadas a Android N.
<p>En Android N se ofrece compatibilidad con funciones
del idioma Java 8 que puedes usar al desarrollar aplicaciones orientadas a Android N.
En esta página se describen las funciones de idioma compatibles con la Android N
Preview, también la manera adecuada de configurar tu proyecto para usarlas y muchos problemas
conocidos que puedes experimentar.
</p>
<p>Para comenzar a usar estas funciones, debes descargar y configurar Android
Studio 2.1 (muestra) y el Android N Preview SDK, en el que se incluyen el conjunto de herramientas
Jack y el complemento de Android para Gradle. Si aún no instalaste
el Android N Preview SDK, consulta <a href="{@docRoot}preview/setup-sdk.html">Configuración para desarrollar con Android N</a>.</p>
Studio 2.1 y el Android N Preview SDK, en el que se incluyen el conjunto de herramientas
Jack y el complemento de Android para Gradle. Si aún no
instalaste el Android N Preview SDK, consulta <a href="{@docRoot}preview/setup-sdk.html">Configuración para desarrollar con Android N</a>.</p>
<p class="note">
<strong>Nota:</strong> No es obligatorio usar las nuevas funciones del lenguaje Java 8
para desarrollar aplicaciones orientadas a la plataforma de Android N. Si no
deseas escribir código con funciones del lenguaje Java 8, puedes mantener los valores de compatibilidad
de origen y destino de tu proyecto en Java 7, pero
debes usar JDK 8 para crear la compilación en función de la plataforma de Android N.
para desarrollar aplicaciones orientadas a la plataforma de Android N. Si
no deseas escribir código con funciones del lenguaje Java 8, puedes mantener los
valores de compatibilidad de origen y destino de tu proyecto en Java 7, pero debes
usar JDK 8 para crear la compilación en función de la plataforma de Android N.
</p>
<h2 id="supported-features">
@@ -55,60 +55,72 @@ el Android N Preview SDK, consulta <a href="{@docRoot}preview/setup-sdk.html">Co
<li>
<a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html">
expresiones Lambda;</a>
expresiones Lambda</a> (también disponible en API nivel 23 e inferiores);
</li>
<li>
<a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">anotaciones
reiterables.</a>
reiterables;</a>
</li>
<li>
<a class="external-link" href="https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html">
referencias de métodos</a> (también disponible en API nivel 23 e inferiores).
</li>
</ul>
<p class="note">
<strong>Nota:</strong> Para probar expresiones Lambda y métodos de referencia en
versiones anteriores de Android, accede al archivo {@code build.gradle}
y fija {@code compileSdkVersion} y {@code targetSdkVersion} en 23 o
un valor inferior. Tendrás que <a href="#configuration">habilitar la cadena de herramientas
Jack</a> para usar estas funciones de Java 8.
</p>
<p>
A su vez, las siguientes API de funciones del lenguaje Java 8 ahora se encuentran disponibles:
</p>
<ul>
<li>Las API de Reflection y las relacionadas con el lenguaje:
</li>
<li style="list-style: none; display: inline">
<li>Las API Reflection y las relacionadas con el lenguaje:
<ul>
<li>{@code java.lang.FunctionalInterface}
<li>
<a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html">
{@code java.lang.FunctionalInterface}</a>
</li>
<li>{@code java.lang.annotation.Repeatable}
<li>
<a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Repeatable.html">
{@code java.lang.annotation.Repeatable}</a>
</li>
<li>{@code java.lang.reflect.Method.isDefault()}
<li>
<a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isDefault--">
{@code java.lang.reflect.Method.isDefault()}</a>
</li>
<li>También API Reflection asociadas con anotaciones reiterables, como
{@code AnnotatedElement.getAnnotationsByType(Class)}:
<li>También las API Reflection asociadas con anotaciones reiterables, como
<a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/AnnotatedElement.html#getAnnotationsByType-java.lang.Class-">
{@code AnnotatedElement.getAnnotationsByType(Class)}</a>
</li>
</ul>
</li>
<li>API de utilidades:
</li>
<li style="list-style: none; display: inline">
<li>API de utilidades:
<ul>
<li>{@code java.util.function}
<li>
<a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html">
{@code java.util.function}</a>
</li>
<li>
<a class="external-link" href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html">
{@code java.util.stream}</a>
</li>
</ul>
</li>
</ul>
<p class="note">
<strong>Nota:</strong> la implementación de expresiones Lambda
de Android N se basa en clases anónimas. Este enfoque permite que
tengan compatibilidad con versiones anteriores y puedan ejecutarse en versiones anteriores de Android. Para probar
expresiones Lambda en versiones anteriores, recuerda acceder a tu archivo {@code
build.gradle} y fijar {@code compileSdkVersion} y {@code
targetSdkVersion} en 23 o un valor inferior.
</p>
<h2 id="configuration">
Habilitar funciones de Java 8 y del conjunto de herramientas Jack
</h2>
@@ -118,18 +130,18 @@ el Android N Preview SDK, consulta <a href="{@docRoot}preview/setup-sdk.html">Co
nueva <a class="external-link" href="https://source.android.com/source/jack.html">conjunto de herramientas Jack</a>. Este nueva
conjunto de herramientas de Android permite compilar fuentes del lenguaje Java en código de bytes dex legible a través de
Android, también tiene su propio formato de biblioteca {@code .jack} y proporciona la mayoría de las funciones de conjunto de
herramientas como parte de una única herramienta: reempaquetado, reducción, alteración y
MultiDex.
herramientas como parte de una única herramienta: reempaquetado, reducción, alteración y
MultiDex.
</p>
<p>A continuación, se muestra una comparación de los conjuntos de herramientas empleadas para generar archivos DEX de Android:</p>
<p>A continuación, se muestra una comparación de los conjuntos de herramientas empleados para generar archivos DEX de Android:</p>
<ul>
<li>Conjunto de herramientas javac heredada:<br>
<b>javac</b> ({@code .java} --&gt; {@code .class}) --&gt; <b>dx</b> ({@code
.class} --&gt; {@code .dex})
</li>
<li>Nueva conjunto de herramientas Jack:<br>
<li>Nueva cadena de herramientas Jack:<br>
<b>Jack</b> ({@code .java} --&gt; {@code .jack} --&gt; {@code .dex})
</li>
</ul>
@@ -140,7 +152,7 @@ el Android N Preview SDK, consulta <a href="{@docRoot}preview/setup-sdk.html">Co
<p>
Si deseas habilitar las funciones del lenguaje Java 8 y de Jack para tu proyecto, escribe lo
siguiente en tu archivo específico de módulo {@code build.gradle}:
siguiente en tu archivo de nivel de módulo {@code build.gradle}:
</p>
<pre>
@@ -159,13 +171,14 @@ android {
}
</pre>
<h3>
<h3 id="known-issues">
Problemas conocidos
</h3>
<p>
Instant Run, presentado en Android Studio 2.0 (beta), actualmente no funciona
con Jack y permanecerá deshabilitado cuando se use el nuevo conjunto de herramientas.
Actualmente, <a href="{@docRoot}tools/building/building-studio.html#instant-run">Instant
Run</a> no funciona con Jack y permanecerá deshabilitado cuando se use
el nuevo conjunto de herramientas.
</p>
<p>Debido a que Jack no genera archivos de clase intermedia al compilar una
@@ -173,11 +186,12 @@ aplicación, las herramientas que dependen de estos archivos actualmente no func
ejemplos de estas herramientas:</p>
<ul>
<li>detectores Lint que funcionan en archivos de clases;
<li>Detectores Lint que funcionan en archivos de clases;
</li>
<li>Herramientas y bibliotecas que requieren los archivos de clase de la aplicación (como JaCoCo
y Mockito).</li>
<li>Herramientas y bibliotecas que requieren los archivos de clase de la aplicación (como
pruebas de instrumentación con JaCoCo).
</li>
</ul>
<p>Si experimentas otros problemas al usar Jack, <a href="http://tools.android.com/filing-bugs">informa los errores</a>.</p>
<p>Si experimentas otros problemas al usar Jack, <a href="http://tools.android.com/filing-bugs">envía un error</a>.</p>

View File

@@ -0,0 +1,145 @@
page.title=Contrato de licencia
@jd:body
<p>
Para comenzar a usar la Android SDK Preview, 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 Android SDK, que está sujeta a cambios y que usted utiliza bajo su cuenta y riesgo. La Android SDK Preview 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 Android SDK Preview (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 Android SDK Preview (denominada “Preview” en el Contrato de licencia y que incluye específicamente los archivos de sistema de Android, las API agrupadas y los archivos de biblioteca de la Preview, 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 realice de la Preview.
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 “Compatible con Android” se refiere a cualquier implementación de Android que (i) cumpla con el documento Definición de compatibilidad de Android, disponible en el sitio web de compatibilidad de Android (http://source.android.com/compatibility) y que puede actualizarse esporádicamente; y (ii) apruebe satisfactoriamente la prueba de Compatibilidad con Android, "CTS” (en inglés, Android Compatibility Test Suite).
1.4 “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 Preview, primero debe aceptar el Contrato de licencia. Si no acepta el Contrato de licencia, no podrá utilizar la Preview.
2.2 Al hacer clic para aceptar o utilizar la Preview, por medio del presente, usted acepta los términos del Contrato de licencia.
2.3 No puede utilizar la Preview ni aceptar el Contrato de licencia si tiene prohibido recibir la Preview 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 Preview.
2.4 Si utilizará la Preview de forma interna, dentro de su empresa 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 usted no posee la autoridad requerida, no podrá aceptar el Contrato de licencia ni utilizar la Preview en representación de su empleador u otra entidad.
3. Licencia de la Preview de Google
3.1 Conforme a los términos de este contrato de licencia, Google le otorga una licencia limitada, con validez mundial, libre de regalías, no asignable, no exclusiva y sin la posibilidad de otorgar una sublicencia, para utilizar la Preview con el único propósito de desarrollar aplicaciones para ejecutar en implementaciones compatibles de Android.
3.2 No puede utilizar esta Preview para desarrollar aplicaciones para otras plataformas (entre las que se incluyen implementaciones incompatibles de Android) o para desarrollar otro SDK. Desde luego, usted tiene la libertad para desarrollar aplicaciones para otras plataformas, entre las que se incluyen implementaciones incompatibles de Android, siempre y cuando esta Preview no se utilice con ese propósito.
3.3 Usted acepta que Google o terceros poseen todos los derechos legales, títulos e intereses en relación con la Preview, incluidos derechos de propiedad intelectual que existan en esta. "Derechos de propiedad intelectual" hace referencia a todos los derechos de la ley de patentes, la ley de derechos de autor, la ley de secreto comercial, la ley de marca comercial y cualquier otro derecho de propiedad. Google se reserva todos los derechos que no se le otorguen expresamente.
3.4 Usted no podrá utilizar la Preview 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 Preview ni de ninguna de sus partes; ni (b) cargar ninguna parte de la Preview 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 Preview con otro software, ni distribuir algún software o dispositivo que incorpore alguna parte de la Preview.
3.5 El uso, la reproducción y la distribución de los componentes de la Preview 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 regla con respecto a dichas licencias de software de código abierto en virtud de todos los derechos otorgados y acepta abstenerte de realizar acción alguna que pudiera poner fin, suspender o violar dichos derechos.
3.6 Acepta que la forma y la naturaleza de la Preview que proporciona Google pueden cambiar sin tener que brindarle aviso previo, y que las versiones futuras de la Preview pueden ser incompatibles con las aplicaciones desarrolladas en versiones anteriores de la Preview. Usted acepta que Google, generalmente a su entera discreción, puede dejar de proporcionarle a usted o a los demás usuarios (de forma permanente o temporal) la Preview (o cualquiera de sus funciones) sin previo aviso.
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 quitará, ocultará o alterará ninguna de las notificaciones de derechos de autor (entre las que se incluyen las notificaciones de copyright y marcas comercias) que pudieran estar anexadas o implícitas en la Preview.
4. Uso que usted realiza de la Preview
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 Preview, lo que incluye los derechos de propiedad intelectual que conlleven esas aplicaciones.
4.2 Usted acepta utilizar la Preview 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 y pertinentes en las jurisdicciones relevantes (entre las que se incluyen 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 Preview 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 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 Preview, usted reconoce que la implementación de algunas características aún se encuentra en desarrollo y que no debe confiar en que la Preview contará con todas las funcionalidades de una versión estable. Usted acepta no distribuir públicamente ni enviar ninguna aplicación que utilice esta Preview, dado que esta Preview ya no se admitirá tras el lanzamiento del Android SDK oficial.
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 pudiera escoger usted mismo, 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 Con el objetivo de poder innovar y mejorar de forma continua la Preview, Google podría recopilar ciertas estadísticas de uso del software, entre las que se incluyen, de forma enunciativa, 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 Preview que se estén utilizando y la manera en que se estén utilizando. Antes de que se recopile esta información, la Preview 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 Preview 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 Preview 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 el permiso específico 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 con base 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 cualquier 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 cuando, y para 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 Preview y de las credenciales de desarrollador pertinentes.
9.3 Google puede, en cualquier momento, rescindir el Contrato de licencia, con causa o sin ella, luego de notificárselo.
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 Preview 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 Android SDK.
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 Preview, 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 PREVIEW ES BAJO SU PROPIO RIESGO Y QUE LA PREVIEW 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 PREVIEW Y DE TODO MATERIAL DESCARGADO U OBTENIDO DE ALGUNA OTRA MANERA MEDIANTE EL USO DE LA PREVIEW 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>

View File

@@ -1,7 +1,7 @@
page.title=Información general del programa
page.metaDescription=Prepara tus aplicaciones para la próxima versión de Android.
page.image=images/cards/card-n-overview_2x.png
meta.tags=“preview”, “desarrollador”, “Android”
meta.tags="preview", "developer", "android"
page.tags="preview", "developer", "android"
@jd:body
@@ -37,9 +37,9 @@ page.tags="preview", "developer", "android"
-->
<p>
Bienvenido al plan de la <strong>Android N Developer Preview</strong>, un programa en el que
Bienvenido a <strong>Android N Developer Preview</strong>, un programa en el que
se ofrece todo lo que necesitas a fin de probar y optimizar tus aplicaciones para la próxima
versión de Android. Es gratis y puedes dar tus primeros pasos
versión de Android. Es gratis, y puedes comenzar
descargando las herramientas de la N Developer Preview.
</p>
@@ -69,7 +69,7 @@ page.tags="preview", "developer", "android"
</h5>
<p>
Durante la Preview, ofreceremos varias actualizaciones mensuales. De esta manera, realizarás tus pruebas con los últimos cambios de la plataforma.
Durante el programa de muestra, ofreceremos varias actualizaciones mensuales. De esta manera, realizarás la prueba con los últimos cambios de la plataforma.
</p>
</div>
@@ -105,8 +105,8 @@ page.tags="preview", "developer", "android"
</h5>
<p>
Actualizaciones inalámbricas sin inconvenientes para dispositivos admitidos a través del
Programa de Android beta. No se requieren actualizaciones.
Actualizaciones inalámbricas sin inconvenientes para dispositivos admitidos a través
del Programa de Android Beta. No se requieren actualizaciones.
</p>
</div>
@@ -116,10 +116,10 @@ page.tags="preview", "developer", "android"
</h5>
<p>
Informa los problemas y envíanos comentarios a través de nuestro
<a href="{@docRoot}preview/bug">sistema de seguimiento de problemas</a>. Conéctate con otros desarrolladores
en la
<a href="{@docRoot}preview/dev-community">comunidad de desarrolladores de Android&nbsp;N</a>.
Infórmanos los problemas y envíanos comentarios a través de nuestro
<a href="{@docRoot}preview/bug">seguimiento de problemas</a>. Conéctate con otros
desarrolladores en la
<a href="{@docRoot}preview/dev-community">comunidad&nbsp;de desarrolladores de Android N</a>.
</p>
</div>
</div>
@@ -140,70 +140,70 @@ page.tags="preview", "developer", "android"
<img src="{@docRoot}images/n-preview-updates_2x.png">
<p>
La N Developer Preview rige desde el 9 de marzo de 2016 hasta el lanzamiento público de Android N
para AOSP y OEM, previsto para el tercer trimestre de 2016.
La N Developer Preview rige desde el 9 de marzo de 2016 hasta el lanzamiento público
de Android N para AOSP y OEM, previsto para el tercer trimestre de 2016.
</p>
<p>
En momentos claves del desarrollo, ofreceremos actualizaciones para tu entorno de desarrollo y
prueba. En general, podrás contar con una actualización por mes (intervalo de 4 a 6
semanas). A continuación, se mencionan las versiones milestone:
En las versiones "milestone" del desarrollo, lanzaremos actualizaciones para tu entorno de pruebas y desarrollo.
En general, podrás contar con una actualización por mes (intervalo de 4 a 6
semanas). A continuación, se muestran las versiones "milestone":
</p>
<ul>
<li><strong><a href="{@docRoot}preview/support.html#dp1">Preview 1</a></strong> (versión inicial, alpha);</li>
<li><strong><a href="{@docRoot}preview/support.html#dp2">Preview 2</a></strong> (actualización gradual, alpha);</li>
<li><strong>Preview 3</strong> (actualización gradual, beta);</li>
<li><strong><a href="{@docRoot}preview/support.html#dp3">Preview 3</a></strong> (actualización gradual, beta);</li>
<li><strong>Preview 4</strong> (API finales y SDK oficial, publicación en Google Play);</li>
<li><strong>Preview 5</strong> (imágenes de sistema casi definitivas para pruebas finales);</li>
<li><strong>lanzamiento de la versión final</strong> para AOSP y el ecosistema.</li>
<li><strong>Lanzamiento de la versión final</strong> para AOSP y el ecosistema.</li>
</ul>
<p>
En cada actualización se incluyen herramientas de SDK, imágenes de sistema de la muestra, emuladores, documentación de
referencia y diferencias de API.
En cada actualización se incluyen herramientas de SDK, imágenes de sistema de Preview, emuladores, documentación de referencia y diferencias de API.
</p>
<p>
En las primeras <strong>tres milestone de la muestra</strong> se proporciona un <strong>entorno
En las primeras <strong>tres versiones "milestone" de Preview</strong>, se proporciona un <strong>entorno
de prueba y desarrollo tempranos</strong> que te permitirá identificar
problemas de compatibilidad en tus aplicaciones actuales y planificar tareas relacionadas con la migración o las funciones
que se necesitan para orientar la nueva plataforma. Este será el período de prioridad en el cual nos
enviarás tus comentarios sobre funciones y problemas de compatibilidad de API y archivos;
para hacerlo, usa el <a href="{@docRoot}preview/bug">sistema se seguimiento de
problemas</a>. Podrás contar con cambios en las API en estas actualizaciones.
problemas de compatibilidad en tus aplicaciones actuales y planificar tareas relacionadas con la migración o las funciones que se necesitan
para orientar la nueva plataforma. Este será el período de prioridad
en el cual nos enviarás tus comentarios sobre funciones y problemas de compatibilidad de API y archivos;
para hacerlo, usa el <a href="{@docRoot}preview/bug">sistema se seguimiento
de problemas.</a> Podrás contar con cambios en las API en estas actualizaciones.
</p>
<p>
Entre las <strong>Preview 4 y 5</strong>, tendrás acceso a las <strong>API
y al SDK finales de Android N</strong> para tareas de desarrollo, y también a imágenes de sistema casi definitivas
para poner a prueba comportamientos y funciones del sistema. Durante este período, Android N ofrecerá un nivel de API
estándar. Puedes iniciar la prueba de compatibilidad de tus aplicaciones
En <strong>Preview 4 y 5</strong>, tendrás acceso a las <strong>API y al SDK finales
de Android N</strong> para tareas de desarrollo, y también a imágenes de sistema casi definitivas
para poner a prueba comportamientos y funciones del sistema. Durante este período, Android N ofrecerá un nivel
de API estándar. Puedes iniciar la prueba de compatibilidad de tus aplicaciones
heredadas y optimizar el código nuevo en el que se usen las API o funciones de Android N.
</p>
<p>
A su vez, a partir de la Preview 4, podrás <strong>publicar aplicaciones en
dispositivos</strong> con Android N cuyo nivel de API sea el oficial (por ejemplo,
dispositivos de consumidores inscritos en el Programa de Android beta). Puedes
realizar primero publicaciones en los canales alpha y beta de Google Play, a fin de probar
tus aplicaciones con consumidores de Android beta antes de proceder con la distribución a gran escala en la
A su vez, a partir de Preview 4, podrás <strong>publicar aplicaciones en
dispositivos</strong> con Android N cuyo nivel de API sea el oficial (por ejemplo, dispositivos de
consumidores inscritos en el Programa de Android Beta). Puedes
realizar primero publicaciones en los canales alpha y beta de Google Play, para probar
tus aplicaciones con consumidores de Android Beta antes de proceder con la distribución a gran escala en la
tienda.
</p>
<p>
A medida que pruebes Android N y lo uses para tus desarrollos, te recomendamos enfáticamente <strong>mantener
actualizado tu entorno de desarrollo</strong> conforme se lancen actualizaciones de la
muestra. Para facilitar el proceso, puedes registrar tus dispositivos de prueba en el
Programa de Android Beta y obtener <strong>actualizaciones inalámbricas (OTA)</strong> en
cada versión milestone. Como alternativa, habrá disponibles imágenes de preview actualizadas que puedes
A medida que pruebas y desarrollas en Android N, te recomendamos que <strong>mantengas
tu entorno de desarrollo actualizado</strong> conforme se lanzan
las actualizaciones de Preview. Para facilitar el proceso, puedes registrar tus dispositivos de prueba en el
Programa de Android Beta y obtener <strong>actualizaciones inalámbricas</strong> en cada
versión "milestone". Como alternativa, habrá imágenes de Preview actualizadas disponibles que puedes
descargar y actualizar de manera manual.
</p>
<p>
Cuando haya disponibles las actualizaciones de la muestra, te informaremos a través del <a href="http://android-developers.blogspot.com/">blog para desarrolladores de Android</a>, de
este sitio y de la <a href="{@docRoot}preview/dev-community">Comunidad de desarrolladores
de Android N</a>.
Cuando haya actualizaciones de Preview disponibles, te informaremos a través del <a href="http://android-developers.blogspot.com/">blog para desarrolladores de Android</a>, de este sitio y
de la <a href="{@docRoot}preview/dev-community">Comunidad de desarrolladores de
Android N</a>.
</p>
@@ -217,73 +217,73 @@ page.tags="preview", "developer", "android"
<h3 id="sdk_tools">Herramientas del SDK</h3>
<p>Puedes descargar todos estos componentes a través de SDK Manager en <a href="{@docRoot}sdk/installing/adding-packages.html">Android Studio</a>:</p>
<p>Puedes descargar todos estos componentes a través de SDK Manager en <a href="{@docRoot}studio/intro/update.html">Android Studio</a>:</p>
<ul>
<li> <strong>SDK y herramientas</strong> de la N Developer Preview
<li> <strong>SDK y herramientas</strong> de la N Developer Preview;
<li> <strong>imagen del sistema para el emulador</strong>de la N Developer Preview (32 y 64 bits);
<li> <strong>imagen del sistema para el emulador para Android TV</strong> (32 bits) de la N Developer Preview;
<li> bibliotecas de compatibilidad de la N Developer Preview (para nuevas plantillas de aplicaciones).
</ul>
<p>
Ofreceremos actualizaciones para estas herramientas de desarrollo en cada versión milestone según sea necesario.
Ofreceremos actualizaciones para estas herramientas de desarrollo en cada momento clave (versión "milestone") según sea necesario.
</p>
<h3 id="hardware_system_images">Imágenes de sistema de hardware</h3>
<p>
En la N Developer Preview se incluyen, entre otras, imágenes de sistema del hardware de Nexus que puedes usar al
realizar pruebas y desarrollos en dispositivos físicos. Consulta la sección de <a href="{@docRoot}preview/download.html">imágenes de sistema</a> para encontrar la lista completa
de imágenes de hardware.
realizar pruebas y desarrollos en dispositivos físicos. Consulta la sección de <a href="{@docRoot}preview/download.html">imágenes de sistema</a> para encontrar la lista
completa de imágenes de hardware.
</p>
<p>
Ofreceremos imágenes de sistema actualizadas para estos dispositivos en cada versión milestone. Puedes
descargar y actualizar manualmente las imágenes de sistema renovadas en tus dispositivos de prueba
con la frecuencia que desees. Esto resulta particularmente útil para entornos
de prueba automatizados en los cuales probablemente debas volver a actualizar tu dispositivo varias
Ofreceremos imágenes de sistema actualizadas para estos dispositivos en cada versión "milestone". Puedes
descargar y actualizar manualmente las imágenes de sistema renovadas en tus dispositivos
de prueba con la frecuencia que desees. Esto resulta particularmente útil para entornos de prueba
automatizados en los cuales probablemente debas volver a actualizar tu dispositivo varias
veces.
</p>
<p class="note"><strong>Nota</strong>:
<strong>Los dispositivos actualizados de manera manual no recibirán actualizaciones OTA</strong>, como en la
muestra del año pasado. Este año, podrás recibir OTA registrando dispositivos en el
<strong>Los dispositivos actualizados de manera manual no recibirán actualizaciones inalámbricas</strong>, como en
la Preview del año pasado. Este año, podrás recibir actualizaciones inalámbricas registrando dispositivos en el
Programa de Android Beta. Consulta la sección siguiente para obtener información detallada.
</p>
<h3 id="android_beta">Actualizaciones OTA a través del Programa de Android beta</h3>
<h3 id="android_beta">Actualizaciones inalámbricas a través del Programa de Android Beta</h3>
<p>
Como novedad en Android N, se ofrece un programa de actualización inalámbrica (OTA) que
proporciona las últimas actualizaciones de las muestras de Android N directamente para dispositivos registrados
en él. Es gratuito y está pensado para quienes tengan dispositivos
compatibles registrados en sus cuentas de Google.
Como novedad en Android N, se ofrece un programa de actualización inalámbrica que
proporciona las últimas actualizaciones de Android N directamente para dispositivos registrados
en él. Es gratuito y está pensado para quienes tengan
dispositivos compatibles registrados en sus cuentas de Google.
</p>
<p>
Para el registro, visita el sitio del <a href="https://g.co/androidbeta">Programa de Android
beta</a>. En él, verás
todos los dispositivos registrados en tu cuenta que cumplen con los requisitos para registrarse en
el programa.
Beta</a>. En él,
verás todos los dispositivos registrados en tu cuenta que cumplen con los requisitos para registrarse
en el programa.
</p>
<ol>
<li> Selecciona los dispositivo para los cuales deseas recibir actualizaciones de Android N.
<li> Haz clic en Registrar, lee y acepta las condiciones de servicio y luego haz clic en Aceptar.
<li> Selecciona los dispositivos para los que deseas recibir actualizaciones de Android N
<li> Haz clic en Registrar, lee y acepta las condiciones de servicio y luego haz clic en Aceptar
</ol>
<p>
Una vez que realices el registro, tu dispositivo recibirá pronto una actualización. En la mayoría de los casos,
no necesitarás restablecer por completo tus datos para la migración a Android N, pero
te recomendamos hacer una copia de respaldo de los datos que no desees perder antes de
te recomendamos crear una copia de seguridad de los datos que no desees perder antes de
registrar el dispositivo.
</p>
<p>
A medida que tu dispositivo reciba actualizaciones, te recomendamos descargarlas e
instalarlas lo más pronto posible. Te convendrá mantenerte actualizado respecto de
las últimas modificaciones en la IU, el comportamiento, las API y las funciones del sistema.
instalarlas lo más pronto posible. Te convendrá mantenerte actualizado respecto de las
últimas modificaciones en la IU, el comportamiento, las API y las funciones del sistema.
</p>
<p>
@@ -292,24 +292,24 @@ page.tags="preview", "developer", "android"
</p>
<p>
Puedes dar de baja tus dispositivos del Programa de Android beta en cualquier momento desde el
sitio de Android beta. Antes de hacerlo, asegúrate de realizar una copia de respaldo de los datos de tu
dispositivo.
Puedes dar de baja tus dispositivos del Programa de Android Beta en cualquier momento desde
el sitio de Android Beta. Antes de hacerlo, no te olvides de realizar una copia de respaldo de los datos
de tu dispositivo.
</p>
<p class="note"><strong>Nota</strong>:
Cuando des de baja tu dispositivo, <strong>este se someterá a un restablecimiento de fábrica</strong>
a través del cual se cargará la última versión
de Android 6.0 Marshmallow (no necesariamente la versión
instalada antes del registro). Para garantizar que la instalación sea nueva,
se borrarán tus datos del dispositivo; entre otros, los contactos, los mensajes y
las fotos.
Cuando des de baja tu dispositivo, <strong>
se someterá a un restablecimiento de fábrica</strong> a través del que se cargará la última versión de
Android 6.0 Marshmallow (no necesariamente la versión
instalada antes del registro). Para garantizar que la instalación sea nueva, se borrarán
tus datos del dispositivo; entre otros, los contactos,
los mensajes y las fotos.
</p>
<h3 id="documentation_and_sample_code">Documentación y ejemplo de código</h3>
<p>
Los siguientes recursos de documentación se encuentran disponibles en el sitio Developer Preview y con ellos
Los siguientes recursos de documentación se encuentran disponibles en el sitio de Developer Preview y con ellos
podrás obtener información sobre Android&nbsp;N:
</p>
@@ -317,14 +317,14 @@ page.tags="preview", "developer", "android"
<li> <a href="{@docRoot}preview/setup-sdk.html">Preparación para el desarrollo con
Android N</a>: contiene
instrucciones paso a paso para comenzar.</li>
<li> En <a href="{@docRoot}preview/behavior-changes.html">Cambios
en los comportamientos</a> se indican áreas claves que debes probar.</li>
<li> Documentación de nuevas API, incluyendo <a href="{@docRoot}preview/api-overview.html">Información general de API</a>, una <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia
de API</a>
descargable y guías exhaustivas para desarrolladores que muestran por ejemplo: soporte de
múltiples ventanas, notificaciones integradas, soporte de múltiples regiones, y mucho más.
<li> <a href="{@docRoot}preview/samples.html">Ejemplo de código</a>, en el que
se demuestra la manera de admitir permisos y otras funciones nuevas.
<li> En <a href="{@docRoot}preview/behavior-changes.html">Cambios en los
comportamientos</a> se indican áreas clave que debes probar.</li>
<li> Documentación de nuevas API, entre la que se incluye <a href="{@docRoot}preview/api-overview.html">Información general de API</a>, una <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia
de API</a> descargable
y guías exhaustivas para desarrolladores que muestran, por ejemplo, soporte
de múltiples ventanas, notificaciones integradas, soporte de múltiples configuraciones regionales y mucho más.
<li> <a href="{@docRoot}preview/samples.html">Ejemplo de código</a>, en el que se
demuestra la manera de admitir permisos y otras funciones nuevas.
<li> <a href="{@docRoot}preview/support.html#release-notes">Notas de la versión</a>
sobre la versión actual de la N Developer Preview. Se incluyen notas sobre los cambios e informes
de diferencias.
@@ -333,11 +333,11 @@ múltiples ventanas, notificaciones integradas, soporte de múltiples regiones,
<h4 id="reference">Referencia de la API descargable</h4>
<p>
Durante las actualizaciones de la muestra, puedes descargar la
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
más reciente para la plataforma de Android N</a> como un archivo .zip separado. En esta descarga
también se incluye un informe de diferencias que te permite identificar cambios en la API
en comparación con la API 23 y la actualización anterior.
Durante las actualizaciones de Preview, puedes descargar la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API más reciente
para la plataforma de Android N</a> en forma de
archivo .zip independiente. En esta descarga
también se incluye un informe de diferencias que te permite identificar cambios en la API en comparación con la
API 23 y la actualización anterior.
</p>
<p>
@@ -355,42 +355,42 @@ múltiples ventanas, notificaciones integradas, soporte de múltiples regiones,
</p>
<ul>
<li> <a href="https://code.google.com/p/android-developer-preview/">El sistema de seguimiento de problemas de la N Developer Preview
</a> es el <strong>canal principal para comentarios.</strong> A través de él, puedes informar errores y problemas de
rendimiento, y enviar comentarios generales. También puedes buscar
<a href="{@docRoot}preview/bug">problemas conocidos</a> y
encontrar pasos para solucionarlos. Te mantendremos informado sobre tu problema durante el proceso de evaluación y
<li> <a href="https://code.google.com/p/android-developer-preview/">El sistema de seguimiento de problemas
de la N Developer Preview</a> es el canal <strong>principal para comentarios.</strong> A través de él, puedes informar errores y
problemas de rendimiento, y enviar comentarios generales. También puedes buscar
<a href="{@docRoot}preview/bugs">problemas conocidos</a> y
encontrar pasos para solucionarlos. Te mantendremos informado sobre tu problema durante el proceso de evaluación y
derivación al equipo de ingeniería de Android para su resolución. </li>
<li> La <a href="{@docRoot}preview/dev-community">comunidad de desarrolladores de Android N</a> es
una comunidad de Google+ en la que puedes <strong>conectarte con otros desarrolladores</strong>que trabajen con
una comunidad de Google+ en la que puedes <strong>conectarte con otros desarrolladores</strong> que trabajen con
Android N. Puedes compartir observaciones o ideas, o encontrar respuestas a
preguntas acerca de Android N. Moderaremos la comunidad y proporcionaremos respuestas y
orientación según sea necesario.</li>
</ul>
<h3 id="targeting">Orientación, API de la muestra y publicación</h3>
<h3 id="targeting">Orientación, API de la Preview y publicación</h3>
<p>
En la N Developer Preview se proporciona un sistema exclusivo para desarrollo y una biblioteca
de Android <strong>cuyo nivel de API no es estándar</strong>. Si deseas
no incluir comportamientos de compatibilidad para probar tu aplicación (muy
recomendado), puedes orientar la versión preview de Android N fijando el valor de
<code><a href=
"{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code>
de tu aplicación en <code>“N”</code>.
En la N Developer Preview se proporciona un sistema exclusivo para desarrollo y una
biblioteca de Android <strong>cuyo nivel de API no es estándar</strong>. Si deseas
no incluir comportamientos de compatibilidad para probar tu aplicación (un proceso muy
recomendado), puedes orientar la versión Android N Preview fijando el valor
de <code><a href=
"{@docRoot}preview/setup-sdk.html#create-update">targetSdkVersion</a></code> de tu aplicación
en <code>“N”</code>.
</p>
<p>
La Android N Developer Preview ofrece las <strong>API de preview</strong>;
estas no serán oficiales hasta el lanzamiento de la versión definitiva del SDK,
Android N Developer Preview ofrece las <strong>API de Preview</strong>
, que no serán oficiales hasta el lanzamiento de la versión definitiva de SDK,
actualmente previsto para el tercer trimestre de 2016. Esto significa que podrás
<strong>contar con cambios menores en las API</strong> conforme pase el tiempo, en especial durante
las primeras semanas del programa. Te proporcionaremos un resumen de cambios con
cada actualización de la Android N Developer Preview.
cada actualización de Android N Developer Preview.
</p>
<p class="note">
<strong>Nota</strong>: Aunque las API de la muestra pueden modificarse, los comportamientos del sistema
<strong>Nota</strong>: Aunque las API de Preview pueden modificarse, los comportamientos del sistema
subyacente permanecen estables y disponibles para cualquier prueba
inmediata.
</p>
@@ -411,7 +411,7 @@ múltiples ventanas, notificaciones integradas, soporte de múltiples regiones,
</p>
<h2 id="how_to_get_started">Primeros pasos</h2>
<h2 id="how_to_get_started">Comenzar</h2>
<p>
Para comenzar a probar tu aplicación con Android N:
@@ -419,10 +419,10 @@ múltiples ventanas, notificaciones integradas, soporte de múltiples regiones,
<ol>
<li> Revisa 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> a fin de
y <a href="{@docRoot}preview/behavior-changes.html">Cambios en los comportamientos</a> para
conocer las novedades y el efecto que tienen en tus aplicaciones. En particular,
procura obtener información sobre las nuevas funciones de <a href="{@docRoot}preview/features/notification-updates.html">notificaciones</a> y la
<a href="{@docRoot}preview/features/multi-window.html">compatibilidad con ventanas múltiples</a>.</li>
procura obtener información sobre las nuevas funciones de <a href="{@docRoot}preview/features/notification-updates.html">notificaciones</a> y
la <a href="{@docRoot}preview/features/multi-window.html">compatibilidad con ventanas múltiples</a>.</li>
<li> Configura tu entorno siguiendo las instrucciones para <a href="{@docRoot}preview/setup-sdk.html">configurar el SDK Preview</a>
y los dispositivos de prueba.</li>
<li> Sigue las <a href="https://developers.google.com/android/nexus/images">instrucciones de

View File

@@ -0,0 +1,75 @@
<ul id="nav">
<li class="nav-section">
<div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/overview.html" es-lang="Información general del programa" in-lang="Ikhtisar Program" ja-lang="プログラム概要" ko-lang="프로그램 개요" pt-br-lang="Visão geral do programa" ru-lang="Обзор программы" vi-lang="Tổng quan về Chương trình" zh-cn-lang="计划概览" zh-tw-lang="程式總覽">Información general del programa</a></div>
</li>
<li class="nav-section">
<div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/support.html">Compatibilidad y notas de la versión</a></div>
</li>
<li class="nav-section">
<div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/setup-sdk.html" es-lang="Configurar el SDK de la versión preliminar" in-lang="Menyiapkan Preview" ja-lang="Preview SDK のセットアップ" ko-lang="미리 보기 SDK 설정하기" pt-br-lang="Configuração do Preview SDK" ru-lang="Настройка пакета SDK Preview" vi-lang="Kiểm thử trên Thiết bị" zh-cn-lang="设置预览版 SDK" zh-tw-lang="設定預覽版 SDK">Configuración de Preview</a></div>
</li>
<li class="nav-section">
<div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/download.html" es-lang="Pruebe en un dispositivo" in-lang="Menguji pada Perangkat" ja-lang="デバイス上でテストする" ko-lang="기기에서 테스트" pt-br-lang="Testar em um dispositivo" ru-lang="Тестирование на устройстве" vi-lang="Kiểm thử trên Thiết bị" zh-cn-lang="在设备上测试" zh-tw-lang="在裝置上測試">Prueba en un dispositivo</a></div>
</li>
<li class="nav-section">
<div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;preview/behavior-changes.html" es-lang="Cambios en los comportamientos" in-lang="Perubahan Perilaku" ja-lang="動作の変更点" ko-lang="동작 변경" pt-br-lang="Mudanças de comportamento" ru-lang="Изменения в работе" vi-lang="Các thay đổi Hành vi" zh-cn-lang="行为变更" zh-tw-lang="行為變更">Cambios en los comportamientos</a></div>
<ul>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/background-optimization.html" es-lang="Optimizaciones en segundo plano" in-lang="Optimisasi Latar Belakang" ja-lang="バックグラウンド処理の最適化" ko-lang="백그라운드 최적화" pt-br-lang="Otimizações em segundo plano" ru-lang="Оптимизация фоновых процессов" vi-lang="Tối ưu hóa Chạy ngầm" zh-cn-lang="后台优化" zh-tw-lang="背景最佳化">Optimizaciones en segundo plano</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/multilingual-support.html" es-lang="Idioma y configuración regional" in-lang="Bahasa dan Lokal" ja-lang="言語とロケール" ko-lang="언어 및 로케일" pt-br-lang="Idioma e localidade" ru-lang="Язык и языковой стандарт" vi-lang="Ngôn ngữ và Bản địa" zh-cn-lang="语言和区域设置" zh-tw-lang="語言和地區設定">Idioma y configuración regional</a></li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header"><a href="&lt;?cs var:toroot ?&gt;preview/api-overview.html" es-lang="Información general de la API" in-lang="Android N untuk Pengembang" ja-lang="API の概要" ko-lang="API 개요" pt-br-lang="Visão geral da API" ru-lang="Обзор API-интерфейсов" vi-lang="Android N cho Nhà phát triển" zh-cn-lang="API 概览" zh-tw-lang="API 總覽">Android N for Developers </a></div>
<ul>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/multi-window.html" es-lang="Compatibilidad con ventanas múltiples" in-lang="Dukungan Multi-Jendela" ja-lang="マルチ ウィンドウのサポート" ko-lang="다중 창 지원" pt-br-lang="Suporte a várias janelas" ru-lang="Поддержка многооконного режима" vi-lang="Hỗ trợ đa cửa sổ" zh-cn-lang="多窗口支持" zh-tw-lang="多視窗支援">Compatibilidad con ventanas múltiples</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/notification-updates.html" es-lang="Notificaciones" in-lang="Pemberitahuan" ja-lang="通知" ko-lang="알림" pt-br-lang="Notificações" ru-lang="Уведомления" vi-lang="Thông báo" zh-cn-lang="通知" zh-tw-lang="通知">Notificaciones</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/data-saver.html">Ahorro de datos</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/tv-recording-api.html" es-lang="Grabación de TV" in-lang="Perekaman TV" ja-lang="TV の録画" ko-lang="TV 녹화" pt-br-lang="Gravação para TV" ru-lang="Запись ТВ" vi-lang="Ghi lại TV" zh-cn-lang="TV 录制" zh-tw-lang="電視錄製">Grabación de TV</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/security-config.html" es-lang="Configuración de seguridad de la red" in-lang="Network Security Configuration" ja-lang="ネットワーク セキュリティ構成" ko-lang="네트워크 보안 구성" pt-br-lang="Configurações de segurança de rede" ru-lang="Конфигурация сетевой безопасности" vi-lang="Cấu hình Bảo mật mạng" zh-cn-lang="网络安全配置" zh-tw-lang="網路安全性設定">Configuración de seguridad de la red</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/icu4j-framework.html" es-lang="API de ICU4J del framework de Android" in-lang="ICU4J Android Framework API" ja-lang="ICU4J Android フレームワーク API" ko-lang="ICU4J Android 프레임워크 API" pt-br-lang="APIs de estrutura do Android para ICU4J" ru-lang="API-интерфейсы ICU4J в платформе Android" vi-lang="API Khuôn khổ Android ICU4J" zh-cn-lang="ICU4J Android 框架 API" zh-tw-lang="ICU4J Android 架構 API">Compatibilidad con ICU4J</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/j8-jack.html" es-lang="Funciones del lenguaje Java 8" in-lang="Fitur Bahasa Java 8" ja-lang="Java 8 の機能" ko-lang="Java 8 언어 기능" pt-br-lang="Recursos de linguagem do Java 8" ru-lang="Возможности языка Java 8" vi-lang="Tính năng của Ngôn ngữ Java 8" zh-cn-lang="Java 8 语言功能" zh-tw-lang="Java 8 語言功能">Funciones del lenguaje Java 8</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/afw.html">Actualizaciones para Android for Work</a></li>
<li><a href="&lt;?cs var:toroot ?&gt;preview/features/scoped-folder-access.html" es-lang="Acceso a directorios determinados" in-lang="Scoped Directory Access" ja-lang="特定のディレクトリへのアクセス" ko-lang="범위가 지정된 디렉터리 액세스" pt-br-lang="Acesso a diretórios com escopo" ru-lang="Доступ к выделенным каталогам" vi-lang="Truy cập Thư mục theo Phạm vi" zh-cn-lang="作用域目录访问" zh-tw-lang="限定範圍目錄存取">Acceso a directorios determinados</a></li>
</ul>
</li>
<li class="nav-section">
<div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/samples.html" es-lang="Ejemplos" in-lang="Contoh" ja-lang="サンプル" ko-lang="샘플" pt-br-lang="Exemplos" ru-lang="Примеры" zh-cn-lang="示例" zh-tw-lang="範例">Ejemplos</a></div>
</li>
<li class="nav-section">
<div class="nav-section-header empty"><a href="&lt;?cs var:toroot ?&gt;preview/license.html" es-lang="Contrato de licencia" ja-lang="使用許諾契約" ko-lang="라이선스 계약" pt-br-lang="Contrato de licença" ru-lang="Лицензионное соглашение" zh-cn-lang="许可协议" zh-tw-lang="授權協議">Contrato de licencia</a></div>
</li>
</ul>

View File

@@ -10,8 +10,8 @@ page.image=images/cards/card-n-samples_2x.png
</p>
<p class="note">
<strong>Nota:</strong> Estos proyectos descargables están diseñados
para usarse con Gradle y Android Studio.
<strong>Nota:</strong> Estos proyectos que se pueden descargar están diseñados
para su uso con Gradle y Android Studio.
</p>
@@ -64,7 +64,7 @@ Obtener en GitHub</a>
<h3 id="fbe">Inicio directo</h3>
<img src="{@docRoot}preview/images/sample-directboot.png" style="float: left; padding-right: 0.5em" height="250" width="141" />
<p>
En este ejemplo se demuestra la manera de almacenar datos, y de acceder a ellos, en un medio de almacenamiento cifrado por
En este ejemplo se demuestra la manera de almacenar datos, y de acceder a ellos, en un medio de almacenamiento encriptado por
dispositivo que esté siempre disponible mientras el dispositivo se haya iniciado.
</p>
<p>

View File

@@ -1,5 +1,5 @@
page.title=Configuración de la Preview
meta.keywords=“preview”, “Android”
page.title=Configuración de Preview
meta.keywords="preview", "android"
page.tags="preview", "developer preview"
page.image=images/cards/card-n-sdk_2x.png
@@ -15,7 +15,7 @@ page.image=images/cards/card-n-sdk_2x.png
<li><a href="#docs-dl">Documentación de referencia</a>
</ol>
</li>
<li><a href="#java8">Obtener el JDK y JRE de Java 8</a></li>
<li><a href="#java8">Obtener el JDK de Java 8</a></li>
<li><a href="#create-update">Actualizar o crear un proyecto</a></li>
<li><a href="#next">Próximos pasos</a></li>
</ol>
@@ -31,50 +31,22 @@ imagen de sistema de Android N, sigue la guía de <a href="{@docRoot}preview/dow
<img src="{@docRoot}preview/images/n-preview-setup.png" width="700" alt="" />
<h2 id="get-as13">Obtener Android Studio 2.1 (muestra)</h2>
<h2 id="get-as13">Obtener Android Studio 2.1</h2>
<p>La plataforma de Android N agrega compatibilidad para <a href="{@docRoot}preview/j8-jack.html">funciones de lenguaje de Java 8</a>,
que requieren un nuevo compilador llamado Jack. La última versión de Jack
que requieren un nuevo compilador llamado Jack. La última versión de Jack
actualmente solo es compatible con Android Studio 2.1. Por lo tanto, si deseas
usar funciones de lenguaje de Java 8, debes usar Android Studio 2.1 para
crear tu aplicación. De lo contrario, no necesitarás el compilador Jack, pero
deberás aplicar una actualización a JDK 8 para compilar tu proyecto en función a la plataforma de Android N,
según lo descrito a continuación.
</p>
según lo descrito a continuación.</p>
<p>Android Studio 2.1 actualmente se encuentra disponible como muestra en el canal de
versiones Canary. Si ya
cuentas con Android Studio y no deseas realizar la actualización al canal Canary, puedes
descargar Android Studio 2.1 como una instalación independiente, usarlo
para desarrollar aplicaciones con Android N y así dejar el entorno Android Studio
inalterado.</p>
<p>Si ya cuentas con Android Studio, cerciórate de que tienes Android
Studio 2.1 o una versión anterior haciendo clic en <strong>Help &gt; Check for Update</strong>
(en Mac, <strong>Android Studio &gt; Check for Updates</strong>).</p>
<p>Para descargar Android Studio 2.1 como una instalación independiente, sigue estos
pasos (si deseas recibir Android Studio 2.1 como una actualización a tu
instalación existente, omite el paso 4):</p>
<ol>
<li>Modifica el nombre de tu
instalación existente de Android Studio y anéxale el número de versión. De esta manera,
la versión nueva no reemplazará a la existente al instalarse.</li>
<li>Descarga el archivo .zip correspondiente para tu sistema operativo desde la
<a href="http://tools.android.com/download/studio/canary/latest">página de descarga del canal Canary</a>.
</li>
<li>Descomprime el paquete y mueve el contenido de Android Studio 2.1 a la ubicación
que corresponda para las aplicaciones de tu sistema. Luego inícialo.</li>
<li>Abre el cuadro de diálogo Settings
(<strong>File &gt; Settings</strong> en Windows y Linux, o
<strong>Android Studio &gt; Preferences</strong> en Mac). En el panel
izquierdo, selecciona <strong>Appearance &amp; Behavior &gt; System Settings &gt;
Updates</strong>.
</li>
<li>En el panel Updates, selecciona la casilla de verificación <strong>Automatically
check updates for</strong> y luego
<strong>Canary Channel</strong> en la lista desplegable.
</li>
</ol>
<p>Mantén esta ventana de configuración abierta para el paso siguiente.</p>
<p>Si no cuentas con él, <a href="{@docRoot}studio/">descarga Android Studio
2.1 aquí</a>.</p>
<h2 id="get-sdk">Obtener el N Preview SDK</h2>
@@ -83,18 +55,11 @@ instalación existente, omite el paso 4):</p>
Android N Preview SDK en Android Studio de la siguiente manera:</p>
<ol>
<li>Con el panel Updates aún a la vista (paso 4 anterior),
selecciona la casilla de verificación <strong>Automatically
check updates for Android SDK</strong> y luego
<strong>Preview Channel</strong> en la lista desplegable.
</li>
<li>Haz clic en <strong>Check Now</strong>.</li>
<li>Abre el Administrador de SDK haciendo clic en <strong>Tools &gt; Android &gt;
SDK Manager</strong>.</li>
<li>En el panel izquierdo, selecciona <strong>Appearance &amp; Behavior &gt;
System Settings &gt; Android SDK</strong>.
<li>Haz clic en la pestaña <strong>SDK Platforms</strong> y luego selecciona la casilla de verificación
<strong>Android N Preview</strong>.</li>
<li>En la pestaña <strong>SDK Platforms</strong>, selecciona la
casilla de verificación <strong>Android N Preview</strong>.</li>
<li>Haz clic en la pestaña <strong>SDK Tools</strong> y luego selecciona las casillas de verificación
<strong>Android SDK Build Tools</strong>, <strong>Android SDK
@@ -110,7 +75,7 @@ Android N Preview SDK en Android Studio de la siguiente manera:</p>
<h3 id="docs-dl">Obtener documentación de referencia de la Android N Preview</h3>
<p>
En la documentación de referencia de la Android N Preview, se encuentra disponible información
En la documentación de referencia de la N Preview, se encuentra disponible información
detallada acerca de las API de Android N. Puedes descargar la documentación de la tabla siguiente.
Este paquete contiene una versión abreviada y de uso sin conexión del sitio web para desarrolladores
de Android, y en ella se incluyen una referencia de API actualizada para las API de Android N y un
@@ -124,23 +89,21 @@ Android N Preview SDK en Android Studio de la siguiente manera:</p>
</tr>
<tr>
<td style="white-space: nowrap">
<a href="{@docRoot}shareables/preview/n-preview-1-docs.zip">n-preview-1-docs.zip</a></td>
<a href="{@docRoot}shareables/preview/n-preview-3-docs.zip">n-preview-3-docs.zip</a></td>
<td width="100%">
MD5: 4ab33ccbe698f46f125cc5b807cf9c2f<br>
SHA-1: 6a3880b3ccd19614daae5a4d0698ea6ae11c20a5
MD5: 19bcfd057a1f9dd01ffbb3d8ff7b8d81<br>
SHA-1: 9224bd4445cd7f653c4c294d362ccb195a2101e7
</td>
</tr>
</table>
<table>
<h2 id="java8">Obtener el JDK y JRE de Java 8</h2>
<h2 id="java8">Obtener el JDK de Java 8</h2>
<p>Para compilar tu aplicación en función de la plataforma de Android N debes usar
el Java 8 Developer Kit (JDK 8), y para usar algunas herramientas con Android
Studio 2.1 debes instalar Java 8 Runtime Environment (JRE 8). Si
aún no cuentas con la última versión de las dos herramientas, descarga JDK 8 y JRE 8
ahora.</p>
<p>Para compilar tu aplicación en función de la plataforma de Android N y para usar algunas herramientas con
Android Studio 2.1 el Java 8 Developer Kit (JDK 8). Por lo tanto, si
aún no tienes la última versión, descarga el JDK 8 ahora.</p>
<p>Luego configura la versión de JDK en Android Studio de la siguiente manera:</p>
@@ -148,7 +111,7 @@ ahora.</p>
<li>Abre un proyecto de Android en Android Studio y luego el
cuadro de diálogo de estructura del proyecto seleccionando <strong>File &gt;
Project Structure</strong>. (Como alternativa, puedes fijar el valor predeterminado
para todos los proyectos seleccionando <strong>File &gt; Other Settings &gt;
para todos los proyectos seleccionando<strong> File &gt; Other Settings &gt;
Default Project Structure</strong>).
</li>
<li>En el panel izquierdo del cuadro de diálogo, haz clic en <strong>SDK Location</strong>.
@@ -184,7 +147,7 @@ la manera de configurar tu proyecto con el compilador Jack.</p>
<pre>
android {
compileSdkVersion <strong>'android-N'</strong>
buildToolsVersion <strong>'24.0.0-rc1'</strong>
buildToolsVersion <strong>'24.0.0-rc3'</strong>
...
defaultConfig {
@@ -208,7 +171,7 @@ android {
<li>En la página, selecciona la opción <strong>Phone and Tablet</strong>.</li>
<li>En la opción <strong>Phone and Tablet</strong>, dentro de la lista de opciones <strong>Minimum
SDK</strong>, selecciona
<strong>N: Android API 23, N Preview (Preview)</strong>.</li>
<strong>N: Android API 23, N Preview (Preview).</strong></li>
</ol>
@@ -221,3 +184,4 @@ android {
y <a href="{@docRoot}preview/api-overview.html">API y funciones de Android N
</a>.</li>
</ul>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,342 @@
toc:
- title: Ringkasan Program
path: /preview/overview.html
path_attributes:
- name: es-lang
value: Información general del programa
- name: in-lang
value: Ringkasan Program
- name: ja-lang
value: プログラム概要
- name: ko-lang
value: 프로그램 개요
- name: pt-br-lang
value: Visão geral do programa
- name: ru-lang
value: Обзор программы
- name: vi-lang
value: Tổng quan về Chương trình
- name: zh-cn-lang
value: 计划概览
- name: zh-tw-lang
value: 程式總覽
- title: Dukungan dan Catatan Rilis
path: /preview/support.html
- title: Menyiapkan Pratinjau
path: /preview/setup-sdk.html
path_attributes:
- name: es-lang
value: Configurar el SDK de la versión preliminar
- name: in-lang
value: Menyiapkan Pratinjau
- name: ja-lang
value: Preview SDK のセットアップ
- name: ko-lang
value: 미리 보기 SDK 설정하기
- name: pt-br-lang
value: Configuração do Preview SDK
- name: ru-lang
value: Настройка пакета SDK Preview
- name: vi-lang
value: Kiểm thử trên Thiết bị
- name: zh-cn-lang
value: 设置预览版 SDK
- name: zh-tw-lang
value: 設定預覽版 SDK
- title: Menguji pada Perangkat
path: /preview/download.html
path_attributes:
- name: es-lang
value: Pruebe en un dispositivo
- name: in-lang
value: Menguji pada Perangkat
- name: ja-lang
value: デバイス上でテストする
- name: ko-lang
value: 기기에서 테스트
- name: pt-br-lang
value: Testar em um dispositivo
- name: ru-lang
value: Тестирование на устройстве
- name: vi-lang
value: Kiểm thử trên Thiết bị
- name: zh-cn-lang
value: 在设备上测试
- name: zh-tw-lang
value: 在裝置上測試
- title: Perubahan Perilaku
path: /preview/behavior-changes.html
path_attributes:
- name: es-lang
value: Cambios en los comportamientos
- name: in-lang
value: Perubahan Perilaku
- name: ja-lang
value: 動作の変更点
- name: ko-lang
value: 동작 변경
- name: pt-br-lang
value: Mudanças de comportamento
- name: ru-lang
value: Изменения в работе
- name: vi-lang
value: Các thay đổi Hành vi
- name: zh-cn-lang
value: 行为变更
- name: zh-tw-lang
value: 行為變更
section:
- title: Optimalisasi Latar Belakang
path: /preview/features/background-optimization.html
path_attributes:
- name: es-lang
value: Optimizaciones en segundo plano
- name: in-lang
value: Optimisasi Latar Belakang
- name: ja-lang
value: バックグラウンド処理の最適化
- name: ko-lang
value: 백그라운드 최적화
- name: pt-br-lang
value: Otimizações em segundo plano
- name: ru-lang
value: Оптимизация фоновых процессов
- name: vi-lang
value: Tối ưu hóa Chạy ngầm
- name: zh-cn-lang
value: 后台优化
- name: zh-tw-lang
value: 背景最佳化
- title: Bahasa dan Lokal
path: /preview/features/multilingual-support.html
path_attributes:
- name: es-lang
value: Idioma y configuración regional
- name: in-lang
value: Bahasa dan Lokal
- name: ja-lang
value: 言語とロケール
- name: ko-lang
value: 언어 및 로케일
- name: pt-br-lang
value: Idioma e localidade
- name: ru-lang
value: Язык и языковой стандарт
- name: vi-lang
value: Ngôn ngữ và Bản địa
- name: zh-cn-lang
value: 语言和区域设置
- name: zh-tw-lang
value: 語言和地區設定
- title: Android N for Developers
path: /preview/api-overview.html
path_attributes:
- name: es-lang
value: Información general de la API
- name: in-lang
value: Android N untuk Pengembang
- name: ja-lang
value: API の概要
- name: ko-lang
value: API 개요
- name: pt-br-lang
value: Visão geral da API
- name: ru-lang
value: Обзор API-интерфейсов
- name: vi-lang
value: Android N cho Nhà phát triển
- name: zh-cn-lang
value: API 概览
- name: zh-tw-lang
value: API 總覽
section:
- title: Dukungan Multi-Jendela
path: /preview/features/multi-window.html
path_attributes:
- name: es-lang
value: Compatibilidad con ventanas múltiples
- name: in-lang
value: Dukungan Multi-Jendela
- name: ja-lang
value: マルチ ウィンドウのサポート
- name: ko-lang
value: 다중 창 지원
- name: pt-br-lang
value: Suporte a várias janelas
- name: ru-lang
value: Поддержка многооконного режима
- name: vi-lang
value: Hỗ trợ đa cửa sổ
- name: zh-cn-lang
value: 多窗口支持
- name: zh-tw-lang
value: 多視窗支援
- title: Pemberitahuan
path: /preview/features/notification-updates.html
path_attributes:
- name: es-lang
value: Notificaciones
- name: in-lang
value: Pemberitahuan
- name: ja-lang
value: 通知
- name: ko-lang
value: 알림
- name: pt-br-lang
value: Notificações
- name: ru-lang
value: Уведомления
- name: vi-lang
value: Thông báo
- name: zh-cn-lang
value: 通知
- name: zh-tw-lang
value: 通知
- title: Data Saver
path: /preview/features/data-saver.html
- title: Perekaman TV
path: /preview/features/tv-recording-api.html
path_attributes:
- name: es-lang
value: Grabación de TV
- name: in-lang
value: Perekaman TV
- name: ja-lang
value: TV の録画
- name: ko-lang
value: TV 녹화
- name: pt-br-lang
value: Gravação para TV
- name: ru-lang
value: Запись ТВ
- name: vi-lang
value: Ghi lại TV
- name: zh-cn-lang
value: TV 录制
- name: zh-tw-lang
value: 電視錄製
- title: Konfigurasi Keamanan Jaringan
path: /preview/features/security-config.html
path_attributes:
- name: es-lang
value: Configuración de seguridad de la red
- name: ja-lang
value: ネットワーク セキュリティ構成
- name: ko-lang
value: 네트워크 보안 구성
- name: pt-br-lang
value: Configurações de segurança de rede
- name: ru-lang
value: Конфигурация сетевой безопасности
- name: vi-lang
value: Cấu hình Bảo mật mạng
- name: zh-cn-lang
value: 网络安全配置
- name: zh-tw-lang
value: 網路安全性設定
- title: Dukungan ICU4J
path: /preview/features/icu4j-framework.html
path_attributes:
- name: es-lang
value: API de ICU4J del framework de Android
- name: in-lang
value: ICU4J Android Framework API
- name: ja-lang
value: ICU4J Android フレームワーク API
- name: ko-lang
value: ICU4J Android 프레임워크 API
- name: pt-br-lang
value: APIs de estrutura do Android para ICU4J
- name: ru-lang
value: API-интерфейсы ICU4J в платформе Android
- name: vi-lang
value: API Khuôn khổ Android ICU4J
- name: zh-cn-lang
value: ICU4J Android 框架 API
- name: zh-tw-lang
value: ICU4J Android 架構 API
- title: Fitur Bahasa Java 8
path: /preview/j8-jack.html
path_attributes:
- name: es-lang
value: Funciones del lenguaje Java 8
- name: in-lang
value: Fitur Bahasa Java 8
- name: ja-lang
value: Java 8 の機能
- name: ko-lang
value: Java 8 언어 기능
- name: pt-br-lang
value: Recursos de linguagem do Java 8
- name: ru-lang
value: Возможности языка Java 8
- name: vi-lang
value: Tính năng của Ngôn ngữ Java 8
- name: zh-cn-lang
value: Java 8 语言功能
- name: zh-tw-lang
value: Java 8 語言功能
- title: Pembaruan Android for Work
path: /preview/features/afw.html
- title: Scoped Directory Access
path: /preview/features/scoped-folder-access.html
path_attributes:
- name: es-lang
value: Acceso a directorios determinados
- name: ja-lang
value: 特定のディレクトリへのアクセス
- name: ko-lang
value: 범위가 지정된 디렉터리 액세스
- name: pt-br-lang
value: Acesso a diretórios com escopo
- name: ru-lang
value: Доступ к выделенным каталогам
- name: vi-lang
value: Truy cập Thư mục theo Phạm vi
- name: zh-cn-lang
value: 作用域目录访问
- name: zh-tw-lang
value: 限定範圍目錄存取
- title: Contoh
path: /preview/samples.html
path_attributes:
- name: es-lang
value: Ejemplos
- name: in-lang
value: Contoh
- name: ja-lang
value: サンプル
- name: ko-lang
value: 샘플
- name: pt-br-lang
value: Exemplos
- name: ru-lang
value: Примеры
- name: zh-cn-lang
value: 示例
- name: zh-tw-lang
value: 範例
- title: Perjanjian Lisensi
path: /preview/license.html
path_attributes:
- name: es-lang
value: Contrato de licencia
- name: ja-lang
value: 使用許諾契約
- name: ko-lang
value: 라이선스 계약
- name: pt-br-lang
value: Contrato de licença
- name: ru-lang
value: Лицензионное соглашение
- name: zh-cn-lang
value: 许可协议
- name: zh-tw-lang
value: 授權協議

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
page.title=Perubahan Perilaku
page.keywords=preview,sdk,compatibility
meta.tags="preview", "kompatibilitas"
page.keywords=pratinjau,sdk,kompatibilitas
meta.tags="preview", "compatibility"
page.tags="preview", "developer preview"
page.image=images/cards/card-n-changes_2x.png
@jd:body
@@ -14,25 +14,29 @@ page.image=images/cards/card-n-changes_2x.png
<ol>
<li><a href="#perf">Peningkatan Kinerja</a>
<ol>
<li><a href="#doze">Doze</a></li>
<li><a href="#bg-opt">Optimisasi Latar Belakang</a></li>
<li><a href="#doze">Istirahatkan</a></li>
<li><a href="#bg-opt">Optimalisasi Latar Belakang</a></li>
</ol>
</li>
<li><a href="#perm">Perubahan Izin</a></li>
<li><a href="#perm">Perubahan Izin</a>
</li>
<li><a href="#sharing-files">Berbagi File Antar Aplikasi</a></li>
<li><a href="#accessibility">Peningkatan Aksesibilitas</a>
<ol>
<li><a href="#screen-zoom">Zoom Layar</a></li>
<li><a href="#screen-zoom">Perbesaran Layar</a></li>
<li><a href="#vision-settings">Vision Settings di Setup Wizard</a></li>
</ol>
</li>
<li><a href="#ndk">Menautkan Aplikasi NDK ke Pustaka Platform</a></li>
<li><a href="#ndk">Penautan Aplikasi NDK ke Pustaka Platform</a></li>
<li><a href="#afw">Android for Work</a></li>
<li><a href="#annotations">Retensi Anotasi</a></li>
<li><a href="#other">Poin Penting Lainnya</a></li>
</ol>
<h2>Lihat Juga</h2>
<ol>
<li><a href="{@docRoot}preview/api-overview.html">
Ikhtisar Android N API</a></li>
Ringkasan Android N API</a></li>
</ol>
</div>
@@ -40,54 +44,53 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Selain fitur dan kemampuan baru, Android N
juga menyertakan berbagai perubahan perilaku sistem dan API. Dokumen ini
Bersama fitur dan kemampuan baru, Android N
menyertakan berbagai macam perubahan sistem dan perubahan perilaku API. Dokumen ini
menyoroti beberapa perubahan utama yang harus dipahami dan diperhitungkan
dalam aplikasi Anda.
</p>
<p>
Jika Anda sebelumnya telah mempublikasikan aplikasi untuk Android, ketahuilah bahwa aplikasi Anda
mungkin akan terpengaruh oleh perubahan dalam platform ini.
mungkin dipengaruhi oleh perubahan dalam platform.
</p>
<h2 id="perf">Peningkatan Kinerja</h2>
<h2 id="perf">Baterai dan Memori</h2>
<p>
Android N berisi perubahan perilaku sistem yang bertujuan meningkatkan daya tahan
baterai perangkat, penggunaan RAM, dan kinerja aplikasi. Perubahan-perubahan ini bisa memengaruhi
ketersediaan sumber daya sistem dan pemberitahuan sistem bagi aplikasi. Anda
harus meninjau perubahan ini dan mengevaluasi cara menyesuaikan aplikasi Anda terhadap perubahan
tersebut.
Android N menyertakan perubahan perilaku sistem yang bertujuan untuk meningkatkan daya tahan baterai
perangkat dan mengurangi penggunaan RAM. Perubahan ini bisa memengaruhi akses aplikasi Anda ke
sumber daya sistem, termasuk cara aplikasi Anda berinteraksi dengan aplikasi lain melalui
intent implisit tertentu.
</p>
<h3 id="doze">Doze</h3>
<h3 id="doze">Istirahatkan</h3>
<p>
Diperkenalkan dalam Android 6.0 (API level 23), Doze meningkatkan daya tahan baterai dengan
menangguhkan aktivitas CPU dan jaringan bila pengguna mencabut steker perangkat,
diam, dan layar dinonaktifkan. Android N
menyempurnakan Doze lebih jauh dengan menerapkan subset CPU dan pembatasan jaringan
bila perangkat dicabut stekernya dan layar dinonaktifkan, namun tidak harus
Diperkenalkan dalam Android 6.0 (API level 23), Istirahatkan meningkatkan daya tahan baterai dengan
menangguhkan aktivitas CPU dan jaringan bila pengguna tidak mencabut perangkat,
tidak bergerak, dan layar dinonaktifkan. Android N lebih
menyempurnakan Istirahatkan dengan menerapkan subset CPU dan pembatasan jaringan
bila perangkat dicabut dan layar dinonaktifkan, namun tidak harus
diam, misalnya, bila handset dibawa bepergian di saku pengguna.
</p>
<img src="{@docRoot}preview/images/doze-diagram-1.png" alt="" height="251px" id="figure1" />
<p class="img-caption">
<strong>Gambar 1.</strong> Ilustrasi tentang cara Doze menerapkan pembatasan
aktivitas sistem tingkat pertama untuk meningkatkan daya tahan baterai.
<strong>Gambar 1.</strong> Ilustrasi tentang cara Istirahatkan menerapkan pembatasan
aktivitas sistem level pertama untuk meningkatkan daya tahan baterai.
</p>
<p>
Bila perangkat sedang menggunakan daya baterai, dan layar telah nonaktif selama jangka waktu
tertentu, perangkat akan memasuki Doze dan menerapkan pembatasan subset pertama: Perangkat
akan menutup akses jaringan aplikasi, serta menangguhkan pekerjaan dan sinkronisasi. Jika perangkat
sedang diam selama jangka waktu tertentu setelah memasuki Doze, sistem akan menerapkan pembatasan
Doze lainnya terhadap alarm {@link android.os.PowerManager.WakeLock},
tertentu, perangkat akan memasuki Istirahatkan dan menerapkan subset pembatasan pertama: Perangkat
akan menutup akses jaringan aplikasi, serta menangguhkan pekerjaan dan sinkronisasi. Jika perangkat sedang
diam selama jangka waktu tertentu setelah memasuki Istirahatkan, sistem akan menerapkan
pembatasan Istirahatkan selebihnya terhadap alarm {@link android.os.PowerManager.WakeLock},
{@link android.app.AlarmManager}, GPS, dan pemindaian Wi-Fi. Tidak peduli
apakah sebagian atau semua pembatasan Doze diterapkan, sistem akan membangunkan
apakah sebagian atau semua pembatasan Istirahatkan diterapkan, sistem akan membangunkan
perangkat selama jeda pemeliharaan singkat, dan selama itu aplikasi diizinkan
mengakses jaringan dan bisa mengeksekusi semua pekerjaan/sinkronisasi yang telah ditangguhkan.
</p>
@@ -95,45 +98,45 @@ page.image=images/cards/card-n-changes_2x.png
<img src="{@docRoot}preview/images/doze-diagram-2.png" alt="" id="figure2" />
<p class="img-caption">
<strong>Gambar 2.</strong> Ilustrasi tentang cara Doze menerapkan pembatasan
aktivitas sistem tingkat kedua setelah perangkat diam selama jangka waktu tertentu.
<strong>Gambar 2.</strong> Ilustrasi tentang cara Istirahatkan menerapkan pembatasan
aktivitas sistem level kedua setelah perangkat diam selama jangka waktu tertentu.
</p>
<p>
Perhatikan, mengaktifkan layar atau memasang steker perangkat akan menyebabkan keluar dari Doze dan
menghilangkan pembatasan pemrosesan ini. Perilaku tambahan ini tidak
Perhatikan, mengaktifkan layar atau mencolokkan steker perangkat akan mengeluarkan dari Istirahatkan
dan membuang pembatasan pemrosesan ini. Perilaku tambahan ini tidak
memengaruhi rekomendasi dan praktik terbaik dalam menyesuaikan aplikasi Anda dengan versi
Doze sebelumnya yang diperkenalkan dalam Android 6.0 (API level 23), seperti yang dibahas di
Istirahatkan sebelumnya yang diperkenalkan dalam Android 6.0 (API level 23), seperti yang dibahas di
<a href="{@docRoot}training/monitoring-device-state/doze-standby.html">
Mengoptimalkan untuk Doze dan App Standby</a>. Anda tetap harus
mengikuti rekomendasi itu, seperti menggunakan Google Cloud Messaging (GCM) untuk
mengirim dan menerima pesan, dan mulai merencanakan pembaruan untuk mengakomodasi
perilaku Doze tambahan.
Mengoptimalkan untuk Istirahatkan dan Aplikasi Siaga</a>. Anda tetap harus
mengikuti rekomendasi itu, seperti menggunakan Google Cloud Messaging (GCM) untuk
mengirim dan menerima pesan, serta mulai merencanakan pembaruan
untuk mengakomodasi perilaku Istirahatkan tambahan.
</p>
<h3 id="bg-opt">Project Svelte: Optimisasi Latar Belakang</h3>
<h3 id="bg-opt">Project Svelte: Optimalisasi Latar Belakang</h3>
<p>
Android N menghilangkan tiga siaran implisit untuk membantu mengoptimalkan
Android N membuang tiga siaran implisit untuk membantu mengoptimalkan
penggunaan memori dan konsumsi daya. Perubahan ini penting karena siaran
implisit sering memulai aplikasi yang telah didaftarkan untuk mendengarkannya di
latar belakang. Menghilangkan siaran ini bisa sangat menguntungkan kinerja perangkat dan pengalaman
pengguna.
latar belakang. Membuang siaran ini bisa sangat menguntungkan
kinerja perangkat dan pengalaman pengguna.
</p>
<p>
Perangkat seluler sering mengalami perubahan konektivitas, seperti saat berpindah
Perangkat seluler seringkali mengalami perubahan konektivitas, seperti saat berpindah
antara Wi-Fi dan data seluler. Saat ini, aplikasi bisa memantau perubahan dalam
konektivitas dengan mendaftarkan suatu penerima untuk siaran implisit {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} dalam manifes
mereka. Karena banyak aplikasi yang didaftarkan untuk menerima siaran ini, switch
jaringan tunggal bisa menyebabkan semuanya aktif dan memproses siaran tersebut
mereka. Karena banyak aplikasi yang didaftarkan untuk menerima siaran ini, switch jaringan tunggal
bisa menyebabkan semuanya aktif dan memproses siaran tersebut
secara bersamaan.
</p>
<p>
Demikian pula, aplikasi bisa mendaftar untuk menerima siaran implisit {@link
Demikian pula, dalam Android versi sebelumnya, aplikasi bisa mendaftar untuk menerima siaran implisit {@link
android.hardware.Camera#ACTION_NEW_PICTURE} dan {@link
android.hardware.Camera#ACTION_NEW_VIDEO} dari aplikasi lain, seperti
Kamera. Bila pengguna mengambil gambar dengan aplikasi Kamera, semua aplikasi ini akan aktif
@@ -141,85 +144,135 @@ page.image=images/cards/card-n-changes_2x.png
</p>
<p>
Untuk meminimalkan masalah ini, Android N menerapkan optimisasi
Untuk meminimalkan masalah ini, Android N menerapkan optimalisasi
berikut:
</p>
<ul>
<li>Aplikasi yang menargetkan Android N tidak menerima siaran {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION}, sekalipun
memiliki entri manifes untuk meminta pemberitahuan mengenai kejadian ini. Aplikasi yang berjalan
di latar depan tetap bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread
utama jika meminta pemberitahuan dengan {@link
android.content.BroadcastReceiver}.
memiliki entri manifes untuk meminta pemberitahuan mengenai kejadian ini. Aplikasi
yang berjalan tetap bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread utama
jika mereka meminta pemberitahuan dengan {@link android.content.BroadcastReceiver}.
</li>
<li>Aplikasi tidak bisa mengirim atau menerima siaran {@link
android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Optimisasi ini
memengaruhi semua aplikasi, bukan hanya yang menargetkan Android N.
android.hardware.Camera#ACTION_NEW_VIDEO}. Optimalisasi ini
memengaruhi semua aplikasi, bukan hanya aplikasi yang menargetkan Android N.
</li>
</ul>
<p>
Rilis Android mendatang mungkin akan menghilangkan siaran implisit tambahan,
juga layanan latar belakang tak terikat. Karena itu, Anda harus menghindari atau
menghilangkan dependensi terhadap penerima yang dideklarasikan manifes untuk siaran implisit,
serta layanan latar belakang.
</p>
<p>
<p>Jika aplikasi Anda menggunakan intent ini, Anda harus membuang dependensi padanya
secepat mungkin agar Anda bisa menargetkan perangkat Android N dengan benar.
Kerangka kerja Android menyediakan beberapa solusi untuk mengurangi kebutuhan akan
siaran implisit atau layanan latar belakang ini. Misalnya, {@link
siaran implisit ini. Misalnya, {@link
android.app.job.JobScheduler} API menyediakan mekanisme yang tangguh untuk menjadwalkan
operasi jaringan bila syarat yang ditetapkan terpenuhi, misalnya koneksi ke suatu
jaringan berbiaya tetap. Anda bahkan bisa menggunakan {@link
android.app.job.JobScheduler} untuk bereaksi terhadap perubahan kepada penyedia konten.
operasi jaringan bila kondisi yang ditetapkan, seperti koneksi ke jaringan
berbiaya tetap, terpenuhi. Anda juga dapat menggunakan {@link
android.app.job.JobScheduler} untuk bereaksi terhadap perubahan pada penyedia materi.
</p>
<p>
Untuk informasi selengkapnya tentang perubahan perilaku ini dan cara menyesuaikan aplikasi Anda,
Untuk informasi selengkapnya tentang optimalisasi latar belakang di N dan cara menyesuaikan aplikasi Anda,
lihat <a href="{@docRoot}preview/features/background-optimization.html">Optimalisasi
Latar Belakang</a>.
</p>
<h2 id="perm">Perubahan Izin</h2>
<p>
Android N menyertakan perubahan pada izin yang bisa memengaruhi aplikasi Anda,
termasuk izin akun pengguna dan izin baru untuk menulis ke
penyimpanan eksternal. Inilah rangkuman izin-izin yang telah berubah dalam
preview:
Android N menyertakan perubahan pada izin yang bisa memengaruhi aplikasi Anda.
</p>
<h3 id="permfilesys">Perubahan izin sistem file</h3>
<p>
Guna meningkatkan keamanan file privat, direktori privat
aplikasi yang menargetkan Android N atau yang lebih tinggi memiliki akses terbatas (<code>0700</code>).
Pengaturan ini mencegah kebocoran metadata dari file privat, seperti ukuran
atau eksistensi. Perubahan izin ini memiliki beberapa efek samping:
</p>
<ul>
<li>{@code GET_ACCOUNTS} (Tidak digunakan lagi)
<p>
Izin GET_ACCOUNTS sekarang tidak digunakan lagi. Sistem mengabaikan izin ini
untuk aplikasi yang menargetkan Android N.
<li>
Izin file privat tidak boleh dianggap remeh oleh pemilik,
dan usaha untuk melakukannya menggunakan
{@link android.content.Context#MODE_WORLD_READABLE} dan/atau
{@link android.content.Context#MODE_WORLD_WRITEABLE}, akan memicu sebuah
{@link java.lang.SecurityException}.
<p class="note">
<strong>Catatan:</strong> Seperti sebelumnya, pembatasan ini tidak sepenuhnya diterapkan.
Aplikasi mungkin masih memodifikasi izin ke direktori privat mereka menggunakan
API asal atau {@link java.io.File File} API. Akan tetapi, kami sangat
tidak menyarankan Anda meremehkan izin direktori privat.
</p>
</li>
<li>
Meneruskan URI <code>file://</code> di luar domain paket dapat meninggalkan
penerima dengan jalur yang tidak bisa di akses. Karena itu, upaya untuk meneruskan URI
<code>file://</code> akan memicu
<code>FileUriExposedException</code>. Cara yang disarankan adalah
materi file privat menggunakan {@link
android.support.v4.content.FileProvider}.
</li>
<li>
{@link android.app.DownloadManager} tidak bisa lagi berbagi
file yang tersimpan secara privat berdasarkan nama file. Aplikasi lawas dapat mengakibatkan
jalur yang tidak dapat diakses saat mengakses {@link
android.app.DownloadManager#COLUMN_LOCAL_FILENAME}. Aplikasi yang menargetkan
Android N atau yang lebih tinggi akan memicu {@link java.lang.SecurityException} saat
berupaya mengakses
{@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}.
Aplikasi lawas yang menyetel lokasi unduhan ke lokasi publik dengan
menggunakan
{@link
android.app.DownloadManager.Request#setDestinationInExternalFilesDir
DownloadManager.Request.setDestinationInExternalFilesDir()} atau
{@link
android.app.DownloadManager.Request#setDestinationInExternalPublicDir
DownloadManager.Request.setDestinationInExternalPublicDir()}
tetap bisa mengakses jalur tersebut di
{@link android.app.DownloadManager#COLUMN_LOCAL_FILENAME}, akan tetapi,
metode ini sangat tidak disarankan. Cara yang disarankan untuk mengakses file
yang diekspos oleh {@link android.app.DownloadManager} adalah menggunakan
{@link android.content.ContentResolver#openFileDescriptor
ContentResolver.openFileDescriptor()}.
</li>
</ul>
<h2 id="sharing-files">Berbagi File Antar Aplikasi</h2>
<p>
Untuk aplikasi yang menargetkan Android N, kerangka kerja Android menerapkan
kebijakan {@link android.os.StrictMode} API yang melarang mengekspos URI {@code file://}
di luar aplikasi Anda. Jika sebuah intent berisi URI file meninggalkan aplikasi Anda, aplikasi tersebut akan gagal
dengan pengecualian {@code FileUriExposedException}.
</p>
<p>
Untuk berbagi file antar aplikasi, Anda harus mengirim URI {@code content://}
dan memberikan izin akses sementara pada URI. Cara termudah untuk memberikan izin ini adalah dengan
menggunakan kelas {@link android.support.v4.content.FileProvider}. Untuk informasi selengkapnya
mengenai izin dan berbagi file,
lihat <a href="{@docRoot}training/secure-file-sharing/index.html">Berbagi File</a>.
</p>
<h2 id="accessibility">Peningkatan Aksesibilitas</h2>
<p>
Android N menyertakan perubahan yang bertujuan meningkatkan kegunaan
platform ini untuk pengguna dengan penglihatan yang kurang atau lemah. Perubahan ini secara umum tidak
akan mengharuskan perubahan kode dalam aplikasi Anda, akan tetapi Anda harus meninjau
fitur ini dan mengujinya dengan aplikasi Anda untuk menilai dampak potensial terhadap pengalaman
platform untuk pengguna dengan penglihatan yang rendah atau lemah. Perubahan ini umumnya tidak
memerlukan perubahan kode dalam aplikasi Anda, akan tetapi Anda harus memeriksa
fitur ini dan mengujinya dengan aplikasi untuk menilai kemungkinan dampaknya terhadap pengalaman
pengguna.
</p>
<h3 id="screen-zoom">Zoom Layar</h3>
<h3 id="screen-zoom">Perbesaran Layar</h3>
<p>
Android N memungkinkan pengguna untuk mengatur <strong>Display size</strong> yang akan memperbesar
Android N memungkinkan pengguna menyetel <strong>Display size</strong> yang akan memperbesar
atau memperkecil semua elemen pada layar, sehingga meningkatkan aksesibilitas perangkat
bagi pengguna yang kurang melihat. Pengguna tidak bisa memperbesar layar melewati lebar layar
minimum <a href="http://developer.android.com/guide/topics/resources/providing-resources.html">
@@ -243,25 +296,25 @@ page.image=images/cards/card-n-changes_2x.png
<p>
Bila densitas perangkat berubah, sistem akan memberi tahu aplikasi yang sedang berjalan dengan
Bila kepadatan perangkat berubah, sistem akan memberi tahu aplikasi yang sedang berjalan dengan
cara berikut:
</p>
<ul>
<li>Jika aplikasi menargetkan API level 23 atau yang lebih rendah, sistem secara otomatis akan mematikan
semua proses latar belakang. Artinya, jika pengguna beralih dari
aplikasi tersebut untuk membuka layar <em>Settings</em> dan mengubah
pengaturan <strong>Display size</strong>, maka sistem akan mematikan aplikasi tersebut dengan cara yang
aplikasi tersebut untuk membuka layar <em>Settings</em> dan mengubah
setelan <strong>Display size</strong>, maka sistem akan mematikan aplikasi tersebut dengan cara yang
sama dengan saat memori tinggal sedikit. Jika aplikasi memiliki beberapa proses
latar depan, sistem akan memberi tahu proses tersebut mengenai perubahan konfigurasi seperti
dijelaskan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Runtime</a>, seolah-olah orientasi perangkat telah berubah.
Waktu Proses</a>, seolah-olah orientasi perangkat telah berubah.
</li>
<li>Jika sebuah aplikasi menargetkan Android N, semua prosesnya
(latar depan dan latar belakang) akan diberi tahu mengenai perubahan konfigurasi seperti
(latar depan dan latar belakang) akan diberi tahu mengenai perubahan konfigurasi seperti
dijelaskan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Runtime</a>.
Waktu Proses</a>.
</li>
</ul>
@@ -273,24 +326,24 @@ page.image=images/cards/card-n-changes_2x.png
<ul>
<li>Uji aplikasi Anda pada perangkat dengan lebar layar <code><a href=
"{@docRoot}guide/topics/resources/providing-resources.html">sw320dp</a></code>
dan pastikan aplikasinya berjalan dengan semestinya.
dan pastikan aplikasi berjalan dengan semestinya.
</li>
<li>Bila konfigurasi perangkat berubah, perbarui informasi cache
yang bergantung pada densitas, seperti bitmap di cache atau sumber daya yang dimuat dari
yang bergantung pada kepadatan, seperti bitmap di cache atau sumber daya yang dimuat dari
jaringan. Periksa perubahan konfigurasi bila aplikasi melanjutkan dari status dihentikan
sementara.
<p class="note">
<strong>Catatan:</strong> Jika Anda menyimpan sementara data yang bergantung pada konfigurasi, ada
<strong>Catatan:</strong> Catatan: Jika Anda meng-cache data yang bergantung pada konfigurasi, ada
baiknya untuk menyertakan metadata yang relevan seperti ukuran layar
atau densitas piksel yang sesuai untuk data tersebut. Menyimpan metadata ini memungkinkan Anda untuk
memutuskan apakah Anda perlu memperbarui data cache setelah perubahan
atau kepadatan piksel yang sesuai untuk data tersebut. Menyimpan metadata ini memungkinkan Anda untuk
memutuskan apakah Anda perlu segarkan data cache setelah perubahan
konfigurasi.
</p>
</li>
<li>Hindari menetapkan dimensi dengan satuan px, karena satuan ini tidak diskalakan dengan
densitas layar. Sebagai gantinya, tetapkan dimensi dengan satuan <a href="{@docRoot}guide/practices/screens_support.html">piksel yang tidak bergantung densitas
kepadatan layar. Sebagai gantinya, tetapkan dimensi dengan satuan <a href="{@docRoot}guide/practices/screens_support.html">piksel yang tidak bergantung kepadatan
</a> (<code>dp</code>).
</li>
</ul>
@@ -298,32 +351,32 @@ page.image=images/cards/card-n-changes_2x.png
<h3 id="vision-settings">Vision Settings di Setup Wizard</h3>
<p>
Android N menyertakan Vision Settings pada layar Welcome, di mana pengguna bisa
menyiapkan pengaturan aksesibilitas berikut pada perangkat baru:
Android N menyertakan Vision Settings di layar Sambutan, di mana pengguna bisa
menyiapkan setelan aksesibilitas berikut pada perangkat baru:
<strong>Magnification gesture</strong>, <strong>Font size</strong>,
<strong>Display size</strong> dan <strong>TalkBack</strong>. Perubahan ini
menambah visibilitas bug yang terkait dengan berbagai pengaturan layar. Untuk
menilai dampak dari fitur ini, Anda harus menguji aplikasi dengan mengaktifkan
pengaturan ini. Anda bisa menemukan pengaturan ini pada <strong>Settings &gt;
meningkatkan visibilitas bug terkait dengan setelan layar yang berbeda. Untuk
mengurangi dampak fitur ini, Anda harus menguji aplikasi dengan setelan ini
diaktifkan. Anda bisa menemukannya pada <strong>Settings &gt;
Accessibility</strong>.
</p>
<h2 id="ndk">Menautkan Aplikasi NDK ke Pustaka Platform</h2>
<h2 id="ndk">Penautan Aplikasi NDK ke Pustaka Platform</h2>
<p>
Android N menyertakan perubahan namespace untuk mencegah pemuatan API non-publik.
Jika Anda menggunakan NDK, Anda hanya bisa menggunakan API publik dari platform
Android N menyertakan perubahan ruang nama untuk mencegah pemuatan API non-publik.
Jika menggunakan NDK, Anda hanya boleh menggunakan API publik dari platform
Android. Menggunakan API non-publik dalam rilis Android resmi berikutnya
bisa menyebabkan aplikasi mengalami crash.
bisa menyebabkan aplikasi mogok.
</p>
<p>
Untuk memperingatkan Anda terhadap penggunaan API non-publik, aplikasi yang berjalan pada perangkat
Android N akan menghasilkan kesalahan output logcat bila sebuah aplikasi memanggil API non-publik.
Kesalahan ini juga ditampilkan pada layar perangkat berupa pesan untuk membantu
meningkatkan kesadaran akan situasi ini. Anda harus meninjau kode aplikasi untuk
menghilangkan penggunaan API platform non-publik dan secara saksama menguji aplikasi Anda menggunakan
perangkat preview atau emulator.
Untuk memberi tahu Anda agar menggunakan API non-publik, aplikasi yang berjalan pada perangkat
Android N akan menghasilkan kesalahan dalam keluaran logcat bila aplikasi memanggil API non-publik.
Kesalahan ini juga ditampilkan di layar perangkat berupa pesan untuk membantu
meningkatkan kepedulian terhadap situasi ini. Anda harus memeriksa kode aplikasi untuk
membuang penggunaan API platform non-publik dan secara saksama menguji aplikasi Anda menggunakan
perangkat pratinjau atau emulator.
</p>
<p>
@@ -331,13 +384,13 @@ page.image=images/cards/card-n-changes_2x.png
perbaikan tipikal guna menggantikan API privat umum dengan padanan API publik.
Anda mungkin juga menautkan ke pustaka platform tanpa menyadarinya,
terutama jika aplikasi Anda menggunakan pustaka yang merupakan bagian dari platform ini (seperti
<code>libpng</code>), namun bukan bagian dari NDK. Dalam hal ini, pastikan
<code>libpng</code>), namun bukan bagian dari NDK. Dalam hal itu, pastikan
APK Anda berisi semua file .so yang ingin ditautkan.
</p>
<p class="caution">
<strong>Peringatan:</strong> Beberapa pustaka pihak ketiga mungkin menautkan ke API
non-publik. Jika aplikasi Anda menggunakan pustaka ini, aplikasi Anda mungkin akan crash saat dijalankan
<strong>Perhatian:</strong> Beberapa pustaka pihak ketiga mungkin menautkan ke API
non-publik. Jika menggunakan pustaka ini, aplikasi Anda bisa mogok saat dijalankan
pada rilis resmi Android berikutnya.
</p>
@@ -345,10 +398,10 @@ page.image=images/cards/card-n-changes_2x.png
Aplikasi tidak boleh bergantung pada atau menggunakan pustaka bawaan yang tidak disertakan dalam
NDK, karena bisa mengalami perubahan, atau dipindahkan dari satu rilis Android ke
rilis lainnya. Peralihan dari OpenSSL ke BoringSSL merupakan satu contoh dari perubahan semacam ini.
Selain itu, perbedaan perangkat juga bisa menawarkan tingkat kompatibilitas, karena
tidak ada persyaratan kompatibilitas bagi pustaka platform yang tidak disertakan
Selain itu, perangkat yang berbeda bisa menawarkan tingkat kompatibilitas yang berbeda, karena
tidak ada persyaratan kompatibilitas untuk pustaka platform yang tidak disertakan
dalam NDK. Jika Anda harus mengakses pustaka non-NDK pada perangkat yang lebih lama, jadikan
pemuatan bergantung pada level API Android.
pemuatan bergantung pada level Android API.
</p>
<p>
@@ -383,15 +436,15 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
</li>
<li>Penggunaan simbol {@code property_get} dari {@code libcutils.so} bisa
diganti dengan {@code __system_property_get} alternatif publik.
Caranya, gunakan {@code __system_property_get} dengan include berikut:
diganti dengan {@code alternative __system_property_get} publik.
Caranya, gunakan {@code __system_property_get} dengan menyertakan yang berikut:
<pre>
#include &lt;sys/system_properties.h&gt;
</pre>
</li>
<li>Penggunaan simbol {@code SSL_ctrl} dari {@code libcrypto.so} harus
diganti dengan aplikasi versi lokal. Misalnya, Anda harus menautkan
diganti dengan aplikasi versi lokal. Misalnya, Anda harus menautkan
{@code libcyrpto.a} secara statis dalam file {@code .so} atau menyertakan
{@code libcrypto.so} Anda sendiri secara dinamis dari BoringSSL atau OpenSSL dalam aplikasi Anda.
</li>
@@ -400,81 +453,158 @@ JavaVM::AttachCurrentThread from &lt;jni.h&gt;.
<h2 id="afw">Android for Work</h2>
<p>
Android N berisi perubahan untuk aplikasi yang menargetkan Android for Work, termasuk
perubahan pada instalasi sertifikat, pengaturan ulang kata sandi, manajemen pengguna
perubahan pada pemasangan sertifikat, penyetelan ulang sandi, manajemen pengguna
tambahan, dan akses ke identifier perangkat. Jika Anda membangun aplikasi untuk
lingkungan Android for Work, Anda harus meninjau perubahan ini dan memodifikasi
aplikasi sebagaimana mestinya.
</p>
<ul>
<li>Anda harus menginstal penginstal sertifikat yang didelegasikan sebelum DPC bisa
mengaturnya. Untuk profil dan aplikasi pemilik perangkat yang menargetkan N SDK, Anda harus
menginstal penginstal sertifikat yang didelegasikan sebelum pengontrol kebijakan
<li>Anda harus pasang pemasang sertifikat yang didelegasikan sebelum DPC bisa
menyetelnya. Untuk aplikasi profil dan aplikasi pemilik perangkat yang menargetkan N SDK, Anda harus
pasang pemasang sertifikat yang didelegasikan sebelum pengontrol kebijakan
perangkat (DPC) memanggil
<code>DevicePolicyManager.setCertInstallerPackage()</code>. Jika penginstal
belum diinstal, sistem akan melontarkan
<code>DevicePolicyManager.setCertInstallerPackage()</code>. Jika pemasang
belum dipasang, sistem akan melontarkan
<code>IllegalArgumentException</code>.
</li>
<li>Pembatasan pengaturan ulang kata sandi untuk admin perangkat sekarang diterapkan kepada pemilik
<li>Pembatasan sandi penyetelan ulang untuk admin perangkat sekarang diterapkan ke pemilik
profil. Admin perangkat tidak bisa lagi menggunakan
<code>DevicePolicyManager.resetPassword()</code> untuk menghapus kata sandi atau mengubah
kata sandi yang sudah ditetapkan. Admin perangkat tetap bisa menetapkan kata sandi, namun hanya
bila perangkat belum memiliki kata sandi, PIN, atau pola.
{@code DevicePolicyManager.resetPassword()} untuk menghapus sandi atau mengubah
sandi yang sudah disetel. Admin perangkat tetap bisa menyetel sandi, namun hanya
bila perangkat belum memiliki sandi, PIN, atau pola.
</li>
<li>Pemilik perangkat dan profil bisa mengelola akun meskipun pembatasan
ditetapkan. Pemilik perangkat dan pemilik profil bisa memanggil Account Management API
telah disetel. Pemilik perangkat dan pemilik profil bisa memanggil Account Management API
sekalipun pembatasan pengguna <code>DISALLOW_MODIFY_ACCOUNTS</code> diberlakukan.
</li>
<li>Pemilik perangkat bisa mengelola pengguna tambahan dengan lebih mudah. bila perangkat
dijalankan dalam mode pemilik perangkat, pembatasan <code>DISALLOW_ADD_USER</code>
secara otomatis ditetapkan. Ini mencegah pengguna membuat pengguna tambahan yang
tidak terkelola. Selain itu, metode <code>CreateUser()</code> dan
<code>createAndInitial()</code> tidak digunakan lagi; metode
<code>DevicePolicyManager.createAndManageUser()</code> baru telah menggantikannya.
<li>Pemilik perangkat bisa mengelola pengguna tambahan lebih mudah. Bila perangkat
berjalan dalam mode pemilik perangkat, maka pembatasan <code>DISALLOW_ADD_USER</code>
secara otomatis akan ditetapkan. Ini mencegah pengguna membuat pengguna tambahan yang
tidak terkelola. Selain itu, <code>CreateUser()</code> dan
<code>createAndInitializeUser()</code> metode tidak digunakan lagi; metode
<code>DevicePolicyManager.createAndManageUser()</code> telah menggantikannya.
</li>
<li>Pemilik perangkat bisa mengakses identifier perangkat. Pemilik perangkat bisa mengakses
alamat MAC Wi-Fi dari sebuah perangkat, menggunakan
alamat MAC Wi-Fi dari perangkat, menggunakan
<code>DevicePolicyManagewr.getWifiMacAddress()</code>. Jika Wi-Fi belum pernah
diaktifkan pada perangkat tersebut, metode ini akan mengembalikan nilai {@code null}.
</li>
<li>Setelan Mode Kerja mengontrol akses ke aplikasi kerja. Bila mode kerja tidak aktif, peluncur sistem
akan menunjukkan aplikasi kerja tidak tersedia dengan membuat warnanya jadi abu-abu. Mengaktifkan kembali
mode kerja akan memulihkan perilaku normal.
</ul>
<p>
Untuk informasi selengkapnya tentang perubahan pada Android for Work di Android N, lihat
Untuk informasi selengkapnya tentang perubahan Android for Work di Android N, lihat
<a href="{@docRoot}preview/features/afw.html">Pembaruan Android for Work</a>.
</p>
<h2 id="other">Poin penting lainnya</h2>
<h2 id="annotations">Retensi Anotasi</h2>
<p>
Android N memperbaiki bug dengan visibilitas anotasi diabaikan.
Masalah ini mengaktifkan waktu proses untuk mengakses anotasi yang seharusnya tidak bisa
dilakukan. Anotasi ini termasuk:
</p>
<ul>
<li>{@code VISIBILITY_BUILD}: Dimaksudkan agar hanya bisa terlihat pada waktu pembuatan.</li>
<li>{@code VISIBILITY_SYSTEM}: Dimaksud agar bisa terlihat pada waktu proses, namun hanya pada
sistem yang mendasarinya.</li>
</ul>
<p>
Jika aplikasi Anda mengandalkan perilaku ini, tambahkan kebijakan retensi untuk anotasi yang harus
tersedia di waktu proses. Caranya dengan menggunakan {@code @Retention(RetentionPolicy.RUNTIME)}.
</p>
<h2 id="other">Poin Penting Lainnya</h2>
<ul>
<li>Bila aplikasi berjalan pada Android N, namun menargetkan level API yang lebih rendah,
dan pengguna mengubah ukuran tampilan, proses aplikasi akan dimatikan. Aplikasi
harus dapat menangani skenario ini dengan lancar. Jika tidak, maka akan terjadi crash
harus dapat menangani skenario ini dengan lancar. Jika tidak, maka akan mogok
bila pengguna memulihkannya dari Recents.
<p>
Anda harus menguji aplikasi untuk memastikan
perilaku ini tidak terjadi.
Anda bisa melakukannya dengan menyebabkan suatu crash yang mirip
Anda bisa melakukannya dengan menyebabkan suatu mogok yang identik
saat mematikan aplikasi secara manual melalui DDMS.
</p>
<p>
Aplikasi yang menargetkan N dan yang di atasnya tidak secara otomatis dimatikan saat perubahan densitas;
Aplikasi yang menargetkan N dan yang di atasnya tidak secara otomatis dimatikan saat perubahan kepadatan;
akan tetapi, aplikasi tersebut mungkin tetap merespons perubahan konfigurasi dengan buruk.
</p>
</li>
<li>
Aplikasi pada Android N harus mampu menangani perubahan konfigurasi dengan lancar,
dan tidak boleh mengalami crash pada start selanjutnya. Anda bisa memverifikasi perilaku aplikasi
dan tidak boleh mengalami mogok pada start selanjutnya. Anda bisa memverifikasi perilaku aplikasi
dengan mengubah ukuran font (<strong>Setting</strong> &gt;
<strong>Display</strong> &gt; <strong>Font size</strong>), kemudian memulihkan
aplikasi dari Recents.
</li>
<li>
Dikarenakan adanya bug di versi Android sebelumnya, sistem tidak menandai penulisan
ke soket TCP di thread utama sebagai pelanggaran mode-ketat. Android N memperbaiki bug ini.
Aplikasi yang menunjukkan perilaku ini kini melontarkan sebuah {@code android.os.NetworkOnMainThreadException}.
Secara umum, melakukan operasi jaringan di thread utama tidak baik karena operasi ini
biasanya memiliki latensi tinggi yang menyebabkan ANR dan jank.
</li>
<li>
Kelompok metode {@code Debug.startMethodTracing()} kini default ke
keluaran penyimpanan di direktori paket tertentu di penyimpanan bersama,
sebagai ganti di level teratas
kartu SD. Berarti aplikasi tidak perlu lagi meminta izin {@code WRITE_EXTERNAL_STORAGE} untuk menggunakan API ini.
</li>
<li>
Banyak platform API yang kini mulai memeriksa beban besar yang dikirim
ke seluruh transaksi {@link android.os.Binder}, dan sistem
kini melontarkan kembali {@code TransactionTooLargeExceptions}
sebagai {@code RuntimeExceptions}, sebagai ganti logging secara diam-diam atau menyembunyikannya. Satu contoh
umum adalah menyimpan terlalu banyak data di
{@link android.app.Activity#onSaveInstanceState Activity.onSaveInstanceState()},
yang menyebabkan {@code ActivityThread.StopInfo} melontarkan
{@code RuntimeException} bila aplikasi Anda menargetkan Android N.
</li>
<li>
Jika sebuah aplikasi mengeposkan tugas {@link java.lang.Runnable} ke{@link android.view.View}, dan
{@link android.view.View}
tidak terpasang ke jendela, sistem
akan mengantrekan tugas {@link java.lang.Runnable} dengan {@link android.view.View};
tugas {@link java.lang.Runnable} tidak akan dieksekusi hingga
{@link android.view.View} terpasang
ke jendela. Perilaku ini mengatasi bug berikut:
<ul>
<li>Jika sebuah aplikasi mengeposkan ke {@link android.view.View} dari thread selain thread UI jendela yang dimaksud,
maka {@link java.lang.Runnable} mungkin akan menjalankan thread yang salah.
</li>
<li>Jika tugas {@link java.lang.Runnable} diposkan dari thread selain
looper-thread, aplikasi bisa mengekspos tugas {@link java.lang.Runnable}.</li>
</ul>
</li>
<li>
Jika sebuah aplikasi di Android N dengan
izin{@link android.Manifest.permission#DELETE_PACKAGES DELETE_PACKAGES}
mencoba menghapus sebuah paket, namun sebuah aplikasi berbeda telah memasang paket itu,
sistem akan memerlukan konfirmasi pengguna. Dalam skenario ini, aplikasi harus mengharapkan
{@link android.content.pm.PackageInstaller#STATUS_PENDING_USER_ACTION STATUS_PENDING_USER_ACTION}
sebagai status kembalian bila memanggil
{@link android.content.pm.PackageInstaller#uninstall PackageInstaller.uninstall()}.
</li>
</ul>

View File

@@ -0,0 +1,324 @@
page.title=Menerapkan Citra OTA Perangkat
@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">Sebelum mengunduh dan memasang
komponen Android Preview SDK, Anda harus menyetujui ketentuan dan persyaratan
berikut.</p>
<h2 class="norule">Ketentuan dan Persyaratan</h2>
<div class="sdk-terms" onfocus="this.blur()" style="width:678px">
Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
1. Pengantar
1.1 Android SDK Preview (dalam Perjanjian Lisensi ini disebut "Pratinjau" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Pratinjau, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan Google dalam kaitannya dengan penggunaan Pratinjau oleh Anda.
1.2 "Android" berarti tumpukan perangkat lunak Android untuk perangkat, seperti yang tersedia di Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
1.3 “Kompatibel dengan Android” berarti segala implementasi Android yang (i) sesuai dengan Android Compatibility Definition Document, yang bisa ditemukan di situs web kompatibilitas Android (http://source.android.com/compatibility) dan yang selalu diperbarui; serta (ii) berhasil lulus Android Compatibility Test Suite (CTS).
1.4 "Google" berarti Google Inc., perusahaan asal Delaware dengan kantor bisnis utama di 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
2. Menerima Perjanjian Lisensi
2.1 Agar bisa menggunakan Pratinjau, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan Pratinjau jika tidak menerima Perjanjian Lisensi.
2.2 Dengan mengklik untuk menerima dan/atau menggunakan Pratinjau, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
2.3 Anda tidak boleh menggunakan Pratinjau dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Pratinjau berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Pratinjau.
2.4 Jika Anda akan menggunakan Pratinjau di lingkungan perusahaan atau organisasi Anda, berarti Anda setuju untuk terikat oleh Perjanjian Lisensi atas nama perusahaan Anda atau entitas lainnya, serta Anda mewakili dan menjamin bahwa Anda memiliki kewenangan hukum penuh untuk mengikat perusahaan Anda atau entitas tersebut pada Perjanjian Lisensi ini. Jika Anda tidak memiliki kewenangan yang disyaratkan, Anda tidak boleh menerima Perjanjian Lisensi atau menggunakan Pratinjau atas nama perusahaan Anda atau entitas lainnya.
3. Lisensi Pratinjau dari Google
3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi yang tidak bisa disublisensikan, non-eksklusif, tidak bisa dialihkan, bebas royalti, bersifat global dan terbatas dalam menggunakan Pratinjau hanya untuk keperluan pengembangan aplikasi yang kompatibel untuk diimplementasikan pada Android.
3.2 Anda tidak boleh menggunakan Pratinjau ini untuk mengembangkan aplikasi platform lain (termasuk implementasi yang tidak kompatibel pada Android) atau untuk mengembangkan SDK lain. Anda tentu saja bebas mengembangkan aplikasi untuk platform lain, termasuk implementasi yang tidak kompatibel pada Android, karena Pratinjau ini tidak digunakan untuk tujuan tersebut.
3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Pratinjau, termasuk Hak Kekayaan Intelektual yang terdapat dalam Pratinjau. "Hak Kekayaan Intelektual" berarti setiap dan semua hak yang berdasarkan pada hukum paten, hukum hak cipta, hukum rahasia dagang, hukum merek dagang, dan setiap dan semua hak kepemilikan lainnya. Google memiliki semua hak yang tidak secara tersurat diberikan kepada Anda.
3.4 Anda tidak boleh menggunakan Pratinjau untuk tujuan apa pun yang tidak secara tersurat diizinkan dalam Perjanjian Lisensi ini. Kecuali sejauh yang diperlukan oleh lisensi pihak ketiga yang berlaku, Anda tidak boleh: (a) menyalin (kecuali untuk keperluan pencadangan), memodifikasi, mengadaptasi, mendistribusikan kembali, mendekompilasi, merekayasa balik, membongkar atau membuat karya turunan dari Pratinjau atau bagian apa pun dari Pratinjau; atau (b) memuat bagian apa pun dari Pratinjau ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Pratinjau dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Pratinjau.
3.5 Penggunaan, reproduksi dan distribusi komponen Pratinjau yang berlisensi perangkat lunak sumber terbuka diatur semata-mata oleh ketentuan lisensi perangkat lunak sumber terbuka tersebut dan bukan oleh Perjanjian Lisensi ini. Anda menyetujui bagian selebihnya dari lisensi dengan maksud baik sehubungan dengan lisensi perangkat lunak sumber terbuka tersebut sesuai dengan semua hak yang diberikan dan untuk menahan diri dari segala tindakan yang mungkin akan mengakhiri, menangguhkan, atau melanggar hak tersebut.
3.6 Anda setuju bahwa bentuk dan sifat Pratinjau yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Pratinjau mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Pratinjau sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Pratinjau (atau fitur apa pun dalam Pratinjau) kepada Anda atau pengguna pada umumnya atas kebijakan Google semata, tanpa pemberitahuan sebelumnya kepada Anda.
3.7 Perjanjian Lisensi ini tidak memberi Anda hak untuk menggunakan nama dagang, merek dagang, merek layanan, logo, nama domain, atau fitur merek khas Google lainnya.
3.8 Anda setuju bahwa Anda tidak akan membuang, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Pratinjau.
4. Penggunaan Pratinjau oleh Anda
4.1 Google setuju bahwa Perjanjian Lisensi ini tidak memberi Google hak, kuasa, dan kepentingan hukum dari Anda (atau pemberi lisensi Anda) dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Pratinjau ini, termasuk kekayaan intelektual yang ada dalam aplikasi tersebut.
4.2 Anda setuju untuk menggunakan Pratinjau dan menulis aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi, dan (b) hukum yang berlaku, peraturan atau praktik yang diterima secara umum atau panduan dalam yurisdiksi terkait (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang terkait).
4.3 Anda setuju jika Anda menggunakan Pratinjau untuk mengembangkan aplikasi, Anda akan melindungi hak privasi dan hak hukum pengguna. Jika pengguna memberikan nama pengguna, sandi, atau informasi login atau informasi pribadinya, Anda harus membuat pengguna tersebut menyadari bahwa informasi yang diberikannya akan bisa digunakan oleh aplikasi Anda, dan Anda harus memberikan perlindungan dan pemberitahuan privasi yang memadai secara hukum bagi pengguna tersebut. Jika aplikasi Anda menyimpan informasi pribadi atau sensitif yang diberikan oleh pengguna, aplikasi Anda harus melakukannya dengan aman. Jika pengguna memberikan informasi Akun Google, aplikasi Anda hanya boleh menggunakan informasi tersebut untuk mengakses Akun Google pengguna saat, dan untuk tujuan terbatas di mana, pengguna tersebut telah memberikan izin kepada Anda untuk melakukannya.
4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Pratinjau, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti layanan Google atau pihak ketiga lainnya.
4.5 Anda setuju bertanggung jawab penuh untuk (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) data, materi, atau sumber daya apa pun yang Anda buat, kirimkan atau tampilkan melalui Android dan/atau aplikasi untuk Android, dan terhadap konsekuensi tindakan Anda (termasuk kerugian atau kerusakan apa pun yang mungkin dialami Google).
4.6 Anda setuju bertanggung jawab penuh terhadap (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) pelanggaran kewajiban Anda berdasarkan Perjanjian Lisensi ini, kontrak pihak ketiga yang berlaku atau Ketentuan Layanan, atau hukum atau peraturan yang berlaku, dan terhadap konsekuensi (termasuk kerugian atau kerusakan yang mungkin dialami Google atau pihak ketiga lainnya) akibat pelanggaran tersebut.
4.7 Pratinjau ini dalam tahap pengembangan, dan pengujian serta masukan Anda merupakan bagian penting dalam proses pengembangan. Dengan menggunakan Pratinjau, Anda mengakui bahwa implementasi beberapa fitur masih dalam tahap pengembangan dan bahwa Anda tidak seharusnya mengandalkan Pratinjau berfungsi sepenuhnya sebagaimana pada rilis stabil. Anda setuju untuk tidak mendistribusikan atau mengirimkan untuk umum penggunaan aplikasi menggunakan Pratinjau karena Pratinjau ini tidak akan lagi didukung setelah Android SDK dirilis secara resmi.
5. Kredensial Pengembang Anda
5.1 Anda setuju bertanggung jawab untuk menjaga kerahasiaan semua kredensial pengembang yang mungkin diberikan Google kepada Anda atau yang mungkin Anda pilih sendiri dan bahwa Anda akan bertanggung jawab penuh terhadap semua aplikasi yang dikembangkan dengan kredensial pengembang Anda.
6. Privasi dan Informasi
6.1 Untuk terus berinovasi dan meningkatkan Pratinjau, Google boleh mengumpulkan statistik penggunaan tertentu dari perangkat lunak termasuk namun tidak terbatas pada identifier unik, alamat IP terkait, nomor versi perangkat lunak, dan informasi yang menjadi tempat penggunaan alat dan/atau layanan dalam Pratinjau dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Pratinjau akan memberi tahu dan meminta persetujuan Anda. Jika Anda tidak memberikan persetujuan, informasi tersebut tidak akan dikumpulkan.
6.2 Data yang dikumpulkan akan diperiksa secara agregat untuk meningkatkan Pratinjau dan dikelola sesuai dengan Kebijakan Privasi Google yang terdapat di http://www.google.com/policies/privacy.
7. Aplikasi Pihak Ketiga
7.1 Jika Anda menggunakan Pratinjau untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, materi atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, materi atau sumber daya tersebut. Anda memahami bahwa semua data, materi atau sumber daya yang mungkin Anda akses melalui aplikasi pihak ketiga merupakan tanggung jawab penuh dari pihak yang menjadi asal data tersebut dan Google tidak bertanggung jawab terhadap kerugian atau kerusakan apa pun yang mungkin Anda alami sebagai akibat menggunakan atau mengakses aplikasi, data, materi, atau sumber daya pihak ketiga tersebut.
7.2 Anda harus menyadari bahwa data, materi dan sumber daya yang diberikan kepada Anda melalui aplikasi pihak ketiga mungkin dilindungi oleh hak kekayaan intelektual yang dimiliki oleh penyedia (atau oleh orang lain atau perusahaan atas nama mereka). Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data, materi, atau sumber daya ini (baik secara keseluruhan atau sebagian) kecuali Anda secara khusus diberikan izin untuk melakukannya oleh pemilik yang bersangkutan.
7.3 Anda mengakui bahwa penggunaan Anda atas aplikasi, data, materi, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
8. Menggunakan Google API
8.1 Google API
8.1.1 Jika Anda menggunakan API (Antarmuka Pemrograman Aplikasi) untuk mengambil data dari Google, Anda mengakui bahwa data tersebut dilindungi hak kekayaan intelektual yang dimiliki Google atau pihak-pihak yang menyediakan data (atau oleh orang lain atau perusahaan atas nama mereka). Penggunaan API oleh Anda tunduk pada Ketentuan Layanan tambahan. Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data ini (baik secara keseluruhan atau sebagian) kecuali diizinkan oleh Ketentuan Layanan yang bersangkutan.
8.1.2 Jika Anda menggunakan API dalam bentuk apa pun untuk mengambil data pengguna dari Google, Anda mengakui dan menyetujui bahwa Anda akan mengambil data hanya dengan persetujuan yang jelas dari pengguna dan hanya bila, dan sebatas keperluan yang diizinkan oleh pengguna tersebut untuk Anda lakukan.
9. Mengakhiri Perjanjian Lisensi
9.1 Perjanjian Lisensi ini akan terus berlaku hingga diakhiri oleh Anda atau Google sebagaimana diatur di bawah ini.
9.2 Jika Anda ingin mengakhiri Perjanjian Lisensi ini, Anda boleh melakukannya dengan menghentikan penggunaan Pratinjau dan kredensial pengembang yang relevan.
9.3 Google boleh mengakhiri Perjanjian Lisensi ini dengan Anda kapan saja, dengan atau tanpa sebab, setelah memberi tahu Anda.
9.4 Perjanjian Lisensi akan berakhir secara otomatis tanpa pemberitahuan atau tindakan lainnya bila, mana saja yang lebih dahulu:
(A) Google berhenti menyediakan Pratinjau atau bagian Pratinjau tertentu kepada pengguna di negara tempat Anda tinggal atau negara tempat asal Anda menggunakan layanan; dan
(B) Google mengeluarkan versi rilis final dari Android SDK.
9.5 Bila Perjanjian Lisensi berakhir, lisensi yang telah diberikan kepada Anda dalam Perjanjian Lisensi akan berakhir pula, Anda akan segera menghentikan semua penggunaan Pratinjau, dan ketetapan paragraf 10, 11, 12, dan 14 akan terus berlaku secara tak terbatas.
10. SANGGAHAN
10.1 ANDA SEPENUHNYA MEMAHAMI DAN MENYETUJUI BAHWA PENGGUNAAN PRATINJAU OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PRATINJAU INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
10.2 PENGGUNAAN PRATINJAU DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PRATINJAU OLEH ANDA ADALAH ATAS KEHENDAK DAN RISIKO ANDA SENDIRI DAN ANDA BERTANGGUNG JAWAB PENUH TERHADAP KERUSAKAN PADA SISTEM KOMPUTER ATAU PERANGKAT LAIN ATAU HILANGNYA DATA AKIBAT PENGGUNAAN TERSEBUT. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PRATINJAU BUKANLAH RILIS STABIL DAN MUNGKIN BERISI KESALAHAN, CACAT, DAN RISIKO KEAMANAN YANG BISA MENGAKIBATKAN KERUSAKAN SIGNIFIKAN, TERMASUK KEHILANGAN PENGGUNAAN ATAS SISTEM KOMPUTER ANDA ATAU PERANGKAT LAIN DENGAN SEPENUHNYA DAN TIDAK BISA DIPULIHKAN LAGI.
10.3 GOOGLE LEBIH LANJUT MENYANGGAH SEMUA JAMINAN DAN PERSYARATAN APA PUN, BAIK TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN TERSIRAT DAN PERSYARATAN MENGENAI DAYA JUAL, KESESUAIAN DENGAN TUJUAN TERTENTU, DAN NON-PELANGGARAN.
11. PEMBATASAN KEWAJIBAN
11.1 ANDA SEPENUHNYA MEMAHAMI DAN MENYETUJUI BAHWA GOOGLE, ANAK PERUSAHAAN DAN AFILIASINYA, DAN PEMBERI LISENSINYA TIDAK AKAN BERTANGGUNG JAWAB KEPADA ANDA BERDASARKAN TEORI KEWAJIBAN TERHADAP SEGALA KERUGIAN LANGSUNG, TIDAK LANGSUNG, INSIDENTAL, KHUSUS, JANGKA PANJANG ATAU GANTI RUGI YANG DIAKIBATKAN OLEH ANDA, TERMASUK HILANGNYA DATA, WALAUPUN GOOGLE ATAU PERWAKILANNYA TELAH DIBERI TAHU ATAU SEHARUSNYA MENGETAHUI KEMUNGKINAN TIMBULNYA KEHILANGAN TERSEBUT.
12. Penggantian Kerugian
12.1 Sejauh maksimum yang diizinkan oleh hukum, Anda setuju untuk membela, mengganti kerugian dan melepaskan tanggung jawab Google, afiliasinya beserta direksi, petugas, karyawan dan agennya dari dan terhadap setiap dan semua klaim, tindakan, gugatan, proses hukum, serta setiap dan semua kehilangan, kewajiban, kerusakan, biaya dan pengeluaran (termasuk biaya pengacara yang sewajarnya) yang timbul atau diakibatkan dari (a) penggunaan Pratinjau oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Pratinjau yang melanggar Hak Kekayaan Intelektual seseorang atau mencemarkan nama baik seseorang atau melanggar hak mereka berkaitan dengan publisitas atau privasi, dan (c) ketidakpatuhan Anda terhadap Perjanjian Lisensi ini.
13. Perubahan pada Perjanjian Lisensi
13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Pratinjau. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Pratinjau.
14. Ketentuan Hukum Umum
14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Pratinjau oleh Anda (tidak termasuk layanan apa pun yang mungkin disediakan Google untuk Anda dalam perjanjian tertulis terpisah), dan sepenuhnya menggantikan perjanjian sebelumnya antara Anda dan Google dalam kaitannya dengan Pratinjau.
14.2 Anda setuju bahwa jika Google tidak menjalankan atau menerapkan hak atau upaya hukum yang terkandung dalam Perjanjian Lisensi ini (atau bila Google memiliki kewenangan berdasarkan hukum yang berlaku), tindakan ini tidak akan dianggap sebagai pelepasan hak secara resmi oleh Google dan bahwa hak atau upaya hukum tersebut akan tetap bisa digunakan oleh Google.
14.3 Jika persidangan hukum yang berwenang untuk memutuskan perkara ini menetapkan bahwa ada ketetapan Perjanjian Lisensi ini yang tidak valid, maka ketetapan tersebut akan dihapus dari Perjanjian Lisensi tanpa memengaruhi bagian selebihnya dari Perjanjian Lisensi ini. Ketetapan selebihnya dari Perjanjian Lisensi ini akan tetap sah dan berlaku.
14.4 Anda mengakui dan menyetujui bahwa setiap anggota dari kelompok perusahaan yang diinduki oleh Google akan menjadi pihak ketiga penerima manfaat dari Perjanjian Lisensi ini dan bahwa perusahaan tersebut berhak untuk secara langsung memberlakukan, dan bergantung pada, ketetapan yang dimuat dalam Perjanjian Lisensi ini yang memberikan manfaat (atau hak yang mendukung) kepada mereka. Selain yang telah disebutkan di atas, tidak ada orang atau perusahaan lain yang akan menjadi pihak ketiga penerima manfaat dari Perjanjian Lisensi ini
14.5 PEMBATASAN EKSPOR. PRATINJAU TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PRATINJAU. HUKUM INI MENYERTAKAN PEMBATASAN ATAS TUJUAN, PENGGUNA AKHIR DAN PENGGUNAAN AKHIR
14.6 Perjanjian Lisensi ini tidak boleh diberikan atau dialihkan baik oleh Anda tanpa persetujuan tertulis sebelumnya dari Google, dan upaya apa pun untuk mengalihkannya tanpa persetujuan akan menjadi tidak sah. Anda tidak boleh mendelegasikan tanggung jawab atau kewajiban berdasarkan Perjanjian Lisensi ini tanpa persetujuan tertulis sebelumnya dari pihak lain.
14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, akan diatur oleh hukum Negara Bagian California tanpa mengindahkan pertentangan ketetapan hukumnya. Anda dan Google setuju untuk tunduk pada yurisdiksi eksklusif pengadilan yang berlokasi di county Santa Clara, California untuk menyelesaikan segala masalah hukum yang timbul dari Perjanjian Lisensi ini. Meski demikian, Anda setuju bahwa Google akan tetap diizinkan untuk mengajukan upaya hukum (atau tipe keringanan hukum setara yang mendesak) dalam yurisdiksi apa pun.
</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">Saya telah membaca dan menyetujui ketentuan dan persyaratan di atas</label>
</p>
<p><a href="" class="button disabled" id="downloadForRealz" onclick="return onDownloadForRealz(this);"></a></p>
</div>
</div><!-- end TOS -->
<div id="landing">
<p>
Halaman ini menyediakan tautan ke citra perangkat lewat jaringan seluler (OTA) dan menjelaskan
cara menerapkan pembaruan OTA secara manual ke suatu perangkat. Prosedur ini berguna
untuk memulihkan perangkat yang menerima pembaruan OTA melalui Android Beta
Program dan tidak jalan setelah pembaruan dipasang.
</p>
<h2 id="install-ota">Memasang Citra OTA</h2>
<p></p>
<p>Untuk pasang OTA pada perangkat:</p>
<ol>
<li>Unduh citra perangkat OTA dari tabel di bawah.</li>
<li>Boot ulang perangkat ke dalam mode Recovery. Untuk informasi selengkapnya mengenai cara masuk ke mode ini
di perangkat Nexus, lihat
<a href="https://support.google.com/nexus/answer/4596836">Setel ulang perangkat Nexus
Anda ke setelan pabrik</a>.
</li>
<li>Pada perangkat, pilih <strong>ADB sideload</strong>.</li>
<li>Hubungkan perangkat ke komputer dengan lingkungan pengembangan Android
yang telah dimuat dan alat Android Debug Bridge (adb) yang telah dipasang.</li>
<li>Jalankan perintah berikut:
<pre>adb sideload <em>&lt;ota-package&gt;</em></pre>
</li>
</ol>
<h2 id="ota-images">Citra OTA Perangkat</h2>
<table>
<tr>
<th scope="col">Perangkat</th>
<th scope="col">Unduhan / Checksum</th>
</tr>
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
<td><a href="#top" onclick="onDownload(this)">bullhead-ota-npd35k-b8cfbd80.zip</a><br>
MD5: 15fe2eba9b01737374196bdf0a792fe9<br>
SHA-1: 5014b2bba77f9e1a680ac3f90729621c85a14283
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
<td><a href="#top" onclick="onDownload(this)">shamu-ota-npd35k-078e6fa5.zip</a><br>
MD5: e8b12f7721c53af9a450f7058928a5fc<br>
SHA-1: b7a9b756f84a1d2e482ff9c16749d65f6e51425a
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
<td><a href="#top" onclick="onDownload(this)">angler-ota-npd35k-88457699.zip</a><br>
MD5: 3fac09fef759dde26e57cb80b20b6477<br>
SHA-1: 27d6caa786577d8a38b2da5bf94b33b4524a1a1c
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
<td><a href="#top" onclick="onDownload(this)">volantis-ota-npd35k-51dbae76.zip</a><br>
MD5: 58312c4a5971818ef5c77a3f446003da<br>
SHA-1: aad9005be33d3e2bab480509a6ab74c3c3b9d921
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
<td><a href="#top" onclick="onDownload(this)">volantisg-ota-npd35k-834f047f.zip</a><br>
MD5: 92b7d1fa252f7394e70f957c72d4aac8<br>
SHA-1: b6c057c84d90893630e303cbb60530e20ddb8361
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
<td><a href="#top" onclick="onDownload(this)">fugu-ota-npd35k-6ac91298.zip</a><br>
MD5: 1461622ad53ea842b2722fa7b49b8172<br>
SHA-1: 409c061668ab270774877d7f3eae44fa48d2b931
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
<td><a href="#top" onclick="onDownload(this)">ryu-ota-npd35k-a0b2347f.zip</a><br>
MD5: c60117f3640cc6db12386fd632289c7d<br>
SHA-1: 87349c767c69efb4172c90ce1d88cf578c3d28b3
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
<td><a href="#top" onclick="onDownload(this)">seed_l8150-ota-npd35k-09897a1d.zip</a><br>
MD5: a55cf94f7cce0393ec6c0b35041766b7<br>
SHA-1: 6f33742290eb46f2561891f38ca2e754b4e50c6a
</td>
</tr>
</table>
</div><!-- landing -->
</div><!-- relative wrapper -->
<script>
var urlRoot = "http://storage.googleapis.com/androiddevelopers/shareables/preview/ota/";
function onDownload(link) {
$("#downloadForRealz").html("Download " + $(link).text());
$("#downloadForRealz").attr('href', urlRoot + $(link).text());
$("#tos").fadeIn('fast');
$("#landing").fadeOut('fast');
return true;
}
function onAgreeChecked() {
/* verifikasi apakah TOS disetujui */
if ($("input#agree").is(":checked")) {
/* tampilkan tombol unduh */
$("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>

View File

@@ -1,5 +1,5 @@
page.title=Menguji pada Perangkat
meta.tags="preview", "nexus","citra sistem"
meta.tags="preview", "nexus","system image"
page.tags="preview", "androidn"
page.image=images/cards/card-n-downloads_2x.png
@@ -9,7 +9,7 @@ page.image=images/cards/card-n-downloads_2x.png
<div class="wrap" id="tos" style="position:absolute;display:none;width:inherit;">
<p class="sdk-terms-intro">Sebelum mengunduh dan menginstal
<p class="sdk-terms-intro">Sebelum mengunduh dan memasang
komponen Android Preview SDK, Anda harus menyetujui ketentuan dan persyaratan
berikut.</p>
@@ -20,57 +20,57 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
1. Pengantar
1.1 Android SDK Preview (dalam Perjanjian Lisensi ini disebut "Preview" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Preview, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. The License Agreement forms a legally binding contract between you and Google in Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan dalam kaitannya dengan penggunaan Anda atas Preview.
1.1 Android SDK Preview (dalam Perjanjian Lisensi ini disebut "Pratinjau" dan secara spesifik termasuk file sistem Android, paket API, dan file pustaka Pratinjau, jika disediakan) diberikan lisensinya kepada Anda sesuai dengan ketentuan Perjanjian Lisensi. Perjanjian Lisensi ini merupakan kontrak yang mengikat secara hukum antara Anda dan Google dalam kaitannya dengan penggunaan Pratinjau oleh Anda.
1.2 "Android" berarti sekumpulan perangkat lunak Android untuk perangkat, seperti yang tersedia pada Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
1.2 "Android" berarti tumpukan perangkat lunak Android untuk perangkat, seperti yang tersedia di Android Open Source Project, yang ada di URL berikut: http://source.android.com/, yang selalu diperbarui.
1.3 “Kompatibel denganAndroid” berarti segala implementasi Android yang (i) sesuai dengan Android Compatibility Definition Document, yang bisa ditemukan di situs web kompatibilitas Android (http://source.android.com/compatibility) dan yang selalu diperbarui; serta (ii) berhasil lulus Android Compatibility Test Suite (CTS).
1.3 “Kompatibel dengan Android” berarti segala implementasi Android yang (i) sesuai dengan Android Compatibility Definition Document, yang bisa ditemukan di situs web kompatibilitas Android (http://source.android.com/compatibility) dan yang selalu diperbarui; serta (ii) berhasil lulus Android Compatibility Test Suite (CTS).
1.4 "Google" berarti Google Inc., perusahaan asal Delaware dengan kantor bisnis utama di 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States.
2. Menerima Perjanjian Lisensi
2.1 Agar bisa menggunakan Preview, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan SDK jika tidak menerima Perjanjian Lisensi.
2.1 Agar bisa menggunakan Pratinjau, Anda terlebih dahulu harus menyetujui Perjanjian Lisensi ini. Anda tidak boleh menggunakan Pratinjau jika tidak menerima Perjanjian Lisensi.
2.2 Dengan mengklik untuk menerima dan/atau menggunakan Preview, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
2.2 Dengan mengklik untuk menerima dan/atau menggunakan Pratinjau, berarti Anda menyetujui ketentuan Perjanjian Lisensi.
2.3 Anda tidak boleh menggunakan Preview dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Preview berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Preview.
2.3 Anda tidak boleh menggunakan Pratinjau dan tidak boleh menerima Perjanjian Lisensi jika Anda adalah orang yang dilarang menerima Pratinjau berdasarkan hukum Amerika Serikat atau negara lainnya termasuk negara di mana Anda tinggal atau dari mana Anda menggunakan Pratinjau.
2.4 Jika Anda akan menggunakan Preview di lingkungan perusahaan atau organisasi Anda, berarti Anda setuju untuk terikat oleh Perjanjian Lisensi atas nama perusahaan Anda atau entitas lainnya, serta Anda mewakili dan menjamin bahwa Anda memiliki kewenangan hukum penuh untuk mengikat perusahaan Anda atau entitas tersebut pada Perjanjian Lisensi ini. Jika Anda tidak memiliki kewenangan yang disyaratkan, Anda tidak boleh menerima Perjanjian Lisensi atau menggunakan Preview atas nama perusahaan Anda atau entitas lainnya.
2.4 Jika Anda akan menggunakan Pratinjau di lingkungan perusahaan atau organisasi Anda, berarti Anda setuju untuk terikat oleh Perjanjian Lisensi atas nama perusahaan Anda atau entitas lainnya, serta Anda mewakili dan menjamin bahwa Anda memiliki kewenangan hukum penuh untuk mengikat perusahaan Anda atau entitas tersebut pada Perjanjian Lisensi ini. Jika Anda tidak memiliki kewenangan yang disyaratkan, Anda tidak boleh menerima Perjanjian Lisensi atau menggunakan Pratinjau atas nama perusahaan Anda atau entitas lainnya.
3. Lisensi Preview dari Google
3. Lisensi Pratinjau dari Google
3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi terbatas, bersifat global, bebas royalti, tidak bisa dialihkan, non-eksklusif, dan tidak bisa disublisensikan untuk menggunakan Preview hanya untuk mengembangkan aplikasi bagi implementasi Android yang kompatibel.
3.1 Sesuai dengan ketentuan Perjanjian Lisensi ini, Google memberi Anda lisensi yang tidak bisa disublisensikan, non-eksklusif, tidak bisa dialihkan, bebas royalti, bersifat global dan terbatas dalam menggunakan Pratinjau hanya untuk keperluan pengembangan aplikasi yang kompatibel untuk diimplementasikan pada Android.
3.2 Anda tidak boleh menggunakan Preview ini untuk mengembangkan aplikasi bagi platform lain (termasuk implementasi Android yang tidak kompatibel) atau untuk mengembangkan SDK lain. Tentu saja Anda bebas mengembangkan aplikasi bagi platform lainnya, termasuk implementasi Android yang tidak kompatibel, asalkan Preview ini tidak digunakan untuk keperluan itu.
3.2 Anda tidak boleh menggunakan Pratinjau ini untuk mengembangkan aplikasi platform lain (termasuk implementasi yang tidak kompatibel pada Android) atau untuk mengembangkan SDK lain. Anda tentu saja bebas mengembangkan aplikasi untuk platform lain, termasuk implementasi yang tidak kompatibel pada Android, karena Pratinjau ini tidak digunakan untuk tujuan tersebut.
3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Preview, termasuk Hak Kekayaan Intelektual yang terdapat dalam Preview. "Hak Kekayaan Intelektual" berarti setiap dan semua hak yang berdasarkan pada hukum paten, hukum hak cipta, hukum rahasia dagang, hukum merek dagang, dan setiap dan semua hak kepemilikan lainnya. Google memiliki semua hak yang tidak secara tersurat diberikan kepada Anda.
3.3 Anda setuju bahwa Google atau pihak ketiga memiliki semua hak, kuasa dan kepentingan hukum dalam dan pada Pratinjau, termasuk Hak Kekayaan Intelektual yang terdapat dalam Pratinjau. "Hak Kekayaan Intelektual" berarti setiap dan semua hak yang berdasarkan pada hukum paten, hukum hak cipta, hukum rahasia dagang, hukum merek dagang, dan setiap dan semua hak kepemilikan lainnya. Google memiliki semua hak yang tidak secara tersurat diberikan kepada Anda.
3.4 Anda tidak boleh menggunakan Preview untuk tujuan apa pun yang tidak secara tersurat diizinkan oleh Perjanjian Lisensi. Kecuali sejauh yang diperlukan oleh lisensi pihak ketiga yang berlaku, Anda tidak boleh: (a) menyalin (kecuali untuk keperluan pencadangan), memodifikasi, mengadaptasi, mendistribusikan kembali, mendekompilasi, merekayasa balik, membongkar atau membuat karya turunan dari Preview atau bagian apa pun dari Preview; atau (b) memuat bagian apa pun dari Preview ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Preview dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Preview.
3.4 Anda tidak boleh menggunakan Pratinjau untuk tujuan apa pun yang tidak secara tersurat diizinkan dalam Perjanjian Lisensi ini. Kecuali sejauh yang diperlukan oleh lisensi pihak ketiga yang berlaku, Anda tidak boleh: (a) menyalin (kecuali untuk keperluan pencadangan), memodifikasi, mengadaptasi, mendistribusikan kembali, mendekompilasi, merekayasa balik, membongkar atau membuat karya turunan dari Pratinjau atau bagian apa pun dari Pratinjau; atau (b) memuat bagian apa pun dari Pratinjau ke sebuah handset ponsel atau perangkat keras selain komputer pribadi, menggabungkan suatu bagian dari Pratinjau dengan perangkat lunak lain, atau mendistribusikan perangkat lunak atau perangkat yang menggabungkan suatu bagian dari Pratinjau.
3.5 Penggunaan, reproduksi dan distribusi komponen Preview yang berlisensi perangkat lunak sumber terbuka diatur semata-mata oleh ketentuan lisensi perangkat lunak sumber terbuka tersebut dan bukan oleh Perjanjian Lisensi ini. Anda menyetujui bagian selebihnya dari lisensi dengan maksud baik sehubungan dengan lisensi perangkat lunak sumber terbuka tersebut sesuai dengan semua hak yang diberikan dan untuk menahan diri dari segala tindakan yang mungkin akan mengakhiri, menangguhkan, atau melanggar hak tersebut.
3.5 Penggunaan, reproduksi dan distribusi komponen Pratinjau yang berlisensi perangkat lunak sumber terbuka diatur semata-mata oleh ketentuan lisensi perangkat lunak sumber terbuka tersebut dan bukan oleh Perjanjian Lisensi ini. Anda menyetujui bagian selebihnya dari lisensi dengan maksud baik sehubungan dengan lisensi perangkat lunak sumber terbuka tersebut sesuai dengan semua hak yang diberikan dan untuk menahan diri dari segala tindakan yang mungkin akan mengakhiri, menangguhkan, atau melanggar hak tersebut.
3.6 Anda setuju bahwa bentuk dan sifat Preview yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Preview mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Preview sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Preview (atau fitur apa pun dalam Preview) kepada Anda atau pengguna pada umumnya atas kebijakan Google semata, tanpa pemberitahuan sebelumnya kepada Anda.
3.6 Anda setuju bahwa bentuk dan sifat Pratinjau yang disediakan oleh Google dapat berubah tanpa pemberitahuan sebelumnya kepada Anda dan bahwa versi Pratinjau mendatang mungkin tidak kompatibel dengan aplikasi yang dikembangkan di versi Pratinjau sebelumnya. Anda setuju bahwa Google boleh menghentikan (secara permanen atau sementara) penyediaan Pratinjau (atau fitur apa pun dalam Pratinjau) kepada Anda atau pengguna pada umumnya atas kebijakan Google semata, tanpa pemberitahuan sebelumnya kepada Anda.
3.7 Perjanjian Lisensi ini tidak memberi Anda hak untuk menggunakan nama dagang, merek dagang, merek layanan, logo, nama domain, atau fitur merek khas Google lainnya.
3.8 Anda setuju bahwa Anda tidak akan menghapus, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Preview.
3.8 Anda setuju bahwa Anda tidak akan membuang, mengaburkan, atau mengubah pernyataan hak kepemilikan apa pun (termasuk pemberitahuan hak cipta dan merek dagang) yang terlampir atau termuat dalam Pratinjau.
4. Penggunaan Preview oleh Anda
4. Penggunaan Pratinjau oleh Anda
4.1 Google setuju bahwa tidak ada dalam Perjanjian Lisensi ini yang memberi Google suatu hak, kuasa atau kepentingan dari Anda (atau pemberi lisensi Anda) berdasarkan Perjanjian Lisensi ini dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Preview, termasuk hak kekayaan intelektual yang terdapat dalam aplikasi tersebut.
4.1 Google setuju bahwa Perjanjian Lisensi ini tidak memberi Google hak, kuasa, dan kepentingan hukum dari Anda (atau pemberi lisensi Anda) dalam atau pada aplikasi perangkat lunak apa pun yang Anda kembangkan menggunakan Pratinjau ini, termasuk kekayaan intelektual yang ada dalam aplikasi tersebut.
4.2 Anda setuju untuk menggunakan Preview dan mengembangkan aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi ini dan (b) hukum yang berlaku, peraturan atau praktik atau panduan yang diterima secara umum di yurisdiksi yang relevan (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang relevan).
4.2 Anda setuju untuk menggunakan Pratinjau dan menulis aplikasi hanya untuk tujuan yang diizinkan oleh (a) Perjanjian Lisensi, dan (b) hukum yang berlaku, peraturan atau praktik yang diterima secara umum atau panduan dalam yurisdiksi terkait (termasuk hukum mengenai ekspor data atau perangkat lunak ke dan dari Amerika Serikat atau negara lain yang terkait).
4.3 Anda setuju bahwa jika Anda menggunakan Preview untuk mengembangkan aplikasi, Anda akan melindungi privasi dan hak hukum penggunanya. Jika pengguna memberikan nama pengguna, kata sandi, atau informasi login atau informasi pribadinya lainnya, Anda harus membuat pengguna tersebut menyadari bahwa informasi tersebut akan bisa digunakan oleh aplikasi Anda, dan Anda harus memberikan perlindungan dan pemberitahuan privasi yang memadai secara hukum bagi pengguna tersebut. Jika aplikasi Anda menyimpan informasi pribadi atau sensitif yang diberikan oleh pengguna, aplikasi Anda harus melakukannya dengan aman. Jika pengguna memberikan informasi Akun Google, aplikasi Anda hanya boleh menggunakan informasi tersebut untuk mengakses Akun Google pengguna tersebut bila, dan untuk tujuan terbatas di mana, setiap pengguna telah memberikan izin kepada Anda untuk melakukannya.
4.3 Anda setuju jika Anda menggunakan Pratinjau untuk mengembangkan aplikasi, Anda akan melindungi hak privasi dan hak hukum pengguna. Jika pengguna memberikan nama pengguna, sandi, atau informasi login atau informasi pribadinya, Anda harus membuat pengguna tersebut menyadari bahwa informasi yang diberikannya akan bisa digunakan oleh aplikasi Anda, dan Anda harus memberikan perlindungan dan pemberitahuan privasi yang memadai secara hukum bagi pengguna tersebut. Jika aplikasi Anda menyimpan informasi pribadi atau sensitif yang diberikan oleh pengguna, aplikasi Anda harus melakukannya dengan aman. Jika pengguna memberikan informasi Akun Google, aplikasi Anda hanya boleh menggunakan informasi tersebut untuk mengakses Akun Google pengguna saat, dan untuk tujuan terbatas di mana, pengguna tersebut telah memberikan izin kepada Anda untuk melakukannya.
4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Preview, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti atau layanan pihak ketiga lainnya dari Google atau pihak ketiga.
4.4 Anda setuju bahwa Anda tidak akan terlibat dalam aktivitas apa pun dengan Pratinjau, termasuk pengembangan atau distribusi aplikasi yang mengganggu, mengacaukan, merusak, atau mengakses secara tidak sah server, jaringan atau properti layanan Google atau pihak ketiga lainnya.
4.5 Anda setuju untuk bertanggung jawab penuh terhadap (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga untuk) data, konten, atau sumber daya apa pun yang Anda buat, kirimkan atau tampilkan melalui Android dan/atau aplikasi untuk Android, dan terhadap konsekuensi tindakan Anda (termasuk kerugian atau kerusakan apa pun yang mungkin dialami Google) karena melakukannya.
4.5 Anda setuju bertanggung jawab penuh untuk (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) data, materi, atau sumber daya apa pun yang Anda buat, kirimkan atau tampilkan melalui Android dan/atau aplikasi untuk Android, dan terhadap konsekuensi tindakan Anda (termasuk kerugian atau kerusakan apa pun yang mungkin dialami Google).
4.6 Anda setuju bertanggung jawab penuh terhadap (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) pelanggaran kewajiban Anda berdasarkan Perjanjian Lisensi ini, kontrak pihak ketiga yang berlaku atau Ketentuan Layanan, atau hukum atau peraturan yang berlaku, dan terhadap konsekuensi (termasuk kerugian atau kerusakan yang mungkin dialami Google atau pihak ketiga) akibat pelanggaran tersebut.
4.6 Anda setuju bertanggung jawab penuh terhadap (dan bahwa Google tidak bertanggung jawab terhadap Anda atau pihak ketiga lainnya untuk) pelanggaran kewajiban Anda berdasarkan Perjanjian Lisensi ini, kontrak pihak ketiga yang berlaku atau Ketentuan Layanan, atau hukum atau peraturan yang berlaku, dan terhadap konsekuensi (termasuk kerugian atau kerusakan yang mungkin dialami Google atau pihak ketiga lainnya) akibat pelanggaran tersebut.
4.7 Preview sedang dalam pengembangan, dan pengujian serta umpan balik Anda merupakan bagian penting dari proses pengembangan ini. Dengan menggunakan Preview, Anda mengakui bahwa implementasi sebagian fitur masih dalam tahap pengembangan dan bahwa Anda tidak akan berharap bahwa Preview memiliki fungsionalitas penuh rilis stabil. Anda setuju untuk tidak mendistribusikan atau memasarkan kepada umum aplikasi yang menggunakan Preview ini karena Preview ini tidak akan didukung lagi setelah Android SDK resmi dirilis.
4.7 Pratinjau ini dalam tahap pengembangan, dan pengujian serta masukan Anda merupakan bagian penting dalam proses pengembangan. Dengan menggunakan Pratinjau, Anda mengakui bahwa implementasi beberapa fitur masih dalam tahap pengembangan dan bahwa Anda tidak seharusnya mengandalkan Pratinjau berfungsi sepenuhnya sebagaimana pada rilis stabil. Anda setuju untuk tidak mendistribusikan atau mengirimkan untuk umum penggunaan aplikasi menggunakan Pratinjau karena Pratinjau ini tidak akan lagi didukung setelah Android SDK dirilis secara resmi.
5. Kredensial Pengembang Anda
@@ -78,21 +78,21 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
6. Privasi dan Informasi
6.1 Untuk terus berinovasi dan meningkatkan Preview, Google boleh mengumpulkan statistik penggunaan tertentu dari perangkat lunak termasuk namun tidak terbatas pada identifier unik, alamat IP terkait, nomor versi perangkat lunak, dan informasi yang menjadi tempat penggunaan alat dan/atau layanan dalam Preview dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Preview akan memberi tahu dan meminta persetujuan Anda. Jika Anda tidak memberikan persetujuan, informasi tersebut tidak akan dikumpulkan.
6.1 Untuk terus berinovasi dan meningkatkan Pratinjau, Google boleh mengumpulkan statistik penggunaan tertentu dari perangkat lunak termasuk namun tidak terbatas pada identifier unik, alamat IP terkait, nomor versi perangkat lunak, dan informasi yang menjadi tempat penggunaan alat dan/atau layanan dalam Pratinjau dan cara penggunaannya. Sebelum informasi ini dikumpulkan, Pratinjau akan memberi tahu dan meminta persetujuan Anda. Jika Anda tidak memberikan persetujuan, informasi tersebut tidak akan dikumpulkan.
6.2 Data yang dikumpulkan akan diperiksa secara agregat untuk meningkatkan Preview dan dikelola sesuai dengan Kebijakan Privasi Google yang terdapat di http://www.google.com/policies/privacy/.
6.2 Data yang dikumpulkan akan diperiksa secara agregat untuk meningkatkan Pratinjau dan dikelola sesuai dengan Kebijakan Privasi Google yang terdapat di http://www.google.com/policies/privacy.
7. Aplikasi Pihak Ketiga
7.1 Jika Anda menggunakan Preview untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, konten atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, konten atau sumber daya tersebut. Anda memahami bahwa semua data, konten atau sumber daya yang mungkin Anda akses melalui aplikasi pihak ketiga merupakan tanggung jawab penuh dari pihak yang menjadi asal data tersebut dan Google tidak bertanggung jawab terhadap kerugian atau kerusakan apa pun yang mungkin Anda alami sebagai akibat menggunakan atau mengakses aplikasi, data, konten, atau sumber daya pihak ketiga tersebut.
7.1 Jika Anda menggunakan Pratinjau untuk menjalankan aplikasi yang dikembangkan oleh pihak ketiga atau yang mengakses data, materi atau sumber daya yang disediakan oleh pihak ketiga, Anda setuju bahwa Google tidak bertanggung jawab terhadap aplikasi, data, materi atau sumber daya tersebut. Anda memahami bahwa semua data, materi atau sumber daya yang mungkin Anda akses melalui aplikasi pihak ketiga merupakan tanggung jawab penuh dari pihak yang menjadi asal data tersebut dan Google tidak bertanggung jawab terhadap kerugian atau kerusakan apa pun yang mungkin Anda alami sebagai akibat menggunakan atau mengakses aplikasi, data, materi, atau sumber daya pihak ketiga tersebut.
7.2 Anda harus menyadari bahwa data, konten dan sumber daya yang diberikan kepada Anda melalui aplikasi pihak ketiga mungkin dilindungi oleh hak kekayaan intelektual yang dimiliki oleh penyedia (atau oleh orang lain atau perusahaan atas nama mereka). Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data, konten, atau sumber daya ini (baik secara keseluruhan atau sebagian) kecuali Anda secara khusus diberikan izin untuk melakukannya oleh pemilik yang bersangkutan.
7.2 Anda harus menyadari bahwa data, materi dan sumber daya yang diberikan kepada Anda melalui aplikasi pihak ketiga mungkin dilindungi oleh hak kekayaan intelektual yang dimiliki oleh penyedia (atau oleh orang lain atau perusahaan atas nama mereka). Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data, materi, atau sumber daya ini (baik secara keseluruhan atau sebagian) kecuali Anda secara khusus diberikan izin untuk melakukannya oleh pemilik yang bersangkutan.
7.3 Anda mengakui bahwa penggunaan Anda atas aplikasi, data, konten, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
7.3 Anda mengakui bahwa penggunaan Anda atas aplikasi, data, materi, atau sumber daya pihak ketiga semacam itu tunduk pada ketentuan terpisah antara Anda dan pihak ketiga yang bersangkutan.
8. Menggunakan API Google
8. Menggunakan Google API
8.1 API Google
8.1 Google API
8.1.1 Jika Anda menggunakan API (Antarmuka Pemrograman Aplikasi) untuk mengambil data dari Google, Anda mengakui bahwa data tersebut dilindungi hak kekayaan intelektual yang dimiliki Google atau pihak-pihak yang menyediakan data (atau oleh orang lain atau perusahaan atas nama mereka). Penggunaan API oleh Anda tunduk pada Ketentuan Layanan tambahan. Anda tidak boleh memodifikasi, menyewakan, menyewabelikan, meminjamkan, menjual, mendistribusikan atau membuat karya turunan berdasarkan data ini (baik secara keseluruhan atau sebagian) kecuali diizinkan oleh Ketentuan Layanan yang bersangkutan.
@@ -102,21 +102,21 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
9.1 Perjanjian Lisensi ini akan terus berlaku hingga diakhiri oleh Anda atau Google sebagaimana diatur di bawah ini.
9.2 Jika Anda ingin mengakhiri Perjanjian Lisensi ini, Anda boleh melakukannya dengan menghentikan penggunaan Preview dan kredensial pengembang yang relevan.
9.2 Jika Anda ingin mengakhiri Perjanjian Lisensi ini, Anda boleh melakukannya dengan menghentikan penggunaan Pratinjau dan kredensial pengembang yang relevan.
9.3 Google boleh mengakhiri Perjanjian Lisensi ini dengan Anda kapan saja, dengan atau tanpa sebab, setelah memberi tahu Anda.
9.4 Perjanjian Lisensi akan berakhir secara otomatis tanpa pemberitahuan atau tindakan lainnya bila, mana saja yang lebih dahulu:
(A) Google berhenti menyediakan Preview atau bagian Preview tertentu kepada pengguna di negara tempat Anda tinggal atau negara tempat asal Anda menggunakan layanan; dan
9.4 Perjanjian Lisensi akan berakhir secara otomatis tanpa pemberitahuan atau tindakan lainnya bila, mana saja yang lebih dahulu:
(A) Google berhenti menyediakan Pratinjau atau bagian Pratinjau tertentu kepada pengguna di negara tempat Anda tinggal atau negara tempat asal Anda menggunakan layanan; dan
(B) Google mengeluarkan versi rilis final dari Android SDK.
9.5 Bila Perjanjian Lisensi berakhir, lisensi yang telah diberikan kepada Anda dalam Perjanjian Lisensi akan berakhir pula, Anda akan segera menghentikan semua penggunaan Preview, dan ketetapan paragraf 10, 11, 12, dan 14 akan terus berlaku secara tak terbatas.
9.5 Bila Perjanjian Lisensi berakhir, lisensi yang telah diberikan kepada Anda dalam Perjanjian Lisensi akan berakhir pula, Anda akan segera menghentikan semua penggunaan Pratinjau, dan ketetapan paragraf 10, 11, 12, dan 14 akan terus berlaku secara tak terbatas.
10. SANGGAHAN
10.1 ANDA SEPENUHNYA MEMAHAMI DAN MENYETUJUI BAHWA PENGGUNAAN PREVIEW OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PREVIEW INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
10.1 ANDA SEPENUHNYA MEMAHAMI DAN MENYETUJUI BAHWA PENGGUNAAN PRATINJAU OLEH ANDA MERUPAKAN RISIKO ANDA SENDIRI DAN BAHWA PRATINJAU INI DISEDIAKAN "APA ADANYA" DAN "SEBAGAIMANA TERSEDIA" TANPA JAMINAN DALAM BENTUK APA PUN DARI GOOGLE.
10.2 PENGGUNAAN PREVIEW DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PREVIEW OLEH ANDA ADALAH ATAS KEHENDAK DAN RISIKO ANDA SENDIRI DAN ANDA BERTANGGUNG JAWAB PENUH TERHADAP KERUSAKAN PADA SISTEM KOMPUTER ATAU PERANGKAT LAIN ATAU HILANGNYA DATA AKIBAT PENGGUNAANNYA. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PREVIEW BUKANLAH RILIS STABIL DAN MUNGKIN BERISI KESALAHAN, CACAT, DAN RISIKO KEAMANAN YANG BISA MENGAKIBATKAN KERUSAKAN SIGNIFIKAN, TERMASUK KEHILANGAN PENGGUNAAN ATAS SISTEM KOMPUTER ANDA ATAU PERANGKAT LAIN DENGAN SEPENUHNYA DAN TIDAK BISA DIPULIHKAN LAGI.
10.2 PENGGUNAAN PRATINJAU DAN MATERI APA PUN YANG DIUNDUH ATAU DIPEROLEH MELALUI PENGGUNAAN PRATINJAU OLEH ANDA ADALAH ATAS KEHENDAK DAN RISIKO ANDA SENDIRI DAN ANDA BERTANGGUNG JAWAB PENUH TERHADAP KERUSAKAN PADA SISTEM KOMPUTER ATAU PERANGKAT LAIN ATAU HILANGNYA DATA AKIBAT PENGGUNAAN TERSEBUT. TANPA MEMBATASI HAL TERSEBUT, ANDA MEMAHAMI BAHWA PRATINJAU BUKANLAH RILIS STABIL DAN MUNGKIN BERISI KESALAHAN, CACAT, DAN RISIKO KEAMANAN YANG BISA MENGAKIBATKAN KERUSAKAN SIGNIFIKAN, TERMASUK KEHILANGAN PENGGUNAAN ATAS SISTEM KOMPUTER ANDA ATAU PERANGKAT LAIN DENGAN SEPENUHNYA DAN TIDAK BISA DIPULIHKAN LAGI.
10.3 GOOGLE LEBIH LANJUT MENYANGGAH SEMUA JAMINAN DAN PERSYARATAN APA PUN, BAIK TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN TERSIRAT DAN PERSYARATAN MENGENAI DAYA JUAL, KESESUAIAN DENGAN TUJUAN TERTENTU, DAN NON-PELANGGARAN.
@@ -126,27 +126,27 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
12. Penggantian Kerugian
12.1 Sejauh maksimum yang diizinkan oleh hukum, Anda setuju untuk membela, mengganti kerugian dan melepaskan tanggung jawab Google, afiliasinya beserta direksi, petugas, karyawan dan agennya dari dan terhadap setiap dan semua klaim, tindakan, gugatan, proses hukum, serta setiap dan semua kehilangan, kewajiban, kerusakan, biaya dan pengeluaran (termasuk biaya pengacara yang sewajarnya) yang timbul atau diakibatkan dari (a) penggunaan Preview oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Preview yang melanggar Hak Kekayaan Intelektual seseorang atau mencemarkan nama baik seseorang atau melanggar hak mereka berkaitan dengan publisitas atau privasi, dan (c) ketidakpatuhan Anda terhadap Perjanjian Lisensi ini.
12.1 Sejauh maksimum yang diizinkan oleh hukum, Anda setuju untuk membela, mengganti kerugian dan melepaskan tanggung jawab Google, afiliasinya beserta direksi, petugas, karyawan dan agennya dari dan terhadap setiap dan semua klaim, tindakan, gugatan, proses hukum, serta setiap dan semua kehilangan, kewajiban, kerusakan, biaya dan pengeluaran (termasuk biaya pengacara yang sewajarnya) yang timbul atau diakibatkan dari (a) penggunaan Pratinjau oleh Anda, (b) aplikasi apa pun yang Anda kembangkan dari Pratinjau yang melanggar Hak Kekayaan Intelektual seseorang atau mencemarkan nama baik seseorang atau melanggar hak mereka berkaitan dengan publisitas atau privasi, dan (c) ketidakpatuhan Anda terhadap Perjanjian Lisensi ini.
13. Perubahan Perjanjian Lisensi
13. Perubahan pada Perjanjian Lisensi
13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Preview. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Preview.
13.1 Google boleh membuat perubahan pada Perjanjian Lisensi saat mendistribusikan versi baru Pratinjau. Saat perubahan tersebut dibuat, Google akan menyediakan versi baru Perjanjian Lisensi di situs web penyediaan Pratinjau.
14. Ketentuan Hukum Umum
14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Preview oleh Anda (tidak termasuk layanan apa pun yang mungkin disediakan Google untuk Anda dalam perjanjian tertulis terpisah), dan sepenuhnya menggantikan perjanjian sebelumnya antara Anda dan Google dalam kaitannya dengan Preview.
14.1 Perjanjian Lisensi ini merupakan perjanjian hukum antara Anda dan Google dan mengatur penggunaan Pratinjau oleh Anda (tidak termasuk layanan apa pun yang mungkin disediakan Google untuk Anda dalam perjanjian tertulis terpisah), dan sepenuhnya menggantikan perjanjian sebelumnya antara Anda dan Google dalam kaitannya dengan Pratinjau.
14.2 Anda setuju bahwa jika Google tidak menjalankan atau menerapkan hak atau upaya hukum yang terkandung dalam Perjanjian Lisensi ini (atau bila Google memiliki kewenangan berdasarkan hukum yang berlaku), tindakan ini tidak akan dianggap sebagai pelepasan hak secara resmi oleh Google dan bahwa hak atau upaya hukum tersebut akan tetap bisa digunakan oleh Google.
14.3 Jika persidangan hukum yang berwenang untuk memutuskan perkara ini menetapkan bahwa ada ketetapan Perjanjian Lisensi ini yang tidak berlaku, maka ketetapan tersebut akan dihapus dari Perjanjian Lisensi tanpa memengaruhi bagian selebihnya dari Perjanjian Lisensi ini. Ketetapan selebihnya dari Perjanjian Lisensi ini akan tetap sah dan berlaku.
14.3 Jika persidangan hukum yang berwenang untuk memutuskan perkara ini menetapkan bahwa ada ketetapan Perjanjian Lisensi ini yang tidak valid, maka ketetapan tersebut akan dihapus dari Perjanjian Lisensi tanpa memengaruhi bagian selebihnya dari Perjanjian Lisensi ini. Ketetapan selebihnya dari Perjanjian Lisensi ini akan tetap sah dan berlaku.
14.4 Anda mengakui dan menyetujui bahwa setiap anggota dari kelompok perusahaan yang diinduki oleh Google akan menjadi pihak ketiga penerima manfaat dari Perjanjian Lisensi ini dan bahwa perusahaan tersebut berhak untuk secara langsung memberlakukan, dan bergantung pada, ketetapan yang dimuat dalam Perjanjian Lisensi ini yang memberikan manfaat (atau hak yang mendukung) kepada mereka. Selain yang telah disebutkan di atas, tidak ada orang atau perusahaan lain yang akan menjadi pihak ketiga penerima manfaat dari Perjanjian Lisensi ini
14.5 PEMBATASAN EKSPOR. PREVIEW TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PREVIEW. HUKUM INI MENYERTAKAN PEMBATASAN ATAS TUJUAN, PENGGUNA AKHIR DAN PENGGUNAAN AKHIR.
14.5 PEMBATASAN EKSPOR. PRATINJAU TUNDUK PADA HUKUM DAN PERATURAN EKSPOR AMERIKA SERIKAT. ANDA HARUS MEMATUHI SEMUA HUKUM DAN PERATURAN NASIONAL DAN INTERNASIONAL YANG BERLAKU PADA PRATINJAU. HUKUM INI MENYERTAKAN PEMBATASAN ATAS TUJUAN, PENGGUNA AKHIR DAN PENGGUNAAN AKHIR
14.6 Perjanjian Lisensi ini tidak boleh diberikan atau dialihkan baik oleh Anda tanpa persetujuan tertulis sebelumnya dari Google, dan upaya apa pun untuk mengalihkannya tanpa persetujuan akan menjadi tidak sah. Anda tidak boleh mendelegasikan tanggung jawab atau kewajiban berdasarkan Perjanjian Lisensi ini tanpa persetujuan tertulis sebelumnya dari Google.
14.6 Perjanjian Lisensi ini tidak boleh diberikan atau dialihkan baik oleh Anda tanpa persetujuan tertulis sebelumnya dari Google, dan upaya apa pun untuk mengalihkannya tanpa persetujuan akan menjadi tidak sah. Anda tidak boleh mendelegasikan tanggung jawab atau kewajiban berdasarkan Perjanjian Lisensi ini tanpa persetujuan tertulis sebelumnya dari pihak lain.
14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, diatur oleh hukum Negara Bagian California tanpa mengindahkan pertentangan ketetapan hukumnya. Anda dan Google setuju untuk tunduk pada yurisdiksi eksklusif pengadilan yang berlokasi di county Santa Clara, California untuk menyelesaikan segala masalah hukum yang timbul dari Perjanjian Lisensi ini. Meski demikian, Anda setuju bahwa Google akan tetap diizinkan untuk mengajukan upaya hukum (atau tipe keringanan hukum setara yang mendesak) dalam yurisdiksi apa pun.
14.7 Perjanjian Lisensi ini, dan hubungan Anda dengan Google berdasarkan Perjanjian Lisensi ini, akan diatur oleh hukum Negara Bagian California tanpa mengindahkan pertentangan ketetapan hukumnya. Anda dan Google setuju untuk tunduk pada yurisdiksi eksklusif pengadilan yang berlokasi di county Santa Clara, California untuk menyelesaikan segala masalah hukum yang timbul dari Perjanjian Lisensi ini. Meski demikian, Anda setuju bahwa Google akan tetap diizinkan untuk mengajukan upaya hukum (atau tipe keringanan hukum setara yang mendesak) dalam yurisdiksi apa pun.
</div><!-- sdk terms -->
@@ -173,7 +173,7 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<ol>
<li><a href="#ota">Mendapatkan pembaruan lewat jaringan seluler</a></li>
<li><a href="#flash">Mem-flash perangkat secara manual</a></li>
<li><a href="#revertDevice">Menghapus instalasi</a></li>
<li><a href="#revertDevice">Mencopot pemasangan</a></li>
</ol>
</li>
<li><a href="#setupAVD">Menyiapkan emulator</a></li>
@@ -182,12 +182,12 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
</div>
<p>
Untuk menjalankan dan menguji aplikasi Anda pada platform baru, Anda perlu menyiapkan lingkungan runtime
Untuk menjalankan dan menguji aplikasi Anda pada platform baru, Anda perlu menyiapkan lingkungan waktu proses
Android N. Anda bisa melakukannya dengan salah satu cara ini:
</p>
<ul>
<li>Instal Android N pada perangkat keras yang didukung, atau</li>
<li>Pasang Android N pada perangkat keras yang didukung, atau</li>
<li>Siapkan emulator Android yang menjalankan Android N</li>
</ul>
@@ -199,7 +199,7 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
</p>
<p>
Jika Anda ingin memodifikasi aplikasi untuk menargetkan Android N atau menggunakan API baru Android N,
Jika Anda ingin memodifikasi aplikasi untuk menargetkan Android N atau menggunakan Android N API baru,
Anda perlu menyiapkan lingkungan pengembangan yang telah diperbarui untuk mendukung
Android N. <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan Pengembangan
Android N</a> berisi detail mengenai hal ini.
@@ -220,20 +220,20 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<ul>
<li><strong>Daftarkan perangkat dalam pembaruan sistem OTA otomatis</strong> melalui
<a href="https://g.co/androidbeta">Android Beta Program</a>. Setelah didaftarkan, perangkat Anda akan menerima pembaruan
lewat jaringan seluler (OTA) untuk semua build tahapan pencapaian dalam N Developer Preview. Pendekatan
<a href="https://g.co/androidbeta">Android Beta Program</a>. Setelah didaftarkan, perangkat Anda akan secara teratur menerima
pembaruan lewat jaringan seluler (OTA) untuk semua build tahapan pencapaian dalam N Developer Preview. Pendekatan
ini disarankan karena akan membantu Anda melakukan transisi secara mulus dari lingkungan saat ini
ke berbagai rilis N Developer Preview.</li>
<li><strong>Unduh citra sistem a Developer Preview dan flash perangkat</strong>.
Pembaruan OTA tidak disediakan secara otomatis untuk perangkat yang Anda flash secara manual, namun
<li><strong>Unduh citra sistem Developer Preview dan flash perangkat</strong>.
Pembaruan OTA tidak disediakan secara otomatis untuk perangkat yang Anda flash secara manual, namun
Anda bisa mendaftarkan perangkat tersebut dalam Android Beta Program untuk memperoleh pembaruan OTA. </li>
</ul>
<h3 id="ota">Mendaftarkan perangkat dalam pembaruan OTA otomatis</h3>
<h3 id="ota">Daftarkan perangkat dalam pembaruan OTA otomatis</h3>
<p>
Jika Anda memiliki akses ke perangkat yang didukung (lihat daftar dalam tabel
Unduhan), Anda bisa menerima pembaruan lewat jaringan seluler ke versi preview Android
Unduhan), Anda bisa menerima pembaruan lewat jaringan seluler ke versi pratinjau Android
dengan mendaftarkan perangkat itu ke <a href="https://g.co/androidbeta">Android Beta Program</a>. Pembaruan ini
secara otomatis akan diunduh dan memperbarui perangkat Anda seperti
pembaruan sistem resmi.
@@ -242,8 +242,8 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<p>
Anda bisa membatalkan pendaftaran perangkat kapan saja. Perangkat akan menerima pembaruan OTA
ke versi produksi terbaru Android yang tersedia untuk perangkat itu
(misalnya, Android 6.0 Marshmallow). Pembaruan mengharuskan pengaturan ulang
perangkat secara penuh, jadi data pengguna pada perangkat itu akan dihapus. Pastikan <strong>mencadangkan
(misalnya, Android 6.0 Marshmallow). Pembaruan mengharuskan penyetelan ulang
perangkat secara penuh, jadi data pengguna pada perangkat itu akan dibuang. Pastikan <strong>mencadangkan
data penting</strong> sebelum membatalkan pendaftaran perangkat.
</p>
@@ -253,7 +253,7 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
</p>
<p class="note"><strong>Catatan:</strong>
Membatalkan pendaftaran mengharuskan pengaturan ulang perangkat secara penuh. Cadangkan
Membatalkan pendaftaran mengharuskan penyetelan ulang perangkat secara penuh. Cadangkan
data penting terlebih dahulu.
</p>
@@ -261,35 +261,35 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<p>
Anda bisa mengunduh citra sistem Developer Preview terbaru dan
mem-flash-nya secara manual ke perangkat Anda. Lihat tabel di bawah untuk mengunduh citra sistem
bagi perangkat pengujian Anda. Mem-flash perangkat secara manual berguna jika Anda harus
mengontrol secara persis lingkungan pengujian tersebut atau harus menginstal ulang secara rutin,
misalnya untuk pengujian otomatis.
mem-flash-nya secara manual ke perangkat Anda kapan saja. Lihat tabel di bawah untuk mengunduh citra
sistem perangkat pengujian Anda. Mem-flash perangkat secara manual berguna jika Anda harus
mengontrol secara persis lingkungan pengujian tersebut atau harus memasang ulang secara rutin,
misalnya untuk pengujian otomatis.
</p>
<!-- You can flash by ota or system image --><p>
Menginstal citra sistem pada perangkat <strong>akan menghapus semua data dari
Memasang citra sistem pada perangkat <strong>akan membuang semua data dari
perangkat</strong>, karena itu Anda harus mencadangkan data terlebih dahulu.
</p>
<p>
Setelah Anda mencadangkan data perangkat dan mengunduh citra sistem di bawah ini yang
sesuai dengan perangkat Anda, ikuti instruksi di <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
sesuai dengan perangkat Anda, ikuti petunjuk di <a href="https://developers.google.com/android/nexus/images#instructions">developers.google.com/android</a>
untuk mem-flash citra ini ke perangkat Anda.
</p>
<p>
Mem-flash citra sistem secara manual <strong>
tidak secara otomatis akan menerima pembaruan OTA</strong> ke build
tahapan pencapaian Developer Preview terbaru. Pastikan lingkungan Anda selalu diperbarui dan lakukan flash
citra sistem yang baru di setiap tahapan pencapaian Developer Preview.
Citra sistem yang di-flash secara manual <strong>tidak secara otomatis akan
menerima pembaruan OTA</strong> ke build tahapan pencapaian Developer Preview
terbaru. Pastikan lingkungan Anda selalu diperbarui dan lakukan flash
citra sistem yang baru di setiap tahapan pencapaian Developer Preview.
</p>
<p>
Jika Anda memutuskan ingin mendapatkan pembaruan OTA setelah mem-flash perangkat secara manual,
Anda tinggal mendaftarkan perangkat dalam <a href="https://g.co/androidbeta">
Android Beta Program</a>. Anda bisa mendaftarkan perangkat kapan saja untuk menerima pembaruan Preview
berikutnya lewat jaringan seluler.
Android Beta Program</a>. Anda bisa mendaftarkan perangkat kapan saja untuk menerima pembaruan Pratinjau
berikutnya lewat jaringan seluler.
</p>
<table>
@@ -300,103 +300,111 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
<tr id="bullhead">
<td>Nexus 5X <br>"bullhead"</td>
<td><a href="#top" onclick="onDownload(this)">bullhead-npc56p-preview-6c877a3d.tgz</a><br>
MD5: b5cf874021023b398f5b983b24913f5d<br>
SHA-1: 6c877a3d9fae7ec8a1678448e325b77b7a7b143a
<td><a href="#top" onclick="onDownload(this)">bullhead-npd35k-factory-5ba40535.tgz</a><br>
MD5: b6c5d79a21815ee21db41822dcf61e9f<br>
SHA-1: 5ba4053577007d15c96472206e3a79bc80ab194c
</td>
</tr>
<tr id="shamu">
<td>Nexus 6 <br>"shamu"</td>
<td><a href="#top" onclick="onDownload(this)">shamu-npc56p-preview-54b13c67.tgz</a><br>
MD5: af183638cf34e0eb944a1957d7696f60<br>
SHA-1: 54b13c6703d369cc79a8fd8728fe4103c6343973
<td><a href="#top" onclick="onDownload(this)">shamu-npd35k-factory-a33bf20c.tgz</a><br>
MD5: e1cf9c57cfb11bebe7f1f5bfbf05d7ab<br>
SHA-1: a33bf20c719206bcf08d1edd8da6c0ff9d50f69c
</td>
</tr>
<tr id="angler">
<td>Nexus 6P <br>"angler"</td>
<td><a href="#top" onclick="onDownload(this)">angler-npc56p-preview-85ffc1b1.tgz</a><br>
MD5: bc4934ea7bd325753eee1606d3725a24<br>
SHA-1: 85ffc1b1be402b1b96f9ba10929e86bba6c6c588
<td><a href="#top" onclick="onDownload(this)">angler-npd35k-factory-81c341d5.tgz</a><br>
MD5: e93de7949433339856124c3729c15ebb<br>
SHA-1: 81c341d57ef2cd139569b055d5d59e9e592a7abd
</td>
</tr>
<tr id="volantis">
<td>Nexus 9 <br>"volantis"</td>
<td><a href="#top" onclick="onDownload(this)">volantis-npc56p-preview-0e8ec8ef.tgz</a><br>
MD5: c901334c6158351e945f188167ae56f4<br>
SHA-1: 0e8ec8ef98c7a8d4f58d15f90afc5176303efca4
<td><a href="#top" onclick="onDownload(this)">volantis-npd35k-factory-2b50e19d.tgz</a><br>
MD5: 565be87ebb2d5937e2abe1a42645864b<br>
SHA-1: 2b50e19dae2667b27f911e3c61ed64860caf43e1
</td>
</tr>
<tr id="volantisg">
<td>Nexus 9G <br>"volantisg"</td>
<td><a href="#top" onclick="onDownload(this)">volantisg-npc56p-preview-1bafdbfb.tgz</a><br>
MD5: 7bb95bebc478d7257cccb4652899d1b4<br>
SHA-1: 1bafdbfb502e979a9fe4c257a379c4c7af8a3ae6
<td><a href="#top" onclick="onDownload(this)">volantisg-npd35k-factory-2e89ebe6.tgz</a><br>
MD5: a8464e15c6683fe2afa378a63e205fda<br>
SHA-1: 2e89ebe67a46b2f3beb050746c13341cd11fa678
</td>
</tr>
<tr id="fugu">
<td>Nexus Player <br>"fugu"</td>
<td><a href="#top" onclick="onDownload(this)">fugu-npc56r-preview-7027d5b6.tgz</a><br>
MD5: f5d3d8f75836ccfe4c70e8162e498be4<br>
SHA-1: 7027d5b662bceda4c80a91a0a14ef0e5a7ba795b
<td><a href="#top" onclick="onDownload(this)">fugu-npd35k-factory-1de74874.tgz</a><br>
MD5: c0dbb7db671f61b2785da5001cedefcb<br>
SHA-1: 1de74874f8d83e14d642f13b5a2130fc2aa55873
</td>
</tr>
<tr id="ryu">
<td>Pixel C <br>"ryu"</td>
<td><a href="#top" onclick="onDownload(this)">ryu-npc56p-preview-335a86a4.tgz</a><br>
MD5: 4e21fb183bbbf467bee91598d587fd2e<br>
SHA-1: 335a86a435ee51f18464de343ad2e071c38f0e92
<td><a href="#top" onclick="onDownload(this)">ryu-npd35k-factory-b4eed85d.tgz</a><br>
MD5: bdcb6f770e753668b5fadff2a6678e0d<br>
SHA-1: b4eed85de0d42c200348a8629084f78e24f72ac2
</td>
</tr>
<tr id="seed">
<td>General Mobile 4G (Android One) <br>"seed"</td>
<td><a href="#top" onclick="onDownload(this)">seed_l8150-npc56p-preview-82472ebc.tgz</a><br>
MD5: 983e083bc7cd0c4a2d39d6ebaa20202a<br>
SHA-1: 82472ebc9a6054a103f53cb400a1351913c95127
<td><a href="#top" onclick="onDownload(this)">seed_l8150-npd35k-factory-5ab1212b.tgz</a><br>
MD5: 7d34a9774fdd6e025d485ce6cfc23c4c<br>
SHA-1: 5ab1212bc9417269d391aacf1e672fff24b4ecc5
</td>
</tr>
<tr id="xperia">
<td>Sony Xperia Z3 <br> (D6603 dan D6653)</td>
<td>Unduh: <a class="external-link" href="http://support.sonymobile.com/xperiaz3/tools/xperia-companion/">Xperia Companion</a><br>
Untuk informasi selengkapnya, lihat<a class="external-link" href="https://developer.sony.com/develop/smartphones-and-tablets/android-n-developer-preview/">Coba Android N Developer Preview untuk Xperia Z3</a>.
</td>
</tr>
</table>
<h3 id="revertDevice">Menghapus instalasi Preview dari perangkat</h3>
<h3 id="revertDevice">Mencopot pemasangan Pratinjau dari perangkat</h3>
<p>
Jika Anda ingin menghapus instalasi Preview dari perangkat, Anda bisa melakukannya dengan salah satu cara
Jika Anda ingin mencopot pemasangan Pratinjau dari perangkat, Anda bisa melakukannya dengan salah satu cara
ini: </p>
<ul>
<li><strong>Dapatkan citra sistem sesuai spesifikasi pabrik</strong> kemudian flash
secara manual ke perangkat.
<ul>
<li>Untuk <strong>perangkat Nexus dan perangkat Pixel C</strong>, lihat
halaman <a href="http://developers.google.com/android/nexus/images">Citra Pabrik untuk
Perangkat Nexus</a> untuk mengunduhnya. </li>
<li>Untuk <strong>perangkat lain</strong>, hubungi produsen perangkat tersebut
<li>Untuk <strong>perangkat Nexus dan Pixel C</strong>, lihat halaman
<a href="http://developers.google.com/android/nexus/images">Citra Pabrik
untuk Perangkat Nexus</a> untuk mengunduhnya. </li>
<li>Untuk <strong>perangkat lainnya</strong>, hubungi produsen perangkat
secara langsung. Atau, jika perangkat didukung
dalam Android Beta Program, Anda bisa mendaftarkan perangkat dalam
program kemudian membatalkan pendaftarannya (lihat di bawah).</li>
</ul>
</li>
<li><strong>Batalkan pendaftaran perangkat dari Android Beta Program</strong>. Jika
perangkat terdaftar dalam <a href="https://g.co/androidbeta">Android Beta
perangkat telah terdaftar dalam <a href="https://g.co/androidbeta">Android Beta
Program</a>, apa pun perangkatnya, Anda cukup membatalkan pendaftarannya dari program tersebut.
<p>
Perangkat akan menerima pembaruan OTA ke versi
produksi terbaru Android yang tersedia untuk perangkat itu (misalnya, Android 6.0 Marshmallow).
Pembaruan mengharuskan pengaturan ulang perangkat secara penuh, jadi data pengguna pada perangkat itu
akan dihapus. Pastikan <strong>mencadangkan data penting</strong> sebelum
Perangkat akan menerima pembaruan OTA ke versi produksi terbaru
Android yang tersedia untuk perangkat itu (misalnya, Android 6.0 Marshmallow).
Pembaruan mengharuskan penyetelan ulang perangkat secara penuh, jadi data pengguna pada perangkat itu akan
dibuang. Pastikan Anda <strong>mencadangkan data penting</strong> sebelum
membatalkan pendaftaran perangkat.
</p>
</li>
</ul>
<p class="note"><strong>Catatan:</strong>
Menghapus instalasi citra sistem Developer Preview sebelum
program berakhir akan mengharuskan perangkat diatur ulang secara penuh dan menghapus semua data pengguna
Mencopot pemasangan citra sistem Developer Preview sebelum
program berakhir mengharuskan penyetelan ulang perangkat secara penuh dan membuang semua data pengguna
pada perangkat.
</p>
@@ -407,28 +415,28 @@ Ini adalah Perjanjian Lisensi Android SDK Preview ("Perjanjian Lisensi").
mengunduh Android N Preview SDK dan membuat perangkat maya untuk
emulator.</p>
<p>Pertama, unduh Android N Preview SDK sebagai berikut (jika
Anda sudah memperolehnya saat <a href="{@docRoot}preview/setup-sdk.html">menyiapkan
pengembangan Android N</a>, Anda bisa melewatkan bagian ini):
<p>Pertama, unduh Android N Preview SDK sebagai berikut (jika Anda
sudah memperolehnya saat <a href="{@docRoot}preview/setup-sdk.html">menyiapkan
pengembangan Android N</a>, Anda bisa lewati bagian ini):
<ol>
<li>Di Android Studio, buka dialog Settings
(<strong>File &gt; Settings</strong> pada Windows/Linux, atau
<strong>Android Studio &gt; Preferences</strong> pada Mac). Di panel kiri,
pilih <strong>Appearance &amp; Behavior &gt;
System Settings &gt; Android SDK</strong>.
(<strong>File &gt; Settings</strong> pada Windows/Linux, atau
<strong>Android Studio &gt; Preferences</strong> pada Mac). Di panel
kiri, pilih <strong>Appearance &amp; Behavior &gt;
System Settings &gt; Android SDK</strong>.
<li>Klik tab <strong>SDK Platforms</strong>, kemudian pilih kotak cek
<li>Klik tab <strong>SDK Platforms</strong>, kemudian pilih kotak centang
<strong>Android N Preview</strong>.</li>
<li>Klik tab <strong>SDK Tools</strong>, kemudian pilih
kotak cek <strong>Android SDK Build Tools</strong>, <strong>Android SDK
kotak centang <strong>Android SDK Build Tools</strong>, <strong>Android SDK
Platform-Tools</strong>, dan <strong>Android SDK Tools</strong>.
</li>
<li>Klik <strong>OK</strong>, dan terima
perjanjian lisensi untuk setiap paket yang akan diinstal.
perjanjian lisensi untuk setiap paket yang akan dipasang.
</li>
</ol>
@@ -448,26 +456,20 @@ dapat menjalankan citra sistem x86_64 untuk Android N.</p>
kemudian klik <strong>Next</strong>.</li>
<li>Pilih citra sistem <strong>N</strong> (dengan
<strong>x86</strong> ABI), kemudian klik <strong>Next</strong>.
(Hanya citra sistem x86 yang saat ini didukung dengan Emulator
(Hanya citra sistem x86 yang saat ini didukung dengan Android Emulator
untuk Android N Preview.)
<li>Selesaikan konfigurasi AVD selanjutnya dan klik
<strong>Finish</strong>.</li>
</ol>
<p>Anda sekarang bisa meluncurkan Emulator Android dengan Android N Preview AVD.</p>
<p>Anda sekarang bisa meluncurkan Android Emulator dengan Android N Preview AVD.</p>
<p>
Untuk mendapatkan pengalaman terbaik di Android Emulator, instal
Android Studio 2.1 Preview, yang mendukung <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0 Beta</a>
Untuk mendapatkan pengalaman terbaik di Android Emulator, pastikan Anda menggunakan
Android Studio 2.1 atau yang lebih tinggi, yang mendukung <a href="http://tools.android.com/tech-docs/emulator">Android Emulator 2.0</a>
dengan kinerja jauh lebih cepat dibandingkan Emulator di
Android Studio 1.5.</p>
<p class="note"><strong>Catatan:</strong>
Jika Anda saat ini menggunakan Android Studio 2.0 Beta, maka ada masalah yang telah diketahui
yang mencegah Anda membuat AVD dengan citra sistem N Preview, jadi
Anda saat ini perlu menggunakan preview Android Studio 2.1 untuk membuat AVD.
</p>
<p>Untuk informasi selengkapnya tentang membuat perangkat maya, lihat <a href="{@docRoot}tools/devices/index.html">Mengelola Perangkat Maya</a>.
</p>
@@ -505,9 +507,9 @@ Android Studio 1.5.</p>
function onAgreeChecked() {
/* verify that the TOS is agreed */
/* verifikasi apakah TOS disetujui */
if ($("input#agree").is(":checked")) {
/* reveal the download button */
/* tampilkan tombol unduh */
$("a#downloadForRealz").removeClass('disabled');
} else {
$("a#downloadForRealz").addClass('disabled');

View File

@@ -0,0 +1,552 @@
page.title=Pembaruan Android for Work
page.metaDescription=API dan fitur baru Android for Work di Android N.
page.keywords="android for work", "android N", "enterprise", "QR code"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Dalam dokumen ini</h2>
<ol>
<li><a href="#qr">Penyediaan Kode QR
</a></li>
<li><a href="#sec-challenge">Pertanyaan Keamanan Profil Kerja
</a></li>
<li><a href="#suspend">Menonaktifkan Akses ke Aplikasi
</a></li>
<li><a href="#toggle-work">Beralih Mode Kerja
</a></li>
<li><a href="#always-on-vpn">Always-On VPN
</a></li>
<li><a href="#contacts">Integrasi Kontak dengan Profil Kerja
</a></li>
<li><a href="#remote-reboot">Boot Ulang Jarak Jauh
</a></li>
<li><a href="#disable-roaming">Menonaktifkan Roaming Data
</a></li>
<li><a href="#process-logging">Pencatatan Proses Enterprise
</a></li>
<li><a href="#bug-reports">Laporan Bug Jarak Jauh
</a></li>
<li><a href="#remove-cert">Membuang Sertifikat Klien
</a></li>
<li><a href="#grant-cert-on-install">Memberi Akses ke Sertifikat Klien
saat Pemasangan</a></li>
<li><a href="#ui-policy">Transparansi Kebijakan UI Sistem
</a></li>
<li><a href="#restrictions-mgmt">Penyempurnaan Manajemen Pembatasan Aplikasi
</a></li>
<li><a href="#location-off">Tombol Lokasi Nonaktif
</a></li>
<li><a href="#custom-provisioning">Penyediaan yang Disesuaikan
</a></li>
<li><a href="#multi-wifi-ca">Multi-Sertifikat CA Wi-Fi
</a></li>
<li><a href="#custom-lock">Pesan Layar Kunci yang Disesuaikan
</a></li>
<li><a href="#work-connectionservice">ConnectionService Profil Kerja
</a></li>
<li><a href="#lock-wp">Mengunci Wallpaper
</a></li>
<li><a href="#lock-user-icon">Mengunci Ikon Pengguna
</a></li>
<li><a href="#health-monitoring">Pemantauan Kesehatan Perangkat
</a></li>
</ol>
<h2>Lihat Juga</h2>
<ul>
<li><a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
N Preview SDK</a></li>
</ul>
</div>
</div>
<p>Dokumen ini menjelaskan fitur baru Android for Work yang disediakan di
Android N.</p>
<h2 id="qr">Penyediaan Kode QR</h2>
<p>
Android for Work kini mendukung penggunaan kode QR untuk penyediaan perangkat
milik perusahaan. Wizard persiapan kini memungkinkan Anda memindai kode QR untuk penyediaan
perangkat.
</p>
<h2 id="sec-challenge">Pertanyaan Keamanan Profil Kerja</h2>
<p>
Pemilik profil bisa mengharuskan pengguna menetapkan pertanyaan keamanan untuk aplikasi
yang berjalan dalam profil kerja. Sistem akan menampilkan pertanyaan keamanan bila
pengguna mencoba membuka aplikasi kerja apa pun. Jika pengguna berhasil menyelesaikan
pertanyaan keamanan, sistem akan membuat profil kerja dan mendekripsinya
jika diperlukan.
</p>
<p>
Jika pemilik profil mengirim intent {@link
android.app.admin.DevicePolicyManager#ACTION_SET_NEW_PASSWORD} , sistem
akan menampilkan pertanyaan keamanan kepada pengguna. Pemilik profil juga dapat
mengirim intent <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> untuk
meminta pengguna menyetel kunci perangkat.
</p>
<p>
Pemilik profil dapat memilih untuk menyetel kebijakan sandi untuk pertanyaan pekerjaan
yang berbeda dari kebijakan sandi perangkat lainnya. Misalnya, panjang minimum
jawaban pertanyaan perangkat bisa berbeda dari panjang
yang diperlukan untuk sandi lainnya. Pemilik profil menyetel kebijakan pertanyaan
menggunakan metode{@link android.app.admin.DevicePolicyManager}
biasa, seperti {@link
android.app.admin.DevicePolicyManager#setPasswordQuality
setPasswordQuality()} dan {@link
android.app.admin.DevicePolicyManager#setPasswordMinimumLength
setPasswordMinimumLength()}. Pemilik profil juga bisa menyetel penguncian perangkat,
dengan menggunakan instance {@link android.app.admin.DevicePolicyManager} yang dikembalikan secara langsung
oleh metode <code>DevicePolicyManager.getParentProfileInstance()</code>
baru. Selain itu, pemilik profil dapat menyesuaikan layar kredensial untuk
pertanyaan kerja menggunakan kelas {@link android.app.admin.DevicePolicyManager}
dengan metode <code>setOrganizationColor()</code> dan
<code>setOrganizationName()</code> baru.
</p>
<p>
Untuk mengetahui detail tentang kelas dan metode berikut, lihat halaman referensi
<code>DevicePolicyManager</code> di <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N Preview SDK</a>.
</p>
<h2 id="suspend">Menonaktifkan Akses ke Aplikasi</h2>
<p>
Pemilik perangkat dan pemilik profil bisa menangguhkan akses untuk sementara ke paket
dengan memanggil metode <code>DevicePolicyManager.setPackagesSuspended()</code>
baru. Pemilik bisa menggunakan metode yang sama untuk mengaktifkan kembali paket tersebut.
</p>
<p>
Selagi paket ditangguhkan, maka tidak bisa memulai aktivitas, pemberitahuan ke
paket akan disembunyikan, dan entri aplikasi dalam <a href="{@docRoot}guide/components/recents.html">layar ringkasan</a> akan disembunyikan.
Paket yang ditangguhkan tidak muncul di <a href="{@docRoot}guide/components/recents.html">layar ringkasan</a>, dan
tidak bisa menampilkan dialog (termasuk toast dan snackbar). Juga tidak bisa memutar
audio atau menggetarkan perangkat.
</p>
<p>
Launcher harus menerapkan UI berbeda pada aplikasi yang ditangguhkan untuk menunjukkan
aplikasi saat ini tidak tersedia; misalnya, bisa merender ikon aplikasi
dalam warna abu-abu. Launcher bisa mengetahui apakah aplikasi ditangguhkan dengan memanggil metode
<code>DevicePolicyManager.getPackageSuspended()</code> baru.
</p>
<h2 id="toggle-work">Beralih Mode Kerja</h2>
<p>
Pada perangkat dua-profil, pengguna bisa mengaktifkan dan menonaktifkan mode kerja. Selagi mode
kerja dinonaktifkan, profil yang dikelola akan dinonaktifkan untuk sementara. Aplikasi Profil Kerja,
sinkronisasi latar belakang, dan pemberitahuan semuanya dinonaktifkan, termasuk
aplikasi pemilik profil. Selagi profil kerja dinonaktifkan, sistem
akan menampilkan ikon status tetap untuk mengingatkan pengguna bahwa mereka tidak bisa meluncurkan aplikasi
kerja. Peluncur sistem menunjukkan bahwa aplikasi kerja dan widget tidak bisa
diakses.
</p>
<h2 id="always-on-vpn">Always-On VPN</h2>
<p>
Pemilik perangkat dan pemilik profil bisa mengharuskan aplikasi kerja selalu terhubung
ke jaringan melalui VPN yang ditetapkan. Jika pemilik menyetel persyaratan ini,
perangkat secara otomatis akan memulai VPN itu saat booting.
</p>
<p>
Pemilik bisa menggunakan VPN dengan memanggil metode
<code>DevicePolicyManager.setAlwaysOnVpnPackage()</code> baru. Untuk mengetahui
apakah pemilik telah menyetel persyaratan VPN, panggil metode
<code>DevicePolicyManager.GetAlwaysOnVpnPackage()</code> baru.
</p>
<p>
Karena sistem bisa secara langsung mengikat layanan VPN tanpa interaksi aplikasi,
klien VPN perlu menangani titik masuk baru untuk Always-On VPN. Seperti sebelumnya,
Anda bisa menemukan layanan aktif dengan menggunakan filter intent yang cocok dengan tindakan
{@link android.net.VpnService android.net.VpnService}.
</p>
<p>
Pengguna bisa secara manual menyetel klien Always-On VPN yang mengimplementasikan {@link
android.net.VpnService} dengan menggunakan layar <strong>Settings &gt; More &gt;
VPN</strong>.
</p>
<h2 id="contacts">Integrasi Kontak dengan Profil Kerja</h2>
<p>
Pemilik profil bisa mengizinkan penelusuran lokal dan pencarian direktori kontak kerja
dari pengguna utama. Misalnya, seorang pengguna bisa mengakses kontak direktori pribadi dan pekerjaan
dari telepon pribadi atau aplikasi kontak mereka (jika
diizinkan oleh administrator profil mereka).
</p>
<p>
Pengembang yang memanfaatkan Contact Provider bisa menggunakan Enterprise Contacts
API untuk mengakses entri direktori profil kerja dari pengguna utama jika diizinkan
oleh kebijakan:
</p>
<ul>
<li><code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Phone.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Email.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Callable.ENTERPRISE_CONTENT_FILTER_URI</code>
</li>
<li><code>ContactsContract.Directory.ENTERPRISE_CONTENT_URI</code>
</li>
<li><code>ContactsContract.Directory.isEntepriseDirectoryId()</code>
</li>
</ul>
<p>
Pemilik profil bisa mengendalikan visibilitas kontak kerja di
pengguna utama menggunakan metode baru berikut:
</p>
<ul>
<li>
<code>DevicePolicyManager.setCrossProfileContactsSearchDisabled()</code>
</li>
<li>
<code>DevicePolicyManager.getCrossProfileContactsSearchDisabled()</code>
</li>
</ul>
<h2 id="remote-reboot">Boot Ulang Jarak Jauh</h2>
<p>
Pemilik perangkat bisa mem-boot ulang perangkat dari jarak jauh. Di beberapa kasus, perangkat yang diluncurkan di
tempat umum dalam pembatas bisa mencegah akses ke tombol daya. Jika
perangkat perlu di-boot ulang, administrator bisa melakukannya dengan metode
<code>DevicePolicyManager.reboot()</code> baru.
</p>
<h2 id="disable-roaming">Menonaktifkan Roaming Data</h2>
<p>
Pemilik perangkat bisa menonaktifkan roaming data menggunakan pembatasan pengguna {@link
android.os.UserManager} <code>DISALLOW_DATA_ROAMING</code> baru.
</p>
<h2 id="process-logging">Pencatatan Proses Enterprise</h2>
<p>
Pemilik perangkat bisa mengenali aktivitas mencurigakan dengan melacak perangkat dari jarak jauh,
termasuk peluncuran aplikasi, aktivitas adb, dan pembukaan kunci layar. Log proses
tidak memerlukan persetujuan pengguna. Untuk mengambil log, pemilik perangkat mengaktifkan
pencatatan perangkat menggunakan <code>DevicePolicyManager.setSecurityLoggingEnabled()</code>.
</p>
<p>
Perubahan API meliputi:
</p>
<ul>
<li>
Kelas <code>android.app.admin.SecurityLog</code> baru dan
metodenya
</li>
<li>
<code>void DevicePolicyManager.setSecurityLoggingEnabled()</code>
</li>
<li>
<code>boolean DevicePolicyManager.isSecurityLoggingEnabled()</code>
</li>
<li>
<code>List&lt;SecurityEvent&gt;
DevicePolicyManager.retrieveSecurityLogs()</code>
</li>
<li>
<code>List&lt;SecurityEvent&gt;
DevicePolicyManager.retrievePreRebootSecurityLogs()</code>
</li>
<li>
<code>void DeviceAdminReceiver.onSecurityLogsAvailable()</code>
</li>
</ul>
<h2 id="bug-reports">Laporan Bug Jarak Jauh</h2>
<p>
Pemilik perangkat bisa memicu dari jarak jauh dan mengambil laporan bug yang berisi
file dump status perangkat, yang memungkinkan penyelidikan forensik atas
kesalahan yang diketahui atau perangkat yang telah diutak-atik. Dikarenakan sifat detail laporan bug,
maka diperlukan persetujuan pengguna.
</p>
<p>
Android N menyertakan tambahan API berikut untuk mendukung fitur ini. Untuk detailnya, lihat
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
N Preview SDK</a>.
</p>
<ul>
<li>
<code>DevicePolicyManager.requestBugreport()</code>
</li>
<li>
<code>DeviceAdminReceiver.onBugreportFailed()</code>
</li>
<li>
<code>DeviceAdminReceiver.onBugreportShared()</code>
</li>
<li>
<code>DeviceAdminReceiver.onBugreportSharingDeclined()</code>
</li>
<li>
<code>DeviceAdminReceiver.BUGREPORT_FAILURE_FAILED_COMPLETING</code>
</li>
<li>
<code>DeviceAdminReceiver.BUGREPORT_FAILURE_FILE_NO_LONGER_AVAILABLE</code>
</li>
</ul>
<h2 id="remove-cert">Membuang Sertifikat Klien</h2>
<p>
Pemilik profil dan pemilik perangkat kini bisa membuang sertifikat klien yang telah dipasang melalui
{@link android.app.admin.DevicePolicyManager#installKeyPair
installKeyPair()} dengan memanggil metode baru
<code>DevicePolicyManager.removeKeyPair()</code>.
</p>
<h2 id="grant-cert-on-install">Memberi Akses ke Sertifikat Klien
saat Pemasangan</h2>
<p>
Jika pemilik profil dan pemilik perangkat memberikan kemampuan kepada aplikasi pihak ketiga untuk
mengelola sertifikat, aplikasi bisa memberikan akses pada dirinya sendiri ke sertifikat
yang dipasangnya tanpa intervensi dari pemilik.
</p>
<p>
API yang sudah ada untuk mengelola sertifikat diperluas untuk mencakup:
</p>
<ul>
<li><code>DevicePolicyManager.installKeyPair()</code>
</li>
</ul>
<h2 id="ui-policy">Transparansi Kebijakan UI Sistem</h2>
<p>
Kebijakan yang memengaruhi pengalaman pengguna atau membatasi Settings pengguna sepenuhnya
diungkapkan kepada pengguna, serta pemilik profil dan pemilik perangkat bisa memberlakukan
kebijakannya kepada departemen TI perusahaan mereka. Selain pesan “Action
not allowed” yang konsisten di Settings, administrator TI bisa menyetel
pesan dukungan khusus-organisasi di setelan perangkat dengan metode
{@link android.app.admin.DevicePolicyManager} baru berikut:
</p>
<ul>
<li>
<code>DevicePolicyManager.setShortSupportMessage()</code>
</li>
<li>
<code>DevicePolicyManager.setLongSupportMessage()</code>
</li>
</ul>
<h2 id="restrictions-mgmt">Penyempurnaan Manajemen Pembatasan Aplikasi</h2>
<p>
Pemilik perangkat atau profil bisa mengaktifkan aplikasi lain untuk mengelola
pembatasan aplikasi melalui metode
<code>DevicePolicyManager.setApplicationRestrictionsManagingPackage()</code>
baru. Aplikasi yang dipilih bisa memeriksa apakah izin ini telah
diberikan dengan memanggil
<code>DevicePolicyManager.isCallerApplicationRestrictionsManagingPackage()</code>.
</p>
<p>
Aplikasi yang dipilih untuk mengelola pembatasan aplikasi bisa memanggil {@link
android.app.admin.DevicePolicyManager#setApplicationRestrictions
setApplicationRestrictions()} dan {@link
android.app.admin.DevicePolicyManager#getApplicationRestrictions
getApplicationRestrictions()} untuk paket apa pun di pengguna atau profil itu.
</p>
<h2 id="location-off">Tombol Lokasi Nonaktif</h2>
<p>
Pengguna bisa menonaktifkan izin lokasi untuk aplikasi kerja sambil melanjutkan
akses informasi lokasi di aplikasi pribadi mereka. Tombol akses
lokasi yang terpisah di Location Settings memungkinkan pengguna untuk menolak pembaruan lokasi atau
kueri lokasi terakhir untuk aplikasi yang berjalan di profil kerja.
</p>
<p>
Tombol lokasi nonaktif level teratas menonaktifkan akses lokasi untuk
profil utama dan profil yang dikelola.
</p>
<h2 id="custom-provisioning">Penyediaan yang Disesuaikan</h2>
<p>
Aplikasi bisa menyesuaikan alur penyediaan pemilik profil dan pemilik perangkat
dengan warna dan logo perusahaan.
</p>
<dl>
<dt>
<code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>
</dt>
<dd>
Menyesuaikan warna alur.
</dd>
<dt>
<code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
</dt>
<dd>
Menyesuaikan alur dengan logo perusahaan.
</dd>
</dl>
<h2 id="multi-wifi-ca">Multi-Sertifikat CA Wi-Fi</h2>
<p>
Pemilik profil dan pemilik perangkat bisa menyetel beberapa sertifikat CA sekaligus untuk
konfigurasi Wi-Fi yang diberikan. Bila jaringan Wi-Fi perusahaan memiliki CA terpisah untuk
titik akses yang terpisah dengan SSID yang sama, administrator TI bisa menyertakan semua
CA yang relevan dalam konfigurasi Wi-Fi menggunakan metode
<code>setCaCertificates()</code> baru.
</p>
<p>
API yang ditambah adalah:
</p>
<ul>
<li>
<code>WifiEnterpriseConfig.setCaCertificates()</code>
</li>
<li>
<code>WifiEnterpriseConfig.getCaCertificates()</code>
</li>
</ul>
<h2 id="custom-lock">Pesan Layar Terkunci yang Disesuaikan</h2>
<p>
Pemilik perangkat bisa menyediakan informasi pemilik agar ditampilkan di layar kunci.
Informasi ini lebih diprioritaskan dari pesan layar kunci pengguna (jika sudah ada
yang disetel). Metode {@link android.app.admin.DevicePolicyManager} baru adalah:
</p>
<ul>
<li>
<code>setDeviceOwnerLockScreenInfo()</code>
</li>
<li>
<code>getDeviceOwnerLockScreenInfo()</code>
</li>
</ul>
<h2 id="work-connectionservice">ConnectionService Profil Kerja</h2>
<p>
Pemilik profil bisa menetapkan aplikasi telepon kerja yang menggunakan
{@link android.telecom.ConnectionService} khusus-kerja untuk
backend panggilan (akun panggilan). Telepon kerja hanya menyimpan log panggilan kerja
dan hanya mengandalkan kontak kerja. Pengguna memiliki pengalaman UI
saat-panggilan yang konsisten, apa pun aplikasi panggilannya. Panggilan telepon kerja yang masuk ke akun panggilan kerja
dibedakan dari telepon pribadi yang masuk
ke akun panggilan pribadi.
</p>
<p>
Penelepon harus memeriksa tanda baru
<code>android.telecom.Call.PROPERTY_WORK_CALL</code> untuk menentukan apakah telepon tersebut merupakan
telepon kerja. Jika merupakan telepon kerja, penelepon harus menunjukkannya,
misalnya dengan menambahkan lencana kerja.
</p>
<h2 id="lock-wp">Mengunci Wallpaper</h2>
<p>
Pembatasan pengguna baru (<code>DISALLOW_SET_WALLPAPER</code>) mencegah
pengguna mengubah wallpaper mereka. Pemilik perangkat atau pemilik profil tetap bisa
mengubah wallpaper, namun mereka hanya bisa mengubah wallpaper
untuk pengguna atau profil yang mereka kontrol. Misalnya, pemilik profil tidak bisa mengubah
wallpaper pengguna induk, namun pemilik profil utama di profil utama atau
pemilik perangkat bisa melakukannya. Pemilik profil atau pemilik perangkat yang ingin mengubah
wallpapernya harus memeriksa apakah pengguna atau profil
yang mereka kelola memiliki wallpaper ({@link android.app.WallpaperManager#isWallpaperSupported
isWallpaperSupported()}) dan apakah mereka diperbolehkan untuk mengubahnya (dengan metode
baru<code>WallpaperManager.isWallpaperSettingAllowed()</code>)
</p>
<h2 id="lock-user-icon">Mengunci Ikon Pengguna</h2>
<p>
Pembatasan pengguna baru (<code>DISALLOW_SET_USER_ICON</code>) mencegah
pengguna mengubah ikon pengguna mereka. Pemilik perangkat atau pemilik profil pengguna
tetap bisa mengubah ikon. Akan tetapi, pemilik profil hanya bisa mengubah ikon
pengguna untuk profil yang dikontrolnya.
</p>
<h2 id="health-monitoring">Pemantauan Kesehatan Perangkat</h2>
<p>
Pemilik perangkat atau pemilik profil bisa menggunakan antarmuka
<code>HardwarePropertiesManager</code> baru untuk mengambil informasi
tentang kesehatan perangkat, seperti suhu CPU atau GPU dan penggunaan CPU. Antarmuka pemantauan
baru ini khususnya berguna untuk memantau berjalannya perangkat yang tidak diawasi
di lokasi yang jauh.
</p>

View File

@@ -1,5 +1,5 @@
page.title=Optimisasi Latar Belakang
page.metaDescription=Pembatasan baru untuk siaran implisit.
page.title=Optimalisasi Latar Belakang
page.metaDescription=Pembatasan baru pada siaran implisit.
page.keywords="android N", "implicit broadcasts", "job scheduler"
page.image=images/cards/card-nyc_2x.jpg
@@ -49,39 +49,41 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Proses latar belakang bisa menguras memori dan baterai. Misalnya, sebuah
siaran implisit dapat memulai banyak proses latar belakang yang telah didaftarkan
untuk mendengarkannya, sekalipun proses-proses itu mungkin tidak melakukan banyak pekerjaan. Ini bisa
untuk mendengarkannya, sekalipun proses-proses itu mungkin tidak melakukan banyak pekerjaan. Hal ini bisa
berdampak besar pada kinerja perangkat dan pengalaman pengguna.
</p>
<p>
Untuk meminimalkan masalah ini, N Developer Preview menerapkan pembatasan
Untuk meringankan masalah ini, Android N menerapkan pembatasan
berikut:
</p>
<ul>
<li>Aplikasi yang menargetkan Preview tidak menerima siaran {@link
<li>Aplikasi yang menargetkan Pratinjau tidak menerima siaran {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} jika mereka
mendaftar untuk menerimanya dalam manifes mereka. Aplikasi yang berjalan di latar depan
tetap bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread utama mereka dengan
mendaftarkan {@link android.content.BroadcastReceiver} pada {@link
mendaftar untuk menerimanya dalam manifes mereka. Aplikasi yang berjalan tetap
bisa mendengarkan {@code CONNECTIVITY_CHANGE} pada thread utama mereka dengan mendaftarkan
{@link android.content.BroadcastReceiver} pada {@link
android.content.Context#registerReceiver Context.registerReceiver()}.
</li>
<li>Aplikasi tidak bisa mengirim atau menerima siaran {@link
android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Optimisasi ini
memengaruhi semua aplikasi, bukan hanya aplikasi yang menargetkan Preview.
android.hardware.Camera#ACTION_NEW_VIDEO}. Optimalisasi ini
memengaruhi semua aplikasi, tidak hanya aplikasi yang menargetkan Pratinjau.
</li>
</ul>
<p>
Jika aplikasi Anda menggunakan intent ini, Anda harus membuang dependensi padanya
secepat mungkin agar Anda bisa menargetkan perangkat Android N dengan benar.
Kerangka kerja Android menyediakan beberapa solusi untuk mengurangi kebutuhan akan
siaran implisit ini. Misalnya, {@link android.app.job.JobScheduler}
dan<a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
{@code GcmNetworkManager}</a> menyediakan mekanisme yang tangguh untuk menjadwalkan operasi
jaringan bila kondisi yang ditetapkan, seperti koneksi ke jaringan
berbiaya tetap, terpenuhi. Anda sekarang juga bisa menggunakan {@link android.app.job.JobScheduler}
untuk bereaksi terhadap perubahan penyedia konten. Objek {@link android.app.job.JobInfo}
untuk bereaksi terhadap perubahan penyedia materi. Objek {@link android.app.job.JobInfo}
membungkus parameter yang digunakan {@link android.app.job.JobScheduler}
untuk menjadwalkan pekerjaan Anda. Bila syarat-syarat pekerjaan sudah terpenuhi, sistem
akan mengeksekusi pekerjaan ini pada {@link android.app.job.JobService} aplikasi Anda.
@@ -98,20 +100,20 @@ page.image=images/cards/card-nyc_2x.jpg
</h2>
<p>
Aplikasi yang menargetkan N Developer Preview tidak menerima siaran {@link
Aplikasi yang menargetkan Android N tidak menerima siaran {@link
android.net.ConnectivityManager#CONNECTIVITY_ACTION} jika mereka
mendaftar untuk menerimanya dalam manifes mereka, dan proses yang bergantung pada siaran
ini tidak akan dimulai. Hal ini bisa menimbulkan masalah bagi aplikasi yang ingin
mendengarkan perubahan jaringan atau melakukan aktivitas jaringan dalam jumlah besar bila perangkat
memantau perubahan jaringan atau melakukan aktivitas jaringan dalam jumlah besar bila perangkat
menghubungkan ke jaringan berbiaya tetap. Beberapa solusi untuk menyiasati pembatasan
ini sudah ada dalam kerangka kerja Android, namun pemilihan solusi
yang tepat bergantung pada apa yang ingin dicapai oleh aplikasi Anda.
</p>
<p class="note">
<strong>Catatan:</strong> Sebuah {@link android.content.BroadcastReceiver} yang didaftarkan dengan
<strong>Catatan:</strong> Sebuah {@link android.content.BroadcastReceiver} yang mendaftar pada
{@link android.content.Context#registerReceiver Context.registerReceiver()}
akan terus menerima siaran ini saat aplikasi berada di latar depan.
akan terus menerima siaran ini saat aplikasi berjalan.
</p>
<h3 id="sched-jobs">
@@ -120,12 +122,12 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Saat menggunakan kelas {@link android.app.job.JobInfo.Builder JobInfo.Builder}
untuk membuat objek {@link android.app.job.JobInfo} Anda, terapkan metode {@link
untuk membangun objek {@link android.app.job.JobInfo} Anda, terapkan metode {@link
android.app.job.JobInfo.Builder#setRequiredNetworkType
setRequiredNetworkType()} dan teruskan {@link android.app.job.JobInfo
JobInfo.NETWORK_TYPE_UNMETERED} sebagai parameter pekerjaan. Contoh kode berikut
menjadwalkan layanan yang akan dijalankan bila perangkat menghubungkan ke jaringan
berbiaya tetap dan saat mengisi baterai:
menjadwalkan layanan yang akan dijalankan ketika perangkat terhubung ke jaringan
berbiaya tetap dan dikenai biaya:
</p>
<pre>
@@ -152,8 +154,8 @@ public static void scheduleJob(Context context) {
</p>
<p>
Aplikasi yang menggunakan layanan GMSCore, dan menargetkan Android 5.0 (API tingkat 21)
atau lebih rendah, bisa menggunakan <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
Aplikasi yang menggunakan layanan GMSCore, dan menargetkan Android 5.0 (API level 21)
atau yang lebih rendah, bisa menggunakan <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
{@code GcmNetworkManager}</a> dan menetapkan {@code Task.NETWORK_STATE_UNMETERED}.
</p>
@@ -162,11 +164,10 @@ public static void scheduleJob(Context context) {
</h3>
<p>
Aplikasi yang berjalan di latar depan tetap bisa mendengarkan {@code
CONNECTIVITY_CHANGE} dengan {@link
android.content.BroadcastReceiver} yang didaftarkan. Akan tetapi, {@link
Aplikasi yang berjalan tetap bisa memantau {@code CONNECTIVITY_CHANGE} dengan
{@link android.content.BroadcastReceiver} yang telah didaftarkan. Akan tetapi, {@link
android.net.ConnectivityManager} API menyediakan metode yang lebih tangguh untuk meminta
callback hanya bila syarat jaringan yang ditetapkan terpenuhi.
callback hanya bila persyaratan jaringan yang ditetapkan terpenuhi.
</p>
<p>
@@ -194,13 +195,13 @@ public static void scheduleJob(Context context) {
</h2>
<p>
Di N Developer Preview, aplikasi tidak dapat mengirim atau menerima siaran {@link
Di Android N, aplikasi tidak bisa mengirim atau menerima siaran {@link
android.hardware.Camera#ACTION_NEW_PICTURE} atau {@link
android.hardware.Camera#ACTION_NEW_VIDEO}. Pembatasan ini membantu
meminimalkan dampak negatif terhadap kinerja dan pengalaman pengguna bila beberapa aplikasi harus
aktif untuk memproses gambar atau video baru. N Developer Preview
menambahkan {@link android.app.job.JobInfo} dan {@link
android.app.job.JobParameters} untuk memberikan solusi alternatif.
meringankan dampak terhadap kinerja dan pengalaman pengguna bila beberapa aplikasi harus
aktif untuk memproses gambar atau video baru. Android N
memperluas {@link android.app.job.JobInfo} dan {@link
android.app.job.JobParameters} untuk menyediakan solusi alternatif.
</p>
<h3 id="new-jobinfo">
@@ -208,7 +209,7 @@ public static void scheduleJob(Context context) {
</h3>
<p>
Untuk memicu pekerjaan saat perubahan URI konten, N Developer Preview menambahkan
Untuk memicu pekerjaan saat perubahan URI materi, Android N memperluas
{@link android.app.job.JobInfo} API dengan metode berikut:
</p>
@@ -218,7 +219,7 @@ public static void scheduleJob(Context context) {
</dt>
<dd>
Membungkus parameter yang diperlukan untuk memicu pekerjaan saat perubahan URI konten.
Membungkus parameter yang diperlukan untuk memicu pekerjaan saat perubahan URI materi.
</dd>
<dt>
@@ -228,9 +229,9 @@ public static void scheduleJob(Context context) {
<dd>
Meneruskan objek {@code TriggerContentUri} ke {@link
android.app.job.JobInfo}. Sebuah {@link android.database.ContentObserver}
akan memantau URI konten yang dibungkus. Jika ada beberapa objek {@code
TriggerContentUri} yang dikaitkan dengan pekerjaan, sistem akan memberikan sebuah
callback sekalipun itu melaporkan perubahan di salah satu URI konten saja.
akan memantau URI materi yang dibungkus. Jika terdapat beberapa objek {@code
TriggerContentUri} yang berhubungan dengan pekerjaan, sistem memberikan sebuah
callback bahkan jika itu hanya melaporkan perubahan pada salah satu URI materi.
</dd>
<dd>
@@ -246,14 +247,14 @@ public static void scheduleJob(Context context) {
<strong>Catatan:</strong> {@code TriggerContentUri()} tidak bisa digunakan
bersama-sama dengan {@link android.app.job.JobInfo.Builder#setPeriodic
setPeriodic()} atau {@link android.app.job.JobInfo.Builder#setPersisted
setPersisted()}. Untuk terus memantau perubahan konten, jadwalkan
setPersisted()}. Untuk terus memantau perubahan materi, jadwalkan
{@link android.app.job.JobInfo} baru sebelum {@link
android.app.job.JobService} aplikasi selesai menangani callback terbaru.
</p>
<p>
Kode contoh berikut menjadwalkan pekerjaan yang akan dipicu bila sistem melaporkan
perubahan ke URI konten, {@code MEDIA_URI}:
perubahan ke URI materi, {@code MEDIA_URI}:
</p>
<pre>
@@ -266,13 +267,13 @@ public static void scheduleJob(Context context) {
MY_BACKGROUND_JOB,
new ComponentName(context, MediaContentJob.class));
builder.addTriggerContentUri(
new JobInfo.TriggerContentUri(MEDIA_URI,
new JobInfo.TriggerContentUri(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
js.schedule(builder.build());
}
</pre>
<p>
Bila sistem melaporkan perubahan dalam URI konten yang ditetapkan, aplikasi Anda
Bila sistem melaporkan perubahan dalam URI materi yang ditetapkan, aplikasi Anda
akan menerima callback dan objek {@link android.app.job.JobParameters}
akan diteruskan ke metode {@link android.app.job.JobService#onStartJob onStartJob()}
dalam {@code MediaContentJob.class}.
@@ -283,8 +284,8 @@ public static void scheduleJob(Context context) {
</h3>
<p>
N Developer Preview juga menambahkan {@link android.app.job.JobParameters} untuk
memungkinkan aplikasi Anda menerima informasi yang berguna tentang otoritas konten
Android N juga memperluas {@link android.app.job.JobParameters} untuk
memungkinkan aplikasi Anda menerima informasi yang berguna tentang otoritas materi
dan URI yang memicu pekerjaan:
</p>
@@ -305,16 +306,16 @@ public static void scheduleJob(Context context) {
</dt>
<dd>
Mengembalikan larik string otoritas konten yang telah memicu pekerjaan.
Mengembalikan larik string otoritas materi yang telah memicu pekerjaan.
Jika larik yang dikembalikan bukan {@code null}, gunakan {@code getTriggeredContentUris()}
untuk mengambil detail URI yang telah berubah.
</dd>
</dl>
<p>
Kode contoh berikut mengesampingkan metode {@link
Kode contoh berikut mengganti metode {@link
android.app.job.JobService#onStartJob JobService.onStartJob()} dan
mencatat otoritas konten serta URI yang telah memicu pekerjaan:
mencatat otoritas materi serta URI yang telah memicu pekerjaan:
</p>
<pre>
@@ -353,17 +354,17 @@ public boolean onStartJob(JobParameters params) {
</h2>
<p>
Mengoptimalkan aplikasi Anda untuk berjalan pada perangkat minim memori, atau dalam kondisi
minim memori, bisa meningkatkan kinerja dan pengalaman pengguna. Menghilangkan
Mengoptimalkan aplikasi Anda untuk berjalan pada perangkat yang mempunyai memori rendah, atau dalam kondisi
memori rendah, dapat meningkatkan kinerja dan pengalaman pengguna. Membuang
dependensi pada layanan latar belakang dan penerima siaran
implisit yang terdaftar secara statis bisa membantu aplikasi Anda berjalan lebih baik pada perangkat demikian. Meskipun
N Developer Preview telah mengambil langkah-langkah untuk mengurangi sebagian masalah ini, Anda disarankan
Android N telah mengambil langkah-langkah untuk mengurangi sebagian masalah ini, Anda disarankan
agar mengoptimalkan aplikasi untuk berjalan tanpa menggunakan
proses latar belakang ini seluruhnya.
proses latar belakang ini sama sekali.
</p>
<p>
N Developer Preview memperkenalkan beberapa tambahan perintah <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> yang
Android N memperkenalkan beberapa tambahan perintah <a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a> yang
bisa Anda gunakan untuk menguji perilaku aplikasi dengan proses latar belakang dinonaktifkan:
</p>
@@ -374,7 +375,7 @@ public boolean onStartJob(JobParameters params) {
<li style="list-style: none; display: inline">
<pre class="no-pretty-print">
{@code $ adb shell cmd appops set RUN_IN_BACKGROUND ignore}
{@code $ adb shell cmd appops set &lt;package&gt; RUN_IN_BACKGROUND ignore}
</pre>
</li>
@@ -384,7 +385,7 @@ public boolean onStartJob(JobParameters params) {
<li style="list-style: none; display: inline">
<pre class="no-pretty-print">
{@code $ adb shell cmd appops set RUN_IN_BACKGROUND allow}
{@code $ adb shell cmd appops set &lt;package&gt; RUN_IN_BACKGROUND allow}
</pre>
</li>
</ul>
</ul>

View File

@@ -0,0 +1,234 @@
page.title=Data Saver
metaDescription=Optimalisasi penggunaan data yang diaktifkan pengguna.
page.keywords="android N", "data usage", "metered network"
page.image=images/cards/card-nyc_2x.jpg
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>
Dalam dokumen ini
</h2>
<ol>
<li>
<a href="#status">Memeriksa Preferensi Data Saver</a>
<ol>
<li>
<a href="#request-whitelist">Meminta izin daftar putih</a>
</li>
</ol>
</li>
<li>
<a href="#monitor-changes">Memantau Perubahan pada Preferensi
Data Saver</a>
</li>
<li>
<a href="#testing">Menguji dengan Perintah Android Debug Bridge</a>
</li>
</ol>
</div>
</div>
<p>
Selama penggunaan ponsel cerdas, biaya paket data seluler bisa saja
melebihi harga perangkat itu sendiri. Di N Developer Preview, pengguna bisa
mengaktifkan Data Saver berdasarkan lingkup perangkat untuk menghemat data, baik saat
roaming, mendekati akhir siklus penagihan, atau pada paket data prabayar kecil.
</p>
<p>
Bila pengguna mengaktifkan Data Saver di <strong>Settings</strong> dan perangkat
berada dalam jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi tahu
aplikasi untuk menghemat penggunaan data latar depan bila memungkinkan. Pengguna bisa
memasukkan aplikasi tertentu ke daftar putih untuk memungkinkan penggunaan data berkuota bila Data
Saver diaktifkan.
</p>
<p>
N Developer Preview memperluas {@link android.net.ConnectivityManager}
API untuk menyediakan cara pada aplikasi untuk <a href="#status">menerima preferensi Data Saver
pengguna</a> dan <a href="#monitor-changes">memantau perubahan
preferensi</a>. Hal ini dianggap praktik terbaik bagi aplikasi untuk memeriksa apakah
pengguna telah mengaktifkan DataSaver dan berusaha membatasi penggunaan data latar depan dan
data latar belakang.
</p>
<h2 id="status">
Memeriksa Preferensi Data Saver
</h2>
<p>
Di N Developer Preview, aplikasi bisa menggunakan {@link
android.net.ConnectivityManager} API untuk menentukan pembatasan penggunaan data
apa yang sedang diterapkan. Metode {@code getRestrictBackgroundStatus()}
akan mengembalikan salah satu dari nilai berikut:
</p>
<dl>
<dt>
{@code RESTRICT_BACKGROUND_STATUS_DISABLED}
</dt>
<dd>
Data Saver dinonaktifkan.
</dd>
<dt>
{@code RESTRICT_BACKGROUND_STATUS_ENABLED}
</dt>
<dd>
Pengguna telah mengaktifkan Data Saver untuk aplikasi ini. Aplikasi harus berusaha membatasi
penggunaan data di latar depan dan dengan halus menangani pembatasan penggunaan
data latar belakang.
</dd>
<dt>
{@code RESTRICT_BACKGROUND_STATUS_WHITELISTED}
</dt>
<dd>
Pengguna telah mengaktifkan Data Saver namun aplikasi telah dimasukkan dalam daftar putih. Aplikasi harus
tetap berusaha membatasi penggunaan data latar belakang dan latar depan.
</dd>
</dl>
<p>
Hal ini dianggap praktik terbaik untuk membatasi penggunaan data bila perangkat
terhubung ke jaringan berkuota, meskipun Data Saver telah dinonaktifkan atau aplikasi
telah dimasukkan dalam daftar putih. Kode contoh berikut menggunakan {@link
android.net.ConnectivityManager#isActiveNetworkMetered
ConnectivityManager.isActiveNetworkMetered()} dan {@code
ConnectivityManager.getRestrictBackgroundStatus()} untuk menentukan berapa banyak data
yang harus digunakan aplikasi:
</p>
<pre>
ConnectivityManager connMgr = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
// Checks if the device is on a metered network
if (connMgr.isActiveNetworkMetered()) {
// Checks user’s Data Saver settings.
switch (connMgr.getRestrictBackgroundStatus()) {
case RESTRICT_BACKGROUND_STATUS_ENABLED:
// Background data usage is blocked for this app. Wherever possible,
// the app should also use less data in the foreground.
case RESTRICT_BACKGROUND_STATUS_WHITELISTED:
// The app is whitelisted. Wherever possible,
// the app should use less data in the foreground and background.
case RESTRICT_BACKGROUND_STATUS_DISABLED:
// Data Saver is disabled. Since the device is connected to a
// metered network, the app should use less data wherever possible.
}
} else {
// The device is not on a metered network.
// Use data as required to perform syncs, downloads, and updates.
}
</pre>
<h3 id="request-whitelist">
Meminta izin daftar putih
</h3>
<p>
Jika aplikasi Anda perlu menggunakan data di latar belakang, aplikasi bisa meminta izin
daftar putih dengan mengirim
<code>Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS</code>
yang mengandung URI dari nama paket aplikasi Anda: misalnya,
<code>package:MY_APP_ID</code>.
</p>
<p>
Mengirim intent dan URI akan membuka aplikasi <strong>Settings</strong> dan
menampilkan setelan penggunaan data untuk aplikasi Anda. Pengguna nanti bisa memutuskan apakah akan
mengaktifkan data latar belakang untuk aplikasi Anda. Sebelum Anda mengirim intent ini, sebaiknya
tanyakan kepada pengguna terlebih dahulu apakah mereka ingin membuka aplikasi
<strong>Settings</strong> untuk keperluan mengaktifkan penggunaan
data latar belakang.
</p>
<h2 id="monitor-changes">
Memantau Perubahan pada Preferensi Data Saver
</h2>
<p>
Aplikasi bisa memantau perubahan pada preferensi Data Saver dengan membuat {@link
android.content.BroadcastReceiver} untuk memantau {@code
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED} dan secara dinamis
mendaftarkan penerima pada {@link android.content.Context#registerReceiver
Context.registerReceiver()}. Bila menerima siaran ini, aplikasi harus
<a href="#status">memeriksa apakah preferensi Data Saver baru memengaruhi
izinnya</a> dengan memanggil {@code
ConnectivityManager.getRestrictBackgroundStatus()}.
</p>
<p class="note">
<strong>Catatan:</strong> Sistem hanya mengirim siaran ini ke aplikasi yang
secara dinamis mendaftar padanya dengan {@link
android.content.Context#registerReceiver Context.registerReceiver()}. Aplikasi
yang mendaftar untuk menerima siaran ini dalam manifes mereka
tidak akan menerimanya.
</p>
<h2 id="testing">
Menguji dengan Perintah Android Debug Bridge
</h2>
<a href="{@docRoot}tools/help/adb.html">Android Debug Bridge (ADB)</a>
menyediakan beberapa perintah yang bisa Anda gunakan untuk memeriksa dan
mengonfigurasi izin jaringan:
<dl>
<dt>
<code>$ adb shell dumpsys netpolicy</code>
</dt>
<dd>
Menghasilkan laporan berisi setelan pembatasan jaringan latar belakang
global saat ini, UID paket saat ini di daftar putih, dan izin jaringan
untuk paket yang diketahui lainnya.
</dd>
<dt>
<code>$ adb shell cmd netpolicy</code>
</dt>
<dd>
Menampilkan daftar lengkap dari perintah Network Policy Manager (netpolicy).
</dd>
<dt>
<code>$ adb shell cmd netpolicy set restrict-background
&lt;boolean&gt;</code>
</dt>
<dd>
Mengaktifkan atau menonaktifkan mode Data Saver saat meneruskan <code>true</code> atau
<code>false</code>, masing-masing.
</dd>
<dt>
<code>$ adb shell cmd netpolicy add restrict-background-whitelist
&lt;UID&gt;</code>
</dt>
<dd>
Menambahkan UID paket tertentu ke daftar putih untuk mengizinkan penggunaan data berkuota
di latar belakang.
</dd>
<dt>
<code>$ adb shell cmd netpolicy remove restrict-background-whitelist
&lt;UID&gt;</code>
</dt>
<dd>
Membuang UID paket tertentu dari daftar putih untuk memblokir
penggunaan data berkuota di latar belakang saat Data Saver diaktifkan.
</dd>
</dl>

View File

@@ -1,5 +1,5 @@
page.title=Direct Boot
page.keywords=preview,sdk,direct boot
page.keywords=pratinjau,sdk,direct boot
page.tags=androidn
page.image=images/cards/card-nyc_2x.jpg
@@ -36,7 +36,7 @@ untuk aplikasi yang perlu dijalankan selama mode Direct Boot antara lain:</p>
<ul>
<li>Aplikasi yang telah menjadwalkan pemberitahuan, seperti aplikasi
jam alarm.</li>
beker.</li>
<li>Aplikasi yang menyediakan pemberitahuan pengguna yang penting, seperti aplikasi SMS.</li>
<li>Aplikasi yang menyediakan layanan aksesibilitas, seperti TalkBack.</li>
</ul>
@@ -44,7 +44,7 @@ jam alarm.</li>
<p>Jika aplikasi Anda perlu mengakses data saat dijalankan dalam mode Direct Boot, gunakan
penyimpanan yang dienkripsi dengan perangkat. Penyimpanan yang dienkripsi dengan perangkat berisi data
yang dienkripsi dengan kunci yang hanya tersedia setelah perangkat melakukan
boot yang berhasil diverifikasi.</p>
booting yang berhasil diverifikasi.</p>
<p>Untuk data yang harus dienkripsi dengan kunci yang dikaitkan dengan kredensial
pengguna, seperti PIN atau kata sandi, gunakan penyimpanan yang dienkripsi dengan kredensial.
@@ -58,8 +58,8 @@ penyimpanan yang dienkripsi dengan kredensial.</p>
<p>Aplikasi harus mendaftarkan komponennya pada sistem agar
bisa berjalan selama mode Direct Boot atau mengakses
penyimpanan yang dienkripsi dengan perangkat. Aplikasi mendaftar pada sistem dengan menandai komponen sebagai
<i>peka enkripsi</i>. Untuk menandai komponen Anda sebagai peka enkripsi, atur atribut
<code>android:encryptionAware</code> ke true dalam manifes Anda.<p>
<i>peka enkripsi</i>. Untuk menandai komponen Anda sebagai peka enkripsi, setel atribut
<code>android:directBootAware</code> ke true dalam manifes Anda.<p>
<p>Komponen yang peka enkripsi bisa mendaftar untuk menerima pesan siaran
<code>LOCKED_BOOT_COMPLETED</code> dari
@@ -72,8 +72,8 @@ dijalankan selama mode Direct Boot, seperti memicu alarm yang terjadwal.</p>
filter intent untuk <code>LOCKED_BOOT_COMPLETED</code>, dalam manifes aplikasi:</p>
<pre>
&lt;receiever
android:encryptionAware="true" &gt;
&lt;receiver
android:directBootAware="true" &gt;
...
&lt;intent-filter&gt;
&lt;action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /&gt;
@@ -88,13 +88,13 @@ penyimpanan yang dienkripsi dengan perangkat serta penyimpanan yang dienkripsi d
<p>Untuk mengakses penyimpanan yang dienkripsi dengan perangkat, buat instance
{@link android.content.Context} kedua dengan memanggil
<code>Context.createDeviceEncryptedStorageContext()</code>. Semua panggilan
API penyimpanan yang dibuat menggunakan konteks ini akan mengakses penyimpanan yang dienkripsi dengan perangkat. Contoh
<code>Context.createDeviceProtectedStorageContext()</code>. Semua panggilan
API penyimpanan yang dibuat menggunakan konteks ini mengakses penyimpanan yang dienkripsi dengan perangkat. Contoh
berikut mengakses penyimpanan yang dienkripsi dengan perangkat dan membuka file data aplikasi
yang ada:</p>
<pre>
Context directBootContext = Context.createDeviceEncryptedStorageContext();
Context directBootContext = appContext.createDeviceProtectedStorageContext();
// Access appDataFilename that lives in device encrypted storage
FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
// Use inStream to read content...
@@ -112,23 +112,23 @@ mode Direct Boot, gunakan penyimpanan yang dienkripsi dengan kredensial.</p>
mengakses penyimpanan yang dienkripsi dengan kredensial dan menggunakan layanan sistem biasa yang
bergantung pada kredensial pengguna.</p>
<p>Agar diberi tahu bila pengguna membuka kunci perangkat setelah reboot,
<p>Agar diberi tahu bila pengguna membuka kunci perangkat setelah boot ulang,
daftarkan {@link android.content.BroadcastReceiver} dari komponen yang berjalan
untuk mendengarkan pesan <code>ACTION_USER_UNLOCKED</code>. Atau, Anda bisa
menerima pesan {@link android.content.Intent#ACTION_BOOT_COMPLETED
ACTION_BOOT_COMPLETED} yang ada, yang sekarang menunjukkan bahwa perangkat telah dihidupkan dan
pengguna telah membuka kunci perangkat.</p>
<p>Anda bisa langsung melakukan query apakah pengguna telah membuka kunci perangkat dengan memanggil
<p>Anda bisa langsung kueri apakah pengguna telah membuka kunci perangkat dengan memanggil
<code>UserManager.isUserUnlocked()</code>.</p>
<h2 id="migrating">Migrasi Data yang Ada</h2>
<p>Jika pengguna memperbarui perangkat mereka untuk menggunakan mode Direct Boot,
data Anda yang ada mungkin perlu dipindahkan ke penyimpanan yang dienkripsi dengan perangkat. Gunakan
<code>Context.migrateSharedPreferencesFrom()</code> dan
<code>Context.migrateDatabaseFrom()</code> untuk memindahkan data preferensi dan
database antara penyimpanan yang dienkripsi dengan kredensial dan penyimpanan yang dienkripsi dengan perangkat.</p>
<code>Context.moveSharedPreferencesFrom()</code> dan
<code>Context.moveDatabaseFrom()</code> untuk memindahkan data preferensi dan
basis data antara penyimpanan yang dienkripsi dengan kredensial dan penyimpanan yang dienkripsi dengan perangkat.</p>
<p>Pertimbangkan dengan baik saat memutuskan data apa yang akan dipindahkan dari
penyimpanan yang dienkripsi dengan kredensial ke penyimpanan yang dienkripsi dengan perangkat. Anda sebaiknya tidak memindahkan
@@ -144,7 +144,7 @@ dua cara untuk mengaktifkan Direct Boot.</p>
<p class="caution"><strong>Perhatian:</strong> Mengaktifkan Direct Boot
akan menghapus semua data pengguna pada perangkat.</p>
<p>Pada perangkat yang didukung dengan Android N terinstal, aktifkan
<p>Pada perangkat yang didukung dengan Android N terpasang, aktifkan
Direct Boot dengan melakukan salah satu hal berikut:</p>
<ul>
@@ -164,7 +164,7 @@ $ fastboot --wipe-and-use-fbe
<p>Mode emulasi Direct Boot juga tersedia, jika Anda perlu mengganti
mode pada perangkat pengujian. Mode emulasi sebaiknya hanya digunakan selama
pengembangan dan bisa menyebabkan kehilangan data. Untuk mengaktifkan mode emulasi Direct Boot,
atur pola kunci pada perangkat, pilih "No thanks" jika ditanya mengenai
setel pola kunci pada perangkat, pilih "No thanks" jika ditanya mengenai
layar start-up aman saat menetapkan pola kunci, kemudian gunakan
perintah shell adb berikut:</p>
@@ -178,4 +178,4 @@ $ adb shell sm set-emulate-fbe true
$ adb shell sm set-emulate-fbe false
</pre>
<p>Menggunakan perintah ini akan menyebabkan perangkat melakukan reboot.</p>
<p>Menggunakan perintah ini akan menyebabkan perangkat melakukan boot ulang.</p>

View File

@@ -1,5 +1,4 @@
page.title=ICU4J Android Framework API
page.tags=androidn
page.image=images/cards/card-nyc_2x.jpg
@jd:body
@@ -41,7 +40,7 @@ page.image=images/cards/card-nyc_2x.jpg
</p>
<p>
Dokumen ini diawali dengan menyediakan beberapa informasi dasar tentang level API Android
Dokumen ini diawali dengan menyediakan beberapa informasi dasar tentang level Android API
minimum yang diperlukan untuk mendukung pustaka-pustaka ini. Kemudian dijelaskan tentang apa
yang perlu Anda ketahui tentang implementasi ICU4J spesifik Android. Terakhir,
Anda akan diberi tahu cara menggunakan ICU4J API dalam kerangka kerja Android.
@@ -63,7 +62,7 @@ page.image=images/cards/card-nyc_2x.jpg
di Android N.</p>
<table>
<tr>
<th>Level API Android</th>
<th>Level Android API</th>
<th>Versi ICU</th>
<th>Versi CLDR</th>
</tr>
@@ -91,13 +90,13 @@ sumber daya</a>.</li>
<code>android.icu</code> API memenuhi persyaratan Anda, maka migrasi ke
API kerangka kerja mengharuskan Anda untuk mengubah impor Java
dari <code>com.ibm.icu</code> ke <code>android.icu</code>. Kemudian Anda bisa
menghapus salinan file ICU4J dari APK.
membuang salinan file ICU4J dari APK.
</p>
<p class="note">
<b>Catatan</b>: API kerangka kerja ICU4J menggunakan namespace {@code android.icu}
<b>Catatan</b>: API kerangka kerja ICU4J menggunakan ruang nama {@code android.icu}
sebagai ganti {@code com.ibm.icu}. Hal ini untuk menghindari konflik
namespace di APK yang berisi pustaka {@code com.ibm.icu} sendiri.
ruang nama di APK yang berisi pustaka {@code com.ibm.icu} sendiri.
</p>
<h3 id="migrate-from-android">

View File

@@ -8,7 +8,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<div id="qv">
<h2>Dalam dokumen ini</h2>
<ol>
<li><a href="#overview">Ikhtisar</a></li>
<li><a href="#overview">Ringkasan</a></li>
<li><a href="#lifecycle">Daur Hidup Multi-Jendela</a></li>
<li><a href="#configuring">Mengonfigurasi Aplikasi Anda untuk Mode
Multi-Jendela</a></li>
@@ -17,8 +17,9 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
</ol>
<h2>Lihat Juga</h2>
<ol>
<li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Aplikasi contoh Multi-Window
Playground</a></li>
<li><a class="external-link" href="https://github.com/googlesamples/android-MultiWindowPlayground">Aplikasi contoh Playground
Multi-Jendela</a></li>
<li><a class="external-link" href="https://medium.com/google-developers/5-tips-for-preparing-for-multi-window-in-android-n-7bed803dda64">Lima Tip untuk Mempersiapkan Multi-Jendela di Android N</a></li>
</ol>
</div>
</div>
@@ -39,7 +40,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
layar penuh.
</p>
<h2 id="overview">Ikhtisar</h2>
<h2 id="overview">Ringkasan</h2>
<p>
Android N memungkinkan beberapa aplikasi berbagi layar sekaligus. Misalnya,
@@ -57,7 +58,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<li>Pada Nexus Player yang menjalankan Android N, aplikasi bisa menempatkan diri
dalam <a href="picture-in-picture.html">mode gambar-dalam-gambar</a>, yang memungkinkannya
untuk terus menampilkan konten selagi pengguna melihat-lihat atau berinteraksi dengan
untuk terus menampilkan materi selagi pengguna menjelajahi atau berinteraksi dengan
aplikasi lain.
</li>
@@ -80,21 +81,21 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<ul>
<li>Jika pengguna membuka <a href="{@docRoot}guide/components/recents.html">layar
Overview</a> dan menekan lama pada
Ringkasan</a> dan menekan lama pada
judul aktivitas, mereka bisa menyeret aktivitas itu ke bagian yang disorot pada layar
untuk menempatkan aktivitas dalam mode multi-jendela.
</li>
<li>Jika pengguna menekan lama pada tombol Overview, perangkat akan menempatkan
aktivitas saat ini dalam mode multi-jendela, dan membuka layar Overview guna
<li>Jika pengguna menekan lama pada tombol Ringkasan, perangkat akan menempatkan
aktivitas saat ini dalam mode multi-jendela, dan membuka layar Ringkasan guna
memungkinkan pengguna memilih aktivitas lain untuk berbagi layar.
</li>
</ul>
<p>
Pengguna bisa <a href="{@docRoot}guide/topics/ui/drag-drop.html">menyeret dan
meletakkan</a> data dari aktivitas satu ke aktivitas lain sewaktu aktivitas berbagi
layar. (Sebelumnya, pengguna hanya bisa menyeret dan meletakkan data dalam aktivitas
Pengguna bisa <a href="{@docRoot}guide/topics/ui/drag-drop.html">seret dan
lepas</a> data dari aktivitas satu ke aktivitas lain sewaktu aktivitas berbagi
layar. (Sebelumnya, pengguna hanya bisa menyeret dan melepas data dalam aktivitas
tunggal.)
</p>
@@ -120,7 +121,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
dan masih terlihat oleh pengguna. Sebuah aplikasi mungkin perlu melanjutkan aktivitasnya
bahkan saat berhenti sementara. Misalnya, aplikasi pemutar video yang ada dalam
mode berhenti sementara namun terlihat harus tetap menampilkan videonya. Karena alasan
ini, kami menyarankan aktivitas yang memutar video<em>tidak</em> menghentikan sementara video
ini, kami menyarankan aktivitas yang memutar video <em>tidak</em> menghentikan sementara video
dalam handler {@link android.app.Activity#onPause onPause()} mereka.
Sebagai gantinya, aktivitas itu harus menghentikan sementara video di {@link android.app.Activity#onStop
onStop()}, dan melanjutkan pemutaran di {@link android.app.Activity#onStart
@@ -130,20 +131,22 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p>
Bila pengguna menempatkan aplikasi dalam mode multi-jendela, sistem akan memberi tahu
aktivitas tersebut mengenai perubahan konfigurasi, sebagaimana ditetapkan dalam <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Runtime</a>. Pada dasarnya, perubahan ini memiliki implikasi siklus hidup aktivitas yang sama
seperti saat sistem memberi tahu aplikasi bahwa perangkat telah beralih
dari mode potret ke mode lanskap, kecuali dimensi perangkat
telah berubah sebagai ganti bertukar posisi. Seperti yang dibahas di <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Runtime</a>, aktivitas Anda bisa menangani perubahan konfigurasi itu sendiri, atau
Waktu Proses</a>. Hal ini juga terjadi ketika pengguna mengubah skala aplikasi, atau menempatkan kembali aplikasi
ke mode layar penuh.
Pada dasarnya, perubahan ini memiliki implikasi daur hidup aktivitas yang sama
seperti saat sistem memberi tahu aplikasi bahwa perangkat telah beralih
dari mode potret ke mode lanskap, kecuali dimensi perangkat
telah berubah sebagai ganti bertukar posisi. Seperti yang dibahas di <a href="{@docRoot}guide/topics/resources/runtime-changes.html">Menangani Perubahan
Waktu Proses</a>, aktivitas Anda bisa menangani perubahan konfigurasi itu sendiri, atau
mengizinkan sistem memusnahkan aktivitas dan membuatnya kembali dengan dimensi
baru.
</p>
<p>
Jika pengguna mengubah ukuran jendela dan membuat dimensinya jadi lebih besar, sistem
akan mengubah ukuran aktivitas untuk menyesuaikan dengan tindakan pengguna dan mengeluarkan <a href="{@docRoot}guide/topics/resources/runtime-changes.html">perubahan runtime</a>
sebagaimana diperlukan. Jika aplikasi tertinggal dari gambar di bidang yang baru saja diekspos,
sistem untuk sementara akan mengisi bidang tersebut dengan warna yang ditetapkan oleh atribut {@link
Jika pengguna mengubah ukuran jendela dan membuat dimensinya lebih besar, sistem
akan mengubah ukuran aktivitas untuk menyesuaikan dengan tindakan pengguna dan mengeluarkan <a href="{@docRoot}guide/topics/resources/runtime-changes.html">perubahan waktu proses</a>
bila diperlukan. Jika aplikasi tertinggal dibandingkan gambar di area yang baru diekspos,
sistem untuk sementara mengisi area tersebut dengan warna yang ditetapkan oleh atribut {@link
android.R.attr#windowBackground windowBackground} atau dengan atribut gaya
<code>windowBackgroundFallback</code> secara default.
</p>
@@ -152,10 +155,12 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<p>
Jika aplikasi Anda menargetkan Android N, Anda bisa mengonfigurasi bagaimana dan
apakah aktivitas aplikasi Anda mendukung tampilan multi-jendela. Anda bisa mengatur
apakah aktivitas aplikasi Anda mendukung tampilan multi-jendela. Anda bisa menyetel
atribut dalam manifes untuk mengontrol ukuran dan layoutnya.
Pengaturan atribut aktivitas root berlaku untuk semua aktivitas
dalam tumpukan tugasnya.
Setelan atribut aktivitas root berlaku pada semua aktivitas
dalam tumpukan tugasnya. Misalnya, jika aktivitas root memiliki
<code>android:resizeableActivity</code> yang disetel ke true, maka semua aktivitas
dalam tumpukan tugas bisa diubah ukurannya.
</p>
<p class="note">
@@ -170,7 +175,7 @@ page.keywords="multi-window", "android N", "split screen", "free-form"
<h4 id="resizeableActivity">android:resizeableActivity</h4>
<p>
Atur atribut ini dalam manifes <code>&lt;activity&gt;</code> Anda atau simpul
Setel atribut ini dalam manifes <code>&lt;activity&gt;</code> Anda atau simpul
<code>&lt;application&gt;</code> untuk mengaktifkan atau menonaktifkan tampilan
multi-jendela:
</p>
@@ -180,8 +185,8 @@ android:resizeableActivity=["true" | "false"]
</pre>
<p>
Jika atribut ini diatur ke true, aktivitas bisa dijalankan di
mode layar terbagi dan mode bentuk bebas. Jika atribut ini diatur ke false, aktivitas
Jika atribut ini disetel ke true, aktivitas bisa dijalankan di
mode layar terbagi dan mode bentuk bebas. Jika atribut ini disetel ke false, aktivitas
tidak akan mendukung mode multi-jendela. Jika nilai ini false, dan pengguna
berusaha memulai aktivitas dalam mode multi-jendela, aktivitas akan menggunakan
layar penuh.
@@ -195,7 +200,7 @@ android:resizeableActivity=["true" | "false"]
<h4 id="supportsPictureInPicture">android:supportsPictureInPicture</h4>
<p>
Atur atribut ini dalam simpul <code>&lt;activity&gt;</code> manifes Anda untuk
Setel atribut ini dalam simpul <code>&lt;activity&gt;</code> manifes Anda untuk
menunjukkan apakah aktivitas mendukung tampilan gambar-dalam-gambar. Atribut ini
diabaikan jika <code>android:resizeableActivity</code> bernilai false.
</p>
@@ -239,7 +244,7 @@ android:supportsPictureInPicture=["true" | "false"]
</dd>
<dt>
<code>android:minimalSize</code>
<code>android:minimalHeight</code>, <code>android:minimalWidth</code>
</dt>
<dd>
@@ -261,7 +266,8 @@ android:supportsPictureInPicture=["true" | "false"]
&lt;layout android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end"
android:minimalSize="450dp" /&gt;
android:minimalHeight="450dp"
android:minimalWidth="300dp" /&gt;
&lt;/activity&gt;
</pre>
@@ -281,7 +287,7 @@ android:supportsPictureInPicture=["true" | "false"]
<ul>
<li>Beberapa opsi penyesuaian di <a href="{@docRoot}training/system-ui/index.html">System UI</a>
dinonaktifkan; misalnya, aplikasi tidak bisa menyembunyikan baris status
dinonaktifkan; misalnya, aplikasi tidak bisa menyembunyikan bilah status
jika tidak berjalan dalam mode layar penuh.
</li>
@@ -291,17 +297,18 @@ android:supportsPictureInPicture=["true" | "false"]
</li>
</ul>
<h3 id="change-notification">Pemberitahuan perubahan multi-jendela dan melakukan query</h3>
<h3 id="change-notification">Pemberitahuan perubahan multi-jendela dan melakukan kueri</h3>
<p>
Metode baru berikut telah ditambahkan ke kelas {@link android.app.Activity}
untuk mendukung tampilan multi-jendela. Untuk mengetahui detail tentang setiap metode, lihat
<a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N Preview SDK</a>.
untuk mendukung tampilan multi-jendela. Untuk mengetahui detail tentang setiap
metode, lihat <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N
Preview SDK</a>.
</p>
<dl>
<dt>
<code>Activity.inMultiWindow()</code>
<code>Activity.isInMultiWindowMode()</code>
</dt>
<dd>
@@ -309,7 +316,7 @@ android:supportsPictureInPicture=["true" | "false"]
</dd>
<dt>
<code>Activity.inPictureInPicture()</code>
<code>Activity.isInPictureInPictureMode()</code>
</dt>
<dd>
@@ -317,30 +324,30 @@ android:supportsPictureInPicture=["true" | "false"]
<p class="note">
<strong>Catatan:</strong> Mode gambar-dalam-gambar adalah kasus khusus pada
mode multi-jendela. Jika <code>myActivity.inPictureInPicture()</code>
mengembalikan nilai true, maka <code>myActivity.inMultiWindow()</code> juga mengembalikan nilai
true.
mode multi-jendela. Jika <code>myActivity.isInPictureInPictureMode()</code>
mengembalikan nilai true, maka <code>myActivity.isInMultiWindowMode()</code> juga
mengembalikan nilai true.
</p>
</dd>
<dt>
<code>Activity.onMultiWindowChanged()</code>
<code>Activity.onMultiWindowModeChanged()</code>
</dt>
<dd>
Sistem akan memanggil metode ini bila aktivitas masuk atau keluar dari
mode multi-jendela. Sistem akan meneruskan metode sebuah nilai true jika
mode multi-jendela. Sistem akan meneruskan ke metode sebuah nilai true jika
aktivitas tersebut memasuki mode multi-jendela, dan nilai false jika aktivitas
tersebut meninggalkan mode multi-jendela.
</dd>
<dt>
<code>Activity.onPictureInPictureChanged()</code>
<code>Activity.onPictureInPictureModeChanged()</code>
</dt>
<dd>
Sistem akan memanggil metode ini bila aktivitas masuk atau keluar dari
mode gambar-dalam-gambar. Sistem akan meneruskan metode sebuah nilai true jika
mode gambar-dalam-gambar. Sistem akan meneruskan ke metode sebuah nilai true jika
aktivitas tersebut memasuki mode gambar-dalam-gambar, dan nilai false jika aktivitas
tersebut meninggalkan mode gambar-dalam-gambar.
</dd>
@@ -348,14 +355,14 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Ada juga versi {@link android.app.Fragment} untuk setiap
metode ini, misalnya <code>Fragment.inMultiWindow()</code>.
metode ini, misalnya <code>Fragment.isInMultiWindowMode()</code>.
</p>
<h3 id="entering-pip">Memasuki mode gambar-dalam-gambar</h3>
<p>
Untuk menempatkan aktivitas dalam mode gambar-dalam-gambar, panggil metode baru
<code>Activity.enterPictureInPicture()</code>. Metode ini tidak berpengaruh jika
<code>Activity.enterPictureInPictureMode()</code>. Metode ini tidak berpengaruh jika
perangkat tidak mendukung mode gambar-dalam-gambar. Untuk informasi selengkapnya,
lihat dokumentasi <a href="picture-in-picture.html">Gambar-dalam-Gambar</a>.
</p>
@@ -382,8 +389,8 @@ android:supportsPictureInPicture=["true" | "false"]
</ul>
<p>
Jika perangkat berada dalam mode bentuk bebas dan Anda meluncurkan aktivitas baru, Anda bisa
menetapkan dimensi dan lokasi layar aktivitas baru dengan memanggil
Jika perangkat dalam mode bentuk bebas dan Anda menjalankan aktivitas baru, Anda bisa
menetapkan dimensi aktivitas baru dan lokasi layar dengan memanggil
<code>ActivityOptions.setLaunchBounds()</code>. Metode ini tidak berpengaruh jika
perangkat tidak berada dalam mode multi-jendela.
</p>
@@ -395,19 +402,19 @@ android:supportsPictureInPicture=["true" | "false"]
terpisah dalam mode multi-jendela, Anda harus meluncurkannya dalam tumpukan tugas baru.
</p>
<h3 id="dnd">Mendukung seret dan letakkan</h3>
<h3 id="dnd">Mendukung seret dan lepas</h3>
<p>
Pengguna bisa <a href="{@docRoot}guide/topics/ui/drag-drop.html">menyeret dan
meletakkan</a> data dari satu aktivitas ke aktivitas yang lain selagi kedua aktivitas
berbagi layar. (Sebelumnya, pengguna hanya bisa menyeret dan meletakkan data dalam
melepas</a> data dari satu aktivitas ke aktivitas yang lain selagi kedua aktivitas
berbagi layar. (Sebelumnya, pengguna hanya bisa menyeret dan melepas data dalam
aktivitas tunggal.) Karena alasan ini, Anda mungkin perlu menambahkan fungsionalitas
seret dan letakkan ke aplikasi Anda jika aplikasi Anda saat ini belum mendukungnya.
seret dan lepas ke aplikasi jika aplikasi saat ini belum mendukungnya.
</p>
<p>
N Preview SDK menambahkan paket <a href="{@docRoot}reference/android/view/package-summary.html"><code>android.view</code></a>
untuk mendukung seret dan letakkan lintas-aplikasi. Untuk mengetahui detail tentang kelas dan metode
untuk mendukung seret dan lepas lintas-aplikasi. Untuk mengetahui detail tentang kelas dan metode
berikut, lihat <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi N
Preview SDK</a>.
</p>
@@ -419,7 +426,7 @@ android:supportsPictureInPicture=["true" | "false"]
<dd>
Objek token bertanggung jawab menetapkan izin yang diberikan kepada aplikasi
yang menerima peletakan tersebut.
yang menerima pelepasan tersebut.
</dd>
<dt>
@@ -428,7 +435,7 @@ android:supportsPictureInPicture=["true" | "false"]
<dd>
Alias baru untuk {@link android.view.View#startDrag View.startDrag()}. Untuk
mengaktifkan seret dan letakkan lintas-aktivitas, teruskan flag baru
mengaktifkan seret dan lepas lintas-aktivitas, teruskan flag baru
<code>View.DRAG_FLAG_GLOBAL</code>. Jika Anda perlu memberikan izin URI ke
aktivitas penerima, teruskan flag baru,
<code>View.DRAG_FLAG_GLOBAL_URI_READ</code> atau
@@ -458,7 +465,7 @@ android:supportsPictureInPicture=["true" | "false"]
</dt>
<dd>
Meminta izin untuk URI konten yang diteruskan dengan {@link
Meminta izin untuk URI materi yang diteruskan dengan {@link
android.content.ClipData} yang terdapat dalam {@link android.view.DragEvent}.
</dd>
</dl>
@@ -466,15 +473,15 @@ android:supportsPictureInPicture=["true" | "false"]
<h2 id="testing">Menguji Dukungan Multi-Jendela Aplikasi Anda</h2>
<p>
Baik Anda memperbarui aplikasi untuk Android N maupun tidak, Anda harus
memverifikasi caranya bertindak dalam mode multi-jendela jika pengguna mencoba meluncurkannya
Apakah Anda memperbarui aplikasi untuk Android N atau tidak, Anda harus
verifikasi bagaimana perilakunya di mode multi-jendela saat pengguna mencoba untuk menjalankannya
dalam mode multi-jendela pada perangkat yang menjalankan Android N.
</p>
<h3 id="configuring">Mengonfigurasi Perangkat Pengujian</h3>
<p>
Jika Anda menginstal Android N pada perangkat, mode
Jika Anda pasang Android N pada perangkat, mode
layar terbagi secara otomatis didukung.
</p>
@@ -489,13 +496,13 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Jika aplikasi Anda tidak mendeklarasikan orientasi tetap, Anda harus meluncurkan aplikasi
pada perangkat yang menjalankan Android N dan berupaya menempatkan aplikasi tersebut dalam
mode layar terbagi. Pastikan pengalaman pengguna
mode layar terbagi. Verifikasi pengalaman pengguna
bisa diterima bila aplikasi secara paksa diubah ukurannya.
</p>
<p>
Jika aplikasi mendeklarasikan orientasi tetap, Anda harus berupaya menempatkan aplikasi dalam
mode multi-jendela. Periksa apakah Anda melakukannya, aplikasi tetap berada dalam
mode multi-jendela. Verifikasi apakah saat Anda melakukannya, aplikasi tetap berada dalam
mode layar penuh.
</p>
@@ -503,33 +510,33 @@ android:supportsPictureInPicture=["true" | "false"]
<p>
Jika Anda membuat aplikasi Anda dengan N Preview SDK dan belum menonaktifkan
dukungan multi-jendela, periksa perilaku berikut dalam mode layar terbagi
dukungan multi-jendela, verifikasi perilaku berikut dalam mode layar terbagi
dan mode bentuk bebas.
</p>
<ul>
<li>Luncurkan aplikasi dalam mode layar penuh, kemudian beralih ke mode multi-jendela dengan
menekan lama pada tombol Overview. Periksa apakah aplikasi berpindah dengan benar.
menekan lama pada tombol Ringkasan. Verifikasi apakah aplikasi beralih dengan benar.
</li>
<li>Jalankan aplikasi secara langsung dalam mode multi-jendela, dan pastikan aplikasi
<li>Jalankan aplikasi secara langsung dalam mode multi-jendela, dan verifikasi aplikasi
diluncurkan dengan benar. Anda bisa meluncurkan aplikasi dalam mode multi-jendela dengan menekan
tombol Overview, kemudian menekan lama baris judul pada aplikasi Anda dan menyeretnya
tombol Ringkasan, kemudian menekan lama baris judul pada aplikasi Anda dan menyeretnya
ke salah satu area yang disorot di layar.
</li>
<li>Ubah ukuran aplikasi Anda dalam mode layar terbagi dengan menyeret garis pembagi.
Periksa apakah aplikasi mengubah ukuran tanpa crash, dan apakah elemen UI yang diperlukan
Verifikasi apakah aplikasi mengubah ukuran tanpa mogok, dan apakah elemen UI yang diperlukan
terlihat.
</li>
<li>Jika Anda telah menetapkan dimensi minimum aplikasi, cobalah untuk mengubah ukuran
aplikasi di bawah dimensi tersebut. Periksa apakah Anda tidak bisa mengubah ukuran aplikasi menjadi
aplikasi di bawah dimensi tersebut. Verifikasi apakah Anda tidak bisa mengubah ukuran aplikasi menjadi
lebih kecil dari minimum yang ditetapkan.
</li>
<li>Melalui semua tes, periksa apakah kinerja aplikasi Anda bisa diterima. Misalnya,
periksa apakah tidak ada jeda yang terlalu lama untuk memperbarui UI setelah
<li>Melalui semua pengujian, verifikasi apakah kinerja aplikasi Anda bisa diterima. Misalnya,
verifikasi apakah tidak ada jeda yang terlalu lama untuk memperbarui UI setelah
aplikasi diubah ukurannya.
</li>
</ul>
@@ -537,7 +544,7 @@ android:supportsPictureInPicture=["true" | "false"]
<h4 id="test-checklist">Daftar periksa pengujian</h4>
<p>
Untuk memeriksa kinerja aplikasi Anda dalam mode multi-jendela, cobalah operasi
Untuk verifikasi kinerja aplikasi Anda dalam mode multi-jendela, cobalah operasi
berikut. Anda harus mencoba semua operasi ini dalam mode layar terbagi dan
dan mode multi-jendela, kecuali jika dinyatakan berbeda.
</p>
@@ -546,27 +553,27 @@ android:supportsPictureInPicture=["true" | "false"]
<li>Masuki dan tinggalkan mode multi-jendela.
</li>
<li>Beralih dari aplikasi Anda ke aplikasi lain, dan periksa apakah aplikasi berperilaku
<li>Beralih dari aplikasi Anda ke aplikasi lain, dan verifikasi apakah aplikasi berperilaku
sebagaimana mestinya saat terlihat namun tidak aktif. Misalnya, jika aplikasi Anda
sedang memutar video, periksa apakah video terus diputar selagi pengguna
sedang memutar video, verifikasi apakah video terus diputar selagi pengguna
berinteraksi dengan aplikasi lain.
</li>
<li>Dalam mode layar terbagi, cobalah menggeser garis pembagi untuk membuat aplikasi
Anda menjadi lebih besar dan lebih kecil. Coba operasi ini dalam konfigurasi berdampingan dan
atas-bawah. Periksa apakah aplikasi tidak crash,
atas-bawah. Verifikasi apakah aplikasi tidak mogok,
fungsionalitas penting bisa terlihat, dan operasi mengubah ukuran tidak memakan waktu terlalu
lama.
</li>
<li>Lakukan beberapa operasi ubah ukuran berturut-turut dalam waktu cepat. Periksa apakah
aplikasi Anda tidak crash atau mengalami kebocoran memori. Untuk informasi tentang memeriksa penggunaan memori
<li>Lakukan beberapa operasi ubah ukuran berturut-turut dalam waktu cepat. Verifikasi apakah
aplikasi Anda tidak mogok atau mengalami kebocoran memori. Untuk informasi tentang memeriksa penggunaan memori
aplikasi Anda, lihat <a href="{@docRoot}tools/debugging/debugging-memory.html">
Menyelidiki Penggunaan RAM Anda</a>.
</li>
<li>Gunakan aplikasi secara normal di sejumlah konfigurasi jendela yang berbeda, dan
periksa apakah aplikasi berperilaku sebagaimana mestinya. Periksa apakah teks terbaca, dan apakah
verifikasi apakah aplikasi berperilaku sebagaimana mestinya. Verifikasi apakah teks terbaca, dan apakah
elemen UI tidak terlalu kecil untuk interaksi.
</li>
</ul>
@@ -574,9 +581,9 @@ android:supportsPictureInPicture=["true" | "false"]
<h3 id="test-disabled-mw">Jika Anda telah menonaktifkan dukungan multi-jendela</h3>
<p>
Jika Anda menonaktifkan dukungan multi-jendela dengan mengatur
Jika Anda menonaktifkan dukungan multi-jendela dengan menyetel
<code>android:resizableActivity="false"</code>, Anda harus menjalankan aplikasi pada
perangkat yang menjalankan Android N dan berusaha menempatkan aplikasi dalam
mode bentuk bebas dan mode layar terbagi. Periksa apakah Anda melakukannya, aplikasi tetap berada dalam
mode bentuk bebas dan mode layar terbagi. Verifikasi apakah saat Anda melakukannya, aplikasi tetap berada dalam
mode layar penuh.
</p>

View File

@@ -19,7 +19,7 @@ page.image=images/cards/card-nyc_2x.jpg
</div>
<p>Android N memberikan dukungan yang disempurnakan untuk pengguna multibahasa,
yang memungkinkan mereka memilih beberapa lokal dalam pengaturan. Android N
yang memungkinkan mereka memilih beberapa lokal dalam setelan. Android N
menyediakan kemampuan ini dengan memperbanyak jumlah lokal yang didukung
dan mengubah cara sistem mengatasi masalah sumber daya. Metode baru mengatasi
masalah sumber daya ini lebih tangguh dan didesain agar kompatibel dengan APK yang ada, namun
@@ -37,29 +37,33 @@ jumlah lokal yang telah diperbanyak untuk mendukung lebih banyak pengguna multib
<h2 id="preN">Tantangan dalam Mengatasi Masalah Sumber Daya Bahasa</h2>
<p>Sebelum Android N, Android tidak selalu
berhasil mencocokkan lokal aplikasi dan lokal sistem. Misalnya, anggaplah bahasa default aplikasi Anda
adalah US English, namun aplikasi itu juga berisi string bahasa Spanyol yang dilokalkan di file sumber daya {@code es_ES}.
.</p>
<p>Bila kode Java Anda mengacu ke string, itu akan mengatasi masalah bahasa string sebagai
berikut:</p>
<ul>
<li>Jika perangkat diatur ke {@code es_MX} (Spanish-Mexico), Android akan memuat
string dari file sumber daya {@code es_ES}.</li>
<li>Jika perangkat diatur ke {@code en_AU}, Android akan kembali pada {@code
en_US}. Sistem juga akan default ke {@code en_US} jika pengguna memilih
bahasa yang sama sekali tidak didukung oleh aplikasi, seperti bahasa Prancis.</li>
</ul>
berhasil mencocokkan lokal aplikasi dan lokal sistem.</p>
<p>Misalnya, anggaplah Anda menghadapi situasi berikut:</p>
<ul>
<li>Bahasa default aplikasi Anda adalah {@code en_US} (US English), dan aplikasi juga
berisi string bahasa Spanyol yang telah dilokalkan di file sumber daya {@code es_ES}.
</li>
<li> Perangkat telah disetel ke {@code es_MX} </li>
<p>Bila kode Java Anda merujuk ke string, sistem akan memuat
string dari file sumber daya default ({@code en_US}), sekalipun aplikasi memiliki
sumber daya bahasa Spanyol yang dilokalkan pada {@code es_ES}. Hal ini karena bila sistem
tidak bisa menemukan hasil yang persis, sistem akan terus mencari sumber daya dengan menghilangkan
kode negara dari lokal tersebut. Akhirnya, jika tidak ada hasil yang ditemukan, sistem akan mengembalikan
ke default, yakni {@code en_US}. </p>
<p>Masalah resolusi ini muncul karena sistem menghilangkan kode negara
dari lokal jika tidak bisa menemukan yang sama persis. Misalnya:</p>
<p>Sistem juga akan default ke {@code en_US} jika pengguna memilih
bahasa yang sama sekali tidak didukung oleh aplikasi, seperti bahasa Prancis. Misalnya:</p>
<p class="table-caption" id="t-resource-res">
<strong>Tabel 1.</strong> Resolusi sumber daya tanpa lokal yang persis sama.
</p>
<table>
<tbody>
<tr>
<th>Pengaturan Pengguna</th>
<th>Setelan Pengguna</th>
<th>Sumber Daya Aplikasi</th>
<th>Resolusi Sumber Daya</th>
</tr>
@@ -109,7 +113,7 @@ secara berbeda:</p>
lokal yang sama persis.</p>
<table>
<tr>
<th>Pengaturan Pengguna</th>
<th>Setelan Pengguna</th>
<th>Sumber Daya Aplikasi</th>
<th>Resolusi Sumber Daya</th>
</tr>
@@ -137,9 +141,9 @@ Gunakan fr_FR
<p>Sekarang pengguna mendapatkan sumber daya bahasa Prancis sebagai ganti bahasa Inggris. Contoh ini juga menunjukkan
mengapa Anda harus menyimpan string bahasa Prancis dalam {@code fr} bukan dalam {@code fr_FR}
untuk Android N. Tindakan di sini adalah untuk mencocokkan dengan induk dialek terdekat,
yang membuat resolusi menjadi lebih cepat dan lebih bisa diprediksi.</p>
mengapa Anda harus menyimpan string bahasa Prancis di {@code fr} bukan pada {@code fr_FR}
untuk Android N. Arah aksi di sini adalah untuk mencocokkan dengan induk dialek terdekat,
membuat resolusi lebih cepat dan lebih dapat diprediksi.</p>
<p>Selain logika resolusi yang diperbaiki ini, Android sekarang menawarkan lebih banyak
pilihan bahasa untuk pengguna. Mari kita coba lagi contoh di atas dengan menetapkan bahasa Italia
@@ -147,10 +151,10 @@ pilihan bahasa untuk pengguna. Mari kita coba lagi contoh di atas dengan menetap
<p class="table-caption" id="t-2d-choice">
<strong>Tabel 3.</strong> Resolusi sumber daya bila aplikasi hanya mencocokkan
pengaturan lokal yang disukai kedua oleh pengguna.</p>
setelan lokal yang disukai kedua oleh pengguna.</p>
<table>
<tr>
<th>Pengaturan Pengguna</th>
<th>Setelan Pengguna</th>
<th>Sumber Daya Aplikasi</th>
<th>Resolusi Sumber Daya</th>
@@ -187,11 +191,11 @@ mendukung bahasa Prancis.</p>
<h2 id="design">Mendesain Aplikasi Anda untuk Mendukung Lokal Tambahan</h2>
<h3>LocaleList API</h3>
<p>Android N menambahkan API baru {@code LocaleList.GetDefault()}
yang memungkinkan aplikasi langsung melakukan query daftar bahasa yang telah ditetapkan pengguna. API ini
memungkinkan Anda untuk membuat
perilaku aplikasi yang lebih canggih dan tampilan konten yang lebih optimal. Misalnya, Pencarian
bisa menampilkan hasil dalam beberapa bahasa berdasarkan pengaturan pengguna. Aplikasi browser
<p>Android N menambahkan API baru {@code LocaleList.getDefault()}
yang memungkinkan aplikasi langsung kueri daftar bahasa yang telah ditetapkan pengguna. API ini
memungkinkan Anda membuat
perilaku aplikasi yang lebih canggih dan tampilan materi yang lebih optimal. Misalnya, Telusur
bisa menampilkan hasil dalam beberapa bahasa berdasarkan setelan pengguna. Aplikasi browser
bisa menghindari penawaran menerjemahkan halaman dalam bahasa yang sudah diketahui pengguna,
dan aplikasi keyboard bisa mengaktifkan otomatis semua layout yang sesuai. </p>

View File

@@ -1,5 +1,5 @@
page.title=Pemberitahuan
page.tags=notifications
page.tags=pemberitahuan
helpoutsWidget=true
page.image=/preview/images/notifications-card.png
@@ -15,14 +15,15 @@ trainingnavtop=true
<ol>
<li><a href="#direct">Balasan Langsung</a></li>
<li><a href="#bundle">Bundel Pemberitahuan</a></li>
<li><a href="#custom">Tampilan Custom</a></li>
<li><a href="#custom">Tampilan Khusus</a></li>
<li><a href="#style">Gaya Pesan</a></li>
</ol>
</div>
</div>
<p>Android N memperkenalkan beberapa API baru yang memungkinkan aplikasi memposting
pemberitahuan yang sangat terlihat dan interaktif.</p>
<p>Android N memperkenalkan beberapa API baru yang memungkinkan aplikasi untuk mengeposkan
pemberitahuan yang sangat mudah terlihat dan interaktif.</p>
<p>Android N menambahkan API pemberitahuan{@link android.support.v4.app.RemoteInput}
yang ada untuk mendukung balasan inline pada handset. Fitur ini memungkinkan pengguna
@@ -59,8 +60,8 @@ pemberitahuan. Pada perangkat genggam, tindakan balasan inline muncul sebagai to
<img id="fig-reply-button" src="{@docRoot}preview/images/inline-reply.png" srcset="{@docRoot}preview/images/inline-reply.png 1x,
{@docRoot}preview/images/inline-reply_2x.png 2x" width="400">
<p class="img-caption">
<strong>Gambar 1.</strong> Android N menambahkan tombol tindakan <strong>Reply</strong>
.
<strong>Gambar 1.</strong> Android N menambahkan tombol tindakan <strong>Reply</strong>.
</p>
<h3>Menambahkan tindakan balasan inline</h3>
@@ -72,11 +73,11 @@ pemberitahuan. Pada perangkat genggam, tindakan balasan inline muncul sebagai to
<li>Buat instance {@link android.support.v4.app.RemoteInput.Builder}
yang bisa Anda tambahkan ke tindakan
pemberitahuan. Konstruktor kelas ini akan menerima string bahwa sistem menggunakannya sebagai kunci
untuk input teks. Kemudian, aplikasi perangkat genggam Anda akan menggunakan kunci itu untuk mengambil teks
input tersebut.
untuk masukan teks. Kemudian, aplikasi perangkat genggam Anda akan menggunakan kunci itu untuk mengambil teks
masukan tersebut.
<pre>
// Key for the string that's delivered in the action's intent
// Key for the string that's delivered in the action's intent.
private static final String KEY_TEXT_REPLY = "key_text_reply";
String replyLabel = getResources().getString(R.string.reply_label);
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
@@ -88,7 +89,7 @@ RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
pada tindakan dengan menggunakan <code>addRemoteInput()</code>.
<pre>
// Create the reply action and add the remote input
// Create the reply action and add the remote input.
Notification.Action action =
new Notification.Action.Builder(R.drawable.ic_reply_icon,
getString(R.string.label), replyPendingIntent)
@@ -100,8 +101,8 @@ Notification.Action action =
<li>Terapkan tindakan pada pemberitahuan dan keluarkan pemberitahuan.
<pre>
// Build the notification and add the action
Notification notification =
// Build the notification and add the action.
Notification newMessageNotification =
new Notification.Builder(mContext)
.setSmallIcon(R.drawable.ic_message)
.setContentTitle(getString(R.string.title))
@@ -109,10 +110,10 @@ Notification notification =
.addAction(action))
.build();
// Issue the notification
// Issue the notification.
NotificationManager notificationManager =
NotificationManager.from(mContext);
notificationManager.notify(notificationId, notification);
notificationManager.notify(notificationId, newMessageNotification);
</pre>
</li>
@@ -129,30 +130,32 @@ tindakan pemberitahuan. </p>
<strong>Gambar 2.</strong> Pengguna memasukkan teks dari bayangan pemberitahuan.
</p>
<h3>Mengambil input pengguna dari balasan inline</h3>
<h3>
Mengambil masukan pengguna dari balasan inline
</h3>
<p>
Untuk menerima masukan pengguna dari antarmuka pemberitahuan ke aktivitas yang Anda
deklarasikan dalam intent tindakan balasan:
</p>
<p>Untuk menerima input pengguna dari antarmuka pemberitahuan untuk aktivitas yang Anda
deklarasikan dalam intent tindakan balasan:</p>
<ol>
<li> Panggil {@link android.support.v4.app.RemoteInput#getResultsFromIntent
<li>Panggil {@link android.support.v4.app.RemoteInput#getResultsFromIntent
getResultsFromIntent()} dengan meneruskan intent tindakan pemberitahuan sebagai
parameter input. Metode ini mengembalikan {@link android.os.Bundle} yang
berisi respons teks.
</li>
parameter masukan. Metode ini mengembalikan {@link android.os.Bundle} yang
berisi respons teks.
<pre>
<pre>
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
</pre>
</li>
<li>Lakukan query pada bundel menggunakan kunci hasil (diberikan ke konstruktor {@link
android.support.v4.app.RemoteInput.Builder}).
</li>
</ol>
<li>Lakukan kueri pada bundel menggunakan kunci hasil (diberikan ke konstruktor {@link
android.support.v4.app.RemoteInput.Builder}). Anda bisa menyelesaikan
proses ini dan mengambil teks masukan dengan membuat sebuah metode, seperti dalam
cuplikan kode berikut:
<p>Cuplikan kode berikut mengilustrasikan cara metode mengambil teks input
dari bundel:</p>
<pre>
<pre>
// Obtain the intent that started this activity by calling
// Activity.getIntent() and pass it into this method to
// get the associated string.
@@ -160,20 +163,53 @@ dari bundel:</p>
private CharSequence getMessageText(Intent intent) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
return null;
}
</pre>
</li>
<p>Aplikasi bisa menerapkan logika untuk memutuskan tindakan apa yang harus diambil pada teks
yang telah diambil.
Untuk aplikasi interaktif (seperti chat), memberikan lebih banyak konteks dalam pemberitahuan itu sendiri
(misalnya, beberapa baris riwayat obrolan, termasuk pesan pengguna pribadi)
sehingga pengguna bisa merespons dengan tepat.
Bila pengguna merespons melalui{@link android.support.v4.app.RemoteInput},
sertakan teks dalam riwayat balasan dengan metode {@code setRemoteInputHistory()}
.</p>
<li>Kompilasilah dan keluarkan pemberitahuan lain, menggunakan ID pemberitahuan yang sama dengan
yang Anda berikan untuk pemberitahuan sebelumnya. Indikator kemajuan
menghilang dari antarmuka pemberitahuan untuk memberi tahu pengguna mengenai balasan
yang berhasil. Saat menangani pemberitahuan baru ini, gunakan konteks yang
diteruskan ke metode {@code onReceive()} penerima.
<pre>
// Build a new notification, which informs the user that the system
// handled their interaction with the previous notification.
Notification repliedNotification =
new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_message)
.setContentText(getString(R.string.replied))
.build();
// Issue the new notification.
NotificationManager notificationManager =
NotificationManager.from(context);
notificationManager.notify(notificationId, repliedNotification);
</pre>
</li>
</ol>
<p>
Untuk aplikasi interaktif, seperti chat, akan berguna bila menyertakan
konteks tambahan saat menangani teks yang diambil. Misalnya, aplikasi ini bisa menampilkan
beberapa baris riwayat chat sekaligus. Bila pengguna merespons melalui {@link
android.support.v4.app.RemoteInput}, Anda bisa memperbarui riwayat balasan
menggunakan metode {@code setRemoteInputHistory()}.
</p>
<p>
Pemberitahuan harus diperbarui atau dibatalkan setelah aplikasi
menerima masukan jarak jauh. Bila pengguna membalas ke pembaruan jarak jauh
menggunakan Balasan Langsung,
jangan batalkan pemberitahuan. Melainkan, perbarui pemberitahuan untuk menampilkan balasan pengguna.
Untuk pemberitahuan yang menggunakan {@code MessagingStyle}, Anda harus menambahkan
balasannya sebagai pesan terbaru. Saat menggunakan template lain, Anda bisa
menambahkan balasan pengguna ke riwayat masukan jarak jauh.
</p>
<h2 id="bundle">Bundel Pemberitahuan</h2>
@@ -203,6 +239,12 @@ Builder.setGroup()} yang ada untuk membundel pemberitahuan yang sama.</p>
pemberitahuan.
</p>
<p class="note">
<strong>Catatan:</strong> Jika aplikasi yang sama mengirim empat atau beberapa pemberitahuan
dan tidak menetapkan pengelompokan,
sistem secara otomatis akan mengelompokannya.
</p>
<p>Untuk mengetahui cara menambahkan pemberitahuan ke grup, lihat
<a href="{@docRoot}training/wearables/notifications/stacks.html#AddGroup">Menambahkan
Setiap Pemberitahuan ke Grup</a>.</p>
@@ -226,19 +268,19 @@ bernilai benar untuk kasus penggunaan Anda:</p>
</li>
<ul>
<li>Bisa diaplikasikan, dengan tindakan yang spesifik untuk setiap anak.</li>
<li>Mereka dapat diaplikasikan, dengan tindakan khusus untuk masing-masing anak.</li>
<li>Ada lebih banyak informasi pada anak yang ingin dibaca oleh pengguna.</li>
</ul>
</ul>
<p>Contoh kasus penggunaan yang baik untuk grup pemberitahuan antara lain: aplikasi pertukaran pesan
<p>Contoh kasus penggunaan yang baik untuk grup pemberitahuan antara lain: aplikasi perpesanan
yang menampilkan daftar pesan yang masuk, atau aplikasi email yang menampilkan daftar email
yang diterima.</p>
<p>
Contoh kasus di mana pemberitahuan tunggal lebih disukai
antara lain pesan individual dari satu orang, atau representasi daftar
item teks satu-baris. Anda bisa menggunakan
Contoh kasus penggunaan saat pemberitahuan tunggal lebih disukai
meliputi pesan pribadi dari satu orang, atau representasi daftar dari
item teks baris tunggal. Anda bisa menggunakan
({@link android.app.Notification.InboxStyle InboxStyle} atau
{@link android.app.Notification.BigTextStyle BigTextStyle}) untuk mencapai
hal ini.
@@ -247,7 +289,7 @@ hal ini.
<h3 id ="post">Menampilkan bundel pemberitahuan</h3>
<p>
Aplikasi ini harus selalu memposting rangkuman grup, sekalipun grup hanya berisi
Aplikasi ini harus selalu mengeposkan rangkuman grup, sekalipun grup hanya berisi
satu anak. Sistem akan menyembunyikan rangkuman dan langsung menampilkan
pemberitahuan anak jika hanya berisi pemberitahuan tunggal. Hal ini akan memastikan
sistem bisa memberikan pengalaman yang konsisten saat pengguna menggeser
@@ -262,7 +304,7 @@ hal ini.
<h3>Mengintip pemberitahuan</h3>
<p>Walaupun sistem biasanya menampilkan pemberitahuan anak sebagai sebuah grup, Anda bisa mengaturnya
<p>Walaupun sistem biasanya menampilkan pemberitahuan anak sebagai sebuah grup, Anda bisa menyetelnya
agar muncul untuk sementara muncul sebagai
<a href="{@docRoot}guide/topics/ui/notifiers/notifications.html#Heads-up">
pemberitahuan pendahuluan</a>. Fitur ini khususnya berguna karena memungkinkan
@@ -273,10 +315,10 @@ hal ini.
<h3>Kompatibilitas mundur</h3>
<p>
Baik grup pemberitahuan maupun input jauh telah menjadi bagian dari {@link
Baik grup pemberitahuan maupun masukan jauh telah menjadi bagian dari {@link
android.app.Notification} API sejak Android 5.0 (API level 21) untuk mendukung
perangkat Android Wear. Jika Anda sudah membuat pemberitahuan dengan API ini,
satu-satunya tindakan yang harus Anda ambil adalah memeriksa apakah perilaku aplikasi sesuai dengan panduan yang
satu-satunya tindakan yang harus Anda ambil adalah memverifikasi apakah perilaku aplikasi sesuai dengan panduan yang
dijelaskan di atas, dan mempertimbangkan implementasi {@code
setRemoteInputHistory()}.
</p>
@@ -286,20 +328,20 @@ hal ini.
kelas {@link android.support.v4.app.NotificationCompat}
pustaka dukungan, yang memungkinkan Anda untuk membuat pemberitahuan yang bekerja pada versi Android
sebelumnya. Pada perangkat genggam dan tablet, pengguna hanya melihat pemberitahuan rangkuman,
sehingga aplikasi tetap memiliki gaya kotak masuk atau representasi pemberitahuan yang sama
untuk seluruh konten informasi grup. Karena perangkat Android
sehingga aplikasi masih memiliki model inbox atau pemberitahuan sama yang
mewakili seluruh materi informasi grup. Karena perangkat Android
Wear memungkinkan pengguna melihat semua pemberitahuan anak bahkan pada level platform
yang lebih lama, maka Anda harus membuat pemberitahuan anak dengan mengabaikan level
yang lebih lama, maka Anda harus membangun pemberitahuan anak dengan mengabaikan level
API.
</p>
<h2 id="custom"> Tampilan Custom</h2>
<h2 id="custom"> Tampilan Khusus</h2>
<p>Mulai dari Android N, Anda bisa menyesuaikan tampilan pemberitahuan dan
tetap mendapatkan dekorasi sistem seperti header pemberitahuan, tindakan, dan
layout yang bisa diperluas.</p>
<p>Untuk mengaktifkan kemampuan ini, Android N menambahkan API berikut untuk menata gaya
tampilan custom Anda:</p>
tampilan khusus Anda:</p>
<dl>
<dt>
@@ -312,13 +354,13 @@ media.</dd>
</dl>
<p>Untuk menggunakan API baru ini, panggil metode {@code setStyle()}, dengan meneruskan
gaya tampilan custom yang diinginkan padanya.</p>
gaya tampilan khusus yang diinginkan padanya.</p>
<p>Cuplikan ini menampilkan cara membuat objek pemberitahuan custom dengan metode
<p>Cuplikan ini menampilkan cara membuat objek pemberitahuan khusus dengan metode
{@code DecoratedCustomViewStyle()}.</p>
<pre>
Notification noti = new Notification.Builder()
Notification notification = new Notification.Builder()
.setSmallIcon(R.drawable.ic_stat_player)
.setLargeIcon(albumArtBitmap))
.setCustomContentView(contentView);
@@ -326,3 +368,26 @@ Notification noti = new Notification.Builder()
.build();
</pre>
<h2 id="style">Gaya Perpesanan</h2>
<p>
Android N memperkenalkan API baru untuk menyesuaikan gaya pemberitahuan.
Dengan menggunakan kelas <code>MessageStyle</code>, Anda bisa mengubah beberapa
label yang ditampilkan pada pemberitahuan, termasuk judul percakapan,
pesan tambahan, dan tampilan materi untuk pemberitahuannya.
</p>
<p>
Cuplikan kode berikut memperagakan cara menyesuaikan sebuah
gaya pemberitahuan menggunakan kelas <code>MessageStyle</code>.
</p>
<pre>
Notification notification = new Notification.Builder()
.setStyle(new Notification.MessagingStyle("Me")
.setConversationTitle("Team lunch")
.addMessage("Hi", timestamp1, null) // Pass in null for user.
.addMessage("What's up?", timestamp2, "Coworker")
.addMessage("Not much", timestamp3, null)
.addMessage("How about lunch?", timestamp4, "Coworker"));
</pre>

View File

@@ -1,5 +1,5 @@
page.title=Gambar-dalam-gambar
page.keywords=preview,sdk,PIP,Picture-in-picture
page.keywords=pratinjau,sdk,PIP,Gambar-dalam-gambar
page.tags=androidn
@jd:body
@@ -17,6 +17,8 @@ Gambar-dalam-gambar</a></li>
</li>
<li><a href="#continuing_playback">Melanjutkan Pemutaran Video Saat dalam
Gambar-dalam-gambar</a></li>
<li><a href="#single_playback">Menggunakan Aktivitas Pemutaran Tunggal untuk
Gambar-dalam-gambar</a></li>
<li><a href="#best">Praktik Terbaik</a></li>
</ol>
@@ -41,13 +43,13 @@ kapan memasuki mode PIP:</p>
<ul>
<li>Aplikasi Anda bisa memindahkan video ke dalam mode PIP bila pengguna mengarah
mundur dari video untuk melihat-lihat konten lainnya.</li>
mundur dari video untuk menjelajah materi lainnya.</li>
<li>Aplikasi Anda bisa mengalihkan video ke dalam mode PIP selagi pengguna menonton akhir episode
dari konten. Layar utama menampilkan informasi
dari materi. Layar utama menampilkan informasi
promosi atau rangkuman tentang episode berikutnya dalam seri tersebut.</li>
<li>Aplikasi Anda bisa menyediakan suatu cara bagi pengguna untuk mengantre konten tambahan selagi
<li>Aplikasi Anda bisa menyediakan suatu cara bagi pengguna untuk mengantre materi tambahan selagi
mereka menonton video. Video terus dimainkan dalam mode PIP selagi layar
utama menampilkan aktivitas pemilihan konten.</li>
utama menampilkan aktivitas pemilihan materi.</li>
</ul>
<p>Jendela PIP memiliki luas 240x135 dp dan ditampilkan di layer paling atas pada salah satu
@@ -59,11 +61,11 @@ ditutup. Pengguna juga bisa menutup jendela PIP melalui Recents.</p>
<img src="{@docRoot}preview/images/pip-active.png" />
<p class="img-caption"><strong>Gambar 1.</strong> Video
Gambar-dalam-gambar terlihat di sudut layar selagi pengguna melihat-lihat konten pada layar
Gambar-dalam-gambar terlihat di sudut layar selagi pengguna menjelajahi materi pada layar
utama.</p>
<p>PIP memanfaatkan API multi-jendela yang tersedia di Android N untuk
menyediakan jendela overlay video yang disematkan. Untuk menambahkan PIP ke aplikasi, Anda harus
menyediakan jendela hamparan video yang disematkan. Untuk menambahkan PIP ke aplikasi, Anda harus
mendaftarkan aktivitas yang mendukung PIP, mengalihkan aktivitas Anda ke mode PIP bila
diperlukan, serta memastikan elemen UI disembunyikan dan pemutaran video berlanjut bila
aktivitas dalam mode PIP.</p>
@@ -72,7 +74,7 @@ aktivitas dalam mode PIP.</p>
<p>Secara default, sistem tidak secara otomatis mendukung PIP untuk aplikasi.
Jika Anda ingin mendukung PIP dalam aplikasi, daftarkan aktivitas
video Anda dalam manifes dengan mengatur
video Anda dalam manifes dengan menyetel
<code>android:supportsPictureInPicture</code> dan
<code>android:resizeableActivity</code> ke <code>true</code>. Juga, tetapkan
bahwa aktivitas Anda menangani perubahan konfigurasi layout sehingga aktivitas
@@ -88,16 +90,16 @@ Anda tidak diluncurkan ulang saat terjadi perubahan layout selama transisi mode
</pre>
<p>Saat mendaftarkan aktivitas Anda, ingatlah bahwa dalam mode PIP aktivitas
Anda akan ditampilkan pada jendela overlay kecil pada layar TV. Aktivitas
Anda akan ditampilkan pada jendela hamparan kecil pada layar TV. Aktivitas
pemutaran video dengan UI minimal akan memberikan pengalaman pengguna terbaik. Aktivitas yang
berisi elemen UI kecil mungkin tidak memberikan pengalaman pengguna yang baik
bila beralih ke mode PIP, karena pengguna tidak bisa melihat elemen UI secara detail
mengandung elemen UI kecil mungkin tidak memberikan pengalaman pengguna yang baik
ketika beralih ke mode PIP, karena pengguna tidak dapat melihat elemen UI secara jelas
di jendela PIP.</p>
<h2 id="pip_button">Mengalihkan Aktivitas Anda ke Gambar-dalam-gambar</h2>
Bila Anda perlu untuk mengalihkan aktivitas Anda ke mode PIP, panggil
<code>Activity.enterPictureInPicture()</code>. Contoh berikut mengalihkan
Bila Anda perlu untuk mengalihkan aktivitas ke mode PIP, panggil
<code>Activity.enterPictureInPictureMode()</code>. Contoh berikut mengalihkan
ke mode PIP bila pengguna memilih tombol PIP khusus pada baris
kontrol media:</p>
@@ -105,7 +107,7 @@ kontrol media:</p>
&#64;Override
public void onActionClicked(Action action) {
if (action.getId() == R.id.lb_control_picture_in_picture) {
getActivity().enterPictureInPicture();
getActivity().enterPictureInPictureMode();
return;
}
...
@@ -124,17 +126,17 @@ tindakan PIP baris kontrol dan menggunakan ikon PIP.</p>
<h2 id="handling_ui">Menangani UI Selama Gambar-dalam-gambar</h2>
<p>Bila aktivitas Anda memasuki mode PIP, aktivitas Anda seharusnya hanya menampilkan pemutaran
video. Hilangkan elemen UI sebelum aktivitas Anda memasuki PIP,
<p>Bila aktivitas memasuki mode PIP, aktivitas Anda seharusnya hanya menampilkan pemutaran
video. Buang elemen UI sebelum aktivitas Anda memasuki PIP,
dan pulihkan elemen ini bila aktivitas Anda beralih ke layar penuh lagi.
Kesampingkan <code>Activity.onPictureInPictureChanged()</code> atau
<code>Fragment.onPictureInPictureChanged()</code> dan aktifkan atau
Ganti <code>Activity.onPictureInPictureModeChanged()</code> atau
<code>Fragment.onPictureInPictureModeChanged()</code> dan aktifkan atau
nonaktifkan elemen UI saat diperlukan, misalnya:</p>
<pre>
&#64;Override
public void onPictureInPictureChanged(boolean inPictureInPicture) {
if (inPictureInPicture) {
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
if (isInPictureInPictureMode) {
// Hide the controls in picture-in-picture mode.
...
} else {
@@ -157,8 +159,8 @@ misalnya:</p>
<pre>
&#64;Override
public void onPause() {
// If called due to PIP, do not pause playback
if (inPictureInPicture()) {
// If called while in PIP mode, do not pause playback
if (isInPictureInPictureMode()) {
// Continue playback
...
}
@@ -167,13 +169,38 @@ public void onPause() {
}
</pre>
<p>Bila aktivitas Anda meninggalkan mode PIP dan kembali ke mode layar penuh, sistem
akan melanjutkan aktivitas Anda dan memanggil metode <code>onResume()</code> Anda.</p>
<p>Bila aktivitas meninggalkan mode PIP dan kembali ke mode layar penuh, sistem
akan melanjutkan aktivitas Anda dan memanggil metode <code>onResume()</code>.</p>
<h2 id="single_playback">Menggunakan Aktivitas Pemutaran Tunggal untuk
Gambar-dalam-gambar</h2>
<p>Di aplikasi Anda, seorang pengguna bisa memilih video baru saat menyusuri materi di
layar utama, selagi aktivitas pemutaran video dalam mode PIP. Putar
video baru di aktivitas pemutaran yang ada dalam mode layar penuh, sebagai ganti
meluncurkan aktivitas baru yang dapat membingungkan pengguna.</p>
<p>Guna memastikan aktivitas tunggal digunakan untuk permintaan pemutaran video dan
beralih ke atau dari mode PIP bila dibutuhkan, setel
<code>android:launchMode</code> aktivitas ke <code>singleTask</code> dalam manifes Anda:
</p>
<pre>
&lt;activity android:name="VideoActivity"
...
android:supportsPictureInPicture="true"
android:launchMode="singleTask"
...
</pre>
<p>Di aktivitas Anda, ganti {@link android.app.Activity#onNewIntent
Activity.onNewIntent()} dan tangani video baru, yang akan menghentikan pemutaran video
jika diperlukan.</p>
<h2 id="best">Praktik Terbaik</h2>
<p>PIP ditujukan untuk aktivitas yang memutar video layar penuh. Saat mengalihkan
aktivitas Anda ke mode PIP, hindari menampilkan apa pun selain konten video.
aktivitas Anda ke mode PIP, hindari menampilkan apa pun selain materi video.
Pantau saat aktivitas Anda memasuki mode PIP dan sembunyikan elemen UI, seperti dijelaskan
dalam <a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a>.</p>
@@ -181,6 +208,6 @@ dalam <a href="#handling_ui">Menangani UI Selama Gambar-dalam-gambar</a>.</p>
layar, Anda harus menghindari menampilkan informasi penting di layar utama
di area mana saja yang bisa terhalang oleh jendela PIP.</p>
<p>Bila aktivitas ada berada dalam mode PIP, secara default aktivitas itu tidak mendapatkan fokus input. Untuk
menerima kejadian input saat dalam mode PIP, gunakan
<p>Bila aktivitas ada berada dalam mode PIP, secara default aktivitas itu tidak mendapatkan fokus masukan. Untuk
menerima kejadian masukan saat dalam mode PIP, gunakan
<code>MediaSession.setMediaButtonReceiver()</code>.</p>

View File

@@ -1,5 +1,5 @@
page.title=Scoped Directory Access
page.keywords=preview,sdk,scoped directory access
page.keywords=pratinjau,sdk,scoped directory access
page.tags=androidn
@jd:body
@@ -17,15 +17,15 @@ page.tags=androidn
<p>Aplikasi seperti aplikasi foto biasanya hanya memerlukan akses ke direktori tertentu dalam
penyimpanan eksternal, seperti direktori <code>Pictures</code>. Pendekatan
yang ada untuk mengakses penyimpanan eksternal tidak didesain untuk memberikan
akses direktori target dengan mudah untuk tipe aplikasi ini. Misalnya:</p>
yang ada dalam mengakses penyimpanan eksternal tidak didesain untuk memberi kemudahan
akses direktori tertarget untuk tipe aplikasi ini. Misalnya:</p>
<ul>
<li>Meminta {@link android.Manifest.permission#READ_EXTERNAL_STORAGE}
atau {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} dalam manifes Anda
akan memungkinkan akses ke semua direktori publik pada penyimpanan eksternal, yang mungkin
lebih banyak akses dari yang dibutuhkan aplikasi Anda.</li>
<li>Penggunaan
<li>Menggunakan
<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
Access Framework</a> biasanya membuat pengguna Anda memilih direktori
melalui UI sistem, yang tidak diperlukan jika aplikasi Anda selalu mengakses
@@ -41,9 +41,23 @@ direktori penyimpanan eksternal umum. </p>
<code>StorageVolume</code> yang tepat. Kemudian, buat intent dengan memanggil metode
<code>StorageVolume.createAccessIntent()</code> dari instance itu.
Gunakan intent ini untuk mengakses direktori penyimpanan eksternal. Untuk mendapatkan daftar
semua isi yang tersedia, termasuk isi media lepas-pasang, gunakan
semua volume yang tersedia, termasuk volume media lepas-pasang, gunakan
<code>StorageManager.getVolumesList()</code>.</p>
<p>Jika Anda memiliki informasi tentang file spesifik, gunakan
<code>StorageManager.getStorageVolume(File)</code> untuk mendapatkan
<code>StorageVolume</code> yang berisi file tersebut. Panggil
<code>createAccessIntent()</code> pada <code>StorageVolume</code> ini untuk mengakses
direktori penyimpanan eksternal untuk file tersebut.</p>
<p>
Di volume kedua, seperti kartu SD eksternal, teruskan null saat memanggil
<code>StorageVolume.createAccessIntent()</code> untuk meminta akses ke seluruh
volume, sebagai ganti direktori spesifik.
<code>StorageVolume.createAccessIntent()</code> akan mengembalikan null jika Anda meneruskan
null ke volume utama, atau jika Anda meneruskan nama direktori yang tidak valid.
</p>
<p>Cuplikan kode berikut adalah contoh cara membuka direktori
<code>Pictures</code> dalam penyimpanan bersama utama:</p>
@@ -62,7 +76,7 @@ diperlukan mengonfirmasi akses dengan pengguna menggunakan UI yang disederhanaka
<p class="img-caption"><strong>Gambar 1.</strong> Sebuah aplikasi yang meminta
akses ke direktori Pictures.</p>
<p>Jika pengguna memberi akses, sistem akan memanggil pengesampingan
<p>Jika pengguna memberi akses, sistem akan memanggil penggantian
<code>onActivityResult()</code> Anda dengan kode hasil
<code>Activity.RESULT_OK</code>, dan data intent yang berisi URI. Gunakan
URI yang disediakan untuk mengakses informasi direktori, serupa dengan menggunakan URI
@@ -70,7 +84,7 @@ yang dikembalikan oleh
<a href="{@docRoot}guide/topics/providers/document-provider.html">Storage
Access Framework</a>.</p>
<p>Jika pengguna tidak memberi akses, sistem akan memanggil pengesampingan
<p>Jika pengguna tidak memberi akses, sistem akan memanggil penggantian
<code>onActivityResult()</code> Anda dengan kode hasil
<code>Activity.RESULT_CANCELED</code>, dan data intent nol.</p>
@@ -121,4 +135,14 @@ pengguna.</p>
<p>Jika pengguna menolak akses ke direktori eksternal, jangan langsung
meminta akses lagi. Berulang kali meminta akses akan menghasilkan pengalaman
pengguna yang buruk.</p>
pengguna yang buruk. Jika permintaan ditolak oleh pengguna, dan aplikasi meminta akses
lagi, UI akan menampilkan kotak centang <b>Don't ask again</b>:</p>
<img src="{@docRoot}preview/images/scoped-folder-access-dont-ask.png" srcset="{@docRoot}preview/images/scoped-folder-access-dont-ask.png 1x,
{@docRoot}preview/images/scoped-folder-access-dont-ask_2x.png 2x" />
<p class="img-caption"><strong>Gambar 1.</strong> Sebuah aplikasi membuat
permintaan kedua untuk mengakses media lepas-pasang.</p>
<p>Jika pengguna memilih <b>Don't ask again</b> dan menolak permintaan,
semua permintaan berikutnya untuk direktori yang diberikan dari aplikasi
Anda secara otomatis akan ditolak, dan tidak ada UI permintaan yang akan ditampilkan ke pengguna.</p>

View File

@@ -1,5 +1,5 @@
page.title=Network Security Configuration
page.keywords=androidn,security,network
page.title=Konfigurasi Keamanan Jaringan
page.keywords=androidn,keamanan,jaringan
page.image=images/cards/card-nyc_2x.jpg
@jd:body
@@ -12,12 +12,12 @@ page.image=images/cards/card-nyc_2x.jpg
<li><a href="#manifest">Menambahkan File Konfigurasi Keamanan</a></li>
<li><a href="#CustomTrust">Menyesuaikan CA Tepercaya</a>
<ol>
<li><a href="#ConfigCustom">Mengonfigurasi CA Tepercaya Custom</a></li>
<li><a href="#ConfigCustom">Mengonfigurasi CA Tepercaya Khusus</a></li>
<li><a href="#LimitingCas">Membatasi Set CA Tepercaya</a></li>
<li><a href="#TrustingAdditionalCas">Mempercayai CA Tambahan</a></li>
</ol>
</li>
<li><a href="#TrustingDebugCa">Merunut CA Saja</a></li>
<li><a href="#TrustingDebugCa">CA Debug Saja</a></li>
<li><a href="#UsesCleartextTraffic">Berhenti dari Lalu Lintas Cleartext</a></li>
<li><a href="#CertificatePinning">Menyematkan Sertifikat</a></li>
<li><a href="#ConfigInheritance">Perilaku Pewarisan Konfigurasi</a></li>
@@ -29,23 +29,23 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Android N menyertakan fitur
Network Security Configuration yang memungkinkan aplikasi menyesuaikan pengaturan keamanan jaringan mereka dalam
file konfigurasi deklaratif yang aman tanpa memodifikasi kode aplikasi. Pengaturan ini bisa
Network Security Configuration yang memungkinkan aplikasi menyesuaikan setelan keamanan jaringan mereka dalam
file konfigurasi deklaratif yang aman tanpa memodifikasi kode aplikasi. Setelan ini bisa
dikonfigurasi untuk domain dan aplikasi tertentu. Kemampuan
utama fitur ini adalah sebagai berikut:
</p>
<ul>
<li>
<b>Trust-anchor custom:</b> Menyesuaikan Certificate Authorities (CA) mana
<b>Trust-anchor khusus:</b> Menyesuaikan Certificate Authorities (CA) mana
yang dipercaya untuk koneksi aman aplikasi. Misalnya,
mempercayai sertifikat tertentu yang ditandatangani sendiri atau membatasi
set CA umum yang dipercaya aplikasi.
</li>
<li>
<b>Pengesampingan hanya-runut:</b> Merunut secara aman koneksi aman dalam aplikasi
tanpa menambahkan risiko pada basis yang telah diinstal.
<b>Penggantian hanya-debug:</b> Men-debug secara aman koneksi aman dalam aplikasi
tanpa menambahkan risiko pada basis yang telah dipasang.
</li>
<li>
@@ -64,35 +64,36 @@ page.image=images/cards/card-nyc_2x.jpg
<p>
Fitur Network Security Configuration menggunakan file XML tempat Anda menetapkan
pengaturan untuk aplikasi. Anda harus menyertakan sebuah entri dalam manifes aplikasi
setelan untuk aplikasi. Anda harus menyertakan sebuah entri dalam manifes aplikasi
untuk menunjuk ke file ini. Kutipan kode berikut dari sebuah manifes
yang memperagakan cara membuat entri ini:
</p>
<pre>
&lt;?xml version="1.0" encoding="utf-8"?&gt;
...
&lt;app ...&gt;
&lt;manifest ... &gt;
&lt;application ... &gt;
&lt;meta-data android:name="android.security.net.config"
android:resource="@xml/network_security_config" /&gt;
...
&lt;/app&gt;
&lt;/application&gt;
&lt;/manifest&gt;
</pre>
<h2 id="CustomTrust">Menyesuaikan CA Tepercaya</h2>
<p>
Aplikasi mungkin perlu mempercayai set CA custom sebagai ganti default
Aplikasi mungkin perlu mempercayai set CA khusus sebagai ganti default
platform. Alasannya yang paling umum adalah:
</p>
<ul>
<li>Menghubungkan ke host dengan otoritas sertifikat custom (ditandatangani sendiri,
<li>Menghubungkan ke host dengan otoritas sertifikat khusus (ditandatangani sendiri,
dikeluarkan oleh CA internal, dll).
</li>
<li>Membatasi set CA hanya untuk CA yang Anda percaya sebagai ganti setiap CA
yang sudah terinstal.
yang sudah terpasang.
</li>
<li>Mempercayai CA tambahan yang tidak disertakan dalam sistem.
@@ -100,16 +101,16 @@ page.image=images/cards/card-nyc_2x.jpg
</ul>
<p>
Secara default koneksi (misalnya TLS, HTTPS) aman dari semua aplikasi mempercayai
CA yang telah diinstal oleh sistem, dan aplikasi yang menargetkan API level 23
Secara default koneksi (mis. TLS, HTTPS) aman dari semua aplikasi mempercayai
CA yang telah dipasang oleh sistem, dan aplikasi yang menargetkan API level 23
(Android M) ke bawah, juga mempercayai penyimpanan CA yang ditambahkan pengguna secara default. Aplikasi
bisa menyesuaikan koneksinya sendiri menggunakan {@code base-config} (untuk
penyesuaian di tingkat aplikasi) atau {@code domain-config} (untuk penyesuaian
bisa menyesuaikan koneksinya menggunakan {@code base-config} (untuk
penyesuaian lebar-aplikasi) atau {@code domain-config} (untuk penyesuaian
per-domain).
</p>
<h3 id="ConfigCustom">Mengonfigurasi CA Custom</h3>
<h3 id="ConfigCustom">Mengonfigurasi CA Khusus</h3>
<p>
Anggaplah Anda ingin menghubungkan ke host Anda yang menggunakan sertifikat
@@ -147,7 +148,7 @@ page.image=images/cards/card-nyc_2x.jpg
</p>
<p>
Konfigurasi untuk membatasi set CA tepercaya mirip dengan <a href="#TrustingACustomCa">mempercayai CA custom</a> untuk domain tertentu selain
Konfigurasi untuk membatasi set CA tepercaya mirip dengan <a href="#TrustingACustomCa">mempercayai CA khusus</a> untuk domain tertentu selain
beberapa CA disediakan dalam sumber daya.
</p>
@@ -203,23 +204,23 @@ sebagai ganti satu elemen.
</p>
<h2 id="TrustingDebugCa">Mengonfigurasi CA untuk Perunutan</h2>
<h2 id="TrustingDebugCa">Mengonfigurasi CA untuk Debug</h2>
<p>
Saat merunut aplikasi yang terhubung melalui HTTPS, Anda mungkin perlu
Saat men-debug aplikasi yang terhubung melalui HTTPS, Anda mungkin perlu
menghubungkan ke server pengembangan lokal, yang tidak memiliki sertifikat
SSL untuk server produksi Anda. Untuk mendukungnya tanpa
memodifikasi kode aplikasi, Anda bisa menetapkan CA hanya-runut
memodifikasi kode aplikasi, Anda bisa menetapkan CA hanya-debug
yang <i>hanya</i> dipercaya bila <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">
android:debuggable</a>
adalah {@code true} dengan menggunakan {@code debug-overrides}. Biasanya IDE dan alat
build mengatur flag ini secara otomatis untuk build non-rilis.
build menyetel flag ini secara otomatis untuk build non-rilis.
</p>
<p>
Ini lebih aman daripada kode kondisional biasa karena, sebagai tindakan
pencegahan keamanan, toko aplikasi tidak menerima aplikasi yang ditandai
bisa-dirunut.
bisa-di-debug.
</p>
<p>
@@ -240,9 +241,9 @@ android:debuggable</a>
<h2 id="UsesCleartextTraffic">Berhenti dari Lalu Lintas Cleartext</h2>
<p>
Aplikasi yang bermaksud menghubungkan ke tujuan dengan hanya menggunakan koneksi
aman bisa berhenti mendukung cleartext (menggunakan protokol
HTTP yang tidak dienkripsi sebagai ganti HTTPS) ke tujuan tersebut. Opsi ini akan membantu mencegah
Aplikasi bermaksud menyambung ke tujuan hanya menggunakan koneksi
aman dapat memilih keluar dari dukungan cleartext (menggunakan protokol
HTTP yang tidak terenkripsi sebagai ganti HTTPS) ke tujuan tersebut. Opsi ini akan membantu mencegah
regresi tidak disengaja dalam aplikasi karena perubahan dalam URL yang disediakan oleh sumber-sumber
eksternal seperti server backend.
Lihat {@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted
@@ -271,7 +272,7 @@ android:debuggable</a>
<h2 id="CertificatePinning">Menyematkan Sertifikat</h2>
<p>
Biasanya aplikasi mempercayai semua CA yang telah terinstal. Jika salah satu dari CA ini
Biasanya aplikasi mempercayai semua CA yang telah terpasang. Jika salah satu dari CA ini
mengeluarkan sertifikat palsu, aplikasi akan berisiko terkena serangan
MiTM. Beberapa aplikasi memilih untuk membatasi set sertifikat yang mereka terima
baik dengan membatasi set CA yang mereka percaya atau dengan menyematkan sertifikat.
@@ -293,9 +294,9 @@ android:debuggable</a>
</p>
<p>
Selain itu bisa juga mengatur waktu kedaluwarsa untuk pin yang setelah
itu penyematan tidak dilakukan. Hal ini membantu mencegah masalah konektivitas dalam
aplikasi yang belum diperbarui. Akan tetapi, mengatur waktu kedaluwarsa
Selain itu dimungkinkan juga menyetel waktu habis masa berlaku untuk pin setelah
penyematan tidak dilakukan. Hal ini membantu mencegah masalah konektivitas dalam
aplikasi yang belum diperbarui. Akan tetapi, menyetel waktu kedaluwarsa
pada pin mungkin akan membuat penyematan bisa diabaikan.
</p>
@@ -310,6 +311,7 @@ android:debuggable</a>
&lt;pin digest="SHA-256"&gt;7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=&lt;/pin&gt;
&lt;!-- backup pin --&gt
&lt;pin digest="SHA-256"&gt;fwza0LRMXouZHRC8Ei+4PyuldPDcf3UKgO/04cDM1oE=&lt;/pin&gt;
&lt;/pin-set&gt;
&lt;/domain-config&gt;
&lt;/network-security-config&gt;
</pre>
@@ -319,21 +321,21 @@ android:debuggable</a>
<h2 id="ConfigInheritance">Perilaku Pewarisan Konfigurasi</h2>
<p>
Nilai yang tidak diatur dalam konfigurasi tertentu akan diwariskan. Perilaku ini memungkinkan konfigurasi
Nilai yang tidak disetel dalam konfigurasi tertentu akan diwariskan. Perilaku ini memungkinkan konfigurasi
yang lebih kompleks sambil menjaga file konfigurasi tetap terbaca.
</p>
<p>
Jika nilai tidak diatur dalam entri tertentu maka nilai dari entri berikutnya yang lebih
umum akan digunakan. Nilai yang tidak diatur dalam {@code domain-config} akan
Jika nilai tidak disetel dalam entri tertentu maka nilai dari entri berikutnya yang lebih
umum akan digunakan. Nilai yang tidak disetel dalam {@code domain-config} akan
diambil dari {@code domain-config} induk, jika tersarang, atau dari {@code
base-config} jika tidak. Nilai yang tidak diatur dalam {@code base-config} akan menggunakan
base-config} jika tidak. Nilai yang tidak disetel dalam {@code base-config} akan menggunakan
nilai default platform.
</p>
<p>
Misalnya pertimbangkan, bila semua koneksi ke subdomain {@code
example.com} harus menggunakan set CA custom. Selain itu, lalu lintas cleartext ke
example.com} harus menggunakan set CA khusus. Selain itu, lalu lintas cleartext ke
domain ini diizinkan <em>kecuali</em> saat menghubungkan ke {@code
secure.example.com}. Dengan menyarangkan konfigurasi untuk {@code
secure.example.com} dalam konfigurasi untuk {@code example.com},
@@ -454,7 +456,7 @@ android:debuggable</a>
tercakup oleh <a href="#domain-config"><code>domain-config</code></a>.
<p>
Nilai yang tidak diatur akan menggunakan nilai default platform. Konfigurasi
Nilai yang tidak disetel akan menggunakan nilai default platform. Konfigurasi
default untuk aplikasi yang menargetkan API level 24 ke atas:
</p>
@@ -572,7 +574,7 @@ akan digunakan.</p></dd>
yang dihasilkan oleh alat IDE dan build. Trust-anchor yang ditetapkan dalam {@code
debug-overrides} akan ditambahkan ke semua konfigurasi lainnya dan penyematan
sertifikat tidak dilakukan bila rantai sertifikat server menggunakan satu dari
trust-anchor hanya-runut ini. Jika <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
trust-anchor hanya-debug ini. Jika <a href="{@docRoot}guide/topics/manifest/application-element.html#debug">android:debuggable</a>
adalah {@code "false"} maka bagian ini akan diabaikan sepenuhnya.
</dd>
</dl>
@@ -630,7 +632,7 @@ Sumber sertifikat CA, bisa salah satu dari
komentar.
</li>
<li>{@code "system"} untuk sertifikat CA sistem yang telah terinstal.
<li>{@code "system"} untuk sertifikat CA sistem yang telah terpasang.
</li>
<li>{@code "user"} untuk sertifikat CA yang ditambahkan pengguna.
@@ -642,9 +644,9 @@ Sumber sertifikat CA, bisa salah satu dari
<dd>
<p>
Menetapkan apakah CA dari sumber akan mengabaikan penyematan sertifikat. Jika {@code
"true"} maka rantai sertifikat yang rantainya melalui salah satu CA dari
sumber ini tidak akan disematkan. Hal ini bisa berguna untuk CA
perunutan atau untuk mendukung dengan memungkinkan pengguna melakukan MiTM atas lalu lintas aman aplikasi Anda.
"true"} kemudian rangkaian sertifikat melalui salah satu CA dari
sumber ini maka tidak dilakukan penyematan. Hal ini bisa berguna untuk debug CA
atau untuk mendukung dengan memungkinkan pengguna melakukan MiTM atas lalu lintas aman aplikasi Anda.
</p>
<p>
@@ -701,11 +703,11 @@ Sumber sertifikat CA, bisa salah satu dari
<dd>
Tanggal, dalam format {@code yyyy-MM-dd}, pada saat dan setelah pin
kedaluwarsa, sehingga menonaktifkan penyematan. Jika atribut tidak diatur maka
kedaluwarsa, sehingga menonaktifkan penyematan. Jika atribut tidak disetel maka
pin tidak kedaluwarsa.
<p>
Tanggal kedaluwarsa membantu mencegah masalah konektivitas di aplikasi yang
tidak mendapatkan pembaruan untuk set pin mereka, misalnya karena pengguna
tidak mengambil pembaruan untuk set pin mereka, misalnya karena pengguna
menonaktifkan pembaruan aplikasi.
</p>
</dd>
@@ -737,7 +739,7 @@ Sumber sertifikat CA, bisa salah satu dari
</dt>
<dd>
Algoritma intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya
Algoritme intisari yang digunakan untuk menghasilkan pin. Saat ini, hanya
{@code "SHA-256"} yang didukung.
</dd>
</dl>

View File

@@ -1,5 +1,5 @@
page.title=Perekaman TV
page.keywords=preview,sdk,tv,recording
page.keywords=pratinjau,sdk,tv,perekaman
page.tags=androidn
page.image=images/cards/card-nyc_2x.jpg
@@ -18,40 +18,61 @@ page.image=images/cards/card-nyc_2x.jpg
</div>
</div>
<p>Layanan input TV memungkinkan pengguna menghentikan sementara dan melanjutkan pemutaran saluran melalui
API perekaman atau time-shifting. Android N telah berkembang hingga ke perekaman
<p>Layanan masukan TV memungkinkan pengguna menghentikan sementara dan melanjutkan pemutaran saluran melalui
API perekaman. Android N telah berkembang hingga ke perekaman
dengan memungkinkan pengguna menyimpan beberapa sesi rekaman.</p>
<p>Pengguna bisa menjadwalkan rekaman terlebih dahulu, atau memulai rekaman sambil menonton
suatu acara. Setelah sistem menyimpan rekaman, pengguna bisa melihat-lihat, menata,
suatu acara. Setelah sistem menyimpan rekaman, pengguna bisa menjelajah, menata,
dan memutar kembali rekaman tersebut menggunakan aplikasi TV di sistem.</p>
<p>Jika Anda ingin menyediakan fungsionalitas perekaman untuk layanan input TV,
<p>Jika Anda ingin menyediakan fungsi perekaman untuk layanan masukan TV,
Anda harus menunjukkan pada sistem bahwa aplikasi Anda mendukung perekaman, mengimplementasikan
kemampuan untuk merekam acara, menangani dan memberitahukan setiap kesalahan yang terjadi
selama perekaman, serta mengelola sesi yang telah Anda rekam.</p>
kemampuan merekam program, menangani dan mengomunikasikan kesalahan yang muncul
selama perekaman, dan mengelola sesi perekaman Anda.</p>
<p class="note"><strong>Catatan:</strong> Aplikasi Live Channels belum
menyediakan cara bagi pengguna untuk membuat atau mengakses perekaman. Hingga dibuat perubahan
di aplikasi Live Channels, mungkin sulit menguji sepenuhnya pengalaman
perekaman untuk layanan masukan TV Anda.</p>
<h2 id="supporting">Menunjukkan Dukungan untuk Perekaman</h2>
<p>Untuk memberi tahu sistem bahwa layanan input TV Anda mendukung perekaman, ikuti
<p>Untuk memberi tahu sistem bahwa layanan masukan TV Anda mendukung perekaman, setel
atribut <code>android:canRecord</code> di file XML metadata layanan Anda
ke <code>true</code>:
</p>
<pre>
&lt;tv-input xmlns:android="http://schemas.android.com/apk/res/android"
<b>android:canRecord="true"</b>
android:setupActivity="com.example.sampletvinput.SampleTvInputSetupActivity" /&gt;
</pre>
<p>Untuk informasi selengkapnya mengenai layanan file metadata, lihat
<a href="{@docRoot}training/tv/tif/tvinput.html#manifest">Mendeklarasikan Layanan Masukan TV Anda
di Manifes</a>.
</p>
<p>Atau, Anda bisa menunjukkan dukungan perekaman dalam kode Anda menggunakan
langkah-langkah ini:</p>
<ol>
<li>Dalam metode<code>TvInputService.onCreate()</code> Anda, buat objek
<li>Dalam metode <code>TvInputService.onCreate()</code> Anda, buat objek
<code>TvInputInfo</code> baru menggunakan kelas <code>TvInputInfo.Builder</code>.
</li>
<li>Saat membuat objek <code>TvInputInfo</code> baru, panggil
<code>setCanRecord(true)</code> sebelum memanggil <code>build()</code> untuk
menunjukkan bahwa layanan Anda mendukung perekaman.</li>
menunjukkan layanan Anda mendukung perekaman.</li>
<li>Daftarkan objek <code>TvInputInfo</code> Anda pada sistem dengan memanggil
<code>TvInputService.updateTvInputInfo()</code>.</li>
<code>TvInputManager.updateTvInputInfo()</code>.</li>
</ol>
<h2 id="recording">Merekam Sesi</h2>
<p>Setelah layanan input TV Anda didaftarkan bahwa ia mendukung fungsionalitas
<p>Setelah layanan masukan TV Anda mendaftar bahwa mendukung fungsionalitas
perekaman, sistem akan memanggil
<code>TvInputService.onCreateRecordingSession()</code> Anda bila perlu mengakses
<code>TvInputService.onCreateRecordingSession()</code> bila perlu untuk mengakses
implementasi perekaman aplikasi Anda. Implementasikan subkelas
<code>TvInputService.RecordingSession</code> Anda sendiri dan kembalikan
bila callback <code>onCreateRecordingSession()</code> dipicu.
@@ -84,9 +105,9 @@ lihat <a href="#sessions">Mengelola Sesi yang Direkam</a>.</p>
<h2 id="errors">Menangani Kesalahan Perekaman</h2>
<p>Jika terjadi kesalahan selama perekaman, rendering data yang terekam menjadi tidak bisa digunakan,
<p>Jika terjadi kesalahan selama perekaman, yang menghasilkan data terekam yang tidak bisa digunakan,
beri tahu sistem dengan memanggil <code>RecordingSession.notifyError()</code>.
Begitu pula, Anda bisa memanggil <code>notifyError()</code> setelah sesi perekaman dibuat
Begitu juga, Anda bisa memanggil <code>notifyError()</code> setelah sesi rekaman dibuat
agar sistem mengetahui bahwa aplikasi Anda tidak bisa lagi merekam sesi.</p>
<p>Jika terjadi kesalahan selama perekaman, namun Anda ingin menyediakan rekaman parsial
@@ -97,14 +118,14 @@ menggunakan sesi parsial.</p>
<h2 id="sessions">Mengelola Sesi yang Direkam</h2>
<p>Sistem menyimpan informasi untuk semua sesi yang direkam dari semua
aplikasi saluran yang mampu merekam dalam tabel penyedia konten <code>TvContract.RecordedPrograms</code>.
Informasi ini bisa diakses lewat URI konten
<code>RecordedPrograms.Uri</code>. Gunakan API konten penyedia untuk
membaca, menambah, dan menghapus entri dari tabel ini.</p>
aplikasi saluran yang mampu merekam dalam tabel penyedia materi <code>TvContract.RecordedPrograms</code>.
Informasi ini bisa diakses lewat URI materi
<code>RecordedPrograms.Uri</code>. Gunakan API penyedia materi untuk
membaca, menambahkan, dan menghapus entri dari tabel ini.</p>
<p>Untuk informasi selengkapnya tentang menangani data penyedia konten, lihat
<p>Untuk informasi selengkapnya tentang menangani data penyedia materi, lihat
<a href="{@docRoot}guide/topics/providers/content-provider-basics.html">
Dasar-Dasar Penyedia Konten</a>.</p>
Dasar-Dasar Penyedia Materi</a>.</p>
<h2 id="best">Praktik Terbaik</h2>

View File

@@ -0,0 +1,190 @@
page.title=Panduan Pengujian
page.image=images/cards/card-n-guide_2x.png
meta.tags="preview", "testing"
page.tags="preview", "developer preview"
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Dalam dokumen ini</h2>
<ol>
<li><a href="#runtime-permissions">Izin Pengujian</a></li>
<li><a href="#doze-standby">Menguji Istirahatkan dan Aplikasi Siaga</a></li>
<li><a href="#ids">Pencadangan Otomatis dan Identifier Perangkat</a></li>
</ol>
</div>
</div>
<p>
Android N memberi Anda kesempatan untuk memastikan aplikasi bekerja pada
platform versi berikutnya. Pratinjau ini berisi beberapa API dan perubahan perilaku yang bisa
memengaruhi aplikasi Anda, sebagaimana dijelaskan dalam <a href="{@docRoot}preview/api-overview.html">Ringkasan
API</a> dan <a href="{@docRoot}preview/behavior-changes.html">Perubahan Perilaku</a>. Dalam menguji
aplikasi dengan pratinjau, ada beberapa perubahan sistem spesifik yang harus Anda fokuskan untuk
memastikan pengguna mendapatkan pengalaman yang bagus.
</p>
<p>
Panduan ini menjelaskan apa dan bagaimana menguji fitur pratinjau dengan aplikasi Anda. Anda harus
mengutamakan pengujian fitur pratinjau spesifik ini, dikarenakan pengaruhnya yang besar pada
perilaku aplikasi Anda:
</p>
<ul>
<li><a href="#runtime-permissions">Izin</a>
</li>
<li><a href="#doze-standby">Istirahatkan dan Aplikasi Siaga</a>
</li>
<li><a href="#ids">Pencadangan Otomatis dan Identifier Perangkat</a></li>
</ul>
<p>
Untuk informasi selengkapnya tentang cara menyiapkan perangkat atau perangkat maya dengan citra sistem pratinjau
untuk pengujian, lihat <a href="{@docRoot}preview/setup-sdk.html">Menyiapkan
Android N SDK</a>.
</p>
<h2 id="runtime-permissions">Izin Pengujian</h2>
<p>
Model <a href="{@docRoot}preview/features/runtime-permissions.html">Izin</a> yang baru
mengubah cara alokasi izin untuk aplikasi Anda oleh pengguna. Sebagai ganti memberi semua
izin selama prosedur pemasangan, aplikasi Anda harus meminta izin kepada pengguna secara individual
pada waktu proses. Bagi pengguna, perilaku ini memberi kontrol yang lebih detail atas setiap aktivitas aplikasi, dan
juga konteks yang lebih untuk memahami sebab aplikasi meminta izin tertentu. Pengguna
bisa memberi atau mencabut izin yang diberikan pada suatu aplikasi secara individual kapan saja. Fitur
pratinjau ini kemungkinan besar memengaruhi perilaku aplikasi Anda dan mungkin menghambat fungsi beberapa
fitur aplikasi Anda, atau mengurangi kualitas kerjanya.
</p>
<p class="caution">
Perubahan ini memengaruhi semua aplikasi yang berjalan di platform baru, bahkan aplikasi yang tidak menargetkan versi
platform baru. Platform ini memberikan perilaku kompatibilitas terbatas untuk aplikasi lawas, namun Anda
harus mulai merencanakan migrasi aplikasi ke model izin baru sekarang juga, dengan tujuan
mempublikasikan versi terbaru aplikasi Anda saat peluncuran platform secara resmi.
</p>
<h3 id="permission-test-tips">Tip pengujian</h3>
<p>
Gunakan tip berikut untuk membantu Anda merencanakan dan menjalankan pengujian aplikasi dengan
perilaku izin yang baru.
</p>
<ul>
<li>Identifikasi izin aplikasi Anda saat ini dan jalur kode terkait.</li>
<li>Uji alur pengguna pada semua layanan dan data yang dilindungi izin.</li>
<li>Uji dengan berbagai kombinasi izin yang diberikan/dicabut.</li>
<li>Gunakan alat bantu {@code adb} untuk mengelola izin dari baris perintah:
<ul>
<li>Cantumkan daftar izin dan status berdasarkan kelompok:
<pre>adb shell pm list permissions -d -g</pre>
</li>
<li>Beri atau cabut satu atau beberapa izin menggunakan sintaks berikut:<br>
<pre>adb shell pm [grant|revoke] &lt;permission.name&gt; ...</pre>
</li>
</ul>
</li>
<li>Analisis aplikasi Anda untuk layanan yang menggunakan izin.</li>
</ul>
<h3 id="permission-test-strategy">Strategi pengujian</h3>
<p>
Perubahan izin memengaruhi struktur dan desain aplikasi Anda, begitu juga
pengalaman pengguna dan alur yang Anda sediakan untuk pengguna. Anda harus menilai penggunaan izin
aplikasi saat ini dan mulai merencanakan alur baru yang ingin ditawarkan. Rilis platform
resmi menyediakan perilaku kompatibilitas, namun Anda harus merencanakan pembaruan aplikasi dan tidak
bergantung pada perilaku ini.
</p>
<p>
Identifikasi izin yang sebenarnya diperlukan dan digunakan aplikasi Anda, kemudian temukan berbagai
jalur kode yang menggunakan layanan yang dilindungi izin. Anda bisa melakukan ini melalui kombinasi
pengujian pada platform baru dan analisis kode. Dalam pengujian, Anda harus fokus pada pemilihan
izin waktu proses dengan mengubah {@code targetSdkVersion} aplikasi ke versi pratinjau. Untuk
informasi selengkapnya, lihat <a href="{@docRoot}preview/setup-sdk.html#">Menyiapkan
Android N SDK</a>.
</p>
<p>
Uji dengan berbagai kombinasi izin yang dicabut dan ditambahkan, untuk menyoroti alur pengguna yang
bergantung pada izin. Jika dependensi tidak jelas atau logis, Anda harus mempertimbangkan
optimalisasi atau kompartementalisasi alur tersebut untuk mengeliminasi dependensi atau menjelaskan alasan
diperlukannya izin.
</p>
<p>
Untuk informasi selengkapnya tentang perilaku izin waktu proses, pengujian, dan praktik terbaik, lihat
halaman pratinjau <a href="{@docRoot}preview/features/runtime-permissions.html">Izin</a>
pengembang.
</p>
<h2 id="doze-standby">Menguji Istirahatkan dan Aplikasi Siaga</h2>
<p>
Fitur penghematan daya Istirahatkan dan Aplikasi Siaga membatasi jumlah pemrosesan latar belakang yang
bisa dikerjakan aplikasi Anda saat perangkat dalam keadaan diam atau saat aplikasi Anda sedang tidak fokus. Pembatasan
yang dapat diberlakukan oleh sistem pada aplikasi termasuk akses jaringan terbatas atau tidak ada,
tugas latar belakang yang ditangguhkan, Pemberitahuan yang ditangguhkan, permintaan membangunkan yang diabaikan, serta alarm. Untuk memastikan
aplikasi Anda berperilaku dengan benar pada optimalisasi penghematan daya ini, Anda harus menguji aplikasi dengan
menyimulasikan keadaan baterai yang sedang tinggal sedikit ini.
</p>
<h4 id="doze">Menguji aplikasi Anda dengan Istirahatkan</h4>
<p>Untuk menguji Istirahatkan dengan aplikasi Anda:</p>
<ol>
<li>Konfigurasikan perangkat keras atau perangkat maya dengan citra sistem Android N.</li>
<li>Hubungkan perangkat dengan mesin pengembangan dan pasang aplikasi Anda.</li>
<li>Jalankan aplikasi Anda dan biarkan aktif.</li>
<li>Simulasikan perangkat yang sedang masuk ke dalam mode Istirahatkan dengan menjalankan perintah berikut:
<pre>
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
$ adb shell dumpsys deviceidle -h
</pre>
</li>
<li>Amati perilaku aplikasi Anda saat perangkat diaktifkan kembali. Pastikan aplikasi
pulih dengan baik saat perangkat keluar dari Istirahatkan.</li>
</ol>
<h4 id="standby">Menguji aplikasi dengan Aplikasi Siaga</h4>
<p>Untuk menguji mode Aplikasi Siaga dengan aplikasi Anda:</p>
<ol>
<li>Konfigurasikan perangkat keras atau perangkat maya dengan citra sistem Android N.</li>
<li>Hubungkan perangkat dengan mesin pengembangan dan pasang aplikasi Anda.</li>
<li>Jalankan aplikasi Anda dan biarkan aktif.</li>
<li>Simulasikan aplikasi yang sedang masuk ke dalam mode siaga dengan menjalankan perintah berikut:
<pre>
$ adb shell am broadcast -a android.os.action.DISCHARGING
$ adb shell am set-idle &lt;packageName&gt; true
</pre>
</li>
<li>Simulasikan membangunkan aplikasi Anda menggunakan perintah berikut:
<pre>$ adb shell am set-idle &lt;packageName&gt; false</pre>
</li>
<li>Amati perilaku aplikasi Anda saat dibangunkan. Pastikan aplikasi pulih dengan baik
dari mode siaga. Secara khusus, Anda harus memeriksa apakah Pemberitahuan aplikasi dan pekerjaan latar belakang
tetap berjalan sebagaimana yang diharapkan.</li>
</ol>
<h2 id="ids">Auto Backup for Apps dan Identifier Perangkat Spesifik</h2>
<p>Jika aplikasi Anda mempertahankan identifier perangkat spesifik, seperti ID pendaftaran Google
Cloud Messaging, dalam penyimpanan internal,
pastikan Anda mengikuti praktik terbaik untuk mengecualikan lokasi
penyimpanan dari pencadangan otomatis, seperti dijelaskan dalam <a href="{@docRoot}preview/backup/index.html">Auto
Backup for Apps</a>. </p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Some files were not shown because too many files have changed in this diff Show More