Android - Trình kiểm tra chính tả

Nền tảng Android cung cấp khung công cụ kiểm tra chính tả cho phép bạn triển khai và truy cập kiểm tra chính tả trong ứng dụng của mình.

Để sử dụng trình kiểm tra chính tả, bạn cần triển khai SpellCheckerSessionListenergiao diện và ghi đè các phương thức của nó. Cú pháp của nó được đưa ra dưới đây:

public class HelloSpellCheckerActivity extends Activity implements SpellCheckerSessionListener {
   @Override
   public void onGetSuggestions(final SuggestionsInfo[] arg0) {
      // TODO Auto-generated method stub
   }
   
   @Override
   public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] arg0) {
      // TODO Auto-generated method stub
   }
}

Điều tiếp theo bạn cần làm là tạo một đối tượng SpellCheckerSessionlớp học. Đối tượng này có thể được khởi tạo bằng cách gọinewSpellCheckerSessionphương thức của lớp TextServicesManager. Lớp này xử lý sự tương tác giữa các dịch vụ ứng dụng và văn bản. Bạn cần yêu cầu dịch vụ hệ thống để khởi tạo nó. Cú pháp của nó được đưa ra dưới đây:

private SpellCheckerSession mScs;
final TextServicesManager tsm = (TextServicesManager) getSystemService(
Context.TEXT_SERVICES_MANAGER_SERVICE);
mScs = tsm.newSpellCheckerSession(null, null, this, true);

Điều cuối cùng bạn cần làm là gọi getSuggestionsphương pháp để nhận đề xuất cho bất kỳ văn bản nào, bạn muốn. Các đề xuất sẽ được chuyển vàoonGetSuggestions từ đó bạn có thể làm bất cứ điều gì bạn muốn.

mScs.getSuggestions(new TextInfo(editText1.getText().toString()), 3);

Phương thức này nhận hai tham số. Tham số đầu tiên là chuỗi ở dạng đối tượng Thông tin văn bản và tham số thứ hai là số cookie được sử dụng để phân biệt các đề xuất.

Ngoài các phương pháp, có các phương pháp khác được cung cấp bởi SpellCheckerSessionlớp để có những đề xuất xử lý tốt hơn. Các phương pháp này được liệt kê bên dưới -

Sr.No Phương pháp & mô tả
1

cancel()

Hủy các tác vụ kiểm tra chính tả đang chờ xử lý và đang chạy

2

close()

Kết thúc phiên này và cho phép TextServicesManagerService ngắt kết nối trình kiểm tra chính tả bị ràng buộc

3

getSentenceSuggestions(TextInfo[] textInfos, int suggestionsLimit)

Nhận đề xuất từ ​​các câu được chỉ định

4

getSpellChecker()

Nhận thông tin dịch vụ kiểm tra chính tả mà phiên kiểm tra chính tả này có.

5

isSessionDisconnected()

Đúng nếu kết nối với dịch vụ văn bản của phiên này bị ngắt kết nối và không còn hoạt động.

Thí dụ

Đây là một ví dụ minh họa việc sử dụng Spell Checker. Nó tạo ra một ứng dụng kiểm tra chính tả cơ bản cho phép bạn viết văn bản và nhận đề xuất.

Để thử nghiệm với ví dụ này, bạn có thể chạy điều này trên thiết bị thực tế hoặc trong trình giả lập.

Các bước Sự miêu tả
1 Bạn sẽ sử dụng Android studio để tạo ứng dụng Android theo gói com.example.sairamkrishna.myapplication.
2 Sửa đổi tệp src / MainActivity.java để thêm mã cần thiết.
3 Sửa đổi res / layout / main để thêm các thành phần XML tương ứng
4 Chạy ứng dụng và chọn một thiết bị Android đang chạy và cài đặt ứng dụng trên đó và xác minh kết quả

Sau đây là nội dung của tệp hoạt động chính được sửa đổi src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.textservice.TextInfo;
import android.view.textservice.TextServicesManager;

import android.widget.Button;
import android.widget.EditText;

import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SpellCheckerSession;
import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
import android.view.textservice.SuggestionsInfo;

import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements SpellCheckerSessionListener  {
   Button b1;
   TextView tv1;
   EditText ed1;
   private SpellCheckerSession mScs;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1=(Button)findViewById(R.id.button);
      tv1=(TextView)findViewById(R.id.textView3);

      ed1=(EditText)findViewById(R.id.editText);
      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(getApplicationContext(),
               ed1.getText().toString(),Toast.LENGTH_SHORT).show();
            mScs.getSuggestions(new TextInfo(ed1.getText().toString()), 3);
         }
      });
   }

   public void onResume() {
      super.onResume();
      final TextServicesManager tsm = (TextServicesManager)
         getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
      mScs = tsm.newSpellCheckerSession(null, null, this, true);
   }

   public void onPause() {
      super.onPause();
      if (mScs != null) {
         mScs.close();
      }
   }

   public void onGetSuggestions(final SuggestionsInfo[] arg0) {
      final StringBuilder sb = new StringBuilder();

      for (int i = 0; i < arg0.length; ++i) {
         // Returned suggestions are contained in SuggestionsInfo
         final int len = arg0[i].getSuggestionsCount();
         sb.append('\n');

         for (int j = 0; j < len; ++j) {
            sb.append("," + arg0[i].getSuggestionAt(j));
         }

         sb.append(" (" + len + ")");
      }
		
      runOnUiThread(new Runnable() {
         public void run() {
            tv1.append(sb.toString());
         }
      });
   }

   @Override
   public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] arg0) {
      // TODO Auto-generated method stub
   }
}

Sau đây là nội dung sửa đổi của xml res/layout/main.xml.

Trong đoạn mã sau abc cho biết logo của tutorialspoint.com
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
   
   <TextView android:text="Spell checker " android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Suggestions"
      android:id="@+id/button"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:hint="Enter Text"
      android:layout_above="@+id/button"
      android:layout_marginBottom="56dp"
      android:focusable="true"
      android:textColorHighlight="#ff7eff15"
      android:textColorHint="#ffff25e6"
      android:layout_alignRight="@+id/textview"
      android:layout_alignEnd="@+id/textview"
      android:layout_alignLeft="@+id/textview"
      android:layout_alignStart="@+id/textview" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Suggestions"
      android:id="@+id/textView3"
      android:textSize="25sp"
      android:layout_below="@+id/imageView" />

</RelativeLayout>

Sau đây là nội dung của res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Sau đây là nội dung của AndroidManifest.xml tập tin.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Hãy thử chạy ứng dụng của chúng tôi mà chúng tôi vừa sửa đổi. Tôi cho rằng bạn đã tạo raAVDtrong khi thiết lập môi trường. Để chạy ứng dụng từ Android studio, hãy mở một trong các tệp hoạt động của dự án của bạn và nhấp vào

biểu tượng Chạy từ thanh công cụ. Android studio cài đặt ứng dụng trên AVD của bạn và khởi động nó và nếu mọi thứ đều ổn với thiết lập và ứng dụng của bạn, nó sẽ hiển thị sau cửa sổ Trình mô phỏng -

Bây giờ những gì bạn cần làm là nhập bất kỳ văn bản nào vào trường. Ví dụ, tôi đã nhập một số văn bản. Nhấn nút gợi ý. Thông báo sau sẽ xuất hiện trong AVD của bạn cùng với các đề xuất -

Bây giờ thay đổi văn bản và nhấn lại nút, giống như tôi đã làm. Và đây là những gì hiển thị trên màn hình.