Introducción a Xamarin.Forms y Azure Cognitive Services
Microsoft Cognitive Services es un conjunto de API, SDK y servicios disponibles para que los desarrolladores hagan que sus aplicaciones sean más inteligentes mediante la adición de características como el reconocimiento facial, el reconocimiento de voz y el reconocimiento del lenguaje. En este artículo se proporciona una introducción a la aplicación de ejemplo que muestra cómo invocar algunas de las API de Microsoft Cognitive Service.
Información general
El ejemplo complementario es una aplicación de lista de tareas pendientes que proporciona funcionalidad para:
- Visualizar una lista de tareas.
- Agregue y edite tareas a través del teclado flexible o realice el reconocimiento de voz con la API de voz de Microsoft.
- Tareas de revisión ortográfica mediante la API de Bing Spell Check. Para obtener más información, consulte Revisión ortográfica con la API de Bing Spell Check.
- Traducir tareas de inglés a alemán mediante la API de Translator. Para obtener más información, consulte Traducción de texto mediante la API de Translator.
- Eliminar tareas.
- Establezca el estado de una tarea en "listo".
Advertencia
La API de Bing Speech ha quedado en desuso en favor del servicio de voz de Azure. Para obtener un ejemplo dedicado al servicio de voz de Azure, consulte Reconocimiento de voz con la API de servicio de voz.
Las tareas se almacenan en una base de datos de SQLite local. Para obtener más información sobre el uso de una base de datos de SQLite local, consulte Trabajar con una base de datos local.
El TodoListPage
se muestra cuando se inicia la aplicación. En esta página se muestra una lista de las tareas almacenadas en la base de datos local y se permite al usuario crear una nueva tarea o evaluar la aplicación:
Los nuevos elementos se pueden crear haciendo clic en el botón +, que navega al TodoItemPage
. Esta página también se puede navegar a seleccionando una tarea:
El TodoItemPage
permite crear, editar, revisar ortografías, traducir, guardar y eliminar tareas. El reconocimiento de voz se puede usar para crear o editar una tarea. Esto se logra presionando el botón de micrófono para iniciar la grabación y presionando el mismo botón una segunda vez para detener la grabación, que envía la grabación a la API de reconocimiento de voz de Bing.
Descripción de la anatomía de la aplicación
El proyecto de código compartido de la aplicación de ejemplo consta de cinco carpetas principales:
Carpeta | Fin |
---|---|
Modelos | Contiene las clases del modelo de datos para la aplicación. Esto incluye la clase TodoItem , que modela un solo elemento de datos utilizado por la aplicación. La carpeta también incluye clases que se usan para modelar respuestas JSON devueltas desde diferentes API de Microsoft Cognitive Service. |
Repositorios | Contiene la interfaz ITodoItemRepository y la clase TodoItemRepository que se usan para realizar operaciones de base de datos. |
Servicios | Contiene las interfaces y clases que se usan para acceder a diferentes API de Microsoft Cognitive Service, junto con las interfaces que usa la clase DependencyService para localizar las clases que implementan las interfaces en proyectos de plataforma. |
Utilidades | Contiene la clase Timer , que usa la clase AuthenticationService para renovar un token de acceso JWT cada 9 minutos. |
Vistas | Contiene las páginas de la aplicación. |
El proyecto de código compartido también contiene algunos archivos importantes:
Archivo | Fin |
---|---|
Constants.cs | La clase Constants , que especifica las claves de API y los puntos de conexión de las API de Microsoft Cognitive Service que se invocan. Las constantes de clave de API requieren la actualización para acceder a las diferentes API de Cognitive Service. |
App.xaml.cs | La clase App es responsable de crear instancias de la primera página que mostrará la aplicación en cada plataforma y la clase TodoManager que se usa para invocar operaciones de base de datos. |
Paquetes NuGet
La aplicación de ejemplo usa los siguientes paquetes NuGet:
Newtonsoft.Json
: proporciona un marco JSON para .NET.PCLStorage
: proporciona un conjunto de API de E/S de archivos locales multiplataforma.sqlite-net-pcl
: proporciona almacenamiento de base de datos de SQLite.Xam.Plugin.Media
: proporciona api de toma y selección de fotos multiplataforma.
Además, estos paquetes NuGet también instalan sus propias dependencias.
Modelado de los datos
La aplicación de ejemplo usa la clase TodoItem
para modelar los datos que se muestran y almacenan en la base de datos de SQLite local. En el ejemplo de código siguiente se muestra la clase TodoItem
:
public class TodoItem
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
public bool Done { get; set; }
}
La propiedad ID
se usa para identificar de forma única cada instancia de TodoItem
y está decorada con atributos de SQLite que hacen de la propiedad una clave principal de incremento automático en la base de datos.
Invocar operaciones de base de datos
La clase TodoItemRepository
implementa operaciones de base de datos y se puede acceder a una instancia de la clase a través de la propiedad App.TodoManager
. La clase TodoItemRepository
proporciona los métodos siguientes para invocar operaciones de base de datos:
- GetAllItemsAsync: recupera todos los elementos de la base de datos de SQLite local.
- GetItemAsync – recupera un elemento especificado de la base de datos local de SQLite.
- SaveItemAsync: crea o actualiza un elemento en la base de datos local de SQLite.
- DeleteItemAsync: elimina el elemento especificado de la base de datos de SQLite local.
Implementaciones de proyectos de plataforma
La carpeta Services
del proyecto de código compartido contiene las interfaces IFileHelper
y IAudioRecorderService
que usan para la clase DependencyService
para buscar las clases que implementan las interfaces en proyectos de plataforma.
La interfaz IFileHelper
se implementa mediante la clase FileHelper
en cada proyecto de plataforma. Esta clase consta de un único método, GetLocalFilePath
, que devuelve una ruta de acceso del archivo local para almacenar la base de datos de SQLite.
La interfaz IAudioRecorderService
se implementa mediante la clase AudioRecorderService
en cada proyecto de plataforma. Esta clase consta de StartRecording
, StopRecording
y métodos auxiliares, que usan API de plataforma para grabar audio desde el micrófono del dispositivo y almacenarlo como un archivo wav. En iOS, el AudioRecorderService
usa la API de AVFoundation
para grabar audio. En Android, el AudioRecordService
usa la API de AudioRecord
para grabar audio. En la Plataforma universal de Windows (UWP), el AudioRecorderService
usa la API de AudioGraph
para grabar audio.
Invocación de Cognitive Services
La aplicación de ejemplo invoca lo siguiente a Microsoft Cognitive Services:
- API de voz de Microsoft. Para obtener más información, consulte Reconocimiento de voz mediante la API de voz de Microsoft.
- API de Bing Spell Check. Para obtener más información, consulte Revisión ortográfica con la API de Bing Spell Check.
- API de traducción. Para obtener más información, consulte Traducción de texto mediante la API de Translator.