共用方式為


Xamarin.Forms 和 Azure 認知服務簡介

Microsoft 認知服務是一組 API、SDK 和服務,可供開發人員使用,藉由新增臉部辨識、語音辨識、語音辨識和語言理解等功能,使其應用程式更智慧。 本文提供範例應用程式的簡介,示範如何叫用某些 Microsoft 認知服務 API。

概觀

隨附的範例是 Todo 列表應用程式,可提供下列功能:

  • 檢視工作清單。
  • 透過軟式鍵盤新增和編輯工作,或使用 Microsoft 語音 API 執行語音辨識。
  • 使用 Bing 拼字檢查 API 進行拼字檢查工作。 如需詳細資訊,請參閱 使用 Bing 拼字檢查 API 進行拼字檢查。
  • 使用 翻譯工具 API 將工作從英文翻譯成德文。 如需詳細資訊,請參閱使用 翻譯工具 API 的文字翻譯。
  • 刪除工作。
  • 將工作的狀態設定為 「完成」。

警告

Bing 語音 API 已被取代為 Azure 語音服務。 如需 Azure 語音服務專用的範例,請參閱 使用語音服務 API 進行語音辨識。

工作會儲存在本機 SQLite 資料庫中。 如需使用本機 SQLite 資料庫的詳細資訊,請參閱 使用本機資料庫

TodoListPage會在啟動應用程式時顯示 。 此頁面會顯示儲存在本機資料庫中的任何工作清單,並允許使用者建立新工作或為應用程式評分:

TodoListPage

您可以按下 + 巡覽至 的 TodoItemPage按鈕來建立新專案。 您也可以選取工作來瀏覽此頁面:

TodoItemPage

TodoItemPage允許建立、編輯、拼字檢查、翻譯、儲存和刪除工作。 語音辨識可用來建立或編輯工作。 這可藉由按下麥克風按鈕來開始錄製,並再次按下相同的按鈕來停止錄製,這會將錄製傳送至 Bing 語音辨識 API。

瞭解應用程序結構

範例應用程式的共用程式代碼專案包含五個主要資料夾:

資料夾 目的
模型 包含應用程式的數據模型類別。 這包括 類別 TodoItem ,其會建立應用程式所使用之單一數據專案的模型。 此資料夾也包含用來建立從不同 Microsoft 認知服務 API 傳回之 JSON 回應模型的類別。
儲存機制 包含 ITodoItemRepository 用來執行資料庫作業的介面和 TodoItemRepository 類別。
服務 包含用來存取不同 Microsoft 認知服務 API 的介面和類別,以及類別用來 DependencyService 尋找在平台項目中實作介面的類別。
Utils 包含類別 Timer ,類別會使用此 AuthenticationService 類別每隔 9 分鐘更新一次 JWT 存取令牌。
檢視 包含應用程式的頁面。

共用程式代碼專案也包含一些重要的檔案:

檔案 目的
Constants.cs 類別 Constants ,指定叫用之 Microsoft 認知服務 API 的 API 金鑰和端點。 API 金鑰常數需要更新才能存取不同的認知服務 API。
App.xaml.cs 類別 App 負責具現化應用程式在每個平台上顯示的第一頁,以及用來叫用資料庫作業的 TodoManager 類別。

NuGet 套件

範例應用程式會使用下列 NuGet 套件:

  • Newtonsoft.Json – 提供適用於 .NET 的 JSON 架構。
  • PCLStorage – 提供一組跨平台本機檔案 IO API。
  • sqlite-net-pcl – 提供 SQLite 資料庫記憶體。
  • Xam.Plugin.Media – 提供跨平臺相片拍攝和挑選 API。

此外,這些 NuGet 套件也會安裝自己的相依性。

建立資料模型

範例應用程式會 TodoItem 使用 類別來建立顯示及儲存在本機 SQLite 資料庫中的數據模型。 下列程式碼範例顯示 TodoItem 類別:

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

屬性 ID 可用來唯一識別每個 TodoItem 實例,並以 SQLite 屬性裝飾,讓屬性成為資料庫中自動遞增的主鍵。

叫用資料庫作業

類別 TodoItemRepository 會實作資料庫作業,而且可以透過 App.TodoManager 屬性存取 類別的實例。 類別 TodoItemRepository 提供下列方法來叫用資料庫作業:

  • GetAllItemsAsync – 從本機 SQLite 資料庫擷取所有專案。
  • GetItemAsync – 從本機 SQLite 資料庫擷取指定的專案。
  • SaveItemAsync – 在本機 SQLite 資料庫中建立或更新專案。
  • DeleteItemAsync – 從本機 SQLite 資料庫刪除指定的專案。

平臺項目實作

Services共用程式代碼專案中的資料夾包含 IFileHelper 類別所使用的 DependencyServiceIAudioRecorderService 介面,以找出在平臺項目中實作介面的類別。

介面 IFileHelper 是由每個平台專案中的 FileHelper 類別所實作。 這個類別是由單一方法所組成, GetLocalFilePath這個方法會傳回本機檔案路徑來儲存 SQLite 資料庫。

介面 IAudioRecorderService 是由每個平台專案中的 AudioRecorderService 類別所實作。 這個類別包含 StartRecordingStopRecording和支援的方法,這些方法會使用平臺 API 從裝置的麥克風錄製音訊,並將其儲存為 wav 檔案。 在 iOS 上,會 AudioRecorderService 使用 AVFoundation API 來錄製音訊。 在 Android 上AudioRecord,會AudioRecordService使用 API 來錄製音訊。 在 通用 Windows 平台 (UWP) 上,會AudioRecorderService使用 AudioGraph API 來錄製音訊。

叫用認知服務

範例應用程式會叫用下列 Microsoft 認知服務: