Khung kiểm tra chính tả

Nền tảng Android cung cấp khung kiểm tra chính tả cho phép bạn triển khai và truy cập tính năng kiểm tra lỗi chính tả trong ứng dụng của bạn. Khung này là một trong những Text Service API (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 sẽ tạo đối tượng session (phiên) kiểm tra chính tả. Dựa trên nội dung bạn cung cấp, đối tượng phiên trả về các đề xuất chính tả do 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ả:

Hình ảnh minh hoạ vòng đời của dịch vụ kiểm tra chính tả
Hình 1. Dịch vụ kiểm tra chính tả vòng đời.

Để bắt đầu kiểm tra chính tả, ứng dụng của bạn sẽ bắt đầu quá trình triển khai chính tả . Ứng dụng trong ứng dụng của bạn, chẳng hạn như hoạt động hoặc giao diện người dùng riêng lẻ yêu cầu phiên kiểm tra chính tả từ dịch vụ, sau đó sử dụng phiên để nhận gợi ý về văn bản. Khi ứng dụng khách chấm dứt hoạt động của mình, nó sẽ đóng phiên kiểm tra chính tả của nó. Nếu cần, ứng dụng của bạn có thể tắt chính tả bất cứ lúc nào.

Triển khai dịch vụ kiểm tra chính tả

Để sử dụng khung kiểm tra chính tả trong ứng dụng của bạn, hãy thêm dịch vụ kiểm tra chính tả bao gồm định nghĩa đối tượng phiên. Bạn cũng có thể thêm hoạt động không bắt buộc đối với ứ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 của bạn.

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:

  • Lớp con của SpellCheckerService
    SpellCheckerService triển khai cả Service và giao diện khung kiểm tra chính tả. Trong lớp con của bạn, triển khai phương thức sau:
    createSession()
    Phương thức ban đầu trả về một giá trị đối tượng SpellCheckerService.Session đến một ứng dụng khách muốn kiểm tra chính tả.
  • Việc triển khai SpellCheckerService.Session
    Đối tượng mà dịch vụ kiểm tra chính tả cung cấp cho ứng dụng để cho phép chúng chuyển văn bản đến trình kiểm tra chính tả và nhận đề xuất. Trong phạm vi này , hãy triển khai các phương thức sau:
    onCreate()
    Hệ thống gọi để phản hồi createSession() Trong phương thức này, bạn có thể khởi tạo đối tượng SpellCheckerService.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ả. Phương thức này trả về một mảng SentenceSuggestionsInfo chứa gợi ý cho các câu được chuyển tới đó.

    Nếu muốn, bạn có thể triển khai onCancel(), xử lý các yêu cầu huỷ kiểm tra lỗi chính tả; onGetSuggestions(), xử lý yêu cầu gợi ý từ; hoặc onGetSuggestionsMultiple(), Xử lý hàng loạt yêu cầu gợi ý từ.

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à 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 cho 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 liên kết với dịch vụ. Định nghĩa về dịch vụ 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 những nội dung sau 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>

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 phần cài đặt. Tệp 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, loại 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 sử dụng TextViewEditText các chế độ xem sẽ tự động được hưởng lợi từ kiểm tra chính tả, vì TextView tự động sử dụng trình kiểm tra chính tả:

Hình ảnh minh hoạ cách tự động bật trình kiểm tra chính tả trong EditText
Hình 2. Kiểm tra chính tả trong EditText.

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ả tại các trường hợp khác. Sơ đồ dưới đây cho thấy quy trình kiểm soát hoạt động tương tác bằng dịch vụ kiểm tra chính tả:

Hình ảnh minh hoạ sơ đồ tương tác với dịch vụ kiểm tra chính tả
Hình 3. Tương tác với trình kiểm tra chính tả .

Chiến lược phát hành đĩa đơn Mỹ Latinh trình chỉnh sửa phương thức nhập trong Dự án nguồn mở Android có chứa một ví dụ về kiểm tra chính tả.