Agregue OnTouchListener a ImageView para realizar voz a texto en Android

Voz a texto es una característica que generalmente significa que todo lo que el usuario dice se convierte en texto. Esta característica se ha convertido en una característica muy común y útil para los usuarios. En varios lugares donde se implementa la función de búsqueda, como la Búsqueda de Google, también en aplicaciones como el teclado de Google, etc., porque brinda a los usuarios una gran experiencia. Entonces, en este artículo, implementaremos Speech to text usando OnTouchListener de ImageView y almacenaremos el texto de entrada en EditText .

¿Qué vamos a construir en este artículo?

En este artículo, desarrollaremos una aplicación de muestra con ImageView de un micrófono y EditText en su MainActivity y mediante el uso de OnTouchListener de ImageView le daremos entrada a EditText en forma de Speech to Text. A continuación se proporciona un GIF de muestra para tener una idea de lo que vamos a hacer en este artículo. Tenga en cuenta que vamos a implementar este proyecto utilizando el lenguaje Java .

Implementación paso a paso

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Ahora, vaya a la aplicación > res > diseño > actividad_principal.xml y pegue el código escrito a continuación en el archivo actividad_principal.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">
   
    <!--EditText to show the recorded text-->
    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="52dp"
        android:layout_margin="12dp"
        android:layout_marginTop="600dp"
        android:hint="Enter here"
        android:textColor="#0F9D58" />
   
    <!--ImageView to use as a button-->
    <ImageView
        android:id="@+id/microphone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="400dp"
        app:srcCompat="@drawable/microphone" />
   
</LinearLayout>

Paso 3: trabajar con el archivo MainActivity.java

Vaya a la aplicación > java > nombre del paquete > archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.

Java

import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.Locale;
 
public class MainActivity extends AppCompatActivity {
 
    // declare editText
    EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        // definition of editText using method findViewById()
        editText = findViewById(R.id.edit_text);
         
        // initializing mSpeechRecognizer using SpeechRecognizer class
        final SpeechRecognizer mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
        final Intent mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
         
        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
         
        // various methods of RecognitionListener class
        mSpeechRecognizer.setRecognitionListener(new RecognitionListener() {
            @Override
            public void onReadyForSpeech(Bundle bundle) {
 
            }
 
            @Override
            public void onBeginningOfSpeech() {
 
            }
 
            @Override
            public void onRmsChanged(float v) {
 
            }
 
            @Override
            public void onBufferReceived(byte[] bytes) {
 
            }
 
            @Override
            public void onEndOfSpeech() {
 
            }
 
            @Override
            public void onError(int i) {
 
            }
 
            @Override
            public void onResults(Bundle bundle) {
                 
                // getting all the matches
                ArrayList<String> matches = bundle.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
 
                // displaying the first match
                if (matches != null)
                    editText.setText(matches.get(0));
            }
 
            @Override
            public void onPartialResults(Bundle bundle) {
 
            }
 
            @Override
            public void onEvent(int i, Bundle bundle) {
 
            }
        });
         
        // set OnTouchListener to imageView named microphone
        findViewById(R.id.microphone).setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()) {
                     
                    // case MotionEvent.ACTION_UP run when user will remove
                    // his/her finger from microphone imageView
                    case MotionEvent.ACTION_UP:
                         
                        mSpeechRecognizer.stopListening();
                        editText.setHint(" ");
                        break;
 
                    // case MotionEvent.ACTION_UP run when user will put his/her
                    // finger from microphone imageView
                    case MotionEvent.ACTION_DOWN:
                         
                        mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
                        editText.setText("");
                        editText.setHint("");
                        break;
                }
                return false;
            }
        });
    }
}

Paso 4: Trabajar con el archivo AndroidManifest.xml

Finalmente, vaya a la aplicación> manifiestos> archivo AndroidManifest.xml y agregue el permiso escrito a continuación allí.

XML

<uses-permission android:name="android.permission.RECORD_AUDIO" />

 Eso es todo, ahora la aplicación está lista para instalarse en el dispositivo. Así es como se ve la salida de la aplicación.

Producción:

Publicación traducida automáticamente

Artículo escrito por riyamathur y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *