Xamarin.Forms und Azure Cognitive Services –Einführung
Microsoft Cognitive Services sind eine Reihe von APIs, SDKs und Diensten, die Entwicklern zur Verfügung stehen, um ihre Anwendungen intelligenter zu machen, indem Features wie Gesichtserkennung, Spracherkennung und Sprachverständnis hinzugefügt werden. Dieser Artikel enthält eine Einführung in die Beispielanwendung, die veranschaulicht, wie Sie einige der Microsoft Cognitive Service-APIs aufrufen.
Überblick
Das begleitende Beispiel ist eine Todo-Listenanwendung, die Funktionen für Folgendes bereitstellt:
- Eine Liste der Aufgaben anzeigen.
- Fügen Sie Aufgaben über die Bildschirmtastatur hinzu und bearbeiten Sie sie, oder indem Sie die Spracherkennung mit der Microsoft-Sprach-API ausführen.
- Rechtschreibprüfungsaufgaben mithilfe der Bing-Rechtschreibprüfungs-API. Weitere Informationen finden Sie unter "Rechtschreibprüfung mithilfe der Bing-Rechtschreibprüfungs-API".
- Übersetzen Sie Aufgaben aus Englisch in Deutsch mithilfe der Übersetzer-API. Weitere Informationen finden Sie unter "Textübersetzung mithilfe der Übersetzer-API".
- Vorgänge löschen.
- Legen Sie den Status eines Vorgangs auf "fertig" fest.
Warnung
Die Bing-Sprach-API ist zugunsten des Azure-Sprachdiensts veraltet. Ein Beispiel für Azure Speech Service finden Sie unter Spracherkennung mit der Sprachdienst-API.
Aufgaben werden in einer lokalen SQLite-Datenbank gespeichert. Weitere Informationen zur Verwendung einer lokalen SQLite-Datenbank finden Sie unter Arbeiten mit einer lokalen Datenbank.
Die TodoListPage
Wird angezeigt, wenn die Anwendung gestartet wird. Auf dieser Seite wird eine Liste aller aufgaben angezeigt, die in der lokalen Datenbank gespeichert sind, und der Benutzer kann eine neue Aufgabe erstellen oder die Anwendung bewerten:
Neue Elemente können durch Klicken auf die + Schaltfläche erstellt werden, die zu der TodoItemPage
Schaltfläche navigiert. Diese Seite kann auch durch Auswählen einer Aufgabe zu dieser Seite navigiert werden:
Dies TodoItemPage
ermöglicht das Erstellen, Bearbeiten, Überprüfen, Übersetzen, Speichern und Löschen von Aufgaben. Die Spracherkennung kann zum Erstellen oder Bearbeiten einer Aufgabe verwendet werden. Dies wird erreicht, indem die Mikrofontaste zum Starten der Aufzeichnung gedrückt wird und die gleiche Taste ein zweites Mal zum Beenden der Aufzeichnung gedrückt wird, wodurch die Aufzeichnung an die Bing-Spracherkennungs-API gesendet wird.
Grundlegendes zur Anwendungsatomie
Das freigegebene Codeprojekt für die Beispielanwendung besteht aus fünf Standard Ordnern:
Ordner | Zweck |
---|---|
Modelle | Enthält die Datenmodellklassen für die Anwendung. Dies schließt die TodoItem Klasse ein, die ein einzelnes Datenelement modelliert, das von der Anwendung verwendet wird. Der Ordner enthält auch Klassen, die zum Modellieren von JSON-Antworten verwendet werden, die von verschiedenen Microsoft Cognitive Service-APIs zurückgegeben werden. |
Repositorys | Enthält die ITodoItemRepository Schnittstelle und TodoItemRepository Klasse, die zum Ausführen von Datenbankvorgängen verwendet werden. |
Dienste | Enthält die Schnittstellen und Klassen, die für den Zugriff auf verschiedene Microsoft Cognitive Service-APIs verwendet werden, sowie Schnittstellen, die von der DependencyService Klasse verwendet werden, um die Klassen zu finden, die die Schnittstellen in Plattformprojekten implementieren. |
Hilfsprogramme | Enthält die Timer Klasse, die von der AuthenticationService Klasse verwendet wird, um ein JWT-Zugriffstoken alle 9 Minuten zu erneuern. |
Ansichten | Enthält die Seiten für die Anwendung. |
Das freigegebene Codeprojekt enthält auch einige wichtige Dateien:
Datei | Zweck |
---|---|
Constants.cs | Die Constants Klasse, die die API-Schlüssel und -Endpunkte für die aufgerufenen Microsoft Cognitive Service-APIs angibt. Die API-Schlüsselkonstanten erfordern eine Aktualisierung, um auf die verschiedenen Cognitive Service-APIs zuzugreifen. |
App.xaml.cs | Die App Klasse ist dafür verantwortlich, sowohl die erste Seite zu instanziieren, die von der Anwendung auf jeder Plattform angezeigt wird, als auch für die TodoManager Klasse, die zum Aufrufen von Datenbankvorgängen verwendet wird. |
NuGet-Pakete
Die Beispielanwendung verwendet die folgenden NuGet-Pakete:
Newtonsoft.Json
– stellt ein JSON-Framework für .NET bereit.PCLStorage
– stellt eine Reihe plattformübergreifender lokaler Datei-E/A-APIs bereit.sqlite-net-pcl
– stellt SQLite-Datenbankspeicher bereit.Xam.Plugin.Media
– bietet plattformübergreifende Fotoaufnahme- und Auswahl-APIs.
Darüber hinaus installieren diese NuGet-Pakete auch ihre eigenen Abhängigkeiten.
Modellieren der Daten
Die Beispielanwendung verwendet die TodoItem
Klasse zum Modellieren der Daten, die in der lokalen SQLite-Datenbank angezeigt und gespeichert werden. Das folgende Codebeispiel zeigt die TodoItem
-Klasse:
public class TodoItem
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string Name { get; set; }
public bool Done { get; set; }
}
Die ID
Eigenschaft wird verwendet, um jede TodoItem
Instanz eindeutig zu identifizieren und mit SQLite-Attributen versehen, die die Eigenschaft zu einem automatisch inkrementierenden Primärschlüssel in der Datenbank machen.
Aufrufen von Datenbankvorgängen
Die TodoItemRepository
Klasse implementiert Datenbankvorgänge, und auf eine Instanz der Klasse kann über die App.TodoManager
Eigenschaft zugegriffen werden. Die TodoItemRepository
Klasse stellt die folgenden Methoden zum Aufrufen von Datenbankvorgängen bereit:
- GetAllItemsAsync – ruft alle Elemente aus der lokalen SQLite-Datenbank ab.
- GetItemAsync – ruft ein angegebenes Element aus der lokalen SQLite-Datenbank ab.
- SaveItemAsync – erstellt oder aktualisiert ein Element in der lokalen SQLite-Datenbank.
- DeleteItemAsync – löscht das angegebene Element aus der lokalen SQLite-Datenbank.
Plattformprojektimplementierungen
Der Services
Ordner im freigegebenen Codeprojekt enthält die IFileHelper
von der DependencyService
Klasse verwendeten Schnittstellen, IAudioRecorderService
um die Klassen zu finden, die die Schnittstellen in Plattformprojekten implementieren.
Die IFileHelper
Schnittstelle wird von der FileHelper
Klasse in jedem Plattformprojekt implementiert. Diese Klasse besteht aus einer einzigen Methode, GetLocalFilePath
die einen lokalen Dateipfad zum Speichern der SQLite-Datenbank zurückgibt.
Die IAudioRecorderService
Schnittstelle wird von der AudioRecorderService
Klasse in jedem Plattformprojekt implementiert. Diese Klasse besteht aus StartRecording
, StopRecording
und unterstützenden Methoden, die Plattform-APIs verwenden, um Audio aus dem Mikrofon des Geräts aufzuzeichnen und als WAV-Datei zu speichern. Unter iOS verwendet AVFoundation
die AudioRecorderService
API zum Aufzeichnen von Audio. Unter Android verwendet AudioRecord
die AudioRecordService
API zum Aufzeichnen von Audio. Auf dem Universelle Windows-Plattform (UWP) verwendet AudioGraph
die AudioRecorderService
API zum Aufzeichnen von Audio.
Aufrufen von kognitiven Diensten
Die Beispielanwendung ruft die folgenden Microsoft Cognitive Services auf:
- Microsoft Speech API. Weitere Informationen finden Sie unter "Spracherkennung mithilfe der Microsoft-Sprach-API".
- Bing-Rechtschreibprüfungs-API. Weitere Informationen finden Sie unter "Rechtschreibprüfung mithilfe der Bing-Rechtschreibprüfungs-API".
- Übersetzen der API. Weitere Informationen finden Sie unter "Textübersetzung mithilfe der Übersetzer-API".