Quer aprender a criar aplicativos que geram sugestões de respostas com base no conteúdo em tela, ou até mesmo sugerir ações inteligentes, como ligar para alguém, abrir um mapa ou um link, com base no conteúdo dinâmico do seu aplicativo? Vamos mostrar como fazer isso! Meu nome é Junior e serei o seu instrutor.
Audiodescrição: Junior é um homem de pele clara, com cabelos loiros escuros compridos que vão até a altura dos ombros e estão amarrados atrás do pescoço. Usa óculos de armação preta arredondada e uma camiseta na cor preta. Atrás dele há um fundo degradê que vai do rosa, à esquerda, até o azul à direita.
Para prosseguir com este conteúdo, continuaremos utilizando um aplicativo que pode já ter visto em outros cursos, o Mail. Este é um aplicativo que utiliza recursos de Machine Learning (Aprendizado de Máquina) e Inteligência Artificial para auxiliar nas questões de envio e recebimento de e-mails. O Mail tem um visual colorido no início, seguindo um padrão de uso do Material Design.
Ao abrirmos esse aplicativo, notamos que o conteúdo do e-mail aparece quando clicamos em alguma das conversas existente. Ele demora um pouco para carregar, mas gera alguns recursos que, provavelmente, você já viu em outros aplicativos. Na parte inferior, temos uma lista de chips, que são algumas sugestões.
Para gerar essas sugestões, utilizamos uma biblioteca do ML Kit que faz a extração de entidades. Vamos entender o que é cada uma dessas entidades, mas podemos notar que algumas já estão destacadas no nosso texto. Destacamos alguns endereços e links.
Notamos também que tem como sublinhar algumas dessas informações. Vamos entender que isso está atrelado ao que a própria biblioteca oferece. Para chegar nesse ponto, precisamos compreender como a biblioteca funciona, como instalar, como lidar não só com a extração das entidades, mas também da posição de cada uma delas.
Além dessas entidades que temos na parte inferior e destes destaques, dependendo do e-mail que abrirmos, também haverá algumas sugestões de resposta na parte inferior, conhecidas como respostas inteligentes. Por exemplo, temos um e-mail que possui uma espécie de conversa, onde temos uma entidade para extrair algumas ações na parte inferior, mas também sugeriu como resposta um emoji, a pergunta "Onde você está?", entre outras opções, tudo em uma mesma linha.
A biblioteca que utilizamos para lidar com as respostas inteligentes é a Smart Reply, que faz parte do ML Kit. Vamos entender como ela funciona, quais são as suas limitações, como podemos utilizá-la integrada dentro do nosso aplicativo e com a geração de ações inteligentes.
Para trabalhar com tudo isso, recomendamos que tenha noção de como lidar com o Jetpack Compose e com o sistema de gerenciamento de estados utilizando os View Models. Além disso, é útil ter alguma experiência com nossa biblioteca de traduções, mas é algo que vamos comentar bastante ao longo do curso, então não precisa se preocupar, já adiantamos essa parte.
Esperamos que tenha gostado do que viu e com animação para começar.
Para prosseguirmos com o conteúdo deste curso, vamos reutilizar o projeto do aplicativo Mail, que simula um aplicativo de troca de mensagens eletrônicas, os famosos e-mails. Este projeto possui algumas alterações, tanto visuais, quanto em seu código. Recomendamos que faça o download desse projeto e confira algumas das alterações conosco.
Uma das primeiras alterações que vamos conferir, já presentes no projeto, é a seguinte: ao abrirmos um e-mail, por exemplo, o da Anya, teremos um botão "Responder" no final do e-mail. Ao ser clicado, permitirá a digitação e o envio de uma resposta, que ficará armazenada. Adicionamos essa função porque vamos lidar com uma questão de respostas inteligentes, aplicadas não somente ao conteúdo do e-mail, mas também com base no que digitamos, gerando respostas em tempo real.
Existem também outras alterações que vamos conferir na parte visual ao longo das aulas. Caso queira conferir o código dessas alterações, disponibilizaremos o projeto para download. Vamos verificar alguns arquivos nesse primeiro momento.
Na coluna da esquerda na nossa IDE, navegaremos para "mlkit > EntityExtractor
". Nesse arquivo, temos duas pequenas funções que deixei prontas no código. Elas não estão diretamente relacionadas com a nossa biblioteca, mas serão úteis conforme formos implementando outras funções.
Na mesma pasta, abriremos o arquivo ResponseGenerator
, onde seguiremos com a mesma abordagem. Esses são códigos que, provavelmente, você já sabe implementar. Eles estão relacionados à lógica, e não à biblioteca em si, e já deixamos pronto para utilizarmos no momento oportuno.
Falando das alterações visuais e da parte lógica, dentro de "contentEmail", que é nossa pasta de UI, teremos o código da tela em si: o ContentEmailScreen.kt
. Nele teremos várias alterações, que veremos conforme as funções forem sendo adicionadas.
Caso queira, vale a pena conferir este arquivo e o ContentEmailViewModule.kt
, que possui algumas lógicas já prontas e que também vamos alterar ao longo deste conteúdo. Além disso, temos a classe ActionHandler
, que podemos acessar através do caminho "util > ActionHandler
. Essa classe é responsável por permitir a integração com um aplicativo de e-mail, de telefone ou outros, conforme a análise dos nossos e-mails for feita.
Realizamos também a atualização de algumas bibliotecas, para manter o nosso projeto o mais atualizado possível. Você pode acessar o link do GitHub do projeto, caso queira analisar e comparar o arquivo inicial deste projeto que você irá baixar com o da última aula do nosso curso de MailKit com traduções.
Isso permitirá que você veja o que foi atualizado e o que foi adicionado ou removido, e possa fazer essas alterações em seu projeto da aula anterior, se desejar. Contudo, boa parte do que foi atualizado, veremos ao longo das aulas enquanto implementamos as funções e conhecemos as possibilidades da extração de entidades e geração de respostas e ações inteligentes no nosso projeto.
Então, baixe o projeto e espero que estejam com empolgação para podermos continuar.
Começaremos esse vídeo fazendo um pequeno experimento Imagine que está desenvolvendo um aplicativo semelhante a este nosso. Por algum motivo, ele possui uma tela em que as pessoas podem receber e-mails e, neste e-mail, há um número de telefone, que é o "4002-8922". Precisamos ligar para alguém através desse número.
Se tiver uma boa memória, talvez consiga simplesmente abrir o aplicativo de telefone e digitar o número. No entanto, provavelmente, terá que ficar alternando entre esse aplicativo e o de telefone, ou até mesmo se quiséssemos copiar a informação de um e-mail, ou mesmo de um site.
Pensando nesse tipo de situação, podemos facilitar um pouco a vida da pessoa usuária para ela não precisar ficar alternando entre telas. Podemos escanear todo esse texto, ver quais são as entidades presentes, como o número de telefone e o e-mail, e gerar uma ação personalizada, por exemplo, já indicando para abrir o aplicativo de telefone com aquele número, ou mesmo abrir o e-mail ou site.
Pensando nesse tipo de situação, a Google já desenvolveu uma biblioteca que utiliza ferramentas de Inteligência Artificial (IA) e Machine Learning para poder auxiliar na construção desse tipo de solução dentro do aplicativo. A Entity Extraction (Extração de entidade), como a própria documentação que temos aberta nesse momento indica, é essa biblioteca. Inclusive, temos um pequeno exemplo sendo demonstrado em um GIF. Vocês podem acessar a página da documentação sobre Extração de entidade para saber mais.
Ao abrirmod essa documentação, existe um alerta informando que essa biblioteca atualmente possui uma versão beta, e que ela tem algumas restrições que vamos conferir melhor ao longo do curso. Mas vale ressaltar que ela está na versão Beta hpa alguns anos, e os aplicativos da Google, assim como outros, já a utilizam. É interessante notar esse alerta e ficar ciente que existe, sim, uma versão beta que tem algumas restrições.
Podemos utilizar a biblioteca e a documentação é bem vasta, contendos exemplos muito úteis. Caso queira conferir a documentação e ver do que se trata cada uma dessas entidades, existem alguns exemplos. É listado que podemos identificar vários tipos de informações, como endereços, data, hora, e-mail, alguns dados bancários e URLs.
Para começar a utilizá-la no nosso aplicativo, no começo da documentação, ao lado esquerdo do GIF de demonstração, clicaremos no botão "Android". Assim, abriremos outra página da documentação, ensinando a extrair entidades no Android. Nela, deslizando um pouco mais para baixo, encontramos a sessão "antes de começar".
Dentro dessa sessão, encontramos o código implementation 'com.google.mlkit:entity-extraction
e o número da versão, que pode ter mudado quando você estiver vendo esse conteúdo. Vamos copiar esse código implementation
e voltaremos para o Android Studio.
implementation 'com.google.mlkit:entity-extraction:16.0.0-beta4'
No Android Studio, abriremos o arquivo para instalar essa dependência. No caso, no "Gradle Scripts", abriremos o build.gradle.kts
, do módulo app (Module :app). Ao final dele, na linha 86, vamos colar o código que copiamos.
Vale lembrar que, nesse momento, esse projeto está com a nova maneira de instalação de dependências que será usada em projetos Android daqui para frente. Vou deixar uma atividade sobre isso, caso não esteja familiarizado para conhecer essa nova maneira de lidar com as dependências. Porém, para instalação funcionar corretamente, vamos substituir as aspas simples, do código que copiamos, por aspas duplas e colocar essa string entre parênteses.
Arquivo
build.gradle.kts
// código omitido
implementation ("com.google.mlkit:entity-extraction:16.0.0-beta4")
O trecho dentro dos parênteses está marcado em amarelo. Clicaremos sobre ele e pressionaremos "Alt + Enter". No menu, selecionaremos a opção "Replace with new library catalog declaetion for entity-extraction". Ao selecionarmos essa opção, o trecho que estava marcado muda para libs.entity.extraction
.
Arquivo
build.gradle.kts
// código omitido
implementation (libs.entity.extraction)
Isso modifica outro arquivo, que é o libs.version.toml
. Na parte superior do código desse arquivo tem uma barra azul com o botão "Sync now" (Sincronizar agora), no canto direito da barra. Clicaremos nesse botão. Voltando para o build.gradle.kts
, ainda encontramos um erro em entity
, que está em vermelho, mas depois que o build acabar, ele não apresentará mais esse erro.
[Animação de uma barra de carregamento sendo preenchida. Sons de circuitos duarante o carregamento.]
O projeto já fez a sincronização e a biblioteca foi instalada corretamente. Podemos começar a explorar um pouco com ela e entender como funciona. Faremos isso a seguir.
O curso Android com IA: extraindo entidades e gerando respostas inteligentes com ML Kit possui 98 minutos de vídeos, em um total de 44 atividades. Gostou? Conheça nossos outros cursos de IA para Mobile em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.