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 —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 —(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 —( 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 & 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™ 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><uses-feature></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 > More > 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 > 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 @Override 1000 public void onActivityResult(int requestCode, int resultCode, 1001 Intent resultData) { 1002 try { 1003 if (requestCode == REQUEST_CODE && 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