summaryrefslogtreecommitdiff
path: root/docs/html-intl/intl/es/preview/api-overview.jd
blob: 02a13e7a29cb4e5d1542078f6582ae24d91b0442 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
page.title=Android N para desarrolladores
meta.tags=“preview”, “Android N”
page.tags="preview", "developer preview"
page.image=images/cards/card-n-apis_2x.png
@jd:body




<div id="qv-wrapper">
<div id="qv">
  <h2>Funciones claves para desarrolladores</h2>
  <ol>
      <ul style="list-style-type:none;">
        <li><a href="#multi-window_support">Compatibilidad con ventanas múltiples</a></li>
        <li><a href="#notification_enhancements">Notificaciones</a></li>
        <li><a href="#jit_aot">Compilación de JIT y AOT</a></li>
        <li><a href="#quick_path_to_app_install">Acceso rápido a la instalación de aplicaciones</a></li>
        <li><a href="#doze_on_the_go">Doze en movimiento</a></li>
        <li><a href="#background_optimizations">Optimizaciones en segundo plano</a></li>
        <li><a href="#data_saver">Ahorro de datos</a></li>
        <li><a href="#tile_api">API para Mosaico de Configuración rápida</a></li>
        <li><a href="#number-blocking">Bloqueo de números</a></li>
        <li><a href="#call_screening">Filtración de llamadas</a></li>
        <li><a href="#multi-locale_languages">Configuraciones regionales e idiomas</a></li>
        <li><a href="#icu4">API de ICU4J en Android</a></li>
        <li><a href="#gles_32">API de OpenGL ES 3.2</a></li>
        <li><a href="#android_tv_recording">Grabación de Android TV</a></li>
        <li><a href="#android_for_work">Android for Work</a></li>
        <li><a href="#accessibility_enhancements">Accesibilidad</a></li>
        <li><a href="#direct_boot">Inicio directo</a></li>
        <li><a href="#key_attestation">Atestación de claves</a></li>
        <li><a href="#network_security_config">Configuración de seguridad de la red</a></li>
        <li><a href="#default_trusted_ca">CA de confianza predeterminada</a></li>
        <li><a href="apk_signature_v2">Esquema de firma de APK v2</a></li>
        <li><a href="#scoped_directory_access">Acceso a directorios determinados</a></li>
      </ol>
</div>
</div>



<p>Android N aún se encuentra en proceso activo de desarrollo, pero puedes probarlo
ahora como parte de la N Developer Preview. En las secciones siguientes se destacan algunas de
las nuevas funciones para desarrolladores. </p>

<p>
  Asegúrate de ver los <a href="{@docRoot}preview/behavior-changes.html">Cambios de comportamiento</a> para obtener información sobre
  áreas en las cuales los cambios en las plataformas puedan tener efecto en tus aplicaciones, consultar las
  guías 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 información sobre
  API nuevas.
</p>

<h2 id="multi-window_support">Compatibilidad con ventanas múltiples</h2>


<p>En Android N, presentamos una nueva y muy solicitada función multitarea 
en la plataforma: la compatibilidad con ventanas múltiples. </p>

  <p>Los usuarios ahora pueden abrir dos aplicaciones al mismo tiempo en la pantalla. </p>
  <ul>
  <li>En teléfonos y tabletas
con Android N, los usuarios pueden ejecutar dos aplicaciones en paralelo 
una encima otra en el modo de pantalla dividida. También tienen la posibilidad de modificar el tamaño de las aplicaciones arrastrando
la línea divisoria que se encuentra entre ellas. </li>

<li>En los dispositivos con Android TV, las aplicaciones pueden habilitar en forma automática el <a href="{@docRoot}preview/features/picture-in-picture.html">modo "picture-in
-picture"</a>. Esto les permite continuar mostrando contenido mientras el usuario explora otras
aplicaciones o interactúa con ellas. Consulta las secciones siguientes para obtener más información. </li>
  </ul>

<div class="col-4of10">
<img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
<p class="img-caption">
  <strong>Figura 1:</strong> Aplicaciones en ejecución en el modo de pantalla dividida.
</p>
  </div>

<p>En las tabletas, en particular, y en otros dispositivos de pantallas más grandes, la compatibilidad con ventanas múltiples
ofrece nuevas maneras de captar a los usuarios. Puedes, incluso, habilitar acciones de arrastrar y soltar en
tu aplicación para que los usuarios arrastren contenido hacia tu aplicación o desde ella; es una excelente
manera de mejorar su experiencia. </p>

<p>Es sencillo agregar compatibilidad con ventanas múltiples a tu aplicación y configurar la manera en que
administra la visualización de estas ventanas. Por ejemplo, puedes especificar las dimensiones mínimas
permitidas de tu actividad, y evitar así que los usuarios den a la actividad un tamaño inferior
al que establecen estas. También puedes deshabilitar la visualización de ventanas múltiples para tu aplicación, lo cual
  garantiza que en el sistema solo se muestre tu aplicación en el modo de pantalla completa.</p>

<p>
  Para obtener más información, consulta la documentación sobre <a href="{@docRoot}preview/features/multi-window.html">Compatibilidad con ventanas múltiples</a>
para desarrolladores.
</p>

<h2 id="notification_enhancements">Mejoras en las notificaciones</h2>

<p>En Android N, hemos rediseñado las notificaciones para facilitar y agilizar su
uso. Entre los cambios se incluyen los siguientes:</p>

<ul>
  <li>
    <strong>Actualizaciones en las plantillas</strong>: actualizaremos las plantillas de notificaciones para
   poner nuevo énfasis en la imagen de héroe y el avatar. Los desarrolladores podrán
    aprovechar las nuevas plantillas con una cantidad mínima de ajustes en su código.
  </li>

  <li>
    <strong>Notificaciones agrupadas</strong>: el sistema puede agrupar mensajes
    (por ejemplo, por tema) y mostrar el grupo. Un usuario puede
    aplicar acciones, como “Dismiss” o “Archive”, en ellos. Si
    has implementado notificaciones para Android Wear, ya estarás familiarizado con
    este modelo.
  </li>

  <li>
    <strong>Respuesta directa</strong>: en el caso de las aplicaciones de comunicación en tiempo real, el
    sistema de Android admite respuestas en línea para que los usuarios puedan responder en forma rápida a
    un mensaje SMS o de texto directamente dentro en la interfaz de notificaciones.
  </li>

  <li>
    <strong>Vistas personalizadas</strong>: dos API nuevas te permiten aprovechar las decoraciones
    del sistema, como los encabezados y las acciones de notificaciones, al usar vistas
    personalizadas en las notificaciones.
  </li>
</ul>

<div class="col-4of12">
  <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
</div>

<div class="col-4of12">
  <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
</div>

<div class="col-4of12">
  <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
</div>


<p class="img-caption">
  <strong>Figura 2:</strong> Notificaciones agrupadas y respuesta directa.
</p>

<p>Para obtener información acerca de cómo implementar las nuevas funciones, consulta la guía
 
  <a href="{@docRoot}preview/features/notification-updates.html">Notificaciones</a>.</p>



<h2 id="jit_aot">Compilación de JIT y AOT guiada por perfiles</h2>

<p>En Android N, agregamos un compilador “Just in Time” (JIT) con generación de perfiles de código para
ART, lo cual le permite mejorar constantemente el rendimiento de las aplicaciones de Android mientras se
ejecutan. El compilador JIT complementa al compilador “Ahead of Time” (AOT) actual de ART
y permite mejorar el rendimiento del tiempo de ejecución, ahorrar espacio de almacenamiento y acelerar las actualizaciones
de aplicaciones y del sistema.</p>

<p>La compilación guiada por perfiles permite que ART maneje la compilación de AOT y JIT de cada aplicación
conforme a su uso real, además de las condiciones en el dispositivo. Por
ejemplo, conserva un perfil de los métodos directos de cada aplicación, y puede compilar previamente
y almacenar en el caché dichos métodos para obtener el mejor rendimiento. A su vez, deja otras partes de la aplicación
sin compilar hasta que se aplican verdaderamente.</p>

<p>Además de mejorar el rendimiento de partes claves de la aplicación, la compilación guiada por
perfiles permite reducir la superficie de memora RAM total de una aplicación, incluidos los archivos binarios
asociados. Esta función tiene particular importancia en los dispositivos de memoria reducida.</p>

<p>ART administra la compilación guiada por perfiles de una manera que minimiza el impacto sobre la batería
del dispositivo. Realiza compilaciones previas únicamente cuando el dispositivo se encuentra inactivo y
en proceso de carga, con lo cual permite ahorrar tiempo y batería al hacer el trabajo en forma anticipada.</p>

<h2 id="quick_path_to_app_install">Acceso rápido a la instalación de aplicaciones</h2>

<p>Uno de los beneficios más palpables del compilador JIT de ART es la velocidad de instalación de las
aplicaciones y de actualización del sistema. Incluso las aplicaciones de mayor tamaño, en cuyos casos se necesitaban varios minutos para la
optimización y la instalación en Android 6.0, ahora pueden instalarse en cuestión de
segundos. Las actualizaciones del sistema también son más rápidas debido a que ya no hay paso de optimización. </p>

<h2 id="doze_on_the_go">Doze en movimiento...</h2>

<p>En Android 6.0 se presentó Doze, un modo de sistema que ahorra batería al aplazar
actividades de CPU y red de las aplicaciones cuando el dispositivo se encuentra inactivo; por ejemplo, al hallarse
sobre una mesa o en un cajón. </p>

<p>Ahora, en Android N, el modo Doze ofrece el beneficio adicional de ahorrar batería en movimiento.
Siempre que la pantalla permanezca apagada durante un tiempo y el dispositivo esté desenchufado,
Doze aplicará un subconjunto de las restricciones de CPU y red conocidas a las aplicaciones.
Esto significa que los usuarios pueden ahorrar batería aun cuando lleven sus dispositivos
en los bolsillos.</p>


<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
<p class="img-caption">
  <strong>Figura 3:</strong> Doze ahora aplica
  restricciones para prolongar la duración de la batería aun cuando el dispositivo no está quieto.
</p>


<p>Poco tiempo después de que la pantalla se apaga, cuando el dispositivo no está enchufado, Doze
restringe el acceso a la red y aplaza tareas y sincronizaciones. Durante períodos de mantenimiento
breves, las aplicaciones tienen acceso a la red y se ejecutan todas sus
tareas y sincronizaciones aplazadas. Al encenderse la pantalla o enchufarse el dispositivo se desactiva el modo
Doze del dispositivo.</p>

<p>Cuando el dispositivo vuelve a estar quieto, desenchufado y con la pantalla apagada durante un
tiempo, Doze aplica todas las restricciones de CPU y redes en {@link
android.os.PowerManager.WakeLock}, alarmas de {@link android.app.AlarmManager} y análisis de
GPS o Wi-Fi.</p>

<p>Las prácticas recomendadas para adaptar tu aplicación a Doze no varían si el
dispositivo estará en movimiento o no. Por lo tanto, si ya actualizaste tu aplicación para que administre
Doze en forma equilibrada, estarás listo. Si no lo hiciste, comienza a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptarla
a Doze</a> ahora.</p>

<h2 id="background_optimizations">Project Svelte: Optimizaciones en segundo plano</h2>

<p>Project Svelte representa un esfuerzo constante por minimizar el uso de memoria RAM a través del sistema y de las aplicaciones
en los diferentes dispositivos Android del ecosistema. En Android N, el objetivo principal de Project
Svelte es optimizar la manera en que las aplicaciones se ejecutan en segundo plano. </p>

<p>El procesamiento en segundo plano es una parte esencial de la mayoría de las aplicaciones. Cuando se maneja en forma adecuada, puede
hacer que la experiencia de tu usuario sea increíble (inmediata, rápida y pertinente al contexto).
Cuando no se maneja de tal manera, el procesamiento en segundo plano puede suponer un consumo innecesario de memoria RAM (y
batería), y afectar el rendimiento del sistema para otras aplicaciones. </p>

<p>A partir de Android 5.0, {@link android.app.job.JobScheduler} ha sido el
método preferido para ejecutar tareas en segundo plano con resultados positivos
para los usuarios. Las aplicaciones pueden programar tareas y, al mismo tiempo, permitir que el sistema se optimice según las condiciones de
memoria, energía y conectividad. JobScheduler ofrece control y
simpleza, y nuestro deseo es que todas las aplicaciones lo usen. </p>

<p>
  Otra buena opción es <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
  <code>GCMNetworkManager</code></a>, que forma parte de Google Play Services y
  ofrece una capacidad similar de programación de tareas con compatibilidad en versiones heredadas de
  Android.
</p>

<p>Continuaremos ampliando <code>JobScheduler</code> y
<code>GCMNetworkManager</code> para que se apliquen a más
casos de uso de tus aplicaciones; por ejemplo, en Android N ahora puedes programar procesos
en segundo plano según los cambios de los proveedores de contenido. Al mismo tiempo, comenzaremos a
dejar de usar algunos de los patrones anteriores que pueden reducir el rendimiento del sistema,
en especial en dispositivos de memoria reducida.</p>

<p>En Android N, eliminaremos tres difusiones implícitas que se usan normalmente (
 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
  android.hardware.Camera#ACTION_NEW_PICTURE} y {@link
  android.hardware.Camera#ACTION_NEW_VIDEO}), ya que pueden activar los
procesos en segundo plano de varias aplicaciones al mismo tiempo, y así exigir la memoria y la batería. Si
tu aplicación recibe estas difusiones, aprovecha la N Developer Preview y
  realiza la migración a <code>JobScheduler</code> y hacia las API relacionadas, como alternativa. </p>

<p>
  Para obtener información detallada, consulta la documentación de <a href="{@docRoot}preview/features/background-optimization.html">Optimizaciones
  en segundo plano</a>.
</p>


<h2 id="data_saver">Ahorro de datos</h2>

<div class="col-5of12" style="margin-right:1.5em;">
<img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">

<p class="img-caption" style="padding-right:2em;">
  <strong>Figura 4:</strong> Ahorro de datos en la configuración.
</p>
  </div>

<p>Durante la vida útil de un dispositivo móvil, el costo de un plan de datos móviles normalmente
superará el costo del propio dispositivo. Para muchos usuarios, los datos móviles son un
recurso costoso que desean conservar. </p>

<p>En Android N se presenta el modo de ahorro de datos, un nuevo servicio del sistema que permite reducir
el uso de datos móviles de las aplicaciones, ya sea con servicio de itinerancia, cerca del final del ciclo de facturación
o con un paquete de datos prepagos. El ahorro de datos permite que los usuarios controlen la manera en que las aplicaciones
usan los datos móviles y que los desarrolladores brinden un servicio más eficaz cuando el ahorro
de datos se encuentra activo. </p>

<p>Cuando un usuario habilita el ahorro de datos en <strong>Settings</strong> y el dispositivo está
conectado a una red de uso medido, el sistema bloquea el uso de datos en segundo plano y ordena a las aplicaciones
usar menos datos en primer plano siempre que sea posible (por ejemplo, limitando
la tasa de bits para la transmisión, reduciendo la calidad de la imagen y aplazando el valor optimista de almacenamiento previo en caché,
entre otras posibilidades). Los usuarios pueden permitir que aplicaciones específicas habiliten el uso de datos medidos en segundo plano
aun cuando esté activo el ahorro de datos.</p>

<p>Android N extiende {@link android.net.ConnectivityManager} para que las aplicaciones
tengan una manera de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar las
preferencias de ahorro de datos del usuario</a> y los <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitor
cambios en estas</a>. Todas las aplicaciones deben verificar si el usuario habilitó el ahorro de
datos e intentar limitar el uso de datos en primer y segundo plano.</p>


<h2 id="tile_api">API para Mosaico de Configuración rápida</h2>


<div style="float:right;max-width:320px">
<img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">

<p class="img-caption" style="padding-left:2em;">
  <strong>Figura 5:</strong> Mosaicos de Quick Settings del panel de notificaciones.
</p>


  </div><p>Quick Settings es una manera popular y simple de exhibir configuraciones y acciones claves
directamente desde el panel de notificaciones. En Android N, expandimos el alcance de
Quick Settings para que sea más útil y práctico. </p>

<p>Agregamos más espacio para mosaicos adicionales de Quick Settings, a los cuales los usuarios pueden
acceder desde un área de visualización paginada deslizando el dedo hacia la izquierda o la derecha. También permitimos
que los usuarios determinen los mosaicos de Quick Settings que aparecerán y los puntos en los cuales
se mostrarán; pueden agregar o mover mosaicos con solo arrastrarlos y soltarlos. </p>

<p>Para los desarrolladores, en Android N también se agrega una nueva API que les permite definir mosaicos de
  Quick Settings propios para facilitar, dentro de sus aplicaciones, el acceso a controles y acciones claves por parte de los usuarios.</p>

<p>
  Los mosaicos de Quick Settings se reservan para controles o acciones que se necesiten
  con urgencia o se usen con frecuencia; no deben emplearse como accesos directos para
  iniciar una aplicación.
</p>

<p>
  Una vez que hayas definido tus mosaicos, puedes dejarlos a disposición de los usuarios, quienes tendrán la posibilidad de agregarlos
  a Quick Settings con solo arrastrarlos y soltarlos.
</p>

<p>
  Para obtener información sobre la creación de un mosaico de aplicación, consulta
  <code>android.service.quicksettings.Tile</code> en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API</a> descargable.
</p>



<h2 id="number-blocking">Bloqueo de números</h2>

<p>Android N ahora admite el bloqueo de números en la plataforma y proporciona una API
de framework para que los proveedores de servicios dispongan de una lista con números bloqueados. La
aplicación de SMS predeterminada, la aplicación telefónica predeterminada y las aplicaciones de proveedores tienen capacidad de lectura y
escritura en la lista de números bloqueados. Otras aplicaciones no pueden acceder a la lista.</p>

<p>Al hacer que el bloqueo de números sea una función estándar de la plataforma, Android permite que las
aplicaciones admitan de manera uniforme el bloqueo de números en una amplia variedad de
dispositivos. Entre los demás beneficios que pueden aprovecharse en las aplicaciones, se encuentran los siguientes:</p>

<ul>
  <li> Los números bloqueados en las llamadas también se bloquean en los mensajes de texto.
  <li> Los números bloqueados pueden perdurar tras procesos de restablecimiento y cambios de dispositivos con la función Backup &amp;
Restore.
  <li> Varias aplicaciones pueden usar la misma lista de números bloqueados.
</ul>

<p>De manera adicional, la integración de aplicaciones de proveedores a través de Android permite que estos
lean la lista de números bloqueados del dispositivo y realicen un bloqueo de servicio
para el usuario, a fin de evitar que el usuario reciba llamadas o mensajes de texto no deseados
por cualquier medio, como terminales VOIP o teléfonos con transferencia de llamadas.</p>

<p>
  Para obtener más información, consulta <code>android.provider.BlockedNumberContract</code>
  en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
  </a>descargable.
</p>

<h2 id="call_screening">Filtración de llamadas</h2>

<p>
  Android N permite que la aplicación predeterminada de un teléfono filtre las llamadas entrantes. La aplicación
  hace esto a través del nuevo <code>CallScreeningService</code>,
  que le permite realizar varias acciones según la clase
  {@link android.telecom.Call.Details Call.Details} de la llamada entrante. Algunos ejemplos:
</p>

<ul>
  <li> rechazar la llamada entrante;
  <li> no permitir el ingreso de la llamada en el registro de llamadas;
  <li> no mostrar al usuario una notificación de la llamada.
</ul>

<p>
  Para obtener más información, consulta <code>android.telecom.CallScreeningService</code>
  en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API
  </a>descargable.
</p>


<h2 id="multi-locale_languages">Compatibilidad con varias configuraciones regionales y más idiomas</h2>


<p>Android N permite a los usuarios seleccionar <strong>varias configuraciones regionales</strong> en Settings,
para brindar una mejor compatibilidad con casos de uso de dos idiomas. Las aplicaciones pueden usar
una nueva API para obtener las configuraciones regionales seleccionadas del usuario y luego ofrecer experiencias
más sofisticadas para usuarios que usen varias configuraciones regionales; por ejemplo, pueden mostrar resultados de búsqueda en
varios idiomas y no ofrecer traducciones de páginas web con idiomas que el
usuario conozca.</p>

<p>Además de la compatibilidad con varias configuraciones regionales, en Android N también se amplía la variedad de idiomas
disponibles para los usuarios. Se ofrecen 25 variantes, cada una de ellas para idiomas de uso
común, como el inglés, el español, el francés y el árabe. También se agrega compatibilidad
parcial con más de 100 idiomas nuevos.</p>

<p>Las aplicaciones pueden obtener la lista de configuraciones regionales establecida por el usuario llamando a <code>LocaleList.GetDefault()</code>.  A fin de admitir la cantidad ampliada de configuraciones regionales, en Android N se modificará la forma de
resolver recursos. Asegúrate de controlar que tus aplicaciones
funcionen de la manera esperada con la nueva lógica de resolución de recursos.</p>

<p>Para obtener información sobre el nuevo comportamiento de resolución de recursos y las prácticas recomendadas que
debes aplicar, consulta <a href="{@docRoot}preview/features/multilingual-support.html">Compatibilidad con varios idiomas</a>.</p>

<h2 id="icu4">API de ICU4J en Android</h2>

<p>
  Android N ahora ofrece un subconjunto de API de <a href="http://site.icu-project.org/">ICU4J</a> dentro del framework de Android, en el paquete
  <code>android.icu</code>. La migración es sencilla y en mayor medida implica
  simplemente un cambio del espacio de nombres <code>com.java.icu</code> a
  <code>android.icu</code>. Si ya usas el paquete ICU4J en tus
  aplicaciones, el cambio a las API de <code>android.icu</code> en el framework de Android
  puede reducir notablemente el tamaño del APK.
</p>

<p>
  Para obtener más información sobre las API de ICU4J de Android, consulta <a href="{@docRoot}preview/features/icu4j-framework.html">Compatibilidad con ICU4J</a>.
</p>



<h2 id="gles_32">API&trade; de OpenGL ES 3.2</h2>

<p>En Android N se agregan interfaces de framework y compatibilidad con plataformas para OpenGL ES 3.2, entre las que se incluye lo siguiente:</p>

<ul>
  <li> todas las extensiones del <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">paquete de extensiones de Android</a></a> (AEP), a excepción de <code>EXT_texture_sRGB_decode</code>;
  <li> búferes de fotogramas de punto flotante para HDR y sombreado aplazado;
  <li> llamadas a draw a través de BaseVertex para mejorar el procesamiento por lotes y la transmisión;
  <li> sólido control de acceso a búfer para reducir la sobrecarga de WebGL.
</ul>

<p>En Android N, la API de framework para OpenGL ES 3.2 se proporciona con la clase
<code>GLES32</code>. Al usar OpenGL ES 3.2, asegúrate de declarar el
requisito en tu archivo de manifiesto, con la etiqueta <code>&lt;uses-feature&gt;</code> y el
atributo <code>android:glEsVersion</code>. </p>

<p>Para obtener información sobre el uso de OpenGL ES, incluida la manera de comprobar la
versión de OpenGL ES que admite el dispositivo durante el tiempo de ejecución, consulta la<a href="{@docRoot}guide/topics/graphics/opengl.html">guía de la API OpenGL ES</a>.</p>


<h2 id="android_tv_recording">Grabación de Android TV</h2>

<p>En Android N se agrega la capacidad de grabar y reproducir contenido de servicios
de entrada de Android TV a través de las nuevas API de grabación.  Aprovechando las mejoras existentes de las API time shifting
, los servicios de entrada de TV pueden controlar los datos de canales que pueden grabarse y la manera
en que se guardan las sesiones grabadas, y administrar la interacción del usuario con el contenido grabado. </p>

<p>Para obtener más información, consulta <a href="{@docRoot}preview/features/tv-recording-api.html">API de grabación de Android TV</a>.</p>


<h2 id="android_for_work">Android for Work</h2>

<p>Android for Work suma muchas funciones y API nuevas para dispositivos con Android N.
A continuación, se muestran algunos aspectos destacados. Para hallar una lista completa de actualizaciones de Android for Work
relacionadas con Android N, consulta la sección de cambios en Android for Work.</p>

<h3 id="work_profile_security_challenge">Comprobación de seguridad para perfiles de trabajo </h3>

<p>
  Quienes posean perfiles pueden especificar una comprobación de seguridad separada para aplicaciones que se ejecuten en el
  perfil de trabajo. La comprobación para perfiles de trabajo se muestra cuando un usuario intenta abrir
  aplicaciones de trabajo. Cuando la comprobación de seguridad es exitosa, se desbloquea el
  perfil de trabajo y se descifra si es necesario. Para quienes posean perfiles,
  <code>ACTION_SET_NEW_PASSWORD</code> solicita al usuario establecer una comprobación de
  trabajo y <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> le solicita
  establecer un bloqueo de dispositivo.
</p>

<p>
  Quienes posean perfiles pueden establecer políticas de contraseñas diferentes
  (por ejemplo, la extensión que debe tener el PIN o la posibilidad de usar una huella digital
  para desbloquear el perfil) usando <code>setPasswordQuality()</code>,
  <code>setPasswordMinimumLength()</code> y métodos relacionados. También
  pueden establecer el bloqueo del dispositivo usando la instancia de <code>DevicePolicyManager</code>
  devuelta por el nuevo método <code>getParentProfileInstance()</code>.
  Además, tiene la posibilidad de personalizar la pantalla de credenciales de la
  comprobación de trabajo usando los nuevos métodos <code>setOrganizationColor()</code> y
  <code>setOrganizationName()</code>.
</p>
<h3 id="turn_off_work">Desactivación del modo de trabajo </h3>

<p>En dispositivos con perfil de trabajo, los usuarios pueden alternar el modo de trabajo. Cuando este último está
inactivo, el usuario administrado queda deshabilitado temporalmente, con lo cual se desactivan las aplicaciones de perfiles
de trabajo, la sincronización en segundo plano y las notificaciones. Esto incluye la aplicación del propietario del
perfil. Cuando el modo de trabajo está inactivo, en el sistema se muestra un icono de estado persistente
para recordar al usuario que no puede iniciar aplicaciones de trabajo. El lanzador
indica que no es posible acceder a aplicaciones ni widgets de trabajo. </p>

<h3 id="always_on_vpn">Always on VPN </h3>

<p>Los propietarios de dispositivos y perfiles pueden asegurarse de que las aplicaciones de trabajo siempre se conecten
a través de una VPN especificada. El sistema inicia dicha VPN en forma automática después del
inicio del dispositivo.</p>

<p>
  Los nuevos métodos de <code>DevicePolicyManager</code> son
  <code>setAlwaysOnVpnPackage()</code> y
  <code>getAlwaysOnVpnPackage()</code>.
</p>

<p>Debido a que los servicios de VPN pueden enlazarse directamente a través del sistema sin interacción con
aplicaciones, los clientes de VPN deben administrar nuevos puntos de entrada para Always on VPN. Al igual que
antes, los servicios se indican al sistema con una clase <code>android.net.VpnService</code> de acción de coincidencia de filtro
de intenciones. </p>

<p>
  Los usuarios también pueden establecer clientes Always on VPN que implementen métodos
  <code>VPNService</code> en el usuario principal con
  <strong>Settings&gt;More&gt;Vpn</strong>.
</p>

<h2 id="accessibility_enhancements">Mejoras de accesibilidad</h2>

<p>Android N ahora ofrece Vision Settings directamente en la pantalla de Bienvenida para la configuración de
dispositivos nuevos. Esto permite a los usuarios descubrir y configurar de manera mucho más sencilla
funciones de accesibilidad en sus dispositivos, como el gesto de ampliación, el tamaño
de fuente, el tamaño de pantalla y TalkBack. </p>

<p>Al tener estas funciones de accesibilidad una disposición más prominente, es más probable
que tus usuarios prueben tu aplicación con ellas habilitadas. Asegúrate de probar tus aplicaciones
en forma anticipada con esta configuración habilitada. Puedes activarla en Settings &gt;
Accessibility.</p>

<p>Otra posibilidad en Android N: los servicios de accesibilidad ahora pueden asistir a los usuarios con discapacidades
motoras para el uso de la pantalla. La nueva API permite crear servicios con
funciones como el seguimiento de rostros u ojos y la exploración por puntos, entre otros, para satisfacer
las necesidades de estos usuarios.</p>

<p>Para obtener más información, consulta <code>android.accessibilityservice.GestureDescription</code>
	en la <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referencia de la API  </a>descargable.</p>


<h2 id="direct_boot">Inicio directo</h2>

<p>El inicio directo optimiza los tiempos de inicio del dispositivo y permite una funcionalidad
limitada de las aplicaciones aun después de un reinicio inesperado.
Por ejemplo, si un dispositivo cifrado se reinicia mientras el usuario duerme,
este último puede continuar recibiendo en forma normal notificaciones de alarmas, llamadas entrantes y mensajes
registrados. Esto también significa que los servicios de accesibilidad también pueden estar
  disponibles de inmediato después de un reinicio.</p>

<p>El inicio directo aprovecha el cifrado basado en archivos de Android N,
a fin de habilitar políticas de cifrado específicas para datos del sistema y de aplicaciones.
El sistema usa un depósito cifrado por el dispositivo para datos de sistema seleccionados y datos de aplicaciones
explícitamente registrados. En forma predeterminada, se usa un depósito cifrado con credenciales para los
  datos de sistema, los datos de usuario, las aplicaciones y los datos de aplicaciones restantes. </p>

<p>Durante el inicio, el sistema se carga en un modo restringido con acceso únicamente
a datos cifrados por el dispositivo y sin acceso general a aplicaciones o datos.
Si hay componentes que deseas ejecutar en este modo, puedes registrarlos
configurando un marcador en el manifiesto. Después del reinicio, el sistema activa
componentes registrados transmitiendo la intención
 <code>LOCKED_BOOT_COMPLETED</code>. El sistema garantiza que estén disponibles los datos de aplicaciones cifrados por el dispositivo
antes de la desactivación del bloqueo. No es posible acceder a los demás datos hasta que el usuario confirme sus credenciales de pantalla de
  bloqueo para descifrarlos. </p>

Para obtener más información, consulta <a href="{@docRoot}preview/features/direct-boot.html">Inicio directo</a>.</p>
</p>


<h2 id="key_attestation">Atestación de claves</h2>

<p>Los depósitos de claves guardados en hardware proporcionan un método mucho más seguro para crear, almacenar
y usar claves criptográficas en dispositivos Android. Protegen las claves contra funciones del kernel de
Linux, vulnerabilidades potenciales de Android y extracciones
de dispositivos con derechos de administrador.</p>

<p>Para hacer más sencillo y seguro el uso de depósitos de claves guardados en hardware,
en Android N se presenta la atestación de claves. En las aplicaciones y en los servicios que no dependen de los dispositivos se puede usar la atestación
de claves para determinar fehacientemente el almacenamiento de un par de claves RSA o EC se
en hardware, las propiedades de dicho par y las
  limitaciones aplicadas a su uso y validez. </p>

<p>Los servicios que no dependen de los dispositivos y las aplicaciones pueden solicitar información acerca de un par de claves
a través de un certificado de atestación X.509 que debe firmarse con una clave de atestación
válida. La claves de atestación es una clave de firma ECDSA que se
inyecta en el depósito de claves guardado en hardware en la fábrica.
Por lo tanto, un certificado de atestación firmado con una clave de atestación
válida confirma la existencia de un depósito de claves guardado en hardware y de información detallada
  sobre los pares de claves en dicho depósito de claves.</p>

<p>Para asegurarse de que el dispositivo use una imagen segura y oficial de fábrica de
Android, la atestación de claves solicita que el <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
del dispositivo proporcione la siguiente información al <a class="external-link" href="https://source.android.com/security/trusty/index.html">entorno de ejecución
seguro (TEE)</a>:</p>

<ul>
<li>la versión del SO y el nivel de revisión instalados en el dispositivo;</li>
<li>la clave pública de <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> y el estado de bloqueo.</li>
  </ul>

<p>Para obtener más información sobre la función de depósitos de claves guardados en hardware,
consulta la guía de<a href="https://source.android.com/security/keystore/" class="external-link">Depósito de clave guardado en hardware</a>.</p>

<p>Además de la atestación de claves, en Android N también se presentan
  claves enlazadas a huellas digitales no revocadas en la inscripción con estas huellas.</p>

<h2 id="network_security_config">Configuración de seguridad de la red</h2>

<p>En Android N, las aplicaciones pueden personalizar el comportamiento de sus conexiones protegidas (HTTPS y TLS)
en forma segura, sin modificaciones en el código, a través de la
<em>Configuración de seguridad de la red</em> en lugar de las API
convencionales, propensas a generar errores (p. ej., X509TrustManager).</p>

  <p>Funciones admitidas:</p>
<ul>
<li><b>Anclajes de veracidad personalizados:</b> permite personalizar a través a una aplicación las
entidades de certificación (CA) de confianza para las conexiones protegidas; por
ejemplo, certificados con firmas automáticas en particular o un conjunto de CA públicas.
</li>
<li><b>Anulaciones exclusivas de depuración:</b> permite que un desarrollador depure en forma segura
conexiones protegidas de sus aplicaciones sin riesgos adicionales para la base
instalada.
</li>
<li><b>Desactivación de tráfico de Cleartext:</b> permite que una aplicación se proteja a sí misma contra
el uso accidental de tráfico de Cleartext.</li>
<li><b>Fijación de certificados:</b> función avanzada que permite a una aplicación
  limitar las claves de servidores en las que se pueda confiar para conexiones protegidas.</li>
</ul>

<p>Para obtener más información, consulta <a href="{@docRoot}preview/features/security-config.html">Configuración de seguridad de
la red</a>.</p>

<h2 id="default_trusted_ca">Entidad de certificación de confianza predeterminada</h2>

<p>De manera predeterminada, en las aplicaciones orientadas a Android N solo se consideran como confiables los certificados proporcionados por el sistema
y ya no se da esta misma consideración a las entidades de certificación (CA) añadidas por usuarios. En aquellas aplicaciones orientadas a Android
N para las cuales se desee considerar tales CA como válidas, se debe usar la
<a href="{@docRoot}preview/features/security-config.html">Configuración de seguridad de la red</a> a fin de
especificar los términos de confianza de dichas CA.</p>

<h2 id="apk_signature_v2">Esquema de firma de APK v2</h2>

<p>La clase PackageManager ahora admite la verificación de aplicaciones con el esquema
de firma de APK v2. Se trata de un esquema de firma de archivos completos
que agiliza considerablemente la verificación y refuerza las garantías de
  integridad al detectar todos los cambios no autorizados en archivos APK.</p>

<p>Para conservar la compatibilidad con versiones anteriores, se debe firmar un APK con el esquema de firma
v1 (esquema de firma JAR) antes de la firma con el esquema de firma v2.
Si se usa este último, la verificación experimenta errores cuando se firma el APK con un
  certificado adicional después de la firma con el esquema v2. </p>

<p>Se ofrecerá disponibilidad con el esquema de firma de APK v2 más adelante en la N Developer
Preview.</p>

<h2 id="scoped_directory_access">Acceso a directorios determinados</h2>

<p>En Android N, las aplicaciones pueden usar nuevas API para solicitar acceso a directorios de<a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">almacenamiento
externo</a> específicos, incluidos los directorios de medios extraíbles, como las tarjetas
SD. Las nuevas API simplifican enormemente la manera en que tu aplicación accede a directorios
de almacenamiento externo estándares, como <code>Pictures</code>. Las aplicaciones
de fotografía pueden usar estas API en lugar de
<code>READ_EXTERNAL_STORAGE</code>, que otorga acceso a todos los directorios
de almacenamiento, o del framework de acceso a almacenamiento, con el cual el usuario debe navegar hasta
el directorio.</p>

<p>A su vez, las nuevas API simplifican los pasos que un usuario debe seguir para otorgar a tu aplicación acceso a almacenamiento
externo. Cuando se usan las nuevas API, el sistema emplea una IU de
permisos simple en la que se detallan claramente los directorios a los cuales
la aplicación solicita acceso.</p>

<p>Para obtener más información, consulta la documentación sobre 
<a href="{@docRoot}preview/features/scoped-folder-access.html">Acceso
a directorios determinados</a> para desarrolladores.</p>