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:
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:
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, , GetLocalFilePath
que 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, StopRecording
que usam APIs de StartRecording
plataforma 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:
- API de Fala da Microsoft. Para obter mais informações, consulte Reconhecimento de fala usando a API de fala da Microsoft.
- 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.
- Definição da palavra API. Para obter mais informações, consulte Tradução de texto usando a API do tradutor.