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

Neste documento mostrar mais

  1. Vínculo de aplicativo
  2. Backup automático para aplicativos
  3. Autenticação
    1. Autenticação com impressão digital
    2. Confirmação de credencial
  4. Compartilhamento direto
  5. Interações por voz
  6. Auxiliar API
  7. Notificações
  8. Suporte para Bluetooth Stylus
  9. Digitalização de baixa energia por Bluetooth aprimorada
  10. Suporte a Hotspot 2.0 Release 1
  11. Modo de exibição 4K
  12. ColorStateLists com tema
  13. Recursos de áudio
  14. Recursos de vídeo
  15. Recursos de câmera
    1. API da lanterna
    2. Reprocessamento da câmera
  16. Recursos do Android for Work

Diferenças de API

  1. API de nível 22 para M Preview »

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.

O M Developer Preview foi feito para novos desenvolvedores adotantes e testadores. Caso tenha interesse em influenciar a direção da estrutura do Android, experimente o M Developer Preview e envie-nos feedback!

Cuidado: não publique aplicativos que usam o M Developer Preview na Google Play Store.

Observação: este documento frequentemente menciona classes e métodos que ainda não possuem material de referência disponível em developer.android.com. 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 referência da prévia.

Alterações importantes de comportamento

Caso tenha publicado anteriormente um aplicativo para Android, saiba que ele pode ser afetado pelas alterações na plataforma.

Consulte alterações de comportamento para obter mais informações.

Vínculo de aplicativo

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 vínculo de aplicativo.

Backup automático para aplicativos

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 backup automático para aplicativos.

Autenticação

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 sistema Android Keystore.

Autenticação com impressão digital

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 aplicativo de exemplo. 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.

Para usar este recurso no aplicativo, adicione primeiro a permissão {@code USE_FINGERPRINT} no manifesto.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

Para ver a implementação do aplicativo da autenticação com impressão digital, consulte o exemplo de caixa de diálogo de impressão digital.

Caso esteja testando este recurso, siga estas etapas:

  1. Instale o Android SDK Tools Revision 24.3, caso ainda não tenha instalado.
  2. Registre uma nova impressão digital no emulador acessando Configurações > Segurança > Impressão digital e, em seguida, siga as instruções de registro.
  3. 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.
    adb -e emu finger touch <finger_id>
    

    No Windows, talvez seja necessário executar {@code telnet 127.0.0.1 <emulator-id>} seguido de {@code finger touch <finger_id>}.

Confirmação de credencial

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.

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.

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.

Para ver uma implementação de aplicativo deste recurso, consulte o exemplo de confirmação de credencial.

Compartilhamento direto

Esta prévia fornece as APIs para tornar o compartilhamento intuitivo e rápido para os usuários. É possível definir os alvos de compartilhamento direto que iniciam uma atividade específica no aplicativo. Esses alvos de compartilhamento direto são expostos aos usuários por meio do menu Compartilhar. 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.

Para ativar os alvos de compartilhamento direto, deve-se definir uma classe que estende a classe {@code android.service.}
{@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}.

O seguinte exemplo mostra como se deve declarar o {@code ChooserTargetService} no manifesto.

<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>

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.

<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>

Interações por voz

Esta prévia fornece uma API de interação por voz que, junto com ações de voz , 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 o site de desenvolvedor de ações de voz.

Auxiliar API

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 Iniciar pressionado.

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}.

Para fornecer ao assistente contexto adicional do aplicativo, siga estas etapas:

  1. Implemente a interface {@link android.app.Application.OnProvideAssistDataListener}.
  2. Registre esta escuta usando {@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.
  3. 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()}.

Notificações

Esta prévia adiciona as seguintes alterações de API às notificações:

Suporte para Bluetooth Stylus

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.

Use as constantes e os métodos {@link android.view.MotionEvent} para detectar as interações de botão do Stylus:

Digitalização de baixa energia por Bluetooth aprimorada

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.

Suporte a Hotspot 2.0 Release 1

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.

Modo de exibição 4K

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()}.

É 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.

ColorStateLists com tema

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}.

Recursos de áudio

Esta prévia adiciona aprimoramentos ao processamento de áudio no Android, incluindo:

Recursos de vídeo

Esta prévia adiciona novas capacidades às APIs de processamento de vídeo, incluindo:

Recursos de câmera

Esta prévia inclui as seguintes novas APIs para acessar a lanterna da câmera e para o reprocessamento da câmera de imagens:

API da lanterna

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.

É 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.

API de reprocessamento

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.

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:

  1. Chame o método {@code ImageWriter.dequeueInputImage()}.
  2. Preencha os dados no buffer de entrada.
  3. Envie o buffer à câmera chamando o método {@code ImageWriter.queueInputImage()}.

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.

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.

Recursos do Android for Work

Esta prévia inclui as seguintes novas APIs para Android for Work:

Para obter uma vista detalhada de todas as alterações de API no M Developer Preview, consulte o relatório de diferenças de API.