Advertisement
  1. Code
  2. Android SDK

Dica Rápida: Usando a API Assist do Android

by
Read Time:6 minsLanguages:

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Usuários do Android não precisam mais abrir o navegador e pesquisas algo para aprender coisas que vem ao navegarem num app. Eles podem usar um assistente. Se temos um aparelho com Android 6.0 ou maior, já devemos estar familiarizados com a assistente padrão, que era chamada de Google Now on Tap. Recentemente, foi mudada para busca de tela.

Assistantes, embora sensíveis ao contexto, não são muito precisas. Para aprimorar precisão, desenvolvedores do app precisam usar a API Assist. Nessa dica rápida, introduziremos o básico da API e ajudaremos a começar a criar nossa própria assistente customizada.

1. Habilitando a Assistente Padrão

Se nunca usamos a assistente no aparelho ou emulador, ela não deve estár habilitada. Para tanto, pressionemos e seguremos o botão home. Na janela que aparecer, apertermos Yes, I'm in.

Enabling Google screen searchEnabling Google screen searchEnabling Google screen search

Agora, seremos capazes de acessar a assistente padrão de qualquer aplicativo apertando longamente o botão home. Vale lembra que ela é parte do app Google e funciona melhor se usarmos uma conta do Google.

2. Enviando Informação para a Assistente

A assistente padrão é bem poderosa. Pode provê informação sensitiva ao contexto automaticamente, baseada no conteúdo atual da tela. Fá-lo analisando a hierarquia da visão da atividade ativa.

Pera vê-la em ação, criemos uma nova atividade no projeto no Android Studio e adicionemos o widget TextView a seguir, que tem o nome de um romance popular, para seu layout:

Se executarmos nosso app agora e apertarmos longamente o botão home, a assistente padrão mostrará cartões que estão relacionadas de alguma forma ao contúdo do widget TextView.

Cards displayed by the assistantCards displayed by the assistantCards displayed by the assistant

Ao enviar informação adicional à assistente, podemos aprimorar sua precisão. Para tanto, preimeiro temos de sobrescrever o método onProvideAssistContent() da classe Activity.

Agora, podemos usar o objeto AssistContent para enviar informação à assistente. Por exemplo, se quisermos que a assistente mostre um cartão para o usuário ler sobre o romance no Goodreads, podemos usar o método setWebUri().

Eis o como cartão parece:

Card for GoodreadsCard for GoodreadsCard for Goodreads

A API Assist pode enviar dados estruturados para a assistente usando setStructureData(), que espera uma cadeia de caracteres JSON-LD. A maneira mais fácil de gerar esse JSON-LD é usando a classe JSONObject e seu método put().

O código abaixo mostrr como gerar e enviar dados estruturados sobre o romance:

Se decidirmos criar o JSON-LD manualmente, sugerimos garantir que é válido, usando a Ferramenta de Teste de Dados Estruturados do Google.

Validating JSON-LD with Structured Data Testing ToolValidating JSON-LD with Structured Data Testing ToolValidating JSON-LD with Structured Data Testing Tool

3. Criando uma Assistente Customizada

Se não estamos satisfeitos com a forma que a assistente do Google lida com os dados, podemos construir nossa própria. Fazê-lo não é muito difícil.

Todas assistentes customizadas devem ter o seguinte:

  • um objeto VoiceInteractionService
  • um objeto VoiceInteractionSession
  • um objeto VoiceInteractionSessionService
  • um arquivo XML de meta-dados descrevendo a assistente

Primeiro, criemos uma classe chamada MyAssistantSession e herdemos de VoiceInteractionSession. Agora, o Android Studio deverá criar o construtor automaticamente.

Ao sobrescrever onHandleAssist(), podemos definir o comportamente da assistente. Por hora, apenas analisemos o JSON-LD gerado no passo anterior e mostremos seu conteudo como uma mensagem Toast. Como imaginado, para obter um JSON-Ld devemo usar getStructuredData() do objeto AssistContent.

O código abaixo mostra como apresentar o valor de descritption do JSON-LD como uma mensagem Toast.

Um objeto VoiceInteractionSession deve ser instanciado dentro de um objeto VoiceInteractionSessionService. Assim, criemos uma nova classe, MyAssistantSessionService, e herdemos de VoiceInteractionSessionService. Dentro de onNewSession(), invoquemos o construtor de MyAssistantSession.

A assistente precisa do objeto VoiceInteractionService. Assim, criemos MyAssistantService. Não precisamos escrever qualquer código nele.

Para especificar os detalhes de configuração da assistente, precisamos criar um arquivo XML de metadados e colocá-lo no diretório res/xml do projeto. O elemento raiz do arquivo deve ser <voice-interaction-service>, especificando os nomes completos de VoiceInteractionService e VoiceInteractionSessionService.

Eis um exemplo de arquivo de metadados:

Por fim, ao declarar os serviços no arquivo AndroidManifest.xml do projeto, precisamos da permissão BIND_VOICE_INTERACTION.

Nossa assistente customizada está pronta.

4. Usando a Assistente Customizada

Para podermos usar a assistente customizada, precisamos usá-la como assistente padrão do aparelho. Assim, abramos o app Configurações e naveguemos até Aplicativos > Aplicativos padrões > Assist e entrada de voz. Depois, cliquemos na opção app Assist e selecionemo-na.

Choosing a custom assistantChoosing a custom assistantChoosing a custom assistant

Agora, se executarmos o app e pressionamos longamente o botão home, seremos capazes de ver a mensagem Toast da nossa assistente customizada.

Toast from custom assistantToast from custom assistantToast from custom assistant

Conclusão

Nessa dica rápida, aprendemos como usar a API Assist para interagir com assistentes na plataforma do Android. Também aprendemos como criar uma assistente customizada rudimentar. Mas, cuidado: como elas podem ler quase todo o texto presente na tela do usuário, temos de fazê-la lidar com dado sigiloso de forma segura.

Para aprender mais sobre a API Assiste, vejamos a documentação oficial. E para aparender mais sobre código de ponta e APIs da plataforma Android, vejamos alguns dos cursos e tutoriais da Envato Tuts+!


Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.