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:

TodoListPage

Neue Elemente können durch Klicken auf die + Schaltfläche erstellt werden, die zu der TodoItemPageSchaltfläche navigiert. Diese Seite kann auch durch Auswählen einer Aufgabe zu dieser Seite navigiert werden:

TodoItemPage

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, GetLocalFilePathdie 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, StopRecordingund 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: