Comment puis-je utiliser la reconnaissance vocale, sans le désagrément de dialogue dans les téléphones android

Est-ce possible sans modifier le android Api?
J'ai trouvé un article à ce sujet.
Il y a un commentaire que je dois faire des modifications de l'Api android.
Mais il n'a pas dit comment faire la modification.
Quelqu'un peut-il me donner quelques suggestions sur la façon de le faire?
Merci!


J'ai trouvé cet article;
SpeechRecognizer
Ses besoins est presque la même que la mienne.
C'est une bonne référence pour moi!


J'ai totalement eu ce problème résolu.

J'ai googlé utilisable exemple de code à partir de ce site web de la Chine
Voici mon code source

package voice.recognition.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import android.util.Log;
public class voiceRecognitionTest extends Activity implements OnClickListener 
{
private TextView mText;
private SpeechRecognizer sr;
private static final String TAG = "MyStt3Activity";
@Override
public void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button speakButton = (Button) findViewById(R.id.btn_speak);     
mText = (TextView) findViewById(R.id.textView1);     
speakButton.setOnClickListener(this);
sr = SpeechRecognizer.createSpeechRecognizer(this);       
sr.setRecognitionListener(new listener());        
}
class listener implements RecognitionListener          
{
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "onReadyForSpeech");
}
public void onBeginningOfSpeech()
{
Log.d(TAG, "onBeginningOfSpeech");
}
public void onRmsChanged(float rmsdB)
{
Log.d(TAG, "onRmsChanged");
}
public void onBufferReceived(byte[] buffer)
{
Log.d(TAG, "onBufferReceived");
}
public void onEndOfSpeech()
{
Log.d(TAG, "onEndofSpeech");
}
public void onError(int error)
{
Log.d(TAG,  "error " +  error);
mText.setText("error " + error);
}
public void onResults(Bundle results)                   
{
String str = new String();
Log.d(TAG, "onResults " + results);
ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (int i = 0; i < data.size(); i++)
{
Log.d(TAG, "result " + data.get(i));
str += data.get(i);
}
mText.setText("results: "+String.valueOf(data.size()));        
}
public void onPartialResults(Bundle partialResults)
{
Log.d(TAG, "onPartialResults");
}
public void onEvent(int eventType, Bundle params)
{
Log.d(TAG, "onEvent " + eventType);
}
}
public void onClick(View v) {
if (v.getId() == R.id.btn_speak) 
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);        
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5); 
sr.startListening(intent);
Log.i("111111","11111111");
}
}
}

Assurez-vous de supprimer l'ennuyeux Journaux après le débogage!

  • Il est certainement possible de le faire, comme je l'ai déjà vu d'autres apps de le faire (la Voix de l'infini), mais quant à savoir comment, je n'ai pas la moindre idée. J'imagine que vous pourriez commencer par télécharger la source android et de vérification dans l'api, où la voix est, puis l'expérience s'étendant...
  • comme l'a noté le Femi, assurez-vous d'avoir <uses-permission android:name="android.permission.RECORD_AUDIO" /> dans votre AndroidManifest.xml fichier sinon SpeechRecognizer ne sera pas ramasser tout audio
InformationsquelleAutor Jim31837 | 2011-06-11