AndroidManifest.xml
添加以下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
班级成员
private SpeechRecognizer mSpeechRecognizer;private Intent mSpeechRecognizerIntent; private boolean mIslistening;
在onCreate中
@Overrideprotected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); ......... ......... mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this); mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName()); SpeechRecognitionListener listener = new SpeechRecognitionListener(); mSpeechRecognizer.setRecognitionListener(listener);}在您的按钮侦听器中只需使用此代码
if (!mIsListening){ mSpeechRecognizer.startListening(mSpeechRecognizerIntent);}在onDestroy
if (mSpeechRecognizer != null){ mSpeechRecognizer.destroy();}在您的活动中创建内部类
protected class SpeechRecognitionListener implements RecognitionListener{ @Override public void onBeginningOfSpeech() { //Log.d(TAG, "onBeginingOfSpeech"); } @Override public void onBufferReceived(byte[] buffer) { } @Override public void onEndOfSpeech() { //Log.d(TAG, "onEndOfSpeech"); } @Override public void onError(int error) { mSpeechRecognizer.startListening(mSpeechRecognizerIntent); //Log.d(TAG, "error = " + error); } @Override public void onEvent(int eventType, Bundle params) { } @Override public void onPartialResults(Bundle partialResults) { } @Override public void onReadyForSpeech(Bundle params) { Log.d(TAG, "onReadyForSpeech"); //$NON-NLS-1$ } @Override public void onResults(Bundle results) { //Log.d(TAG, "onResults"); //$NON-NLS-1$ ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION); // matches are the return values of speech recognition engine // Use these values for whatever you wish to do } @Override public void onRmsChanged(float rmsdB) { }}EDIT
2015-02-07:将ZakiMak)和Born ToWin对此问题的答案中的代码合并到此答案中的代码中,以使此答案更加完整。



