diff options
Diffstat (limited to 'docs/html-intl/intl/pt-br/preview/api-overview.jd')
-rw-r--r-- | docs/html-intl/intl/pt-br/preview/api-overview.jd | 521 |
1 files changed, 521 insertions, 0 deletions
diff --git a/docs/html-intl/intl/pt-br/preview/api-overview.jd b/docs/html-intl/intl/pt-br/preview/api-overview.jd new file mode 100644 index 0000000..33e8c1f --- /dev/null +++ b/docs/html-intl/intl/pt-br/preview/api-overview.jd @@ -0,0 +1,521 @@ +page.title=Visão geral da API +page.keywords=preview,sdk,compatibility +page.tags=previewresources, androidm +sdk.platform.apiLevel=22-mnc +page.image=images/cards/card-api-overview_16-9_2x.png +@jd:body + + +<div id="qv-wrapper"> +<div id="qv"> + +<h2>Neste documento + <a href="#" onclick="hideNestedItems('#toc44',this);return false;" class="header-toggle"> + <span class="more">mostrar mais</span> + <span class="less" style="display:none">mostrar menos</span></a></h2> + +<ol id="toc44" class="hide-nested"> + <li><a href="#app-linking">Vínculo de aplicativo</a></li> + <li><a href="#backup">Backup automático para aplicativos</a></li> + <li><a href="#authentication">Autenticação</a> + <ol> + <li><a href="#fingerprint-authentication">Autenticação com impressão digital</a></li> + <li><a href="#confirm-credential">Confirmação de credencial</a></li> + </ol> + </li> + <li><a href="#direct-share">Compartilhamento direto</a></li> + <li><a href="#voice-interactions">Interações por voz</a></li> + <li><a href="#assist">Auxiliar API</a></li> + <li><a href="#notifications">Notificações</a></li> + <li><a href="#bluetooth-stylus">Suporte para Bluetooth Stylus</a></li> + <li><a href="#ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</a></li> + <li><a href="#hotspot">Suporte a Hotspot 2.0 Release 1</a></li> + <li><a href="#4K-display">Modo de exibição 4K</a></li> + <li><a href="#behavior-themeable-colorstatelists">ColorStateLists com tema</a></li> + <li><a href="#audio">Recursos de áudio</a></li> + <li><a href="#video">Recursos de vídeo</a></li> + <li><a href="#camera">Recursos de câmera</a> + <ol> + <li><a href="#flashlight">API da lanterna</a></li> + <li><a href="#reprocessing">Reprocessamento da câmera</a></li> + </ol> + </li> + <li><a href="#afw">Recursos do Android for Work</a></li> +</ol> + +<h2>Diferenças de API</h2> +<ol> +<li><a href="{@docRoot}preview/download.html">API de nível 22 para M Preview »</a> </li> +</ol> + +</div> +</div> + +<p>O M Developer Preview fornece uma visualização avançada no próximo lançamento + para a plataforma Android, oferecendo novos recursos para desenvolvedores e usuários +de aplicativos. Este documento fornece uma introdução às APIs mais notáveis.</p> + +<p>O M Developer Preview foi feito para <strong>novos desenvolvedores +adotantes</strong> e <strong>testadores</strong>. Caso tenha interesse + em influenciar a direção da estrutura do Android, +<a href="{@docRoot}preview/setup-sdk.html">experimente o M Developer + Preview</a> e envie-nos feedback!</p> + +<p class="caution"><strong>Cuidado:</strong> não publique aplicativos +que usam o M Developer Preview na Google Play Store.</p> + +<p class="note"><strong>Observação:</strong> este documento frequentemente +menciona classes e métodos que ainda não possuem material de referência disponível em <a href="{@docRoot}">developer.android.com</a>. Esses elementos de API +são formatados em {@code code style} neste documento (sem hyperlinks). Para a +documentação de API preliminar destes elementos, faça o download da <a href="{@docRoot}preview/download.html#docs">referência da prévia</a>.</p> + +<h3>Alterações importantes de comportamento</h3> + +<p>Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado +pelas alterações na plataforma.</p> + +<p>Consulte <a href="behavior-changes.html">alterações de comportamento</a> para obter mais informações.</p> + +<h2 id="app-linking">Vínculo de aplicativo</h2> +<p>Esta prévia aprimora o sistema de intenções do Android fornecendo vínculo de aplicativo mais poderoso. +Este recurso permite que você associe um aplicativo com um domínio de web próprio. Com base nesta +associação, a plataforma pode determinar o aplicativo padrão a ser usado para lidar com um link da web +em particular e ignorar a solicitação aos usuários para selecionar um aplicativo. Para aprender como implementar este aplicativo, consulte +<a href="{@docRoot}preview/features/app-linking.html">vínculo de aplicativo</a>. + +<h2 id="backup">Backup automático para aplicativos</h2> +<p>O sistema agora realiza backup automático completo de dados e restauração para aplicativos. Este comportamento +é ativado por padrão para aplicativos com M Preview; não é necessário mais código adicional. Se +os usuários excluírem as contas da Google, os dados de backup também serão excluídos. Para aprender como este recurso +funciona e como configurar o backup no sistema do arquivo, consulte +<a href="{@docRoot}preview/backup/index.html">backup automático para aplicativos</a>.</p> + +<h2 id="authentication">Autenticação</h2> +<p>Esta prévia oferece novas APIs para permitir que você autentique os usuários usando digitalizadores de impressão digital em dispositivos +suportados e verifique o quão recentemente os usuários autenticaram pela última vez usando o +mecanismo de desbloqueio por dispositivo (como senha de tela de bloqueio). Use essas APIs em conjunto com +o <a href="{@docRoot}training/articles/keystore.html">sistema Android Keystore</a>.</p> + +<h3 id="fingerprint-authentication">Autenticação com impressão digital</h3> + +<p>Para autenticar os usuários por meio de digitalização de impressão digital, adquira uma instância da nova classe +{@code android.hardware.fingerprint.FingerprintManager} e chame o método +{@code FingerprintManager.authenticate()}. O aplicativo deve ser executado em um dispositivo +compatível com sensor de impressão digital. Deve-se implementar a interface do usuário para o fluxo de autenticação +de impressão digital no aplicativo e usar o ícone de impressão digital padrão do Android na IU. +O ícone de impressão digital do Android ({@code c_fp_40px.png}) é incluído no +<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link">aplicativo de exemplo</a>. Caso esteja desenvolvendo vários aplicativos que usam +autenticação de impressão digital, observe que cada aplicativo deve autenticar a impressão digital do usuário independentemente. +</p> + +<p>Para usar este recurso no aplicativo, adicione primeiro a permissão {@code USE_FINGERPRINT} no +manifesto.</p> + +<pre> +<uses-permission + android:name="android.permission.USE_FINGERPRINT" /> +</pre> + +<img src="{@docRoot}preview/images/fingerprint-screen.png" srcset="{@docRoot}preview/images/fingerprint-screen.png 1x, {@docRoot}preview/images/fingerprint-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" /> + +<p>Para ver a implementação do aplicativo da autenticação com impressão digital, consulte o +<a href="https://github.com/googlesamples/android-FingerprintDialog" class="external-link"> + exemplo de caixa de diálogo de impressão digital</a>.</p> + +<p>Caso esteja testando este recurso, siga estas etapas:</p> +<ol> +<li>Instale o Android SDK Tools Revision 24.3, caso ainda não tenha instalado.</li> +<li>Registre uma nova impressão digital no emulador acessando +<strong>Configurações > Segurança > Impressão digital</strong> e, em seguida, siga as instruções de registro.</li> +<li>Use um emulador para emular eventos de toque de dedo com o +comando a seguir. Use o mesmo comando para emular os eventos de toque de impressão digital na tela de +bloqueio ou no aplicativo. +<pre class="no-prettyprint"> +adb -e emu finger touch <finger_id> +</pre> +<p>No Windows, talvez seja necessário executar {@code telnet 127.0.0.1 <emulator-id>} seguido de +{@code finger touch <finger_id>}. +</p> +</li> +</ol> + +<h3 id="confirm-credential">Confirmação de credencial</h3> +<p>O aplicativo pode autenticar os usuários com base no quão recentemente o dispositivo foi desbloqueado pela última vez. Este +recurso libera o usuário de ter que lembrar de senhas específicas de aplicativo extras e evita +a necessidade de implementar a própria interface do usuário de autenticação. O aplicativo deve usar este recurso +em conjunto com uma implementação de chave secreta ou pública para a implementação de usuário.</p> + +<p>Para definir uma duração de tempo limite em que a mesma chave pode ser usada novamente +após o usuário autenticar, chame o novo método +{@code android.security.keystore.KeyGenParameterSpec.setUserAuthenticationValidityDurationSeconds()} + ao definir um {@link javax.crypto.KeyGenerator} ou +{@link java.security.KeyPairGenerator}. Este recurso funciona para operações criptográficas +simétricas.</p> + +<p>Evite exibir o diálogo de nova autenticação excessivamente — os aplicativos devem tentar +usar o objeto criptográfico primeiro e, se o tempo limite expirar, usar o método +{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} + para autenticar novamente o usuário dentro do aplicativo. +</p> + +<p>Para ver uma implementação de aplicativo deste recurso, consulte o +<a href="https://github.com/googlesamples/android-ConfirmCredential" class="external-link"> +exemplo de confirmação de credencial</a>.</p> + +<h2 id="direct-share">Compartilhamento direto</h2> + +<img src="{@docRoot}preview/images/direct-share-screen.png" srcset="{@docRoot}preview/images/direct-share-screen.png 1x, {@docRoot}preview/images/direct-share-screen_2x.png 2x" style="float:right; margin:0 0 20px 30px" width="312" height="329" /> + +<p>Esta prévia fornece as APIs para tornar o compartilhamento intuitivo e rápido para os usuários. É possível +definir os <em>alvos de compartilhamento direto</em> que iniciam uma atividade específica no aplicativo. +Esses alvos de compartilhamento direto são expostos aos usuários por meio do menu <em>Compartilhar</em>. Este recurso permite que os usuários +compartilhem conteúdos aos alvos, como contatos, dentro de outros aplicativos. Por exemplo: o alvo de compartilhamento direto +pode iniciar uma atividade em outro aplicativo de rede social, o que permite que o usuário compartilhe o conteúdo diretamente +para um amigo ou comunidade específica neste aplicativo.</p> + +<p>Para ativar os alvos de compartilhamento direto, deve-se definir uma classe que estende a classe +{@code android.service.} <br> +{@code chooser.ChooserTargetService}. Declare o +{@code ChooserTargetService} no manifesto. Dentro desta declaração, especifique a permissão +{@code BIND_CHOOSER_TARGET_SERVICE} e um filtro de intenções na ação +{@code SERVICE_INTERFACE}.</p> +<p>O seguinte exemplo mostra como se deve declarar o {@code ChooserTargetService} no +manifesto.</p> +<pre> +<service android:name=".ChooserTargetService" + android:label="@string/service_name" + android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> + <intent-filter> + <action android:name="android.service.chooser.ChooserTargetService" /> + </intent-filter> +</service> +</pre> + +<p>Para cada atividade que quiser expor ao {@code ChooserTargetService}, adicione um elemento +{@code <meta-data>} com o nome +{@code "android.service.chooser.chooser_target_service"} no manifesto do aplicativo. +</p> + +<pre> +<activity android:name=".MyShareActivity” + android:label="@string/share_activity_label"> + <intent-filter> + <action android:name="android.intent.action.SEND" /> + </intent-filter> +<meta-data + android:name="android.service.chooser.chooser_target_service" + android:value=".ChooserTargetService" /> +</activity> +</pre> + +<h2 id="voice-interactions">Interações por voz</h2> +<p> +Esta prévia fornece uma API de interação por voz que, junto com +<a href="https://developers.google.com/voice-actions/" class="external-link">ações de voz</a> +, permite a criação de experiências por voz nos aplicativos. Chame o método +{@code android.app.Activity.isVoiceInteraction()} para determinar se a atividade +foi iniciada em resposta à ação de voz. Caso tenha sido iniciada, o aplicativo pode usar a classe +{@code android.app.VoiceInteractor} para solicitar uma confirmação de voz do usuário, +selecionar a partir de uma lista de opções e muito mais. Para aprender mais sobre a implementação de ações de voz, consulte +<a href="https://developers.google.com/voice-actions/interaction/" class="external-link">o site de desenvolvedor de ações de voz</a>. +</p> + +<h2 id="assist">Auxiliar API</h2> +<p> +Esta prévia oferece uma nova maneira de usuários se envolverem com os aplicativos com um assistente. Para usar este +recurso, o usuário deve possibilitar que o assistente use o contexto atual. Quando ativado, +o usuário pode invocar um assistente dentro de qualquer aplicativo mantendo o botão <strong>Iniciar</strong> pressionado.</p> +<p>O aplicativo pode optar por não compartilhar o contexto atual com o assistente configurando o sinalizador +{@link android.view.WindowManager.LayoutParams#FLAG_SECURE}. Além do conjunto +padrão de informações que a plataforma passa ao assistente, o aplicativo pode compartilhar +informações adicionais usando a nova classe {@code android.app.Activity.AssistContent}.</p> + +<p>Para fornecer ao assistente contexto adicional do aplicativo, siga estas etapas:</p> + +<ol> +<li>Implemente a interface {@link android.app.Application.OnProvideAssistDataListener}.</li> +<li>Registre esta escuta usando +{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.</li> +<li>Para fornecer informações contextuais específicas da atividade, substitua o retorno de chamada +{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()} + e, opcionalmente, o novo retorno de chamada {@code Activity.onProvideAssistContent()}. +</ol> + +<h2 id="notifications">Notificações</h2> +<p>Esta prévia adiciona as seguintes alterações de API às notificações:</p> +<ul> + <li>Novo nível de filtro {@code NotificationListenerService.INTERRUPTION_FILTER_ALARMS} que corresponde +ao modo "não perturbe" de <em>despertadores apenas</em>.</li> + <li>Novo valor da categoria {@code Notification.CATEGORY_REMINDER} que é usado para distinguir +lembretes de agendamentos do usuário de outros eventos ( +{@link android.app.Notification#CATEGORY_EVENT}) e despertadores ( +{@link android.app.Notification#CATEGORY_ALARM}).</li> + <li>Nova classe {@code android.graphics.drawable.Icon} que pode ser anexada às notificações +por meio dos métodos {@code Notification.Builder.setSmallIcon(Icon)} e +{@code Notification.Builder.setLargeIcon(Icon)}.</li> + <li>Novo método {@code NotificationManager.getActiveNotifications()} que permite que os aplicativos +descubram quais das notificações ainda estão ativas. Para ver uma implementação de aplicativo que usa este recurso, +consulte o <a href="https://github.com/googlesamples/android-ActiveNotifications" class="external-link">exemplo de notificações ativas</a>.</li> +</ul> + +<h2 id="bluetooth-stylus">Suporte para Bluetooth Stylus</h2> +<p>Esta prévia fornece um suporte aprimorado para a entrada de usuário usando um Bluetooth Stylus. Os usuários podem +parear e conectar um Bluetooth Stylus compatível com o telefone ou tablet. Quando conectado, as informações +de posição da tela tátil são fundidas com as informações de botão e pressão do Stylus +para fornecer um alcance maior de expressão em comparação à tela tátil sozinha. O aplicativo pode escutar o pressionar +de botões do Stylus e realizar ações secundárias registrando os novos retornos de chamada +{@code View.onStylusButtonPressListener} e {@code GestureDetector.OnStylusButtonPressListener} + na atividade.</p> + +<p>Use as constantes e os métodos {@link android.view.MotionEvent} para detectar as interações +de botão do Stylus:</p> +<ul> +<li>Se o usuário toca no Stylus com um botão na tela do aplicativo, o método +{@link android.view.MotionEvent#getToolType(int) getTooltype()} retorna +{@link android.view.MotionEvent#TOOL_TYPE_STYLUS}.</li> +<li>Para aplicativos com M Preview, o método +{@link android.view.MotionEvent#getButtonState() getButtonState()} + retorna {@code MotionEvent.STYLUS_BUTTON_PRIMARY} quando o usuário +pressiona o botão principal do Stylus. Se o Stylus tiver um segundo botão, o mesmo método retorna +{@code MotionEvent.STYLUS_BUTTON_SECONDARY} quando o usuário o pressiona. Se o usuário pressiona +os dois botões simultaneamente, o método retorna os valores com OR juntos ( +{@code STYLUS_BUTTON_PRIMARY|STYLUS_BUTTON_SECONDARY}).</li> +<li> +Para aplicativos com uma versão de plataforma inferior , o método +{@link android.view.MotionEvent#getButtonState() getButtonState()} retorna +{@link android.view.MotionEvent#BUTTON_SECONDARY} (para o pressionar do botão principal do Stylus), +{@link android.view.MotionEvent#BUTTON_TERTIARY} (para o pressionar do botão secundário do Stylus) ou ambos. +</li> +</ul> + +<h2 id="ble-scanning">Digitalização de baixa energia por Bluetooth aprimorada</h2> +<p> +Se o aplicativo realizar digitalizações de baixa energia por Bluetooth, é possível usar o novo método +{@code android.bluetooth.le.ScanSettings.Builder.setCallbackType()} para especificar +que você quer que os retornos de chamada sejam notificados apenas quando um pacote de propaganda correspondente ao conjunto +{@link android.bluetooth.le.ScanFilter} for encontrado primeiro e quando +ele não for visto por um período. Esta abordagem de digitalização é mais eficiente +do que a fornecida na versão anterior da plataforma. +</p> + +<h2 id="hotspot">Suporte a Hotspot 2.0 Release 1</h2> +<p> +Esta prévia adiciona suporte ao Hotspot 2.0 Release 1 nos dispositivos Nexus 6 e Nexus 9. Para fornecer +as credenciais de Hotspot 2.0 no aplicativo, use os novos métodos da classe +{@link android.net.wifi.WifiEnterpriseConfig}, como {@code setPlmn()} e +{@code setRealm()}. No objeto {@link android.net.wifi.WifiConfiguration}, é possível definir os campos +{@link android.net.wifi.WifiConfiguration#FQDN} e {@code providerFriendlyName}. +A nova propriedade {@code ScanResult.PasspointNetwork} indica se uma rede detectada representa +um ponto de acesso Hotspot 2.0. +</p> + +<h2 id="4K-display">Modo de exibição 4K</h2> +<p>A plataforma agora permite que aplicativos solicitem que a resolução seja aprimorada para renderização 4K +em hardware compatível. Para consultar a resolução física atual, use as novas APIs +{@code android.view.Display.Mode}. Se a IU for desenhada em uma resolução lógica +menor e for redimensionada para uma resolução física maior, saiba que a resolução física que o método +{@code Display.Mode.getPhysicalWidth()} retorna pode ser diferente da resolução +física informada por {@link android.view.Display#getSize(android.graphics.Point) getSize()}.</p> + +<p>É possível solicitar que o sistema altere a resolução física no aplicativo à medida que ele é executado configurando +a propriedade {@code WindowManager.LayoutParams.preferredDisplayModeId} da janela do aplicativo. Este +recurso é útil se quiser alternar para a resolução de exibição 4K. Enquanto estiver no modo de exibição 4K, +a IU continua a ser renderizada na resolução original (como 1080 p) e é escalonada para 4K, mas os objetos +{@link android.view.SurfaceView} podem exibir o conteúdo na resolução nativa.</p> + +<h2 id="behavior-themeable-colorstatelists">ColorStateLists com tema</h2> +<p>Os atributos de tema agora são suportados no +{@link android.content.res.ColorStateList} para dispositivos que executam o M Preview. Os métodos +{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} e +{@link android.content.res.Resources#getColor(int) getColor()} ficaram obsoletos. Caso esteja chamando +essas APIs, chame os novos métodos {@code Context.getColorStateList()} ou +{@code Context.getColor()}. Esses métodos também estão disponíveis na biblioteca +v4 appcompat via {@link android.support.v4.content.ContextCompat}.</p> + +<h2 id="audio">Recursos de áudio</h2> + +<p>Esta prévia adiciona aprimoramentos ao processamento de áudio no Android, incluindo: </p> +<ul> + <li>Suporte para protocolo <a href="http://en.wikipedia.org/wiki/MIDI" class="external-link">MIDI</a> +, com as novas APIs {@code android.media.midi}. Use essas APIs para enviar e receber eventos +de MIDI.</li> + <li>Use as novas classes {@code android.media.AudioRecord.Builder} e {@code android.media.AudioTrack.Builder} + para criar captura de áudio digital e objetos de reprodução, respectivamente, +e configure a fonte de áudio e as propriedades do coletor para substituir os padrões do sistema.</li> + <li>Ganchos de API para associação de dispositivos de entrada e áudio. Isto é particularmente útil se o aplicativo +permite que os usuários iniciem uma pesquisa de voz a partir de um controle de jogo ou controle remoto para Android +TV. O sistema invoca o novo retorno de chamada {@code android.app.Activity.onSearchRequested()} quando +o usuário inicia uma pesquisa. Para determinar se o dispositivo de entrada do usuário tem um microfone integrado, recupere +o objeto {@link android.view.InputDevice} deste retorno de chamada e, em seguida, chame o novo método +{@code InputDevice.hasMic()}.</li> + <li>Novas classes {@code android.media.AudioDevicesManager} que permitem que você +recupere uma lista completa de todas as fontes e dispositivos de áudio do coletor anexados. Também é possível especificar um objeto +{@code android.media.OnAudioDeviceConnectionListener} caso queira que o aplicativo seja notificado +quando um dispositivo de áudio for conectado ou desconectado.</li> +</ul> + +<h2 id="video">Recursos de vídeo</h2> +<p>Esta prévia adiciona novas capacidades às APIs de processamento de vídeo, incluindo:</p> +<ul> +<li>A nova classe {@code android.media.MediaSync} que ajuda os aplicativos a renderizar transmissões +de vídeo e áudio sincronizadamente. Os buffers de áudio são enviados sem bloqueio e retornados +por um retorno de chamada. Eles também suportam taxa de reprodução dinâmica. +</li> +<li>O novo evento {@code MediaDrm.EVENT_SESSION_RECLAIMED}, que indica que uma sessão aberta pelo aplicativo +foi recuperada pelo gerenciador de recursos. Se o aplicativo usa sessões de DRM, deve-se +lidar com este evento e garantir que uma sessão recuperada não seja usada. +</li> +<li>O novo código de erro {@code MediaCodec.CodecException.ERROR_RECLAIMED}, que indica que o gerenciador +de recurso recuperou o recurso de mídia usado pelo codec. Com esta exceção, o codec +deve ser liberado, como se fosse movido para o estado terminal. +</li> +<li>A nova interface {@code MediaCodecInfo.CodecCapabilities.getMaxSupportedInstances()} para obter +uma dica do número máximo suportado de instâncias de codec concorrentes. +</li> +<li>O novo método {@code MediaPlayer.setPlaybackParams()} para definir a taxa de reprodução de mídia +para reprodução de movimento lento ou rápido. Ele também estica ou acelera a reprodução de áudio automaticamente +em conjunto com o vídeo.</li> +</ul> + +<h2 id="camera">Recursos de câmera</h2> +<p>Esta prévia inclui as seguintes novas APIs para acessar a lanterna da câmera +e para o reprocessamento da câmera de imagens:</p> + +<h3 id="flashlight">API da lanterna</h3> +<p>Se um dispositivo de câmera tem uma unidade de flash, é possível chamar o método {@code CameraManager.setTorchMode()} +para ligar ou desligar o modo de tocha da unidade de flash sem abrir o dispositivo da câmera. O aplicativo +não tem propriedade exclusiva da unidade de flash ou do dispositivo de câmera. O modo de tocha é desativado +e torna-se indisponível sempre que o dispositivo de câmera estiver indisponível ou quando outros +recursos de câmera que mantêm a tocha ativada ficam indisponíveis. Outros aplicativos também podem chamar {@code setTorchMode()} +para desativar o modo de tocha. Quando o aplicativo que ativou o modo +de tocha for fechado, o modo é desativado.</p> + +<p>É possível registrar um retorno de chamada para ser notificado sobre o estado da tocha chamando o método +{@code CameraManager.registerTorchCallback()}. Na primeira vez que o retorno de chamada é registrado, +ele é imediatamente chamado com o estado do modo de tocha de todos os dispositivos de câmera conhecidos com +uma unidade de flash. Se o modo de tocha é ativado ou desativado, o método +{@code CameraManager.TorchCallback.onTorchModeChanged()} é invocado.</p> + +<h3 id="reprocessing">API de reprocessamento</h3> +<p>A API {@link android.hardware.camera2 Camera2} é estendida para suportar YUV e reprocessamento +de imagem de formato opaco privado. O aplicativo determina se as capacidades de reprocessamento estão disponíveis +via {@code CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES}. Se um dispositivo suporta o reprocessamento, +é possível criar uma sessão de captura de câmera de reprocessamento chamando +{@code CameraDevice.createReprocessableCaptureSession()} e criando solicitações para o reprocessamento +do buffer de entrada.</p> + +<p>Use a classe {@code ImageWriter} para conectar o fluxo de buffer de entrada à entrada de reprocessamento +da câmera. Para obter um buffer vazio, siga este modelo de programação:</p> + +<ol> +<li>Chame o método {@code ImageWriter.dequeueInputImage()}.</li> +<li>Preencha os dados no buffer de entrada.</li> +<li>Envie o buffer à câmera chamando o método {@code ImageWriter.queueInputImage()}.</li> +</ol> + +<p>Caso esteja usando um objeto {@code ImageWriter} junto com uma imagem +{@code android.graphics.ImageFormat.PRIVATE}, o aplicativo não poderá acessar os dados +da imagem diretamente. Em vez disso, passe a imagem {@code ImageFormat.PRIVATE} diretamente ao +{@code ImageWriter} chamando o método {@code ImageWriter.queueInputImage()} sem nenhuma +cópia de buffer.</p> + +<p>A classe {@code ImageReader} agora suporta as transmissões de imagem +de formato {@code android.graphics.ImageFormat.PRIVATE}. Este suporte permite que o aplicativo mantenha uma fila de imagem circular de imagens de saída +{@code ImageReader}, selecione uma ou mais imagens e envie-as para +{@code ImageWriter} para o reprocessamento de câmera.</p> + +<h2 id="afw">Recursos do Android for Work</h2> +<p>Esta prévia inclui as seguintes novas APIs para Android for Work:</p> +<ul> + <li><strong>Controles aprimorados para dispositivos de uso único e pertencentes a empresas:</strong> O dono do dispositivo +pode controlar as seguintes configurações para aprimorar +os dispositivos de uso único pertencentes a empresas (COSU): + <ul> + <li>Desativar ou reativar a proteção de bloqueio com o método +{@code DevicePolicyManager.setKeyguardEnabledState()}.</li> + <li>Desativar ou reativar a barra de status (incluindo configurações rápidas, +notificações e o gesto de arrastar para cima que inicia o Google Now) com o método +{@code DevicePolicyManager.setStatusBarEnabledState()}.</li> + <li>Desativar ou reativar inicialização segura com a constante {@link android.os.UserManager} +{@code DISALLOW_SAFE_BOOT}.</li> + <li>Evitar que a tela desligue quando conectada com a constante +{@link android.provider.Settings.Global} {@code STAY_ON_WHILE_PLUGGED_IN}.</li> + </ul> + </li> + <li><strong>Instalação e desinstalação silenciosa de aplicativos pelo dono do dispositivo:</strong> O dono do dispositivo pode agora +instalar e desinstalar aplicativos silenciosamente usando as APIs {@link android.content.pm.PackageInstaller}, +independente do Google Play for Work. É possível tomar providências para os dispositivos +por meio de um dono do dispositivo que recupera e instala aplicativos se a interação de usuário. Este recurso é útil para ativar a provisão de um toque +de telefones públicos ou de outros dispositivos sem a ativação da conta Google.</li> +<li><strong>Acesso silencioso de certificado empresarial: </strong> Quando um aplicativo chama +{@link android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity,android.security.KeyChainAliasCallback,java.lang.String[],java.security.Principal[],java.lang.String,int,java.lang.String) choosePrivateKeyAlias()} +, antes do usuário receber a solicitação para selecionar um certificado, o perfil ou dono do dispositivo +pode chamar o método {@code DeviceAdminReceiver.onChoosePrivateKeyAlias()} para fornecer +o alias silenciosamente ao aplicativo da solicitação. Este recurso permite que você forneça acesso de aplicativos gerenciados para certificados +sem a interação de usuário.</li> +<li><strong>Aceitação automática de atualizações do sistema.</strong> Ao configurar a política de atualização do sistema com +{@code DevicePolicyManager.setSystemUpdatePolicy()}, o dono do dispositivo pode aceitar automaticamente a atualização +do sistema, no caso de um dispositivo público, ou adiar a atualização e evitar +que ela seja feita pelo usuário por até 30 dias. Além disso, um administrador pode definir uma janela de tempo diária +em que uma atualização deve ser realizada. Por exemplo: durante os momentos em que um dispositivo público não está em uso. Quando +uma atualização do sistema está disponível, o sistema verifica se o aplicativo de controlador de política de trabalho definiu uma política de atualização +do sistema e, portanto, comporta-se de acordo com a definição. +</li> +<li> +<strong>Instalação de certificado delegado:</strong> Um perfil ou dono do dispositivo pode agora fornecer ao aplicativo +de terceiros a habilidade de chamar essas APIs de gerenciamento +de certificado de {@link android.app.admin.DevicePolicyManager}: +<ul> + <li>{@link android.app.admin.DevicePolicyManager#getInstalledCaCerts(android.content.ComponentName) +getInstalledCaCerts()}</li> + <li>{@link android.app.admin.DevicePolicyManager#hasCaCertInstalled(android.content.ComponentName,byte[]) +hasCaCertInstalled()}</li> + <li>{@link android.app.admin.DevicePolicyManager#installCaCert(android.content.ComponentName,byte[]) +installCaCert()}</li> + <li>{@link android.app.admin.DevicePolicyManager#uninstallCaCert(android.content.ComponentName,byte[]) +uninstallCaCert()}</li> + <li>{@link android.app.admin.DevicePolicyManager#uninstallAllUserCaCerts(android.content.ComponentName) +uninstallAllUserCaCerts()}</li> + <li>{@link android.app.admin.DevicePolicyManager#installKeyPair(android.content.ComponentName,java.security.PrivateKey,java.security.cert.Certificate,java.lang.String) +installKeyPair()}</li> +</ul> +</li> +<li><strong>Proteção de redefinição de fábrica da empresa:</strong> Ao preparar um dono do dispositivo, agora é possível +configurar parâmetros para desbloquear a proteção de redefinição de fábrica (FRP) configurando o pacote +{@code DeviceManagerPolicy.EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS}. Um aplicativo de programador +NFC pode fornecer estes parâmetros depois que um dispositivo for redefinido para desbloquear o FRP e preparar o dispositivo, +sem a necessidade da conta Google anteriormente configurada. Caso não modifique esses parâmetros, +o FRP permanece no local e evita que o dispositivo seja ativado sem as credenciais +Google anteriormente ativadas. +<p>Além disso, ao configurar as restrições do aplicativo nos serviços Google, o dono do dispositivo pode especificar contas +Google alternativas para desbloquear o FRP para substituir as contas ativadas no dispositivo.</p> +</li> +<img src="{@docRoot}preview/images/work-profile-screen.png" srcset="{@docRoot}preview/images/work-profile-screen.png 1x, {@docRoot}preview/images/work-profile-screen_2x.png 2x" style="float:right; margin:0 0 10px 20px" width="282" height="476" /> +<li><strong>Rastreamento de uso de dados.</strong> Um perfil ou dono do dispositivo pode agora +consultar as estatísticas de uso de dados visíveis em <strong>Configurações > Uso de</strong> dados usando os novos métodos +{@code android.app.usage.NetworkStatsManager}. Os donos de perfis recebem automaticamente +a permissão para consultar os dados no perfil que gerenciam, enquanto que os donos do dispositivo têm acesso aos dados +de uso do usuário principal gerenciado.</li> +<li><strong>Gerenciamento de permissão de tempo de execução:</strong> +<p>Um perfil ou dono do dispositivo pode definir uma política +de permissão para todas as solicitações do tempo de execução de todos os aplicativos que usam +{@code DevicePolicyManager.setPermissionPolicy()}, seja para solicitar ao usuário para conceder +a permissão como normal ou automaticamente conceder ou negar a permissão silenciosamente. Se a política posterior +for definida, o usuário não poderá modificar a seleção feita pelo perfil ou dono do dispositivo dentro da tela de permissões +do aplicativo em <strong>configurações</strong>.</p></li> +<li><strong>VPN em configurações:</strong> Os aplicativos de VPN agora estão visíveis em +<strong>Configurações > Mais > VPN</strong>. +Além disso, as notificações que acompanham o uso de VPN são específicas sobre como essa VPN +é configurada. Para o dono de um perfil, as notificações são específicas para determinar +se a VPN é configurada para um perfil gerenciado, um perfil pessoal ou ambos. Para o dono do dispositivo, as notificações +são específicas para determinar se a VPN é configurada para todo o dispositivo.</li> +<li><strong>Notificação de estado de trabalho:</strong> Um ícone de pasta da barra de status agora aparece +sempre que um aplicativo do perfil gerenciado tiver uma atividade no primeiro plano. Além disso, se o usuário é desbloqueado +diretamente para a atividade de um aplicativo no perfil gerenciado, um aviso é exibido notificando +ao usuário que ele está dentro do perfil de trabalho. +</li> +</ul> + +<p class="note"> + Para obter uma vista detalhada de todas as alterações de API no M Developer Preview, consulte o <a href="{@docRoot}preview/download.html">relatório de diferenças de API</a>. +</p> |