Android - Yazım Denetleyici

Android platformu, uygulamanızda yazım denetimini uygulamanıza ve bunlara erişmenize olanak tanıyan bir yazım denetimi çerçevesi sunar.

Yazım denetleyicisini kullanmak için uygulamanız gerekir SpellCheckerSessionListenerarayüz ve yöntemlerini geçersiz kılın. Söz dizimi aşağıda verilmiştir -

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
   }
}

Yapmanız gereken sonraki şey, bir nesne oluşturmaktır. SpellCheckerSessionsınıf. Bu nesne çağrılarak somutlaştırılabilirnewSpellCheckerSessionTextServicesManager sınıfının yöntemi. Bu sınıf, uygulama ve metin hizmetleri arasındaki etkileşimi yönetir. Bunu başlatmak için sistem hizmeti istemeniz gerekir. Söz dizimi aşağıda verilmiştir -

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

Yapman gereken son şey aramak getSuggestionsistediğiniz herhangi bir metin için öneri almak için yöntem. Öneriler,onGetSuggestions istediğinizi yapabileceğiniz bir yöntem.

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

Bu yöntem iki parametre alır. İlk parametre, Metin Bilgisi nesnesi biçimindeki dizedir ve ikinci parametre, önerileri ayırt etmek için kullanılan çerez numarasıdır.

Yöntemler dışında, tarafından sağlanan başka yöntemler de vardır. SpellCheckerSessiondaha iyi kullanım önerileri için sınıf. Bu yöntemler aşağıda listelenmiştir -

Sr.No Yöntem ve açıklama
1

cancel()

Bekleyen ve çalışan yazım denetimi görevlerini iptal edin

2

close()

Bu oturumu tamamlayın ve TextServicesManagerService'in bağlı yazım denetleyicinin bağlantısını kesmesine izin verin

3

getSentenceSuggestions(TextInfo[] textInfos, int suggestionsLimit)

Belirtilen cümlelerden öneriler alın

4

getSpellChecker()

Bu yazım denetleyici oturumunun sahip olduğu yazım denetleyici hizmeti bilgilerini alın.

5

isSessionDisconnected()

Bu oturumun bir metin hizmetine olan bağlantı kesilirse ve canlı değilse doğrudur.

Misal

Yazım Denetleyicisinin kullanımını gösteren bir örnek aşağıda verilmiştir. Metin yazmanıza ve öneriler almanıza olanak tanıyan temel bir yazım denetimi uygulaması oluşturur.

Bu örneği denemek için, bunu gerçek bir cihazda veya bir emülatörde çalıştırabilirsiniz.

Adımlar Açıklama
1 Com.example.sairamkrishna.myapplication paketi altında Android uygulaması oluşturmak için Android stüdyosunu kullanacaksınız.
2 Gerekli kodu eklemek için src / MainActivity.java dosyasını değiştirin.
3 İlgili XML bileşenlerini eklemek için res / layout / main'i değiştirin
4 Uygulamayı çalıştırın ve çalışan bir android cihaz seçin ve üzerine uygulamayı yükleyin ve sonuçları doğrulayın

Aşağıda, değiştirilen ana aktivite dosyasının içeriği yer almaktadır 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
   }
}

Xml'nin değiştirilmiş içeriği aşağıdadır res/layout/main.xml.

Aşağıdaki kodda abc tutorialspoint.com logosunu gösterir
<?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>

Aşağıdakilerin içeriği res/values/string.xml.

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

Aşağıdakilerin içeriği AndroidManifest.xml dosya.

<?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>

Şimdi değiştirdiğimiz uygulamamızı çalıştırmayı deneyelim. Senin yarattığını varsayıyorumAVDortam kurulumu yapılırken. Uygulamayı Android stüdyosundan çalıştırmak için, projenizin etkinlik dosyalarından birini açın

ve araç çubuğundan Çalıştır simgesine tıklayın . Android stüdyo, uygulamayı AVD'nize yükler ve başlatır ve kurulumunuz ve uygulamanızla ilgili her şey yolundaysa, aşağıdaki Emulator penceresini görüntüler -

Şimdi yapmanız gereken, alana herhangi bir metin girmektir. Örneğin, bir metin girdim. Öneriler düğmesine basın. Aşağıdaki bildirim AVD'de önerilerle birlikte görünecektir -

Şimdi metni değiştirin ve benim yaptığım gibi düğmeye tekrar basın. Ve ekrana gelen de bu.