Android 플랫폼은 애플리케이션에서 맞춤법 검사를 구현하고 맞춤법 검사에 액세스할 수 있는 맞춤법 검사기 프레임워크를 제공합니다. 이 프레임워크는 Android 플랫폼에서 제공하는 Text Service API 중 하나입니다.
앱에서 프레임워크를 사용하려면 맞춤법 검사기 세션 객체를 생성하는 특수 유형의 Android 서비스를 만듭니다. 제공한 텍스트에 기반해 세션 객체는 맞춤법 검사기에서 생성된 맞춤법 추천을 반환합니다.
맞춤법 검사기 수명 주기
다음 다이어그램은 맞춤법 검사기 서비스의 수명 주기를 보여줍니다.

그림 1. 맞춤법 검사기 서비스의 수명 주기
맞춤법 검사를 시작하려면 앱에서 맞춤법 검사기 서비스의 구현을 시작합니다. 활동이나 개별 UI 요소와 같은 앱의 클라이언트는 서비스에서 맞춤법 검사기 세션을 요청한 다음 세션을 사용하여 텍스트 추천을 받습니다. 클라이언트가 작업을 종료하면 맞춤법 검사기 세션이 종료됩니다. 필요한 경우 앱에서 맞춤법 검사기 서비스를 언제든지 종료할 수 있습니다.
맞춤법 검사기 서비스 구현
앱에서 맞춤법 검사기 프레임워크를 사용하려면 세션 객체 정의를 포함하여 맞춤법 검사기 서비스 구성요소를 추가하세요. 설정을 제어하는 선택적 활동을 앱에 추가할 수도 있습니다. 또한 맞춤법 검사기 서비스를 설명하는 XML 메타데이터 파일을 추가하고 매니페스트 파일에 적절한 요소를 추가해야 합니다.
맞춤법 검사기 클래스
다음 클래스로 서비스와 세션 객체를 정의하세요.
SpellCheckerService
의 서브클래스SpellCheckerService
는Service
클래스와 맞춤법 검사기 프레임워크 인터페이스를 모두 구현합니다. 서브클래스 내에서 다음 메서드를 구현해야 합니다.createSession()
- 맞춤법 검사를 실행하려는 클라이언트에
SpellCheckerService.Session
객체를 반환하는 팩토리 메서드입니다.
이 클래스 구현에 관한 자세한 내용은 맞춤법 검사기 서비스 샘플 앱을 참고하세요.
SpellCheckerService.Session
구현- 맞춤법 검사기 서비스가 클라이언트에 제공하는 객체로 맞춤법 검사기에 텍스트를 전달하여 추천을 받을 수 있습니다. 이 클래스 내에서 다음 메서드를 구현해야 합니다.
-
onCreate()
createSession()
에 대한 응답으로 시스템에서 호출합니다. 이 메서드에서 현재 언어 등에 기반하여SpellCheckerService.Session
객체를 초기화할 수 있습니다.-
onGetSentenceSuggestionsMultiple()
- 실제 맞춤법 검사를 실행합니다. 이 메서드는 전달된 문장 추천을 포함하는
SentenceSuggestionsInfo
배열을 반환합니다.
선택적으로 맞춤법 검사의 취소 요청을 처리하는
onCancel()
, 단어 제안 요청을 처리하는onGetSuggestions()
또는 단어 제안 요청 배치를 처리하는onGetSuggestionsMultiple()
을 구현할 수 있습니다.이 클래스의 구현에 관한 자세한 내용은 맞춤법 검사기 클라이언트 샘플 앱을 참고하세요.
-
참고: 맞춤법 검사의 모든 측면을 비동기 및 스레드로부터 안전한 것으로 구현해야 합니다. 맞춤법 검사기는 다양한 코어에서 실행되는 여러 스레드에서 동시에 호출될 수 있습니다. SpellCheckerService
와 SpellCheckerService.Session
이 이 문제를 자동으로 처리합니다.
맞춤법 검사기 매니페스트 및 메타데이터
코드 외에도 적절한 매니페스트 파일과 메타데이터 파일을 맞춤법 검사기에 제공해야 합니다.
매니페스트 파일은 다음 스니펫과 같이 애플리케이션, 서비스, 설정 제어 활동을 정의합니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.samplespellcheckerservice" > <application android:label="@string/app_name" > <service android:label="@string/app_name" android:name=".SampleSpellCheckerService" android:permission="android.permission.BIND_TEXT_SERVICE" > <intent-filter > <action android:name="android.service.textservice.SpellCheckerService" /> </intent-filter> <meta-data android:name="android.view.textservice.scs" android:resource="@xml/spellchecker" /> </service> <activity android:label="@string/sample_settings" android:name="SpellCheckerSettingsActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> </application> </manifest>
서비스를 사용하려는 구성요소는 BIND_TEXT_SERVICE
권한을 요청하여 시스템만 서비스에 바인딩되도록 해야 합니다. 서비스 정의는 또한 spellchecker.xml
메타데이터 파일을 지정합니다. 이에 관한 내용은 다음 섹션에서 설명합니다.
메타데이터 파일 spellchecker.xml
에는 다음 XML이 포함됩니다.
<spell-checker xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/spellchecker_name" android:settingsActivity="com.example.SpellCheckerSettingsActivity"> <subtype android:label="@string/subtype_generic" android:subtypeLocale="en” /> <subtype android:label="@string/subtype_generic" android:subtypeLocale="fr” /> </spell-checker>
메타데이터는 맞춤법 검사기가 설정을 제어하는 데 사용하는 활동을 지정합니다. 맞춤법 검사기의 하위유형도 정의합니다. 이 경우에는 하위유형이 맞춤법 검사기가 처리할 수 있는 언어를 정의합니다.
클라이언트에서 맞춤법 검사기 서비스에 액세스
TextView
가 맞춤법 검사기를 자동으로 사용하므로 TextView
뷰를 사용하는 애플리케이션은 자동으로 맞춤법 검사의 혜택을 받습니다. 다음 스크린샷이 이를 보여줍니다.


그림 2. TextView에서 맞춤법 검사
하지만 다른 경우에도 맞춤법 검사기 서비스와 직접 상호작용하는 것이 좋습니다. 다음 다이어그램은 맞춤법 검사기 서비스와 상호작용하는 컨트롤의 흐름을 보여줍니다.

그림 3. 맞춤법 검사기 서비스와 상호작용
Android 오픈소스 프로젝트의 LatinIME 입력 방식 편집기(IME)에는 맞춤법 검사의 예가 포함되어 있습니다.