Xamarin.ios 및 Azure Cognitive Services 소개Xamarin.Forms and Azure Cognitive Services Introduction

샘플 다운로드 샘플 다운로드Download Sample Download the sample

Microsoft Cognitive Services는 개발자가 얼굴 인식, 음성 인식 및 언어 이해와 같은 기능을 추가 하 여 응용 프로그램을 보다 지능적으로 만드는 데 사용할 수 있는 Api, Sdk 및 서비스 집합입니다. 이 문서에서는 일부 Microsoft 인식 서비스 Api를 호출 하는 방법을 보여 주는 예제 응용 프로그램에 대해 소개 합니다.Microsoft Cognitive Services are a set of APIs, SDKs, and services available to developers to make their applications more intelligent by adding features such as facial recognition, speech recognition, and language understanding. This article provides an introduction to the sample application that demonstrates how to invoke some of the Microsoft Cognitive Service APIs.

개요Overview

함께 제공 되는 샘플은 다음과 같은 기능을 제공 하는 할 일 목록 응용 프로그램입니다.The accompanying sample is a todo list application that provides functionality to:

태스크는 로컬 SQLite 데이터베이스에 저장 됩니다.Tasks are stored in a local SQLite database. 로컬 SQLite 데이터베이스를 사용 하는 방법에 대 한 자세한 내용은 로컬 데이터베이스 작업을 참조 하세요.For more information about using a local SQLite database, see Working with a Local Database.

응용 프로그램이 시작 될 때 TodoListPage 표시 됩니다.The TodoListPage is displayed when the application is launched. 이 페이지는 로컬 데이터베이스에 저장 된 모든 작업 목록을 표시 하 고 사용자가 새 작업을 만들거나 응용 프로그램의 등급을 지정할 수 있도록 합니다.This page displays a list of any tasks stored in the local database, and allows the user to create a new task or to rate the application:

@No__t_2를 탐색 하는 + 단추를 클릭 하 여 새 항목을 만들 수 있습니다.New items can be created by clicking on the + button, which navigates to the TodoItemPage. 작업을 선택 하 여이 페이지를 탐색할 수도 있습니다.This page can also be navigated to by selecting a task:

@No__t_0를 사용 하 여 작업을 만들고, 편집 하 고, 맞춤법을 검사 하 고, 번역 하 고, 저장 하 고, 삭제할 수 있습니다.The TodoItemPage allows tasks to be created, edited, spell-checked, translated, saved, and deleted. 음성 인식을 사용 하 여 작업을 만들거나 편집할 수 있습니다.Speech recognition can be used to create or edit a task. 이렇게 하려면 마이크 단추를 눌러 기록을 시작 하 고, 동일한 단추를 두 번 눌러 기록을 중지할 수 있습니다. 그러면 기록을 중지할 수 있으며,이는 기록을 Bing Speech 인식 API로 보냅니다.This is achieved by pressing the microphone button to start recording, and by pressing the same button a second time to stop recording, which sends the recording to the Bing Speech Recognition API.

@No__t_0에서 smilies 단추를 클릭 하면 얼굴 식 이미지에 대해 emotion 인식 기능을 수행 하는 데 사용 되는 RateAppPage 이동 합니다.Clicking the smilies button on the TodoListPage navigates to the RateAppPage, which is used to perform emotion recognition on an image of a facial expression:

@No__t_0를 사용 하면 표시 되는 반환 된 emotion를 사용 하 여 Face API에 제출 되는 얼굴 사진을 가져올 수 있습니다.The RateAppPage allows the user to take a photo of their face, which is submitted to the Face API with the returned emotion being displayed.

응용 프로그램 분석 이해Understand the application anatomy

샘플 응용 프로그램에 대 한 공유 코드 프로젝트는 다음과 같은 5 개의 기본 폴더로 구성 됩니다.The shared code project for the sample application consists of five main folders:

폴더Folder 용도Purpose
모델Models 응용 프로그램에 대 한 데이터 모델 클래스를 포함 합니다.Contains the data model classes for the application. 여기에는 응용 프로그램에서 사용 하는 데이터의 단일 항목을 모델링 하는 TodoItem 클래스가 포함 됩니다.This includes the TodoItem class, which models a single item of data used by the application. 이 폴더에는 여러 Microsoft 인식 서비스 Api에서 반환 된 JSON 응답을 모델링 하는 데 사용 되는 클래스도 포함 되어 있습니다.The folder also includes classes used to model JSON responses returned from different Microsoft Cognitive Service APIs.
리포지토리에서Repositories 데이터베이스 작업을 수행 하는 데 사용 되는 ITodoItemRepository 인터페이스 및 TodoItemRepository 클래스를 포함 합니다.Contains the ITodoItemRepository interface and TodoItemRepository class that are used to perform database operations.
서비스Services 플랫폼 프로젝트의 인터페이스를 구현 하는 클래스를 찾기 위해 DependencyService 클래스에서 사용 하는 인터페이스와 함께 다양 한 Microsoft 인지 서비스 Api에 액세스 하는 데 사용 되는 인터페이스와 클래스를 포함 합니다.Contains the interfaces and classes that are used to access different Microsoft Cognitive Service APIs, along with interfaces that are used by the DependencyService class to locate the classes that implement the interfaces in platform projects.
유틸리티Utils @No__t_1 클래스에서 9 분 마다 JWT 액세스 토큰을 갱신 하는 데 사용 하는 Timer 클래스를 포함 합니다.Contains the Timer class, which is used by the AuthenticationService class to renew a JWT access token every 9 minutes.
보기Views 응용 프로그램에 대 한 페이지를 포함 합니다.Contains the pages for the application.

공유 코드 프로젝트에는 몇 가지 중요 한 파일도 포함 되어 있습니다.The shared code project also contains some important files:

파일File 용도Purpose
Constants.csConstants.cs 호출 되는 Microsoft 인식 서비스 Api에 대 한 API 키 및 끝점을 지정 하는 Constants 클래스입니다.The Constants class, which specifies the API keys and endpoints for the Microsoft Cognitive Service APIs that are invoked. API 키 상수를 업데이트 하려면 다른 인지 서비스 Api에 액세스 해야 합니다.The API key constants require updating to access the different Cognitive Service APIs.
App.xaml.csApp.xaml.cs @No__t_0 클래스는 각 플랫폼에서 응용 프로그램에 의해 표시 되는 첫 페이지와 데이터베이스 작업을 호출 하는 데 사용 되는 TodoManager 클래스를 모두 인스턴스화하는 역할을 합니다.The App class is responsible for instantiating both the first page that will be displayed by the application on each platform, and the TodoManager class that is used to invoke database operations.

NuGet 패키지NuGet packages

샘플 응용 프로그램은 다음 NuGet 패키지를 사용 합니다.The sample application uses the following NuGet packages:

  • Newtonsoft.Json – .NET 용 JSON 프레임 워크를 제공 합니다.Newtonsoft.Json – provides a JSON framework for .NET.
  • PCLStorage – 플랫폼 간 로컬 파일 IO Api 집합을 제공 합니다.PCLStorage – provides a set of cross-platform local file IO APIs.
  • sqlite-net-pcl – SQLite 데이터베이스 저장소를 제공 합니다.sqlite-net-pcl – provides SQLite database storage.
  • Xam.Plugin.Media – 플랫폼 간 사진을 만들고 선택 하는 Api를 제공 합니다.Xam.Plugin.Media – provides cross-platform photo taking and picking APIs.

또한 이러한 NuGet 패키지는 자체 종속성을 설치 합니다.In addition, these NuGet packages also install their own dependencies.

데이터 모델링Model the data

이 샘플 응용 프로그램에서는 TodoItem 클래스를 사용 하 여 로컬 SQLite 데이터베이스에 표시 되 고 저장 되는 데이터를 모델링 합니다.The sample application uses the TodoItem class to model the data that is displayed and stored in the local SQLite database. 다음 코드 예제는 TodoItem 클래스를 보여줍니다.The following code example shows the TodoItem class:

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

@No__t_0 속성은 각 TodoItem 인스턴스를 고유 하 게 식별 하는 데 사용 되며, 속성을 데이터베이스의 자동 증분 기본 키로 설정 하는 SQLite 특성으로 데코 레이트 됩니다.The ID property is used to uniquely identify each TodoItem instance, and is decorated with SQLite attributes that make the property an auto-incrementing primary key in the database.

데이터베이스 작업 호출Invoke database operations

@No__t_0 클래스는 데이터베이스 작업을 구현 하 고 클래스의 인스턴스는 App.TodoManager 속성을 통해 액세스할 수 있습니다.The TodoItemRepository class implements database operations, and an instance of the class can be accessed through the App.TodoManager property. @No__t_0 클래스는 다음과 같은 메서드를 제공 하 여 데이터베이스 작업을 호출 합니다.The TodoItemRepository class provides the following methods to invoke database operations:

  • Getallitems async – 로컬 SQLite 데이터베이스에서 모든 항목을 검색 합니다.GetAllItemsAsync – retrieves all of the items from the local SQLite database.
  • Getitemasync – 로컬 SQLite 데이터베이스에서 지정 된 항목을 검색 합니다.GetItemAsync – retrieves a specified item from the local SQLite database.
  • Saveitemasync – 로컬 SQLite 데이터베이스에서 항목을 만들거나 업데이트 합니다.SaveItemAsync – creates or updates an item in the local SQLite database.
  • Deleteitemasync – 로컬 SQLite 데이터베이스에서 지정 된 항목을 삭제 합니다.DeleteItemAsync – deletes the specified item from the local SQLite database.

플랫폼 프로젝트 구현Platform project implementations

공유 코드 프로젝트의 Services 폴더에는 DependencyService 클래스에서 플랫폼 프로젝트의 인터페이스를 구현 하는 클래스를 찾기 위해 사용 하는 IFileHelperIAudioRecorderService 인터페이스가 포함 되어 있습니다.The Services folder in the shared code project contains the IFileHelper and IAudioRecorderService interfaces that are used by the DependencyService class to locate the classes that implement the interfaces in platform projects.

@No__t_0 인터페이스는 각 플랫폼 프로젝트에서 FileHelper 클래스에 의해 구현 됩니다.The IFileHelper interface is implemented by the FileHelper class in each platform project. 이 클래스는 SQLite 데이터베이스를 저장 하기 위한 로컬 파일 경로를 반환 하는 단일 메서드인 GetLocalFilePath으로 구성 됩니다.This class consists of a single method, GetLocalFilePath, which returns a local file path for storing the SQLite database.

@No__t_0 인터페이스는 각 플랫폼 프로젝트에서 AudioRecorderService 클래스에 의해 구현 됩니다.The IAudioRecorderService interface is implemented by the AudioRecorderService class in each platform project. 이 클래스는 플랫폼 Api를 사용 하 여 장치의 마이크에서 오디오를 기록 하 고 wav 파일로 저장 하는 StartRecording, StopRecording 및 지원 메서드로 구성 됩니다.This class consists of StartRecording, StopRecording, and supporting methods, which use platform APIs to record audio from the device's microphone and store it as a wav file. IOS에서 AudioRecorderServiceAVFoundation API를 사용 하 여 오디오를 기록 합니다.On iOS, the AudioRecorderService uses the AVFoundation API to record audio. Android에서 AudioRecordServiceAudioRecord API를 사용 하 여 오디오를 기록 합니다.On Android, the AudioRecordService uses the AudioRecord API to record audio. UWP (유니버설 Windows 플랫폼)에서 AudioRecorderServiceAudioGraph API를 사용 하 여 오디오를 기록 합니다.On the Universal Windows Platform (UWP), the AudioRecorderService uses the AudioGraph API to record audio.

인식 서비스 호출Invoke cognitive services

샘플 응용 프로그램은 다음 Microsoft Cognitive Services를 호출 합니다.The sample application invokes the following Microsoft Cognitive Services: