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
Ş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.