2011-09-27 11 views
19

Estoy trabajando en la entrada de voz en Android. He utilizado la muestra deEntrada de voz para poblar Editar texto en android?

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.html

Y mientras se prueba el Xperia X10, me dieron el diálogo "Habla ahora", pero antes de la entrada alguna voz que se cierra. Estoy intentando implementar la búsqueda por voz, p. Si la entrada de voz es James Bond, entonces quiero rellenar el nombre de James en Editar nombre y Enviar enlace en el apellido Editar texto. Que buscará en la base de datos el nombre. Pero al tratar de usar la muestra de demostración de API, no está funcionando. Puede ser que me estoy perdiendo algo. ¿Alguien posteará cualquier muestra para la entrada de voz en lugar de la muestra de ApiDemos?

Gracias de antemano.

Respuesta

17

Puede usar el siguiente código para reconocimiento de voz. Para obtener un tutorial completo para reconocimiento de voz, Click Here.

import android.app.Activity; 
import android.os.Bundle; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.content.pm.ResolveInfo; 
import android.speech.RecognizerIntent; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 
import java.util.ArrayList; 
import java.util.List; 

/** 
* A very simple application to handle Voice Recognition intents 
* and display the results 
*/ 
public class VoiceRecognitionDemo extends Activity 
{ 

private static final int REQUEST_CODE = 1234; 
private ListView wordsList; 

/** 
* Called with the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.voice_recog); 

    Button speakButton = (Button) findViewById(R.id.speakButton); 

    wordsList = (ListView) findViewById(R.id.list); 

    // Disable button if no recognition service is present 
    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> activities = pm.queryIntentActivities(
      new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 
    if (activities.size() == 0) 
    { 
     speakButton.setEnabled(false); 
     speakButton.setText("Recognizer not present"); 
    } 
} 

/** 
* Handle the action of the button being clicked 
*/ 
public void speakButtonClicked(View v) 
{ 
    startVoiceRecognitionActivity(); 
} 

/** 
* Fire an intent to start the voice recognition activity. 
*/ 
private void startVoiceRecognitionActivity() 
{ 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice recognition Demo..."); 
    startActivityForResult(intent, REQUEST_CODE); 
} 

/** 
* Handle the results from the voice recognition activity. 
*/ 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) 
    { 
     // Populate the wordsList with the String values the recognition engine thought it heard 
     ArrayList<String> matches = data.getStringArrayListExtra(
       RecognizerIntent.EXTRA_RESULTS); 
     wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
       matches)); 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 
}