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 for Developers
meta.tags="preview", "androidn"
page.tags="preview", "developer preview"
page.image=images/cards/card-n-apis_2x.png
@jd:body
<div id="qv-wrapper">
<div id="qv">
<h2>Principais recursos para desenvolvedores</h2>
<ol>
<ul style="list-style-type:none;">
<li><a href="#multi-window_support">Suporte a várias janelas</a></li>
<li><a href="#notification_enhancements">Notificações</a></li>
<li><a href="#jit_aot">Compilação JIT/AOT</a></li>
<li><a href="#quick_path_to_app_install">Caminho rápido para a instalação de aplicativos</a></li>
<li><a href="#doze_on_the_go">Modo soneca em movimento</a></li>
<li><a href="#background_optimizations">Otimizações em segundo plano</a></li>
<li><a href="#data_saver">Economizador de dados</a></li>
<li><a href="#tile_api">Quick Settings Tile API</a></li>
<li><a href="#number-blocking">Bloqueio de números</a></li>
<li><a href="#call_screening">Triagem de chamadas</a></li>
<li><a href="#multi-locale_languages">Localidades e idiomas</a></li>
<li><a href="#icu4">APIs ICU4J no Android</a></li>
<li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
<li><a href="#android_tv_recording">Gravação do Android TV</a></li>
<li><a href="#android_for_work">Android for Work</a></li>
<li><a href="#accessibility_enhancements">Acessibilidade</a></li>
<li><a href="#direct_boot">Inicialização direta</a></li>
<li><a href="#key_attestation">Confirmação de chaves</a></li>
<li><a href="#network_security_config">Configuração de segurança de rede</a></li>
<li><a href="#default_trusted_ca">CA confiável padrão</a></li>
<li><a href="apk_signature_v2">Esquema de assinatura de APK v2</a></li>
<li><a href="#scoped_directory_access">Acessos a diretório com escopo</a></li>
</ol>
</div>
</div>
<p>O Android N ainda está em desenvolvimento ativo. Mas agora é possível experimentá-lo
como parte do N Developer Preview. As sessões a seguir destacam alguns
novos recursos para desenvolvedores. </p>
<p>
Não deixe de conferir as <a href="{@docRoot}preview/behavior-changes.html">Mudanças de comportamento</a> para saber mais sobre as
áreas onde as alterações de plataforma podem afetar os aplicativos, examine os
guias para desenvolvedores para saber mais sobre os principais recursos e faça o download da <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a> para obter detalhes sobre as
novas APIs.
</p>
<h2 id="multi-window_support">Suporte a várias janelas</h2>
<p>No Android N, introduzimos um recurso de multitarefa novo e muito solicitado
na plataforma — o suporte a várias janelas. </p>
<p>Agora os usuários podem abrir dois aplicativos na tela ao mesmo tempo. </p>
<ul>
<li>Em celulares e tablets
executando o Android N, os usuários agora podem executar dois aplicativos lado a lado ou
um acima do outro em modo de tela dividida. Os usuários podem redimensionar os aplicativos arrastando
o divisor entre eles. </li>
<li>Em dispositivos Android TV, os aplicativos podem assumir o <a href="{@docRoot}preview/features/picture-in-picture.html">modo imagem em
imagem</a>, o que permite que continuem a exibir conteúdo enquanto o usuário navega ou
interage com outros aplicativos. Veja abaixo para obter mais informações. </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> Aplicativos executando em modo de tela dividida.
</p>
</div>
<p>O suporte a várias janelas oferece novas formas de envolver os usuários,
particularmente em tablets e outros dispositivos com telas maiores. Você pode até ativar o recurso de arrastar e soltar
no aplicativo para permitir que os usuários arrastem conteúdo de ou para o aplicativo — uma ótima
maneira de aprimorar a experiência do usuário. </p>
<p>É simples adicionar suporte a várias janelas ao aplicativo e configurar a forma com ele
processa a exibição em várias janelas. Por exemplo, você pode especificar as dimensões
mínimas permitidas para a atividade, evitando que os usuários a redimensionem para tamanhos
menores. Também é possível desativar a exibição em várias janelas no aplicativo, o que
garante que o sistema mostrará o aplicativo exclusivamente em modo de tela cheia.</p>
<p>
Para obter mais informações, consulte a documentação para desenvolvedores de
<a href="{@docRoot}preview/features/multi-window.html">Suporte a várias janelas</a>.
</p>
<h2 id="notification_enhancements">Aprimoramentos de notificações</h2>
<p>Reformulamos as notificações no Android N para facilitar e agilizar o seu
uso. Algumas modificações são:</p>
<ul>
<li>
<strong>Atualizações de modelos</strong>: estamos atualizando os modelos de notificação para
colocar mais ênfase na imagem do herói e do avatar. Os desenvolvedores poderão
aproveitar os novos modelos com ajustes mínimos no código.
</li>
<li>
<strong>Notificações empacotadas</strong>: o sistema pode agrupar mensagens
por tópico de mensagem, por exemplo, e exibir o grupo. Um usuário pode
executar ações, como Dismiss ou Archive, nessa exibição de grupo. Se você
já implementou notificações para Android Wear, está familiarizado com
esse modelo.
</li>
<li>
<strong>Resposta direta</strong>: para aplicativos de comunicação em tempo real, o
sistema Android oferece suporte a respostas em linha para que os usuários possam responder rapidamente a
mensagens SMS ou de texto diretamente dentro da interface de notificação.
</li>
<li>
<strong>Visualizações personalizadas</strong>: duas APIs novas permitem utilizar decorações
do sistema, como cabeçalhos e ações de notificação, durante o uso de visualizações
personalizadas em notificações.
</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> Notificações empacotadas e resposta direta.
</p>
<p>Para saber como implementar os novos recursos, consulte o
guia
<a href="{@docRoot}preview/features/notification-updates.html">Notificações</a>.</p>
<h2 id="jit_aot">Compilação JIT/AOT orientada a perfil</h2>
<p>No Android N, adicionamos um compilador Just in Time (JIT) com perfis de código para
ART, o que permite aprimorar constantemente o desempenho de aplicativos Android durante a
execução. O compilador JIT complementa o compilador atual Ahead of Time (AOT) do ART
e ajuda a aprimorar o desempenho em tempo de execução, economizar espaço de armazenamento e acelerar
atualizações de aplicativos e de sistema.</p>
<p>A compilação orientada a perfil permite que o ART gerencie a compilação AOT/JIT de cada aplicativo
de acordo com o uso real e com as condições no dispositivo. Por
exemplo, o ART mantém um perfil dos principais métodos do aplicativo e pode pré-compilar
e armazenar esses métodos em cache para obter o melhor desempenho. As outras partes do aplicativo
não são compiladas até que sejam realmente utilizadas.</p>
<p>Além de aprimorar o desempenho para as principais partes do aplicativo, a compilação
ajuda a reduzir o uso geral de recursos de RAM, incluindo os binários
associados. Esse recurso é particularmente importante em dispositivos com pouca memória.</p>
<p>O ART gerencia a compilação orientada a perfil de forma a minimizar o impacto sobre a
bateria do dispositivo. A pré-compilação é executada apenas quando o dispositivo está ocioso e
com a bateria sendo carregada, economizando tempo e bateria com a execução antecipada dessa tarefa.</p>
<h2 id="quick_path_to_app_install">Caminho rápido para a instalação de aplicativos</h2>
<p>Um dos benefícios mais tangíveis do compilador JIT do ART é a velocidade de instalação dos
aplicativos e das atualizações do sistema. Até mesmo aplicativos grandes, que exigiam diversos minutos para
otimização e instalação no Android 6.0, podem agora ser instalados em
segundos. As atualizações de sistema também ficaram mais rápidas, pois não existe mais a etapa de otimização. </p>
<h2 id="doze_on_the_go">Modo soneca em movimento...</h2>
<p>O Android 6.0 introduziu o modo soneca, um modo de sistema que economiza bateria adiando
atividades de CPU e rede dos aplicativos quando o dispositivo está ocioso, como
quando está em uma mesa ou gaveta. </p>
<p>Agora, no Android N, o modo soneca foi aprimorado e economiza bateria quando em movimento.
Sempre que a tela ficar desativada por um período e o dispositivo ficar desativado,
o modo soneca aplicará um subconjunto das restrições familiares de CPU e rede aos aplicativos.
Isso significa que os usuários podem economizar bateria transportando os dispositivos no
bolso.</p>
<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
<p class="img-caption">
<strong>Figura 3.</strong> O modo soneca agora aplica
restrições para aumentar a vida útil da bateria mesmo quando o dispositivo não está estacionário.
</p>
<p>Pouco depois de a tela ser desativada com o dispositivo alimentado pela bateria, o modo soneca
restringe o acesso de rede e adia trabalhos e sincronizações. Durante breves janelas de
manutenção, os aplicativos podem acessar a rede e todos os
trabalhos/sincronizações adiados são executados. A ativação da tela ou do dispositivo encerra
o modo soneca.</p>
<p>Quando o dispositivo voltar a ficar estacionário, com a tela desativada e alimentado por bateria por um
período, o modo soneca aplicará as restrições completas de CPU e rede em {@link
android.os.PowerManager.WakeLock}, alarmes {@link android.app.AlarmManager} e
verificações de GPS/Wi-Fi.</p>
<p>As práticas recomendadas para adaptar o aplicativo ao modo soneca são as mesmas para
dispositivos estacionários ou em movimento. Portanto, se você já atualizou o aplicativo para
processar o modo soneca corretamente, está pronto. Caso contrário, comece a <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">adaptar
o aplicativo para o modo soneca</a> agora.</p>
<h2 id="background_optimizations">Project Svelte: otimizações em segundo plano</h2>
<p>O Project Svelte é um esforço contínuo para minimizar o uso de RAM pelo sistema e pelos aplicativos
nos dispositivos Android existentes no ecossistema. No Android N, o Project
Svelte se concentra em otimizar a forma de execução dos aplicativos em segundo plano. </p>
<p>O processamento em segundo plano é uma parte essencial da maioria dos aplicativos. Quando executado corretamente, a experiência
do usuário pode ficar incrível — imediata, rápida e sensível ao contexto.
Quando executado incorretamente, o processamento em segundo plano pode consumir desnecessariamente RAM (e
bateria) e afetar o desempenho do sistema para os outros aplicativos. </p>
<p>Desde o Android 5.0, {@link android.app.job.JobScheduler} é a forma
preferencial para execução de trabalho em segundo plano de uma maneira que beneficia
os usuários. Os aplicativos podem agendar trabalhos e permitir que o sistema execute otimizações com base em
condições de memória, energia e conectividade. O JobScheduler oferece controle
e simplicidade, e queremos que seja usado por todos os aplicativos. </p>
<p>
Outra boa opção é o <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
<code>GCMNetworkManager</code></a>, parte do Google Play Services, que
oferece um agendamento de trabalhos similar, compatível com versões legadas do
Android.
</p>
<p>Continuamos a expandir o <code>JobScheduler</code> e o
<code>GCMNetworkManager</code> para atender a mais
casos de uso — por exemplo, no Android N, você já pode agendar trabalhos
em segundo plano de acordo com mudanças nos provedores de conteúdo. Ao mesmo tempo, começamos a
substituir alguns padrões mais antigos que podem reduzir o desempenho do sistema,
particularmente em dispositivos com pouca memória.</p>
<p>No Android N, estamos removendo três transmissões implícitas de uso comum —
{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
android.hardware.Camera#ACTION_NEW_PICTURE} e {@link
android.hardware.Camera#ACTION_NEW_VIDEO} —, pois podem despertar simultaneamente
processos em segundo plano de vários aplicativos, aumentando o consumo de memória e bateria. Se
o seu aplicativo receber essas transmissões, aproveite o N Developer Preview para
migrar para o <code>JobScheduler</code> e as APIs relacionadas. </p>
<p>
Consulte a documentação de <a href="{@docRoot}preview/features/background-optimization.html">Otimizações
em segundo plano</a> para obter mais detalhes.
</p>
<h2 id="data_saver">Economizador de dados</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> O Economizador de dados em Settings.
</p>
</div>
<p>Normalmente, o custo de um plano de dados de celular ao longo da vida útil do dispositivo móvel
excede o custo do próprio dispositivo. Para muitos usuários, os dados de celular
são um recurso caro que querem economizar. </p>
<p>O Android N introduz o modo Economizador de dados, um novo serviço do sistema que ajuda a reduzir
o uso de dados de celular pelos aplicativos em situações de roaming, perto do final do ciclo de cobrança
ou em pacotes de dados pré-pagos pequenos. O Economizador de dados permite que os usuários controlem o
uso de dados de celular e possibilita que os desenvolvedores ofereçam serviços mais eficientes quando o modo Economizador
de dados estiver ativado. </p>
<p>Quando um usuário ativa o Economizador de dados em <strong>Settings</strong> e o dispositivo está
em uma rede tarifada, o sistema bloqueia o uso de dados em segundo plano e avisa aos aplicativos
para reduzir o uso de dados no primeiro plano sempre que possível — como, por exemplo, limitar a
taxa de bits de streaming, reduzir a qualidade de imagens, adiar o armazenamento prévio otimista em cache
e assim por diante. Os usuários podem autorizar aplicativos específicos a usar dados tarifados em segundo plano,
mesmo com o Economizador de dados ativado.</p>
<p>O Android N estende o {@link android.net.ConnectivityManager} para oferecer aos aplicativos uma
forma de <a href="{@docRoot}preview/features/data-saver.html#status">recuperar as
preferências do usuário para o Economizador de dados</a> e <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">monitorar
as mudanças de preferências</a>. Todos os aplicativos devem verificar se o usuário ativou o Economizador
de dados e tentar limitar o uso de dados em primeiro e segundo plano.</p>
<h2 id="tile_api">Quick Settings Tile API</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> Blocos de Configurações rápidas na aba de notificações.
</p>
</div><p>As Configurações rápidas são uma forma popular e simples de expor as principais configurações e ações
diretamente na aba de notificações. No Android N, ampliamos o escopo das
Configurações rápidas para aumentar ainda mais a utilidade e a conveniência. </p>
<p>Adicionamos mais espaço para os blocos de Configurações rápidas, que os usuários podem
acessar em uma área de exibição paginada deslizando à direita ou à esquerda. Além disso,
permitimos que os usuários controlem quais blocos de Configurações rápidas são exibidos, bem como o local
em que são exibidos — para adicionar ou mover blocos, os usuários simplesmente arrastam e largam os blocos. </p>
<p>Para desenvolvedores, o Android N também adiciona uma API nova que permite definir os próprios
blocos de Configurações rápidas para que os usuários possam acessar facilmente os principais controles e ações do seu aplicativo.</p>
<p>
Os blocos de Configurações rápidas estão reservados para controles ou ações que são
urgentemente necessários ou frequentemente usados e não devem ser usados como atalhos para
iniciar aplicativos.
</p>
<p>
Após definir os blocos, você pode disponibilizá-los aos usuários, que por sua vez podem adicioná-los
às Configurações rápidas usando o recurso de arrastar e soltar.
</p>
<p>
Para obter informações sobre a criação de um bloco de aplicativo, consulte
<code>android.service.quicksettings.Tile</code> na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.
</p>
<h2 id="number-blocking">Bloqueio de números</h2>
<p>O Android N agora oferece suporte a bloqueio de números na plataforma e disponibiliza uma
API de estrutura para permitir que provedores de serviço mantenham uma lista de números bloqueados. O
aplicativo padrão de SMS, o aplicativo padrão de telefone e os aplicativos de provedor podem ler e gravar
a lista de números bloqueados. A lista não pode ser acessada por outros aplicativos.</p>
<p>Ao oferecer o bloqueio de número como recurso padrão da plataforma, o Android oferece
uma forma consistente de bloqueio de números em uma grande variedade de
dispositivos. Alguns benefícios que podem ser aproveitados pelos aplicativos são:</p>
<ul>
<li> Números bloqueados nas chamadas também são bloqueados nos textos
<li> Números bloqueados podem persistir entre várias redefinições e dispositivos por meio do
recurso Backup e restauração
<li> Vários aplicativos podem usar a mesma lista de números bloqueados
</ul>
<p>Além disso, a integração de aplicativos da operadora por meio do Android significa que as operadoras podem
ler a lista de números bloqueados no dispositivo e executar um bloqueio do lado do servidor
para o usuário, impedindo que chamadas e textos indesejados cheguem a ele
por qualquer meio, como pontos finais de VOIP ou encaminhamento de telefones.</p>
<p>
Para obter mais informações, consulte <code>android.provider.BlockedNumberContract</code>
na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>,
disponível para download.
</p>
<h2 id="call_screening">Triagem de chamadas</h2>
<p>
O Android N permite que o aplicativo de telefone padrão faça triagem das chamadas recebidas. O aplicativo
de telefone faz isso implementando o novo <code>CallScreeningService</code>,
que permite que a execução de diversas ações com base nos
{@link android.telecom.Call.Details Call.Details} da chamada recebida, como:
</p>
<ul>
<li> Rejeitar a chamada recebida
<li> Não incluir a chamada no registro de chamadas
<li> Não mostrar ao usuário a notificação da chamada
</ul>
<p>
Para obter mais informações, consulte <code>android.telecom.CallScreeningService</code>
na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>,
disponível para download.
</p>
<h2 id="multi-locale_languages">Suporte a diversas localidades, mais idiomas</h2>
<p>O Android N agora permite que os usuários selecionem <strong>diversas localidades</strong> em Settings
para oferecer melhor suporte a casos de uso bilíngues. Os aplicativos podem usar
uma API nova para obter as localidades selecionadas pelo usuário e oferecer
experiências de usuário mais sofisticadas para usuários com diversas localidades — como, por exemplo, mostrar resultados de pesquisa em
diversos idiomas e não oferecer a tradução de páginas da web que usam
um idioma conhecido pelo usuário.</p>
<p>Juntamente com o suporte a várias localidades, o Android N também amplia o número de idiomas
disponíveis aos usuários. Ele oferece mais de 25 variantes para cada um dos idiomas
mais comuns, como inglês, espanhol, francês e árabe. Além disso, ele adiciona suporte
parcial a mais de 100 novos idiomas.</p>
<p>Os aplicativos podem obter a lista de localidades definida pelo usuário chamando <code>LocaleList.GetDefault()</code>. Para oferecer suporte ao maior número de localidades, o Android N está alterando a forma
como resolve recursos. Não deixe de testar e verificar se seus aplicativos
funcionam da forma esperada com a nova lógica de resolução de recursos.</p>
<p>Para saber mais sobre o novo comportamento de resolução de recursos e sobre as práticas recomendadas que você deve
seguir, consulte <a href="{@docRoot}preview/features/multilingual-support.html">Suporte a vários idiomas</a>.</p>
<h2 id="icu4">APIs ICU4J no Android</h2>
<p>
O Android N oferece agora um subconjunto das APIs <a href="http://site.icu-project.org/">ICU4J</a> na estrutura do Android no
pacote <code>android.icu</code>. A migração é simples e consiste principalmente em
alterar o espaço de nome <code>com.java.icu</code> para
<code>android.icu</code>. Se você já usa um pacote ICU4J nos seus
aplicativos, a mudança para as APIs do <code>android.icu</code> disponibilizadas na estrutura do
Android pode reduzir substancialmente o tamanho do APK.
</p>
<p>
Para saber mais sobre as APIs ICU4J no Android, consulte <a href="{@docRoot}preview/features/icu4j-framework.html">Suporte ao ICU4J</a>.
</p>
<h2 id="gles_32">OpenGL™ ES 3.2 API</h2>
<p>O Android N adiciona interfaces de estrutura e suporte de plataforma ao OpenGL ES 3.2, incluindo:</p>
<ul>
<li> Todas as extensões do <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Pacote de extensão Android</a></a> (AEP), exceto <code>EXT_texture_sRGB_decode</code>.
<li> Framebuffers de ponto flutuante para HDR e sombreamento adiado.
<li> Chamadas de desenho a BaseVertex para possibilitar melhor organização em lotes e transmissão.
<li> Controle robusto de acesso a buffers para reduzir a sobrecarga do WebGL.
</ul>
<p>A API da estrutura do OpenGL ES 3.2 no Android N é fornecida pela classe
<code>GLES32</code>. Ao usar o OpenGL ES 3.2, não deixe de declarar o
requisito no arquivo manifesto usando a tag <code><uses-feature></code> e o
atributo <code>android:glEsVersion</code>. </p>
<p>Para obter mais informações sobre como usar o OpenGL ES, incluindo como verificar a versão do
OpenGL ES compatível do dispositivo no tempo de execução, consulte o <a href="{@docRoot}guide/topics/graphics/opengl.html">guia da OpenGL ES API</a>.</p>
<h2 id="android_tv_recording">Gravação do Android TV</h2>
<p>O Android N adiciona a capacidade de gravar e reproduzir conteúdo de serviços de entrada
do Android TV por meio de novas APIs de gravação. Criados usando as APIs atuais de time-shifting,
os serviços de entrada de TV podem controlar quais dados de canal são gravados e como
as sessões gravadas são salvas, bem como gerenciar a interação do usuário com o conteúdo gravado. </p>
<p>Para obter mais informações, consulte <a href="{@docRoot}preview/features/tv-recording-api.html">APIs de gravação do Android TV</a>.</p>
<h2 id="android_for_work">Android for Work</h2>
<p>O Android for Work adiciona vários recursos e APIs para dispositivos que executam o Android N.
Veja a seguir alguns destaques — para obter uma lista completa das atualizações do Android for Work
relacionadas ao Android N, consulte Mudanças no Android for Work.</p>
<h3 id="work_profile_security_challenge">Desafio de segurança de perfil de trabalho </h3>
<p>
Os donos de perfil podem especificar um desafio de segurança separado para os aplicativos executados no
perfil de trabalho. O desafio de trabalho será mostrado quando o usuário tentar abrir
qualquer aplicativo de trabalho. A resolução bem-sucedida do desafio de segurança desbloqueia e,
se necessário, descriptografa o perfil de trabalho. Para donos de perfil,
<code>ACTION_SET_NEW_PASSWORD</code> solicita que o usuário defina um desafio
de trabalho e <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> um
bloqueio de dispositivo.
</p>
<p>
Os donos de perfil podem definir políticas de senha distintas para o desafio de trabalho
(como o comprimento mínimo do PIN ou se é permitido usar uma impressão digital
para desbloquear o perfil) usando <code>setPasswordQuality()</code>,
<code>setPasswordMinimumLength()</code> e métodos relacionados. O dono
de perfil também pode definir o bloqueio de dispositivo usando a instância de <code>DevicePolicyManager</code>
retornada pelo novo método <code>getParentProfileInstance()</code>.
Além disso, donos de perfil podem personalizar a tela de credenciais do
desafio de trabalho usando os novos métodos <code>setOrganizationColor()</code> e
<code>setOrganizationName()</code>.
</p>
<h3 id="turn_off_work">Desativar o trabalho </h3>
<p>Os usuários podem alternar o modo de trabalho em dispositivos com um perfil de trabalho. Quando o modo de trabalho está
desativado, o usuário gerenciado é encerrado temporariamente, o que desativa
os aplicativos, a sincronização em segundo plano e as notificações do perfil de trabalho, inclusive o aplicativo
do dono do perfil. Quando o modo de trabalho está desativado, o sistema exibe um ícone de status
persistente para lembrar ao usuário que não é possível iniciar aplicativos de trabalho. A tela de início
indica que os aplicativos e widgets de trabalho não podem ser acessados. </p>
<h3 id="always_on_vpn">Always on VPN </h3>
<p>Os donos de dispositivo e perfil podem garantir que os aplicativos de trabalho se conectem sempre
por meio de uma VPN especificada. O sistema inicia automaticamente a VPN após a
inicialização do dispositivo.</p>
<p>
Os novos métodos <code>DevicePolicyManager</code> são
<code>setAlwaysOnVpnPackage()</code> e
<code>getAlwaysOnVpnPackage()</code>.
</p>
<p>Como os serviços de VPN podem ser vinculados diretamente pelo sistema sem interação com
aplicativos, os clientes de VPN precisam processar novos pontos de entrada para o Always on VPN. Da
mesma forma que antes, os serviços são indicados ao sistema por um filtro de intenção correspondente
à ação <code>android.net.VpnService</code>. </p>
<p>
Além disso, os usuários podem definir manualmente clientes do Always on VPN que implementam
métodos <code>VPNService</code> no usuário principal usando
<strong>Settings>More>Vpn</strong>.
</p>
<h2 id="accessibility_enhancements">Aprimoramentos na acessibilidade</h2>
<p>O Android N agora oferece Configurações de visão diretamente na tela de boas-vindas na instalação
de novos dispositivos. Isso permite que os usuários descubram e configurem recursos de acessibilidade
em seus dispositivos de forma muito mais fácil, incluindo gesto de ampliação, tamanho
da fonte, tamanho da tela e TalkBack. </p>
<p>Com o posicionamento mais proeminente desses recursos de acessibilidade, os usuários
ficarão mais propensos a experimentar o aplicativo com os recursos ativados. Não deixe de testar antecipadamente os aplicativos
com essas configurações ativadas. Você pode ativá-las em Settings >
Accessibility.</p>
<p>Além disso, os serviços de acessibilidade no Android N podem ajudar usuários com deficiências
motoras a tocar na tela. A nova API permite criar serviços com
recursos como acompanhamento de face, acompanhamento de olho e varredura de pontos, entre outros, para
atender às necessidades desses usuários.</p>
<p>Para obter mais informações, consulte <code>android.accessibilityservice.GestureDescription</code>
na <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referência da API</a>, disponível para download.</p>
<h2 id="direct_boot">Inicialização direta</h2>
<p>A inicialização direta reduz os tempos de inicialização dos dispositivos e permite que aplicativos
registrados tenham funcionalidade limitada, mesmo após uma reinicialização inesperada.
Por exemplo, se um dispositivo criptografado reinicializar durante o sono do usuário,
alarmes registrados, mensagens e chamadas recebidas podem agora continuar notificando
o usuário normalmente. Isso também significa que serviços de acessibilidade podem ser
disponibilizados imediatamente após um reinício.</p>
<p>A inicialização direita aproveita a criptografia baseada em arquivo do Android N
para ativar políticas de criptografia detalhadas para dados de sistema e aplicativos.
O sistema usa um armazenamento criptografado pelo dispositivo para determinados dados de sistema e dados
de aplicativos registrados explicitamente. Por padrão, um armazenamento criptografado por credencial é usado para todos
os outros dados de sistema, dados de usuário, aplicativos e dados de aplicativos. </p>
<p>Na inicialização, o sistema inicia em um modo restrito que permite
acessar apenas dados criptografados pelo dispositivo, sem acesso geral a aplicativos ou dados.
Se você deseja executar componentes nesse modo, pode registrá-los
definindo um sinalizador no manifesto. Após a reinicialização, o sistema ativa
componentes registrados transmitindo a intenção
<code>LOCKED_BOOT_COMPLETED</code>. O sistema garante que dados de aplicativos registrados criptografados pelos dispositivos sejam disponibilizados
antes do destravamento. Todos os outros dados ficarão indisponíveis até que o usuário confirme suas
credenciais de tela de bloqueio para descriptografá-los. </p>
Para obter mais informações, consulte <a href="{@docRoot}preview/features/direct-boot.html">Inicialização direta</a>.</p>
</p>
<h2 id="key_attestation">Confirmação de chaves</h2>
<p>Os armazenamentos de chaves protegidos por hardware oferecem um método muito mais seguro para criar, armazenar
e usar chaves de criptografia em dispositivos Android. Eles protegem chaves contra o
kernel do Linux, possíveis vulnerabilidades do Android e extração em
dispositivos com acesso root.</p>
<p>Para permitir o uso de armazenamento de chaves protegido por hardware com maior facilidade e segurança,
o Android N introduziu a confirmação de chaves. Aplicativos em dispositivos móveis e fora deles podem usar a confirmação
de chaves para determinar com precisão se um par de chaves RSA ou EC está
protegido por hardware, quais as propriedades do par de chaves e quais
as restrições aplicadas ao uso e à validação. </p>
<p>Aplicativos e serviços externos aos dispositivos móveis podem solicitar informações sobre um par de chaves
por meio de um certificado de confirmação X.509, que deve estar assinado por uma
chave de confirmação válida. A chave de confirmação é uma chave de assinatura ECDSA,
injetada no armazenamento de chaves protegido por hardware do dispositivo na fábrica.
Portanto, um certificado de confirmação assinado com uma chave de confirmação
válida confirma a existência de um armazenamento de chaves protegido por hardware, além de
detalhes dos pares de chaves desse armazenamento de chaves.</p>
<p>Para garantir que o dispositivo esteja usando uma imagem Android oficial de fábrica
e segura, a confirmação de chaves exige que o <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a>
do dispositivo forneça as seguintes informações ao <a class="external-link" href="https://source.android.com/security/trusty/index.html">Ambiente
de execução confiável (TEE)</a>:</p>
<ul>
<li>A versão do sistema operacional e o nível de correção instalado no dispositivo</li>
<li>A chave pública <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> e seu status de bloqueio</li>
</ul>
<p>Para obter mais informações sobre o recurso de armazenamento de chaves protegido por hardware,
consulte o guia <a href="https://source.android.com/security/keystore/" class="external-link">Armazenamento de chaves protegido por hardware</a>.</p>
<p>Além da confirmação de chaves, o Android N também introduziu
chaves associadas a impressões digitais que não são revogadas no cadastramento de impressões digitais.</p>
<h2 id="network_security_config">Configuração de segurança de rede</h2>
<p>No Android N, os aplicativos podem personalizar o comportamento de conexões seguras (HTTPS, TLS)
de forma segura, sem modificação no código, usando a
<em>Configuração de segurança de rede</em> declarativa em vez das
APIs programáticas propensas a erro (por exemplo, X509TrustManager).</p>
<p>Recursos compatíveis:</p>
<ul>
<li><b>Âncoras confiáveis personalizadas.</b> Permitem que um aplicativo personalize quais
Autoridades de certificado (CA) são confiáveis para suas conexões seguras. Por
exemplo, confiar em determinados certificados autoassinados ou em um conjunto restrito de CAs públicas.
</li>
<li><b>Substituições apenas em depuração.</b> Permite que um desenvolvedor de aplicativos depure
conexões seguras do aplicativo com segurança, sem adicionar riscos à base
instalada.
</li>
<li><b>Cancelamento do uso de tráfego de texto simples.</b> Permite que um aplicativo seja proteja contra
o uso acidental de tráfego de texto simples.</li>
<li><b>Fixação de certificados.</b> Um recurso avançado que permite que os aplicativos
limitem quais chaves de servidor são confiáveis para conexões seguras.</li>
</ul>
<p>Para obter mais configurações, consulte <a href="{@docRoot}preview/features/security-config.html">Configuração de segurança
de rede</a>.</p>
<h2 id="default_trusted_ca">Autoridade de certificado confiável padrão</h2>
<p>Por padrão, os aplicativos direcionados ao Android N confiam apenas em certificados fornecidos pelo sistema
e não confiam mais em Autoridades de certificado (CA) adicionadas pelo usuário. Os aplicativos direcionados ao Android
N que querem confiar em CAs adicionadas pelo usuário devem usar a
<a href="{@docRoot}preview/features/security-config.html">Configuração de segurança de rede</a> para
especificar como confiar nas CAs de usuário.</p>
<h2 id="apk_signature_v2">Esquema de assinatura de APK v2</h2>
<p>A classe PackageManager agora permite a verificação de aplicativos usando o
esquema de assinatura de APK v2. O esquema de assinatura APK v2 é um esquema de assinatura integral de arquivos
que acelera consideravelmente a verificação e fortalece as garantias
de integridade, detectando qualquer alteração não autorizada em arquivos APK.</p>
<p>Para manter a compatibilidade com versões anteriores, o APK deve ser assinado com o esquema de assinatura
v1 (esquema de assinatura JAR) antes de ser assinado com o esquema de assinatura v2.
Com o esquema de assinatura v2, a verificação falhará se você assinar o APK com um
certificado adicional após assiná-lo com o esquema v2. </p>
<p>O suporte ao esquema de assinatura de APK v2 será disponibilizado posteriormente no N Developer
Preview.</p>
<h2 id="scoped_directory_access">Acessos a diretório com escopo</h2>
<p>No Android N, os aplicativos podem usar novas APIs para solicitar acesso a diretórios de <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">armazenamento
externo</a>, incluindo diretórios em mídia removível como cartões
SD. As novas APIs simplificam substancialmente o acesso de aplicativos a diretórios de
armazenamento externo padrão, como o diretório <code>Pictures</code>. Os aplicativos,
como aplicativos de fotografia, podem usar essas APIs em vez de
<code>READ_EXTERNAL_STORAGE</code>, que concede acesso a todos os diretórios de
armazenamento, ou da Estrutura de acesso ao armazenamento, que faz o usuário navegar até
o diretório.</p>
<p>Além disso, as novas APIs simplificam as etapas executadas pelo usuário para conceder ao aplicativo
acesso ao armazenamento externo. Quando você usa as novas APIs, o sistema usa uma IU
de permissões simples que detalha claramente a qual diretório o aplicativo
está solicitando acesso.</p>
<p>Para obter mais informações, consulte a documentação para desenvolvedores
<a href="{@docRoot}preview/features/scoped-folder-access.html">Acessos
a diretório com escopo</a>.</p>
|