Android: corrector ortográfico

La plataforma Android ofrece un marco de revisión ortográfica que le permite implementar y acceder a la revisión ortográfica en su aplicación.

Para utilizar el corrector ortográfico, debe implementar SpellCheckerSessionListenerinterfaz y anule sus métodos. Su sintaxis se da a continuación:

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

Lo siguiente que debe hacer es crear un objeto de SpellCheckerSessionclase. Se puede crear una instancia de este objeto llamandonewSpellCheckerSessionmétodo de la clase TextServicesManager. Esta clase maneja la interacción entre la aplicación y los servicios de texto. Debe solicitar el servicio del sistema para instanciarlo. Su sintaxis se da a continuación:

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

Lo último que debes hacer es llamar getSuggestionsmétodo para obtener sugerencias para cualquier texto que desee. Las sugerencias se pasarán alonGetSuggestions método desde donde puedes hacer lo que quieras.

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

Este método toma dos parámetros. El primer parámetro es la cadena en forma de objeto de información de texto, y el segundo parámetro es el número de cookie utilizado para distinguir las sugerencias.

Aparte de los métodos, existen otros métodos proporcionados por el SpellCheckerSessionclass para un mejor manejo de sugerencias. Estos métodos se enumeran a continuación:

No Señor Método y descripción
1

cancel()

Cancelar tareas de revisión ortográfica pendientes y en ejecución

2

close()

Finalice esta sesión y permita que TextServicesManagerService desconecte el corrector ortográfico vinculado

3

getSentenceSuggestions(TextInfo[] textInfos, int suggestionsLimit)

Obtén sugerencias de las oraciones especificadas

4

getSpellChecker()

Obtenga la información del servicio de corrector ortográfico que tiene esta sesión de corrector ortográfico.

5

isSessionDisconnected()

Verdadero si la conexión a un servicio de texto de esta sesión está desconectada y no está activa.

Ejemplo

Aquí hay un ejemplo que demuestra el uso del corrector ortográfico. Crea una aplicación de corrección ortográfica básica que le permite escribir texto y obtener sugerencias.

Para experimentar con este ejemplo, puede ejecutarlo en un dispositivo real o en un emulador.

Pasos Descripción
1 Utilizará Android Studio para crear una aplicación de Android en un paquete com.example.sairamkrishna.myapplication.
2 Modifique el archivo src / MainActivity.java para agregar el código necesario.
3 Modifique res / layout / main para agregar los componentes XML respectivos
4 Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados

A continuación se muestra el contenido del archivo de actividad principal modificado 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
   }
}

A continuación se muestra el contenido modificado del xml res/layout/main.xml.

En el siguiente código abc indica el logo de 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>

A continuación se muestra el contenido de la res/values/string.xml.

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

A continuación se muestra el contenido de AndroidManifest.xml archivo.

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

Intentemos ejecutar nuestra aplicación que acabamos de modificar. Supongo que habías creado tuAVDmientras realiza la configuración del entorno. Para ejecutar la aplicación desde Android Studio, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar de la barra de herramientas. Android Studio instala la aplicación en su AVD y la inicia y, si todo está bien con su configuración y aplicación, se mostrará la siguiente ventana del emulador:

Ahora, lo que debe hacer es ingresar cualquier texto en el campo. Por ejemplo, he introducido un texto. Presione el botón de sugerencias. La siguiente notificación aparecerá en su AVD junto con sugerencias:

Ahora cambie el texto y presione el botón nuevamente, como hice yo. Y esto es lo que aparece en pantalla.