Nền tảng Android cung cấp một khung kiểm tra chính tả cho phép bạn triển khai và truy cập vào tính năng kiểm tra chính tả trong ứng dụng. Khung này là một trong các API Dịch vụ văn bản.
Để dùng khung này trong ứng dụng, bạn cần tạo một dịch vụ Android tạo đối tượng phiên của trình kiểm tra chính tả. Dựa trên văn bản bạn cung cấp, đối tượng phiên sẽ trả về các đề xuất chính tả do trình kiểm tra chính tả tạo ra.
Vòng đời của trình kiểm tra chính tả
Sơ đồ dưới đây cho thấy vòng đời của dịch vụ kiểm tra chính tả:
Để bắt đầu kiểm tra chính tả, ứng dụng sẽ bắt đầu triển khai dịch vụ kiểm tra chính tả. Các ứng dụng khách trong ứng dụng của bạn (chẳng hạn như các hoạt động hoặc phần tử riêng lẻ trên giao diện người dùng) sẽ yêu cầu một phiên kiểm tra chính tả qua dịch vụ, sau đó sử dụng phiên đó để nhận các đề xuất cho văn bản. Khi ứng dụng chấm dứt hoạt động, phiên kiểm tra chính tả sẽ đóng. Nếu cần, ứng dụng của bạn có thể tắt dịch vụ kiểm tra chính tả bất cứ lúc nào.
Triển khai dịch vụ kiểm tra chính tả
Để dùng khung trình kiểm tra chính tả trong ứng dụng, hãy thêm thành phần dịch vụ kiểm tra chính tả có bao gồm định nghĩa đối tượng phiên. Bạn cũng có thể thêm một hoạt động không bắt buộc vào ứng dụng để kiểm soát chế độ cài đặt. Thêm tệp siêu dữ liệu XML mô tả dịch vụ kiểm tra chính tả và thêm các phần tử thích hợp vào tệp kê khai.
Lớp kiểm tra chính tả
Xác định đối tượng session (phiên) và service (dịch vụ) với các lớp sau:
-
- Một lớp con của
SpellCheckerService
SpellCheckerService
triển khai cả lớpService
và giao diện khung của trình kiểm tra chính tả. Trong lớp con của bạn, hãy triển khai phương thức sau:createSession()
- Phương thức ban đầu sẽ trả về đối tượng
SpellCheckerService.Session
cho một ứng dụng muốn kiểm tra chính tả.
- Một lớp con của
-
- Hoạt động triển khai
SpellCheckerService.Session
- Một đối tượng mà dịch vụ kiểm tra chính tả cung cấp cho ứng dụng khách để truyền văn bản đến trình kiểm tra chính tả và nhận đề xuất. Trong lớp này, hãy triển khai các phương thức sau:
onCreate()
- Do hệ thống gọi để phản hồi
createSession()
. Trong phương thức này, bạn có thể khởi chạy đối tượngSpellCheckerService.Session
dựa trên ngôn ngữ hiện tại và các thông tin chi tiết khác. onGetSentenceSuggestionsMultiple()
- Thực hiện kiểm tra lỗi chính tả thực tế. Phương thức này trả về một mảng
SentenceSuggestionsInfo
chứa nội dung đề xuất cho các câu được truyền tới.
Nếu muốn, bạn có thể triển khai
onCancel()
để xử lý các yêu cầu huỷ tính năng kiểm tra chính tả;onGetSuggestions()
(xử lý yêu cầu đề xuất từ; hoặconGetSuggestionsMultiple()
) xử lý hàng loạt yêu cầu đề xuất từ. - Hoạt động triển khai
Tệp kê khai và siêu dữ liệu của trình kiểm tra chính tả
Ngoài mã, hãy cung cấp tệp kê khai thích hợp và tệp siêu dữ liệu cho trình kiểm tra chính tả.
Tệp kê khai xác định ứng dụng, dịch vụ và hoạt động để kiểm soát các chế độ cài đặt, như trong ví dụ sau:
<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>
Các thành phần muốn sử dụng dịch vụ phải yêu cầu quyền BIND_TEXT_SERVICE
để đảm bảo rằng chỉ hệ thống mới liên kết với dịch vụ. Định nghĩa của dịch vụ này cũng chỉ định tệp siêu dữ liệu spellchecker.xml
, được mô tả trong phần tiếp theo.
Tệp siêu dữ liệu spellchecker.xml
chứa XML sau:
<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>
Siêu dữ liệu chỉ định hoạt động mà trình kiểm tra chính tả sử dụng để kiểm soát chế độ cài đặt. Hướng dẫn này cũng xác định các loại phụ cho trình kiểm tra chính tả. Trong trường hợp này, kiểu phụ xác định ngôn ngữ mà trình kiểm tra chính tả có thể xử lý.
Truy cập dịch vụ kiểm tra chính tả qua ứng dụng khách
các ứng dụng dùng khung hiển thị TextView
và EditText
sẽ tự động hưởng lợi từ tính năng kiểm tra chính tả, vì TextView
tự động sử dụng trình kiểm tra chính tả:
Tuy nhiên, bạn nên tương tác trực tiếp với dịch vụ kiểm tra chính tả trong các trường hợp khác. Sơ đồ dưới đây cho thấy quy trình kiểm soát khi tương tác với dịch vụ kiểm tra chính tả:
Trình chỉnh sửa phương thức nhập LatinIME trong Dự án nguồn mở Android có một ví dụ về việc kiểm tra lỗi chính tả.