다음을 통해 공유


Xamarin.Forms 및 Azure Cognitive Services 소개

Microsoft Cognitive Services는 얼굴 인식, 음성 인식 및 언어 이해와 같은 기능을 추가하여 애플리케이션을 보다 지능적으로 만들기 위해 개발자가 사용할 수 있는 API, SDK 및 서비스 집합입니다. 이 문서에서는 Microsoft Cognitive Service API 중 일부를 호출하는 방법을 보여 주는 샘플 애플리케이션을 소개합니다.

개요

함께 제공되는 샘플은 다음과 같은 기능을 제공하는 할 일 목록 애플리케이션입니다.

  • 작업 목록을 봅니다.
  • 소프트 키보드를 통해 또는 Microsoft Speech API를 사용하여 음성 인식을 수행하여 작업을 추가하고 편집합니다.
  • Bing Spell Check API를 사용하여 검사 작업 맞춤법 검사 자세한 내용은 Bing Spell Check API를 사용하여 맞춤법 검사를 참조하세요.
  • 번역기 API를 사용하여 작업을 영어에서 독일어로 번역합니다. 자세한 내용은 번역기 API를 사용하여 텍스트 번역을 참조하세요.
  • 작업을 삭제합니다.
  • 작업의 상태 '완료'로 설정합니다.

Warning

Bing Speech API는 Azure Speech Service를 위해 더 이상 사용되지 않습니다. Azure Speech Service 전용 샘플은 Speech Service API를 사용한 음성 인식을 참조하세요.

작업은 로컬 SQLite 데이터베이스에 저장됩니다. 로컬 SQLite 데이터베이스 사용에 대한 자세한 내용은 로컬 데이터베이스 작업을 참조 하세요.

TodoListPage 애플리케이션이 시작될 때 표시됩니다. 이 페이지에는 로컬 데이터베이스에 저장된 작업의 목록이 표시되며 사용자가 새 작업을 만들거나 애플리케이션을 평가할 수 있습니다.

TodoListPage

단추를 클릭하여 새 항목을 만들 수 있습니다. 이 단추를 클릭하면 + 해당 항목으로 이동합니다 TodoItemPage. 작업을 선택하여 이 페이지로 이동할 수도 있습니다.

TodoItemPage

작업을 TodoItemPage 만들고, 편집하고, 맞춤법 검사, 번역, 저장 및 삭제할 수 있습니다. 음성 인식을 사용하여 작업을 만들거나 편집할 수 있습니다. 이렇게 하려면 마이크 단추를 눌러 녹음을 시작하고 같은 단추를 두 번 눌러 녹음을 중지하여 Bing Speech Recognition API로 녹음을 보냅니다.

애플리케이션 해부학 이해

샘플 애플리케이션에 대한 공유 코드 프로젝트는 5개의 기본 폴더로 구성됩니다.

폴더 목적
모델 애플리케이션에 대한 데이터 모델 클래스를 포함합니다. 여기에는 애플리케이션에서 TodoItem 사용하는 단일 데이터 항목을 모델로 하는 클래스가 포함됩니다. 폴더에는 다른 Microsoft Cognitive Service API에서 반환된 JSON 응답을 모델링하는 데 사용되는 클래스도 포함되어 있습니다.
리포지토리 ITodoItemRepository 데이터베이스 작업을 수행하는 데 사용되는 인터페이스 및 TodoItemRepository 클래스를 포함합니다.
Services 플랫폼 프로젝트에서 인터페이스를 구현하는 클래스를 찾기 위해 클래스에서 사용하는 인터페이스와 함께 다른 Microsoft Cognitive Service API에 액세스하는 데 사용되는 DependencyService 인터페이스 및 클래스를 포함합니다.
utils(유틸리티) 클래스에서 Timer 9분마다 JWT 액세스 토큰을 갱신하는 데 사용하는 AuthenticationService 클래스를 포함합니다.
애플리케이션의 페이지를 포함합니다.

공유 코드 프로젝트에는 몇 가지 중요한 파일도 포함되어 있습니다.

파일 목적
Constants.cs Constants 호출되는 Microsoft Cognitive Service API에 대한 API 키 및 엔드포인트를 지정하는 클래스입니다. API 키 상수는 다른 Cognitive Service 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 플랫폼 프로젝트에서 인터페이스를 구현하는 클래스를 DependencyService 찾기 위해 클래스에서 사용하는 인터페이스와 IAudioRecorderService 인터페이스가 포함되어 IFileHelper 있습니다.

인터페이스는 IFileHelper 각 플랫폼 프로젝트의 클래스에 의해 FileHelper 구현됩니다. 이 클래스는 SQLite 데이터베이스를 저장하기 위한 로컬 파일 경로를 반환하는 단일 메서드 GetLocalFilePath로 구성됩니다.

인터페이스는 IAudioRecorderService 각 플랫폼 프로젝트의 클래스에 의해 AudioRecorderService 구현됩니다. 이 클래스는 StartRecordingStopRecording플랫폼 API를 사용하여 디바이스의 마이크에서 오디오를 녹음하고 wav 파일로 저장하는 지원 메서드로 구성됩니다. iOS에서는 AudioRecorderService API를 AVFoundation 사용하여 오디오를 녹음합니다. Android에서는 AudioRecordService API를 AudioRecord 사용하여 오디오를 녹음합니다. UWP(유니버설 Windows 플랫폼)AudioRecorderService에서 API를 AudioGraph 사용하여 오디오를 녹음합니다.

Cognitive Services 호출

샘플 애플리케이션은 다음 Microsoft Cognitive Services를 호출합니다.