Home | History | Annotate | Download | only in nougat
      1 page.title=Android N for Developers
      2 meta.tags="preview", "androidn"
      3 page.tags="preview", "developer preview"
      4 page.image=images/cards/card-n-apis_2x.png
      5 @jd:body
      6 
      7 
      8 
      9 
     10 <div id="tb-wrapper">
     11 <div id="tb">
     12   <h2>Funciones claves para desarrolladores</h2>
     13   <ol>
     14       <ul style="list-style-type:none;">
     15         <li><a href="#multi-window_support">Compatibilidad con ventanas mltiples</a></li>
     16         <li><a href="#notification_enhancements">Notificaciones</a></li>
     17         <li><a href="#jit_aot">Compilacin de JIT y AOT</a></li>
     18         <li><a href="#quick_path_to_app_install">Acceso rpido a la instalacin de aplicaciones</a></li>
     19         <li><a href="#doze_on_the_go">Descanso en movimiento</a></li>
     20         <li><a href="#background_optimizations">Optimizaciones en segundo plano</a></li>
     21         <li><a href="#data_saver">Ahorro de datos</a></li>
     22         <li><a href="#vulkan">API Vulkan</a></li>
     23         <li><a href="#tile_api">API para mosaicos de Quick Settings</a></li>
     24         <li><a href="#number-blocking">Bloqueo de nmeros</a></li>
     25         <li><a href="#call_screening">Filtracin de llamadas</a></li>
     26         <li><a href="#multi-locale_languages">Configuraciones regionales e idiomas</a></li>
     27         <li><a href="#emoji">Nuevos emojis</a></li>
     28         <li><a href="#icu4">API de ICU4J en Android</a></li>
     29         <li><a href="#gles_32">API de OpenGL ES 3.2</a></li>
     30         <li><a href="#android_tv_recording">Grabacin de Android TV</a></li>
     31         <li><a href="#android_for_work">Android for Work</a></li>
     32         <li><a href="#accessibility_enhancements">Accesibilidad</a></li>
     33         <li><a href="#direct_boot">Inicio directo</a></li>
     34         <li><a href="#key_attestation">Atestacin de claves</a></li>
     35         <li><a href="#network_security_config">Configuracin de seguridad de la red</a></li>
     36         <li><a href="#default_trusted_ca">CA de confianza predeterminada</a></li>
     37         <li><a href="#apk_signature_v2">Esquema de firma de APK v2</a></li>
     38         <li><a href="#scoped_directory_access">Acceso a directorios determinados</a></li>
     39         <li><a href="#keyboard_shortcuts_helper">Ayuda en los mtodos abreviados del teclado</a></li>
     40         <li><a href="#sustained_performance_api">API de rendimiento sostenido</a></li>
     41         <li><a href="#vr">Soporte de RV</a></li>
     42         <li><a href="#print_svc">Mejoras del servicio de impresin</a></li>
     43         <li><a href="#virtual_files">Archivos virtuales</a></li>
     44         <li><a href="#framemetrics_api">API FrameMetricsListener</a></li>
     45       </ol>
     46 </div>
     47 </div>
     48 
     49 
     50 
     51 <p>Android N an se encuentra en proceso activo de desarrollo, pero puedes probarlo
     52 ahora como parte de la N Developer Preview. En las secciones siguientes se destacan algunas de
     53 las nuevas funciones para desarrolladores. </p>
     54 
     55 <p>
     56   Asegrate de ver los <a href="{@docRoot}preview/behavior-changes.html">Cambios de comportamiento</a> para obtener informacin sobre
     57   reas en las cuales los cambios en las plataformas puedan tener efecto en tus aplicaciones, consultar las
     58   guas del desarrollador para conocer mejor las funciones claves y descargar la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> para obtener informacin sobre
     59   API nuevas.
     60 </p>
     61 
     62 <h2 id="multi-window_support">Compatibilidad con ventanas mltiples</h2>
     63 
     64 
     65 <p>En Android N, presentamos una nueva y muy solicitada funcin multitarea
     66 en la plataforma: la compatibilidad con ventanas mltiples. </p>
     67 
     68   <p>Los usuarios ahora pueden abrir dos aplicaciones al mismo tiempo en la pantalla. </p>
     69   <ul>
     70   <li>En telfonos y tabletas
     71 con Android N, los usuarios pueden ejecutar dos aplicaciones en paralelo
     72 una encima otra en el modo de pantalla dividida. Tambin tienen la posibilidad de modificar el tamao de las aplicaciones arrastrando
     73 la lnea divisoria que se encuentra entre ellas. </li>
     74 
     75 <li>En los dispositivos con Android TV, las aplicaciones pueden habilitar en forma automtica el <a href="{@docRoot}preview/features/picture-in-picture.html">modo
     76 "picture-in-picture"</a>. Esto les permite continuar mostrando contenido mientras el usuario explora otras
     77 aplicaciones o interacta con ellas.</li>
     78   </ul>
     79 
     80 <div class="col-4of10">
     81 <img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
     82 <p class="img-caption">
     83   <strong>Figura 1:</strong> Aplicaciones en ejecucin en el modo de pantalla dividida.
     84 </p>
     85 
     86   </div>
     87 
     88 <p>En las tabletas, en particular, y en otros dispositivos de pantallas ms grandes, la compatibilidad con ventanas mltiples
     89 ofrece nuevas maneras de atraer a los usuarios Puedes, habilitar acciones de arrastrar y soltar en
     90 tu aplicacin para que los usuarios arrastren contenido hacia tu aplicacin &mdash;o desde ella; es una excelente
     91 manera de mejorar su experiencia. </p>
     92 
     93 <p>Es sencillo agregar compatibilidad con ventanas mltiples a tu aplicacin y configurar la manera en que
     94 administra la visualizacin de estas ventanas. Por ejemplo, puedes especificar las dimensiones mnimas
     95 permitidas de tu actividad y evitar as que los usuarios den a la actividad un
     96 tamao inferior. Tambin puedes inhabilitar la visualizacin de ventanas mltiples para tu aplicacin, lo que
     97   garantiza que el sistema solo muestre tu aplicacin en modo de pantalla completa.</p>
     98 
     99 <p>
    100   Para obtener ms informacin, consulta la documentacin <a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con ventanas mltiples</a>
    101   para desarrolladores.
    102 </p>
    103 
    104 <h2 id="notification_enhancements">Mejoras en las notificaciones</h2>
    105 
    106 <p>En Android N, hemos rediseado las notificaciones para facilitar y agilizar su
    107 uso. Entre los cambios, se incluyen los siguientes:</p>
    108 
    109 <ul>
    110   <li>
    111     <strong>Actualizaciones de plantillas</strong>: estamos actualizando las plantillas de notificaciones para
    112     poner nuevo nfasis en la imagen de hroe y el avatar. Los desarrolladores podrn
    113     aprovechar las nuevas plantillas con una cantidad mnima de ajustes en el cdigo.
    114   </li>
    115 
    116   <li>
    117     <strong>Personalizacin del estilo de mensaje</strong>: puedes personalizar ms etiquetas
    118     de la interfaz de usuario asociadas con tus notificaciones utilizando la clase
    119     <code>MessageStyle</code>. Puedes configurar el mensaje, el ttulo de
    120     la conversacin y la vista del contenido.
    121   </li>
    122 
    123   <li>
    124     <strong>Notificaciones agrupadas</strong>: el sistema puede agrupar mensajes
    125     (por ejemplo, por tema) y mostrar el grupo. Un usuario puede
    126     aplicar acciones, como Dismiss o Archive, en ellos. Si
    127     has implementado notificaciones para Android Wear, ya estars familiarizado con
    128     este modelo.
    129   </li>
    130 
    131   <li>
    132     <strong>Respuesta directa</strong>: en el caso de las aplicaciones de comunicacin en tiempo real, el
    133     sistema de Android admite respuestas en lnea para que los usuarios puedan responder rpidamente a
    134     un mensaje SMS o de texto directamente dentro en la interfaz de notificaciones.
    135   </li>
    136 
    137   <li>
    138     <strong>Vistas personalizadas</strong>: dos API nuevas te permiten aprovechar las decoraciones
    139     del sistema, como los encabezados y las acciones de notificaciones, al usar vistas
    140     personalizadas en las notificaciones.
    141   </li>
    142 </ul>
    143 
    144 <div class="col-4of12">
    145   <img src="{@docRoot}images/android-7.0/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
    146 </div>
    147 
    148 <div class="col-4of12">
    149   <img src="{@docRoot}images/android-7.0/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
    150 </div>
    151 
    152 <div class="col-4of12">
    153   <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
    154 </div>
    155 
    156 
    157 <p class="img-caption">
    158   <strong>Figura 2:</strong> Notificaciones agrupadas y respuesta directa.
    159 </p>
    160 
    161 <p>Para obtener informacin acerca de cmo implementar las nuevas funciones, consulta la gua
    162   <a href="{@docRoot}preview/features/notification-updates.html">Notificaciones</a>.
    163 </p>
    164 
    165 
    166 
    167 <h2 id="jit_aot">Compilacin de JIT y AOT guiada por perfiles</h2>
    168 
    169 <p>En Android N, agregamos un compilador Just in Time (JIT) con generacin de perfiles de cdigo para
    170 ART, lo cual te permite mejorar constantemente el rendimiento de las aplicaciones con Android mientras se
    171 ejecutan. El compilador JIT complementa el compilador Ahead of Time (AOT) actual de ART
    172 y permite mejorar el rendimiento del tiempo de ejecucin, ahorrar espacio de almacenamiento y acelerar las actualizaciones
    173 de aplicaciones y del sistema.</p>
    174 
    175 <p>La compilacin guiada por perfiles permite que ART maneje la compilacin de AOT y JIT de cada aplicacin
    176 conforme a su uso real, adems de las condiciones en el dispositivo. Por
    177 ejemplo, ART conserva un perfil de los mtodos directos de cada aplicacin, y puede compilar previamente
    178 y almacenar en cach dichos mtodos para obtener el mejor rendimiento. A su vez, deja otras partes de la aplicacin
    179 sin compilar hasta que se usan realmente.</p>
    180 
    181 <p>Adems de mejorar el rendimiento de partes claves de la aplicacin, la compilacin guiada por
    182 perfiles permite reducir la superficie de memora RAM total de una aplicacin, incluidos los archivos binarios
    183 asociados. Esta funcin tiene particular importancia en los dispositivos de memoria reducida.</p>
    184 
    185 <p>ART administra la compilacin guiada por perfiles de una manera que minimiza el impacto en la batera
    186 del dispositivo. Realiza compilaciones previas nicamente cuando el dispositivo se encuentra inactivo y
    187 en proceso de carga, lo cual permite ahorrar tiempo y batera haciendo el trabajo de manera anticipada.</p>
    188 
    189 <h2 id="quick_path_to_app_install">Acceso rpido a la instalacin de aplicaciones</h2>
    190 
    191 <p>Uno de los beneficios ms palpables del compilador JIT de ART es la velocidad de instalacin de las
    192 aplicaciones y de actualizacin del sistema. Incluso las aplicaciones de mayor tamao, en las que se necesitaban varios minutos para la
    193 optimizacin y la instalacin en Android 6.0, ahora pueden instalarse en cuestin de
    194 segundos. Las actualizaciones del sistema tambin son ms rpidas, debido a que ya no hay un paso de optimizacin. </p>
    195 
    196 <h2 id="doze_on_the_go">Descanso en movimiento...</h2>
    197 
    198 <p>En Android 6.0, se present Descanso, un modo de sistema que ahorra batera aplazando
    199 actividades de CPU y red de las aplicaciones cuando el dispositivo se encuentra inactivo; por ejemplo, al hallarse
    200 sobre una mesa o en un cajn. </p>
    201 
    202 <p>Ahora, en Android N, el modo Descanso ofrece el beneficio adicional de ahorrar batera en movimiento.
    203 Siempre que la pantalla permanezca apagada durante un tiempo y el dispositivo est desenchufado,
    204 Descanso aplicar un subconjunto de las restricciones de CPU y red conocidas a las aplicaciones.
    205 Esto significa que los usuarios pueden ahorrar batera aun cuando lleven sus dispositivos
    206 en los bolsillos.</p>
    207 
    208 
    209 <img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
    210 <p class="img-caption">
    211   <strong>Figura 3:</strong> Descanso ahora aplica
    212   restricciones para prolongar la duracin de la batera aun cuando el dispositivo no est quieto.
    213 </p>
    214 
    215 
    216 <p>Poco tiempo despus de que la pantalla se apaga, cuando el dispositivo no est enchufado, Descanso
    217 restringe el acceso a la red y aplaza tareas y sincronizaciones. Durante perodos de mantenimiento
    218 breves, las aplicaciones tienen acceso a la red y se ejecutan todas las
    219 tareas y sincronizaciones aplazadas. Ten en cuenta que, cuando se activa la pantalla o se enchufa el dispositivo, se
    220 desactiva el modo Descanso.</p>
    221 
    222 <p>Cuando el dispositivo vuelve a estar quieto, desenchufado y con la pantalla apagada durante un
    223 tiempo, Descanso aplica todas las restricciones de CPU y redes en {@link
    224 android.os.PowerManager.WakeLock}, alarmas de {@link android.app.AlarmManager} y anlisis de
    225 GPS o Wi-Fi.</p>
    226 
    227 <p>Las prcticas recomendadas para adaptar tu aplicacin a Descanso no varan si el
    228 dispositivo estar en movimiento o no. Por lo tanto, si ya actualizaste tu aplicacin para que administre
    229 Descanso correctamente, no tienes nada ms que hacer. Si no lo hiciste, comienza a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptarla
    230 a Descanso</a> ahora.</p>
    231 
    232 <h2 id="background_optimizations">Project Svelte: Optimizaciones en segundo plano</h2>
    233 
    234 <p>Project Svelte representa un esfuerzo constante por minimizar el uso de memoria RAM a travs del sistema y de las aplicaciones
    235 en los diferentes dispositivos Android del ecosistema. En Android N, el objetivo principal de Project
    236 Svelte es optimizar la manera en que las aplicaciones se ejecutan en segundo plano. </p>
    237 
    238 <p>El procesamiento en segundo plano es una parte esencial de la mayora de las aplicaciones. Cuando se maneja en forma adecuada, puede
    239 hacer que la experiencia de tu usuario sea increble &mdash;(inmediata, rpida y pertinente al contexto).
    240 Cuando no se maneja de tal manera, el procesamiento en segundo plano puede suponer un consumo innecesario de memoria RAM (y
    241 batera), y afectar el rendimiento del sistema para otras aplicaciones. </p>
    242 
    243 <p>A partir de Android 5.0, {@link android.app.job.JobScheduler} ha sido el
    244 mtodo preferido para ejecutar tareas en segundo plano con resultados positivos
    245 para los usuarios. Las aplicaciones pueden programar tareas y, al mismo tiempo, permitir que el sistema se optimice segn las condiciones de
    246 memoria, energa y conectividad. JobScheduler ofrece control y
    247 simpleza, y nuestro deseo es que todas las aplicaciones lo usen. </p>
    248 
    249 <p>
    250   Otra buena opcin es <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
    251   <code>GCMNetworkManager</code></a>, que forma parte de Google Play Services y
    252   ofrece una capacidad similar de programacin de tareas con compatibilidad en versiones heredadas de
    253   Android.
    254 </p>
    255 
    256 <p>Continuaremos ampliando <code>JobScheduler</code> y
    257 <code>GCMNetworkManager</code> para que se apliquen a ms
    258 casos de uso de tus aplicaciones; por ejemplo, en Android N ahora puedes programar procesos
    259 en segundo plano segn los cambios de los proveedores de contenido. Al mismo tiempo, comenzaremos a
    260 dejar de usar algunos de los patrones anteriores que pueden reducir el rendimiento del sistema,
    261 en especial, en dispositivos de memoria reducida.</p>
    262 
    263 <p>En Android N, eliminaremos tres transmisiones implcitas que se usan normalmente &mdash;(
    264  {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
    265   android.hardware.Camera#ACTION_NEW_PICTURE} y {@link
    266   android.hardware.Camera#ACTION_NEW_VIDEO}), ya que pueden activar los
    267 procesos en segundo plano de varias aplicaciones al mismo tiempo, y as exigir la memoria y la batera. Si
    268 tu aplicacin recibe estas transmisiones, aprovecha la N Developer Preview y
    269   realiza la migracin a <code>JobScheduler</code> y las API relacionadas, como alternativa. </p>
    270 
    271 <p>
    272   Para obtener informacin detallada, consulta la documentacin <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
    273   en segundo plano</a>.
    274 </p>
    275 
    276 
    277 <h2 id="data_saver">Ahorro de datos</h2>
    278 
    279 <div class="col-5of12" style="margin-right:1.5em;">
    280 <img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
    281 
    282 <p class="img-caption" style="padding-right:2em;">
    283   <strong>Figura 4:</strong> Ahorro de datos en la configuracin.
    284 </p>
    285   </div>
    286 
    287 <p>Durante la vida til de un dispositivo mvil, el costo de un plan de datos mviles puede
    288 superar fcilmente el costo del propio dispositivo. Para muchos usuarios, los datos mviles son un
    289 recurso costoso que desean conservar. </p>
    290 
    291 <p>En Android N, se presenta el modo de ahorro de datos, un nuevo servicio del sistema que permite reducir
    292 el uso de datos mviles de las aplicaciones, ya sea con servicio de itinerancia, cerca del final del ciclo de facturacin
    293 o con un paquete de datos prepagos. El ahorro de datos permite que los usuarios controlen la manera en que las aplicaciones
    294 usan los datos mviles y que los desarrolladores brinden un servicio ms eficaz cuando el ahorro
    295 de datos se encuentra activo. </p>
    296 
    297 <p>Cuando un usuario habilita el ahorro de datos en <strong>Settings</strong> y el dispositivo est
    298 conectado a una red o, el sistema bloquea el uso de datos en segundo plano y ordena a las aplicaciones
    299 usar menos datos en primer plano siempre que sea posible (por ejemplo, limitando
    300 la tasa de bits para la transmisin, reduciendo la calidad de la imagen y aplazando el valor optimista de almacenamiento previo en cach,
    301 entre otras posibilidades). Los usuarios pueden incluir aplicaciones especficas en la lista blanca para
    302 permitir el uso de datos medidos en segundo plano, incluso cuando est activado el ahorro de datos.</p>
    303 
    304 <p>Android N extiende {@link android.net.ConnectivityManager} para que las aplicaciones
    305 tengan una manera de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar las
    306 preferencias de ahorro de datos del usuario</a> y<a href="{@docRoot}preview/features/data-saver.html#monitor-changes"> monitorear
    307 cambios en estas</a>. Todas las aplicaciones deben verificar si el usuario habilit el ahorro
    308 de datos e intentar limitar el uso de datos en primer y segundo plano.</p>
    309 
    310 
    311 <h2 id="vulkan">API Vulkan</h2>
    312 
    313 <p>
    314   Android N integra <a href="http://www.khronos.org/vulkan" class="external-link">Vulkan</a>, una nueva API de visualizacin 3D, en la plataforma. Al igual que
    315   <a href="https://www.khronos.org/opengles/" class="external-link">OpenGL
    316   ES</a>, Vulkan es un estndar abierto para grficos y visualizacin 3D, cuyo mantenimiento est a cargo de
    317   Khronos Group.
    318 </p>
    319 
    320 <p>
    321   Vulkan se dise desde el principio para minimizar la sobrecarga de CPU en el controlador,
    322  y permite que tu aplicacin controle el funcionamiento de la unidad de procesamiento de grficos ms directamente. Tambin
    323   hace posible contar con un mejor trabajo en paralelo, ya que permite que varios subprocesos diversos realicen
    324   trabajos, como la construccin del bfer de comandos, a la vez.
    325 </p>
    326 
    327 <p>
    328   Las herramientas y las bibliotecas de desarrollo de Vulkan son parte del NDK de Android. Esto
    329 incluye lo siguiente:
    330 </p>
    331 
    332 <ul>
    333   <li>Encabezados
    334   </li>
    335 
    336   <li>Capas de validacin (bibliotecas de depuracin)
    337   </li>
    338 
    339   <li>Compilador SPIR-V
    340   </li>
    341 
    342   <li>Biblioteca de compilacin de tiempo de ejecucin de SPIR-V
    343   </li>
    344 </ul>
    345 
    346 <p>
    347   Vulkan solo est disponible en las aplicaciones en dispositivos con hardware compatible con Vulkan,
    348   como Nexus 5X, Nexus 6P y Nexus Player. Estamos trabajando estrechamente con nuestros
    349   socios para que Vulkan se pueda utilizar en ms dispositivos lo ms pronto posible.
    350 </p>
    351 
    352 <p>
    353   Para obtener ms informacin, consulta la <a href="{@docRoot}ndk/guides/graphics/index.html">documentacin de la API</a>.
    354 </p>
    355 
    356 <h2 id="tile_api">API para mosaicos de Quick Settings</h2>
    357 
    358 
    359 <div style="float:right;max-width:320px">
    360 <img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
    361 
    362 <p class="img-caption" style="padding-left:2em;">
    363   <strong>Figura 5:</strong> Mosaicos de Quick Settings del panel de notificaciones.
    364 </p>
    365 
    366 
    367   </div><p>Quick Settings es una manera popular y simple de exhibir configuraciones y acciones claves
    368 directamente desde el panel de notificaciones. En Android N, expandimos el alcance de
    369 Quick Settings para que sea todava ms til y prctico. </p>
    370 
    371 <p>Agregamos ms espacio para mosaicos adicionales de Quick Settings, a los cuales los usuarios pueden
    372 acceder desde un rea de visualizacin paginada deslizando el dedo hacia la izquierda o la derecha. Tambin permitimos
    373 que los usuarios determinen los mosaicos de Quick Settings que aparecern y los puntos en los cuales
    374 se mostrarn; pueden agregar o mover mosaicos con solo arrastrarlos y soltarlos. </p>
    375 
    376 <p>Para los desarrolladores, en Android N tambin se agrega una nueva API que les permite definir mosaicos de
    377   Quick Settings propios para facilitar, dentro de sus aplicaciones, el acceso a controles y acciones claves por parte de los usuarios.</p>
    378 
    379 <p>
    380   Los mosaicos de Quick Settings se reservan para controles o acciones que se necesiten
    381   con urgencia o se usen con frecuencia; no deben emplearse como accesos directos para
    382   iniciar una aplicacin.
    383 </p>
    384 
    385 <p>
    386   Una vez que hayas definido tus mosaicos, puedes dejarlos a disposicin de los usuarios, quienes tendrn la posibilidad de agregarlos
    387   a Quick Settings con solo arrastrarlos y soltarlos.
    388 </p>
    389 
    390 <p>
    391   Para obtener informacin sobre la creacin de un mosaico de aplicacin, consulta la documentacin de
    392   <code>android.service.quicksettings.Tile</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
    393 </p>
    394 
    395 
    396 
    397 <h2 id="number-blocking">Bloqueo de nmeros</h2>
    398 
    399 <p>Android N ahora admite el bloqueo de nmeros en la plataforma y proporciona una API
    400 de framework para que los proveedores de servicios dispongan de una lista con nmeros bloqueados. La
    401 aplicacin de SMS predeterminada, la aplicacin telefnica predeterminada y las aplicaciones de proveedores tienen capacidad de lectura y
    402 escritura en la lista de nmeros bloqueados. Otras aplicaciones no pueden acceder a la lista.</p>
    403 
    404 <p>Al hacer que el bloqueo de nmeros sea una funcin estndar de la plataforma, Android permite que las
    405 aplicaciones admitan de manera uniforme el bloqueo de nmeros en una amplia variedad de
    406 dispositivos. Entre los dems beneficios que pueden aprovechar las aplicaciones, se encuentran los siguientes:</p>
    407 
    408 <ul>
    409   <li> Los nmeros bloqueados en las llamadas tambin se bloquean en los mensajes de texto.
    410   <li> Los nmeros bloqueados pueden perdurar tras procesos de restablecimiento y cambios de dispositivos con la funcin Backup &amp;
    411 Restore.
    412   <li> Varias aplicaciones pueden usar la misma lista de nmeros bloqueados.
    413 </ul>
    414 
    415 <p>De manera adicional, la integracin de aplicaciones de proveedores a travs de Android permite que estos
    416 lean la lista de nmeros bloqueados del dispositivo y realicen un bloqueo de servicio
    417 para el usuario, a fin de evitar que el usuario reciba llamadas o mensajes de texto no deseados
    418 por cualquier medio, como terminales VOIP o telfonos con transferencia de llamadas.</p>
    419 
    420 <p>
    421   Para obtener ms informacin, consulta <code>android.provider.BlockedNumberContract</code>
    422   en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API
    423   </a>descargable.
    424 </p>
    425 
    426 <h2 id="call_screening">Filtracin de llamadas</h2>
    427 
    428 <p>
    429   Android N permite que la aplicacin predeterminada de un telfono filtre las llamadas entrantes. La aplicacin
    430   hace esto a travs del nuevo <code>CallScreeningService</code>,
    431   que le permite realizar varias acciones segn la clase
    432   {@link android.telecom.Call.Details Call.Details} de la llamada entrante. Algunos ejemplos:
    433 </p>
    434 
    435 <ul>
    436   <li> rechazar la llamada entrante;
    437   <li> no permitir el ingreso de la llamada en el registro de llamadas;
    438   <li> no mostrar al usuario una notificacin de la llamada.
    439 </ul>
    440 
    441 <p>
    442   Para obtener ms informacin, consulta <code>android.telecom.CallScreeningService</code>
    443   en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API
    444   </a>descargable.
    445 </p>
    446 
    447 
    448 <h2 id="multi-locale_languages">Compatibilidad con varias configuraciones regionales y ms idiomas</h2>
    449 
    450 
    451 <p>Android N permite a los usuarios seleccionar <strong>varias configuraciones regionales</strong> en Settings,
    452 para brindar una mejor compatibilidad con casos de uso de dos idiomas. Las aplicaciones pueden usar
    453 una nueva API para obtener las configuraciones regionales seleccionadas del usuario y luego ofrecer experiencias ms sofisticadas
    454 para usuarios que usen varias configuraciones regionales; por ejemplo, pueden mostrar resultados de bsqueda en
    455 varios idiomas y no ofrecer traducciones de pginas web con idiomas que el
    456 usuario conozca.</p>
    457 
    458 <p>Adems de la compatibilidad con varias configuraciones regionales, en Android N tambin se ampla la variedad de idiomas
    459 disponibles para los usuarios. Se ofrecen ms de 25 variantes, cada una de ellas para idiomas de uso
    460 comn, como el ingls, el espaol, el francs y el rabe. Tambin se agrega compatibilidad
    461 parcial con ms de 100 idiomas nuevos.</p>
    462 
    463 <p>Las aplicaciones pueden obtener la lista de configuraciones regionales establecida por el usuario llamando a
    464 <code>LocaleList.GetDefault()</code>.  A fin de admitir la cantidad ampliada de configuraciones regionales, en Android N, se
    465 modificar la forma de resolver recursos. Asegrate de controlar que tus aplicaciones
    466 funcionen de la manera esperada con la nueva lgica de resolucin de recursos.</p>
    467 
    468 <p>Para obtener informacin sobre el nuevo comportamiento de resolucin de recursos y las prcticas recomendadas que
    469 debes aplicar, consulta <a href="{@docRoot}preview/features/multilingual-support.html">Compatibilidad con varios idiomas</a>.</p>
    470 
    471 
    472 <h2 id="emoji">Nuevos emojis</h2>
    473 
    474 <p>
    475   Android N presenta ms emojis y funciones relacionadas con estos, como
    476   emojis con diferentes tonos de piel y compatibilidad con selectores de
    477   variacin. Si tu aplicacin admite emojis,
    478   sigue las pautas a continuacin para aprovechar estas funciones relacionadas con emojis.
    479 </p>
    480 
    481 <ul>
    482   <li>
    483     <strong>Comprueba que el dispositivo contenga el emoji antes de insertarlo.</strong>
    484     Para corroborar qu emojis tiene la fuente del
    485     sistema, usa el mtodo {@link android.graphics.Paint#hasGlyph(String)}.
    486   </li>
    487   <li>
    488     <strong>Comprueba que el emoji admita los selectores de variacin.</strong>
    489     Los selectores de variacin te permiten
    490     presentar determinados emojis en color o en blanco y negro.
    491     En los dispositivos mviles, las aplicaciones deben representar los emojis en color, en lugar de hacerlo en blanco y negro. Sin embargo,
    492     si tu aplicacin muestra los emojis alineados con el texto, debe usar la variacin de blanco y negro.
    493     A fin de determinar si un emoji tiene una variacin, usa el selector de variacin.
    494     Para conocer la lista completa de caracteres con variaciones, consulta la seccin de
    495     <em>secuencias de variacin de emojis</em> de la
    496     <a class="external-link" href="http://www.unicode.org/Public/9.0.0/ucd/StandardizedVariants-9.0.0d1.txt">
    497       documentacin de Unicode sobre variaciones</a>.
    498   </li>
    499   <li>
    500     <strong>Comprueba que el emoji admita tonos de piel.</strong> Android N permite que los usuarios modifiquen el
    501     tono de piel presentado de los emojis segn su preferencia. Las aplicaciones de teclado deben brindar indicaciones
    502     visuales para los emojis que tienen mltiples tonos de piel y permitir que los usuarios
    503     seleccionen el tono que prefieran. Para determinar qu emojis del sistema tienen
    504     modificadores del tono de piel, usa el mtodo {@link android.graphics.Paint#hasGlyph(String)}.
    505  Puedes determinar qu emojis usan tonos de piel leyendo la
    506     <a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">
    507      documentacin de Unicode</a>.
    508   </li>
    509 </ul>
    510 
    511 
    512 <h2 id="icu4">API de ICU4J en Android</h2>
    513 
    514 <p>
    515   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
    516   el paquete <code>android.icu</code>. La migracin es sencilla y en mayor medida implica
    517   simplemente un cambio del espacio de nombres <code>com.java.icu</code> a
    518   <code>android.icu</code>. Si ya usas el paquete ICU4J en tus
    519   aplicaciones, el cambio a las API <code>android.icu</code> en el framework de Android
    520   puede reducir notablemente el tamao del APK.
    521 </p>
    522 
    523 <p>
    524   Para obtener ms informacin sobre las API de ICU4J de Android, consulta <a href="{@docRoot}preview/features/icu4j-framework.html">Compatibilidad con ICU4J</a>.
    525 </p>
    526 
    527 
    528 
    529 <h2 id="gles_32">API&trade; de OpenGL ES 3.2</h2>
    530 
    531 <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>
    532 
    533 <ul>
    534   <li> todas las extensiones del <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">
    535 paquete de extensiones de Android</a></a> (AEP), a excepcin de <code>EXT_texture_sRGB_decode</code>;
    536   <li> bferes de fotogramas de punto flotante para HDR y sombreado aplazado;
    537   <li> llamadas a draw a travs de BaseVertex para mejorar el procesamiento por lotes y la transmisin;
    538   <li> slido control de acceso a bfer para reducir la sobrecarga de WebGL.
    539 </ul>
    540 
    541 <p>En Android N, la API de framework para OpenGL ES 3.2 se proporciona con la clase
    542 <code>GLES32</code>. Al usar OpenGL ES 3.2, asegrate de declarar el
    543 requisito en tu archivo de manifiesto, con la etiqueta <code>&lt;uses-feature&gt;</code> y el
    544 atributo <code>android:glEsVersion</code>. </p>
    545 
    546 <p>Para obtener informacin sobre el uso de OpenGL ES, incluida la manera de comprobar la
    547 versin de OpenGL ES que admite el dispositivo durante el tiempo de ejecucin, consulta la<a href="{@docRoot}guide/topics/graphics/opengl.html"> gua de la API OpenGL ES</a>.</p>
    548 
    549 
    550 <h2 id="android_tv_recording">Grabacin de Android TV</h2>
    551 
    552 <p>En Android N, se agrega la capacidad de grabar y reproducir contenido de servicios
    553 de entrada de Android TV a travs de las nuevas API de grabacin.  Aprovechando las mejoras existentes de las API time shifting
    554 , los servicios de entrada de TV pueden controlar los datos de canales que pueden grabarse y la manera
    555 en que se guardan las sesiones grabadas, y administrar la interaccin del usuario con el contenido grabado. </p>
    556 
    557 <p>Para obtener ms informacin, consulta <a href="{@docRoot}preview/features/tv-recording-api.html">API de grabacin de Android TV</a>.</p>
    558 
    559 
    560 <h2 id="android_for_work">Android for Work</h2>
    561 
    562 <p>Android for Work suma muchas funciones y API nuevas para dispositivos con Android N.
    563 A continuacin, se muestran algunos aspectos destacados. Para ver la lista completa de cambios, consulta
    564 <a href="{@docRoot}preview/features/afw.html">Actualizaciones de Android for Work</a>.</p>
    565 
    566 <h3 id="work_profile_security_challenge">Comprobacin de seguridad para perfiles de trabajo </h3>
    567 
    568 <p>
    569   Los propietarios de perfiles orientados al SDK de Android N
    570   pueden especificar una comprobacin de seguridad independiente para las aplicaciones que se ejecutan en
    571   el perfil de trabajo. La comprobacin para perfiles de trabajo se muestra cuando un usuario intenta abrir
    572   aplicaciones de trabajo. Cuando la comprobacin de seguridad es exitosa, se desbloquea el
    573   perfil de trabajo y se descifra si es necesario. Para quienes posean perfiles,
    574   <code>ACTION_SET_NEW_PASSWORD</code> solicita al usuario establecer una comprobacin de
    575   trabajo y <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> le solicita
    576   establecer un bloqueo de dispositivo.
    577 </p>
    578 
    579 <p>
    580   Quienes posean perfiles pueden establecer polticas de contraseas diferentes para la comprobacin de seguridad de trabajo
    581   (por ejemplo, la extensin que debe tener el PIN o la posibilidad de usar una huella digital
    582   para desbloquear el perfil) usando <code>setPasswordQuality()</code>,
    583   <code>setPasswordMinimumLength()</code> y mtodos relacionados. Tambin
    584   pueden establecer el bloqueo del dispositivo usando la instancia de <code>DevicePolicyManager</code>
    585   devuelta por el nuevo mtodo <code>getParentProfileInstance()</code>.
    586   Adems, tienen la posibilidad de personalizar la pantalla de credenciales de la
    587   comprobacin de trabajo usando los nuevos mtodos <code>setOrganizationColor()</code> y
    588   <code>setOrganizationName()</code>.
    589 </p>
    590 <h3 id="turn_off_work">Desactivacin del modo de trabajo </h3>
    591 
    592 <p>En dispositivos con perfil de trabajo, los usuarios pueden alternar el modo de trabajo. Cuando este ltimo est
    593 inactivo, el usuario administrado queda deshabilitado temporalmente, con lo cual se desactivan las aplicaciones de perfiles
    594 de trabajo, la sincronizacin en segundo plano y las notificaciones. Esto incluye la aplicacin del propietario del
    595 perfil. Cuando el modo de trabajo est inactivo, en el sistema se muestra un cono
    596 de estado persistente para recordar al usuario que no puede iniciar aplicaciones de trabajo. El launcher
    597 indica que no es posible acceder a aplicaciones ni widgets de trabajo. </p>
    598 
    599 <h3 id="always_on_vpn">Always on VPN </h3>
    600 
    601 <p>Los propietarios de dispositivos y perfiles pueden asegurarse de que las aplicaciones de trabajo siempre se conecten
    602 a travs de una VPN especificada. El sistema inicia dicha VPN en forma automtica despus del
    603 inicio del dispositivo.</p>
    604 
    605 <p>
    606   Los nuevos mtodos de <code>DevicePolicyManager</code> son
    607   <code>setAlwaysOnVpnPackage()</code> y
    608   <code>getAlwaysOnVpnPackage()</code>.
    609 </p>
    610 
    611 <p>Debido a que los servicios de VPN pueden enlazarse directamente a travs del sistema sin interaccin con
    612 aplicaciones, los clientes de VPN deben administrar nuevos puntos de entrada para Always on VPN. Al igual que
    613 antes, los servicios se indican al sistema con una
    614 clase <code>android.net.VpnService</code> de accin de coincidencia de filtro de intents. </p>
    615 
    616 <p>
    617   Los usuarios tambin pueden establecer clientes Always on VPN que implementen mtodos
    618   <code>VPNService</code> en el usuario principal con
    619   <strong>Settings &gt; More &gt; Vpn</strong>.
    620 </p>
    621 
    622 <h3 id="custom_provisioning">Aprovisionamiento personalizado</h3>
    623 
    624 <p>
    625   En una aplicacin, se pueden personalizar los flujos de aprovisionamiento
    626  del propietario del perfil y del dispositivo con logos y colores corporativos.
    627   <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code> personaliza el
    628   color del flujo. <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
    629   personaliza el flujo con un logotipo corporativo.
    630 </p>
    631 
    632 <h2 id="accessibility_enhancements">Mejoras de accesibilidad</h2>
    633 
    634 <p>Android N ahora ofrece Vision Settings directamente en la pantalla de bienvenida para la configuracin de
    635 dispositivos nuevos. Esto permite a los usuarios descubrir y configurar de manera mucho ms sencilla
    636 funciones de accesibilidad en sus dispositivos, como el gesto de ampliacin, el tamao
    637 de fuente, el tamao de pantalla y TalkBack. </p>
    638 
    639 <p>Al tener estas funciones de accesibilidad una disposicin ms prominente, es ms probable
    640 que tus usuarios prueben tu aplicacin con ellas habilitadas. Asegrate de probar tus aplicaciones
    641 anticipadamente con esta configuracin habilitada. Puedes habilitarla en Settings &gt;
    642 Accessibility.</p>
    643 
    644 <p>Adems, los servicios de accesibilidad de Android N ahora pueden asistir a los usuarios con discapacidades
    645 motrices con el uso de la pantalla. La nueva API permite crear servicios con
    646 funciones como el seguimiento de rostros u ojos y la exploracin por puntos, entre otros, para satisfacer
    647 las necesidades de estos usuarios.</p>
    648 
    649 <p>Para obtener ms informacin, consulta <code>android.accessibilityservice.GestureDescription</code>
    650   en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.</p>
    651 
    652 
    653 <h2 id="direct_boot">Inicio directo</h2>
    654 
    655 <p>El inicio directo optimiza los tiempos de inicio del dispositivo y permite una funcionalidad
    656 limitada de las aplicaciones aun despus de un reinicio inesperado.
    657 Por ejemplo, si un dispositivo encriptado se reinicia mientras el usuario duerme,
    658 este ltimo puede continuar recibiendo en forma normal notificaciones de alarmas, llamadas entrantes y mensajes
    659 registrados. Esto tambin significa que los servicios de accesibilidad tambin pueden estar
    660   disponibles de inmediato despus de un reinicio.</p>
    661 
    662 <p>El inicio directo aprovecha la encriptacin basada en archivos de Android N,
    663 a fin de habilitar polticas de encriptacin especficas para datos del sistema y de aplicaciones.
    664 El sistema usa un encriptado por el dispositivo para datos de sistema seleccionados y datos de aplicaciones
    665 explcitamente registrados. De forma predeterminada, se usa un depsito encriptado con credenciales para los
    666   datos de sistema, los datos de usuario, las aplicaciones y los datos de aplicaciones restantes. </p>
    667 
    668 <p>Durante el inicio, el sistema se carga en un modo restringido con acceso nicamente
    669 a datos encriptados por el dispositivo y sin acceso general a aplicaciones o datos.
    670 Si hay componentes que deseas ejecutar en este modo, puedes registrarlos
    671 configurando un marcador en el manifiesto. Despus del reinicio, el sistema activa
    672 componentes registrados transmitiendo la intent <code>LOCKED_BOOT_COMPLETED</code>
    673 . El sistema garantiza que estn disponibles los datos de aplicaciones encriptados por el dispositivo
    674 antes de la desactivacin del bloqueo. No es posible acceder a los dems datos hasta que el usuario confirme sus credenciales de pantalla de
    675   bloqueo para descifrarlos. </p>
    676 
    677 Para obtener ms informacin, consulta <a href="{@docRoot}preview/features/direct-boot.html">Inicio directo</a>.</p>
    678 </p>
    679 
    680 
    681 <h2 id="key_attestation">Atestacin de claves</h2>
    682 
    683 <p>Los depsitos de claves guardados en hardware proporcionan un mtodo mucho ms seguro para crear, almacenar
    684 y usar claves criptogrficas en dispositivos Android. Protegen las claves contra funciones del kernel de
    685 Linux, vulnerabilidades potenciales de Android y extracciones
    686 de dispositivos con derechos de administrador.</p>
    687 
    688 <p>Para hacer ms sencillo y seguro el uso de depsitos de claves guardados en hardware,
    689 en Android N, se presenta la atestacin de claves. En las aplicaciones y en los servicios que no dependen de los dispositivos se puede usar la atestacin
    690 de claves para determinar fehacientemente el almacenamiento de un par de claves RSA o EC se
    691 en hardware, las propiedades de dicho par y las
    692   limitaciones aplicadas a su uso y validez. </p>
    693 
    694 <p>Los servicios que no dependen de los dispositivos y las aplicaciones pueden solicitar informacin acerca de un par de claves
    695 a travs de un certificado de atestacin X.509 que debe firmarse con una clave de atestacin
    696 vlida. La clave de atestacin es una clave de firma ECDSA que se
    697 inyecta en el depsito de claves guardado en hardware en la fbrica.
    698 Por lo tanto, un certificado de atestacin firmado con una clave de atestacin
    699 vlida confirma la existencia de un depsito de claves guardado en hardware y de informacin detallada
    700   sobre los pares de claves en dicho depsito de claves.</p>
    701 
    702 <p>Para asegurarse de que el dispositivo use una imagen segura y oficial de fbrica de
    703 Android, la atestacin de claves solicita que el <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
    704 del dispositivo proporcione la siguiente informacin al <a class="external-link" href="https://source.android.com/security/trusty/index.html">entorno de ejecucin
    705 seguro (TEE)</a>:</p>
    706 
    707 <ul>
    708 <li>la versin del SO y el nivel de revisin instalados en el dispositivo;</li>
    709 <li>la clave pblica de <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> y el estado de bloqueo.</li>
    710   </ul>
    711 
    712 <p>Para obtener ms informacin sobre la funcin de depsitos de claves guardados en hardware,
    713 consulta la gua de<a href="https://source.android.com/security/keystore/" class="external-link"> Depsito de clave guardado en hardware</a>.</p>
    714 
    715 <p>Adems de la atestacin de claves, en Android N tambin se presentan
    716   claves enlazadas a huellas digitales no revocadas en la inscripcin con estas huellas.</p>
    717 
    718 <h2 id="network_security_config">Configuracin de seguridad de la red</h2>
    719 
    720 <p>En Android N, las aplicaciones pueden personalizar el comportamiento de sus conexiones protegidas (HTTPS y TLS)
    721 en forma segura, sin modificaciones en el cdigo, a travs de la
    722 <em>Configuracin de seguridad de la red</em> en lugar de las API
    723 convencionales, propensas a generar errores (p. ej., X509TrustManager).</p>
    724 
    725   <p>Funciones admitidas:</p>
    726 <ul>
    727 <li><b>Anclajes de confianza personalizados.</b> Permite personalizar qu autoridades de
    728 certificado (CA) son de confianza para las conexiones de seguridad de una aplicacin. Por ejemplo,
    729  confiar en certificados autofirmados particulares o un conjunto restringido de CA pblicas.
    730 </li>
    731 <li><b>Anulaciones de solo depuracin.</b> Permite que el desarrollador de una aplicacin depure en forma segura
    732 conexiones protegidas de su aplicacin sin riesgos adicionales para la base
    733 instalada.
    734 </li>
    735 <li><b>Desactivacin del trfico de Cleartext.</b> Permite que una aplicacin se proteja a s misma contra
    736 el uso accidental de trfico de Cleartext.</li>
    737 <li><b>Fijacin de certificados.</b> Esta es una funcin avanzada que permite a una aplicacin
    738   limitar las claves de servidores en las que se pueda confiar para conexiones protegidas.</li>
    739 </ul>
    740 
    741 <p>Para obtener ms informacin, consulta <a href="{@docRoot}preview/features/security-config.html">Configuracin de seguridad de
    742 la red</a>.</p>
    743 
    744 <h2 id="default_trusted_ca">Entidad de certificacin de confianza predeterminada</h2>
    745 
    746 <p>De manera predeterminada, en las aplicaciones orientadas a Android N solo se consideran como confiables los certificados proporcionados por el sistema
    747 y ya no se da esta misma consideracin a las entidades de certificacin (CA) agregadas por usuarios. En aquellas aplicaciones orientadas a Android
    748 N para las cuales se desee considerar tales CA como vlidas, se debe usar la
    749 <a href="{@docRoot}preview/features/security-config.html">Configuracin de seguridad de la red</a> a fin de
    750 especificar los trminos de confianza de dichas CA.</p>
    751 
    752 <h2 id="apk_signature_v2">Esquema de firma de APK v2</h2>
    753 
    754 <p>
    755   Android N presenta el esquema de firma de APK v2, un nuevo esquema de firma de aplicaciones que
    756   ofrece instalacin ms rpida de las aplicaciones y mayor proteccin contra alteraciones
    757   no autorizadas de archivos APK. De forma predeterminada, Android Studio 2.2 y el complemento de Android
    758   para Gradle 2.2 firman tu aplicacin con el esquema de firma de APK v2 y
    759   el esquema de firma tradicional, que utiliza la firma JAR.
    760 </p>
    761 
    762 <p>
    763   Aunque recomendamos que implementes el esquema de firma de APK v2 en tu aplicacin, este esquema
    764   nuevo no es obligatorio. Si la aplicacin no se compila correctamente con el
    765   esquema de firma de APK v2, puedes deshabilitar este esquema nuevo. Si se deshabilita el proceso,
    766   Android Studio 2.2 y el complemento de Android  para Gradle 2.2 firman tu
    767   aplicacin con el esquema de firma tradicional solamente. Para firmar solo con el
    768   esquema tradicional, abre el archivo <code>build.gradle</code> del nivel del mdulo, a continuacin,
    769   agrega la lnea <code>v2SigningEnabled false</code> a la configuracin de firma
    770   de la versin:
    771 </p>
    772 
    773 <pre>
    774   android {
    775     ...
    776     defaultConfig { ... }
    777     signingConfigs {
    778       release {
    779         storeFile file("myreleasekey.keystore")
    780         storePassword "password"
    781         keyAlias "MyReleaseKey"
    782         keyPassword "password"
    783         <strong>v2SigningEnabled false</strong>
    784       }
    785     }
    786   }
    787 </pre>
    788 
    789 <p class="caution"><strong>Advertencia: </strong> Si firmas la aplicacin con el
    790   esquema de firma de APK v2 y luego la modificas, se invalida
    791   la firma de la aplicacin. Por este motivo, usa herramientas como <code>zipalign</code>
    792  antes de firmar la aplicacin con el esquema de firma de APK v2, y no despus.
    793 </p>
    794 
    795 <p>
    796   Para obtener ms informacin, lee los documentos de Android Studio que describen cmo
    797   <a href="{@docRoot}studio/publish/app-signing.html#release-mode">
    798   firmar una aplicacin</a> en Android Studio y cmo<a href="{@docRoot}studio/build/build-variants.html#signing"> configurar
    799   el archivo de compilacin para firmar aplicaciones</a> con el complemento de Android para Gradle.
    800 </p>
    801 
    802 <h2 id="scoped_directory_access">Acceso a directorios determinados</h2>
    803 
    804 <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
    805 externo</a> especficos, incluidos los directorios de medios extrables, como las tarjetas
    806 SD. Las nuevas API simplifican enormemente la manera en que tu aplicacin accede a directorios
    807 de almacenamiento externo estndares, como <code>Pictures</code>. Las aplicaciones
    808 de fotografa, por ejemplo, pueden usar estas API en lugar de
    809 <code>READ_EXTERNAL_STORAGE</code>, que otorga acceso a todos los directorios
    810 de almacenamiento, o del framework de acceso a almacenamiento, con el cual el usuario debe navegar hasta
    811 el directorio.</p>
    812 
    813 <p>A su vez, las nuevas API simplifican los pasos que un usuario debe seguir para otorgar a tu aplicacin acceso a almacenamiento
    814 externo. Cuando se usan las nuevas API, el sistema emplea una IU de
    815 permisos simple en la que se detallan claramente los directorios a los cuales
    816 la aplicacin solicita acceso.</p>
    817 
    818 <p>Para obtener ms informacin, consulta la documentacin
    819 <a href="{@docRoot}preview/features/scoped-folder-access.html">Acceso
    820 a directorios determinados</a> para desarrolladores.</p>
    821 
    822 <h2 id="keyboard_shortcuts_helper">Ayuda en los mtodos abreviados del teclado</h2>
    823 
    824 <p>
    825 En Android N, el usuario puede presionar "Alt + /" para activar una pantalla de <em>mtodos abreviados del teclado</em>
    826 que muestra todos los mtodos abreviados disponibles, tanto para el
    827 sistema como la aplicacin que est en primer plano. Estos se recuperan automticamente del men de la aplicacin si
    828 estn disponibles, pero los desarrolladores pueden proporcionar sus propios mtodos abreviados perfeccionados
    829 para la pantalla. Puedes hacerlo anulando el nuevo mtodo
    830 <code>Activity.onProvideKeyboardShortcuts()</code>, lo que se describe en la
    831 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
    832 </p>
    833 
    834 <p>
    835 Para activar la ayuda en los mtodos abreviados del teclado desde cualquier ubicacin en la aplicacin,
    836 llama a {@code Activity.requestKeyboardShortcutsHelper()} para la actividad relevante.
    837 </p>
    838 
    839 <h2 id="sustained_performance_api">API de rendimiento sostenido</h2>
    840 
    841 <p>
    842 El rendimiento puede fluctuar considerablemente en las aplicaciones de ejecucin prolongada porque el
    843 sistema limita los motores de sistemas en chip cuando los componentes del dispositivo alcanzan los
    844 lmites de temperatura. Esta fluctuacin presenta un objetivo mvil para los desarrolladores
    845 de aplicaciones que crean aplicaciones de alto rendimiento y ejecucin prolongada.
    846 </p>
    847 
    848 <p>
    849 Android N incluye compatibilidad opcional para un
    850 <em>modo de rendimiento sostenido</em>, que permite que los fabricantes de equipo original (OEM) arrojen datos sobre las capacidades de rendimiento del dispositivo
    851 para las aplicaciones de ejecucin prolongada. Los desarrolladores
    852 de aplicaciones pueden usar estos datos para perfeccionar sus aplicaciones y alcanzar un nivel
    853 uniforme y predecible de rendimiento en el dispositivo durante perodos prolongados.
    854 </p>
    855 
    856 <p>
    857 Los desarrolladores de aplicaciones solo pueden probar esta API nueva en la N Developer Preview instalada solo en dispositivos con
    858 Nexus 6P. Para usar esta funcin,
    859 establece el indicador de rendimiento sostenido de la ventana
    860 que deseas ejecutar en el modo de rendimiento sostenido. Establece este indicador con el mtodo
    861 {@code Window.setSustainedPerformanceMode()}. El sistema deshabilita
    862 automticamente este modo cuando la ventana deja de estar en primer plano.
    863 </p>
    864 
    865 <h2 id="vr">Soporte de RV</h2>
    866 
    867 <p>
    868 Android N agrega compatibilidad y optimizaciones de plataforma para un modo de RV nuevo, con el objetivo de que los
    869  desarrolladores puedan forjar experiencias de RV mviles de alta calidad para los usuarios. Hay varias mejoras en el
    870 rendimiento, entre las que se incluye el acceso a un ncleo de CPU exclusivo para aplicaciones de RV.
    871 Dentro de tus aplicaciones, puedes aprovechar el seguimiento de cabeza inteligente
    872 y las notificaciones en sonido estreo que funcionan para la RV. Un dato muy importante es que Android N presenta
    873 muy pocos grficos de baja latencia. Para obtener informacin completa sobre el desarrollo de aplicaciones de RV para Android N,
    874 consulta <a href="https://developers.google.com/vr/android/">Google VR SDK para Android</a>.
    875 </p>
    876 
    877 
    878 <h2 id="print_svc">Mejoras del servicio de impresin</h2>
    879 
    880 <p>
    881   En Android N, los desarrolladores de servicios de impresin ahora pueden publicar informacin adicional
    882   sobre impresoras y trabajos de impresin individuales.
    883 </p>
    884 
    885 <p>
    886   Al enumerar las impresoras individuales, un servicio de impresin ahora puede establecer conos
    887   por impresora de dos maneras:
    888 </p>
    889 
    890 <ul>
    891   <li>Puedes establecer un cono desde el id. de un recurso llamando a
    892   <code>PrinterInfo.Builder.setResourceIconId()</code>.
    893   </li>
    894 
    895   <li>Puedes mostrar un cono de la red llamando a
    896   <code>PrinterInfo.Builder.setHasCustomPrinterIcon()</code> y configurando un
    897   callback para cuando se solicite el cono con
    898   <code>android.printservice.PrinterDiscoverySession.onRequestCustomPrinterIcon()</code>.
    899   </li>
    900 </ul>
    901 
    902 <p>
    903   Adems, puedes proporcionar las actividades por impresora para mostrar informacin
    904   adicional llamando a <code>PrinterInfo.Builder.setInfoIntent()</code>.
    905 </p>
    906 
    907 <p>
    908   Puedes indicar el progreso y el estado de los trabajos de impresin en la notificacin de
    909   trabajo de impresin llamando a
    910   <code>android.printservice.PrintJob.setProgress()</code> y
    911   <code>android.printservice.PrintJob.setStatus()</code>, respectivamente.
    912 </p>
    913 
    914 <p>
    915   Para obtener ms informacin sobre estos mtodos, consulta la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
    916 </p>
    917 
    918 <h2 id="framemetrics_api">API FrameMetricsListener</h2>
    919 
    920 <p>
    921 La API FrameMetricsListener permite que una aplicacin monitoree el rendimiento de la representacin
    922 de la IU. La API brinda esta capacidad mediante la exposicin de una transmisin de API Pub/Sub para transferir informacin sobre el tiempo
    923 de los cuadros para la ventana actual de la aplicacin. Los datos devueltos son
    924 equivalentes a lo que muestra <code><a href="{@docRoot}tools/help/shell.html#shellcommands">adb shell</a>
    925 dumpsys gfxinfo framestats</code>, pero no se limita a los ltimos 120 cuadros.
    926 </p>
    927 
    928 <p>
    929 Puedes usar FrameMetricsListener para medir el rendimiento de
    930 la IU del nivel de interaccin en produccin sin contar con una conexin USB. Esta API
    931 permite recopilar datos con una especificidad mayor que
    932 {@code adb shell dumpsys gfxinfo}. Esta especificidad mayor es posible porque
    933 el sistema puede recopilar datos para interacciones determinadas en la aplicacin, sin que sea
    934 necesario que el sistema obtenga un resumen global del
    935 rendimiento de toda la aplicacin o borre un estado global. Puedes usar esta
    936 capacidad con el objetivo de recopilar datos de rendimiento e identificar regresiones en el rendimiento de la IU
    937 para casos de uso reales dentro de una aplicacin.
    938 </p>
    939 
    940 <p>
    941 Para monitorear una ventana, implementa el callback <code>FrameMetricsListener.onMetricsAvailable()</code>
    942 y regstralo en esa ventana. Para obtener ms informacin, consulta
    943 la documentacin de la clase {@code FrameMetricsListener}
    944 en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">referencia de la API</a> descargable.
    945 </p>
    946 
    947 <p>
    948 La API proporciona un objeto {@code FrameMetrics}, que contiene datos de intervalos que
    949 el subsistema de representacin informa sobre varios hitos en el ciclo de vida de un marco.
    950 Las mtricas compatibles son {@code UNKNOWN_DELAY_DURATION},
    951 {@code INPUT_HANDLING_DURATION}, {@code ANIMATION_DURATION},
    952 {@code LAYOUT_MEASURE_DURATION}, {@code DRAW_DURATION}, {@code SYNC_DURATION},
    953 {@code COMMAND_ISSUE_DURATION}, {@code SWAP_BUFFERS_DURATION},
    954 {@code TOTAL_DURATION} y {@code FIRST_DRAW_FRAME}.
    955 </p>
    956 
    957 
    958 <h2 id="virtual_files">Archivos virtuales</h2>
    959 
    960 <p>
    961   En versiones anteriores de Android, tu aplicacin poda usar el framework
    962   de acceso al almacenamiento para permitir a los usuarios seleccionar archivos de cuentas de almacenamiento en la nube,
    963   como Google Drive. Sin embargo, no se podan representar los archivos que no
    964   tenan una representacin directa en cdigo de bits; cada archivo deba brindar
    965   un flujo de entrada.
    966 </p>
    967 
    968 <p>
    969   Android N incorpora el concepto de <em>archivos virtuales</em> al framework
    970   de acceso al almacenamiento. La funcin de archivos virtuales permite que tu
    971   {@link android.provider.DocumentsProvider} devuelva URI de documentos que se pueden
    972   usar en una intent {@link android.content.Intent#ACTION_VIEW} incluso si
    973   no tienen una representacin directa en cdigo de bits. Android N tambin te permite
    974   ofrecer formatos alternativos para archivos del usuario, virtuales u otros.
    975 </p>
    976 
    977 <p>
    978   Para obtener un URI para un documento virtual en tu aplicacin, primero crea una
    979   {@link android.content.Intent} a fin de abrir la IU del selector de archivos. Como una aplicacin
    980   no puede abrir directamente un archivo virtual con el mtodo
    981   {@link android.content.ContentResolver#openInputStream(Uri) openInputStream()},
    982   la aplicacin no recibe ningn archivo virtual si incluyes la categora
    983   {@link android.content.Intent#CATEGORY_OPENABLE}.
    984 </p>
    985 
    986 <p>
    987   Cuando el usuario realiza una seleccin, el sistema llama al mtodo
    988   {@link android.app.Activity#onActivityResult onActivityResult()}.
    989   La aplicacin puede recuperar el URI del archivo virtual y obtener un flujo de entrada, como
    990   se demuestra en el fragmento de cdigo a continuacin.
    991 </p>
    992 
    993 <pre>
    994   // Other Activity code ...
    995 
    996   final static private int REQUEST_CODE = 64;
    997 
    998   // We listen to the OnActivityResult event to respond to the user's selection.
    999   &#64;Override
   1000   public void onActivityResult(int requestCode, int resultCode,
   1001     Intent resultData) {
   1002       try {
   1003         if (requestCode == REQUEST_CODE &amp;&amp;
   1004             resultCode == Activity.RESULT_OK) {
   1005 
   1006             Uri uri = null;
   1007 
   1008             if (resultData != null) {
   1009                 uri = resultData.getData();
   1010 
   1011                 ContentResolver resolver = getContentResolver();
   1012 
   1013                 // Before attempting to coerce a file into a MIME type,
   1014                 // check to see what alternative MIME types are available to
   1015                 // coerce this file into.
   1016                 String[] streamTypes =
   1017                   resolver.getStreamTypes(uri, "*/*");
   1018 
   1019                 AssetFileDescriptor descriptor =
   1020                     resolver.openTypedAssetFileDescriptor(
   1021                         uri,
   1022                         streamTypes[0],
   1023                         null);
   1024 
   1025                 // Retrieve a stream to the virtual file.
   1026                 InputStream inputStream = descriptor.createInputStream();
   1027             }
   1028         }
   1029       } catch (Exception ex) {
   1030         Log.e("EXCEPTION", "ERROR: ", ex);
   1031       }
   1032   }
   1033 </pre>
   1034 
   1035 <p>
   1036   Para obtener ms informacin sobre el acceso a archivos del usuario, consulta la
   1037   <a href="{@docRoot}guide/topics/providers/document-provider.html">gua
   1038   Frameworks de acceso a almacenamiento</a>.
   1039 </p>
   1040