Compartilhar via


Xamarin.Forms e Introdução aos Serviços Cognitivos do Azure

Os Serviços Cognitivos da Microsoft são um conjunto de APIs, SDKs e serviços disponíveis para desenvolvedores para tornar seus aplicativos mais inteligentes, adicionando recursos como reconhecimento facial, reconhecimento de fala e compreensão de idioma. Este artigo fornece uma introdução ao aplicativo de exemplo que demonstra como invocar algumas das APIs do Serviço Cognitivo da Microsoft.

Visão geral

O exemplo que acompanha é um aplicativo de lista de tarefas que fornece funcionalidade para:

  • Exibir uma lista de tarefas.
  • Adicione e edite tarefas por meio do teclado virtual ou executando o reconhecimento de fala com a API de Fala da Microsoft.
  • Tarefas de verificação ortográfica usando a API de Verificação Ortográfica do Bing. Para obter mais informações, consulte Verificação ortográfica usando a API de verificação ortográfica do Bing.
  • Traduza tarefas do inglês para o alemão usando a API do tradutor. Para obter mais informações, consulte Tradução de texto usando a API do tradutor.
  • Excluir tarefas.
  • Defina o status de uma tarefa como 'concluído'.

Aviso

A API de Fala do Bing foi preterida em favor do Serviço de Fala do Azure. Para obter um exemplo dedicado ao Serviço de Fala do Azure, consulte Reconhecimento de fala com a API do Serviço de Fala.

As tarefas são armazenadas em um banco de dados SQLite local. Para obter mais informações sobre como usar um banco de dados SQLite local, consulte Trabalhando com um banco de dados local.

O TodoListPage é exibido quando o aplicativo é iniciado. Esta página exibe uma lista de todas as tarefas armazenadas no banco de dados local e permite que o usuário crie uma nova tarefa ou classifique o aplicativo:

TodoListPage

Novos itens podem ser criados clicando no + botão, que navega até o TodoItemPage. Esta página também pode ser navegada selecionando uma tarefa:

TodoItemPage

O TodoItemPage permite que as tarefas sejam criadas, editadas, verificadas ortograficamente, traduzidas, salvas e excluídas. O reconhecimento de fala pode ser usado para criar ou editar uma tarefa. Isso é conseguido pressionando o botão do microfone para iniciar a gravação e pressionando o mesmo botão uma segunda vez para interromper a gravação, o que envia a gravação para a API de Reconhecimento de Fala do Bing.

Entender a anatomia do aplicativo

O projeto de código compartilhado para o aplicativo de exemplo consiste em cinco pastas principais:

Pasta Finalidade
Modelos Contém as classes de modelo de dados para o aplicativo. Isso inclui a classe, que modela TodoItem um único item de dados usado pelo aplicativo. A pasta também inclui classes usadas para modelar respostas JSON retornadas de diferentes APIs do Serviço Cognitivo da Microsoft.
Repositórios Contém a interface e TodoItemRepository a ITodoItemRepository classe que são usadas para executar operações de banco de dados.
Serviços Contém as interfaces e classes que são usadas para acessar diferentes APIs do Serviço Cognitivo da Microsoft, juntamente com interfaces que são usadas pela DependencyService classe para localizar as classes que implementam as interfaces em projetos de plataforma.
Utilitários Contém a Timer classe, que é usada pela AuthenticationService classe para renovar um token de acesso JWT a cada 9 minutos.
Modos de exibição Contém as páginas do aplicativo.

O projeto de código compartilhado também contém alguns arquivos importantes:

Arquivo Finalidade
Constants.cs A Constants classe, que especifica as chaves de API e pontos de extremidade para as APIs do Serviço Cognitivo da Microsoft que são invocadas. As constantes de chave de API exigem atualização para acessar as diferentes APIs do Serviço Cognitivo.
App.xaml.cs A App classe é responsável por instanciar a primeira página que será exibida pelo aplicativo em cada plataforma e a TodoManager classe usada para invocar operações de banco de dados.

Pacotes NuGet

O aplicativo de exemplo usa os seguintes pacotes NuGet:

  • Newtonsoft.Json – fornece uma estrutura JSON para .NET.
  • PCLStorage – fornece um conjunto de APIs de E/S de arquivo local de plataforma cruzada.
  • sqlite-net-pcl – fornece armazenamento de banco de dados SQLite.
  • Xam.Plugin.Media – fornece APIs de captura e seleção de fotos multiplataforma.

Além disso, esses pacotes NuGet também instalam suas próprias dependências.

Modelar os dados

O aplicativo de exemplo usa a TodoItem classe para modelar os dados que são exibidos e armazenados no banco de dados SQLite local. O exemplo de código a seguir mostra a classe TodoItem:

public class TodoItem
{
  [PrimaryKey, AutoIncrement]
  public int ID { get; set; }
  public string Name { get; set; }
  public bool Done { get; set; }
}

A ID propriedade é usada para identificar exclusivamente cada TodoItem instância e é decorada com atributos SQLite que tornam a propriedade uma chave primária de incremento automático no banco de dados.

Invocar operações de banco de dados

A TodoItemRepository classe implementa operações de banco de dados e uma instância da classe pode ser acessada por meio da App.TodoManager propriedade. A TodoItemRepository classe fornece os seguintes métodos para invocar operações de banco de dados:

  • GetAllItemsAsync – recupera todos os itens do banco de dados SQLite local.
  • GetItemAsync – recupera um item especificado do banco de dados SQLite local.
  • SaveItemAsync – cria ou atualiza um item no banco de dados SQLite local.
  • DeleteItemAsync – exclui o item especificado do banco de dados SQLite local.

Implementações de projetos de plataforma

A Services pasta no projeto de código compartilhado contém as interfaces e que são usadas pela DependencyService classe para IAudioRecorderService localizar as classes que implementam as IFileHelper interfaces em projetos de plataforma.

A IFileHelper interface é implementada pela classe em cada projeto de FileHelper plataforma. Essa classe consiste em um único método, , GetLocalFilePathque retorna um caminho de arquivo local para armazenar o banco de dados SQLite.

A IAudioRecorderService interface é implementada pela classe em cada projeto de AudioRecorderService plataforma. Essa classe consiste em , e métodos de suporte, StopRecordingque usam APIs de StartRecordingplataforma para gravar áudio do microfone do dispositivo e armazená-lo como um arquivo wav. No iOS, o AudioRecorderService usa a AVFoundation API para gravar áudio. No Android, o AudioRecordService usa a AudioRecord API para gravar áudio. Na Plataforma Universal do Windows (UWP), o AudioRecorderService usa a AudioGraph API para gravar áudio.

Invocar serviços cognitivos

O aplicativo de exemplo invoca os seguintes serviços cognitivos da Microsoft: