package com.royal.voiceRecognition;
import java.util.ArrayList;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
/**
* 语音识别示例 . 注意:使用前需要安装语音识别程序如语音搜索。
*
* @author Royal
*
*/
public class VoiceRecognitionDemoActivity extends Activity {
private static final int VOICE_RECOGNITION_REQUEST_CODE = 4321;
private Button btn_voice = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_voice = (Button) findViewById(R.id.btn_voice);
btn_voice.setOnClickListener(new
OnClickListener() {
@Override
public void onClick(View arg0) {
try {
// 通过Intent传递语音识别的模式,开启语音
Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
// 语音模式和自由形式的语音识别
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// 提示语音开始
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");
// 开始执行我们的intent、语音识别
startActivityForResult(intent,
VOICE_RECOGNITION_REQUEST_CODE);
} catch (ActivityNotFoundException e) {
// 找不到语音设备装置
System.out.println("找不到语音设备装置!");
e.printStackTrace();
Toast.makeText(VoiceRecognitionDemoActivity.this,
"ActivityNotFoundException", Toast.LENGTH_LONG)
.show();
}
}
});
}
/**
* 当语音结束时的回调函数onActivityResult
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 判断是否是我们执行的语音识别
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE
&& resultCode == RESULT_OK) {
// 取得语音的字符
ArrayList<String> results = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String resultsString = "";
for (int i = 0; i < results.size(); i++) {
resultsString += results.get(i);
}
Toast.makeText(this, resultsString, Toast.LENGTH_LONG).show();
super.onActivityResult(requestCode, resultCode, data);
}
}
}
// --------------第二种写法-------------------//
// /**
// * Sample code that invokes the speech recognition intent API.
// */
// public class VoiceRecognitionDemoActivity extends Activity implements
// OnClickListener {
//
// private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;
//
// private ListView mList;
//
// /**
// * Called with the activity is first created.
// */
// @Override
// public void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
//
// // Inflate our UI from its XML layout description.
// setContentView(R.layout.main);
//
// // Get display items for later interaction
// Button speakButton = (Button) findViewById(R.id.btn_voice);
//
// mList = (ListView) findViewById(R.id.list);
//
// // Check to see if a recognition activity is present
// PackageManager pm = getPackageManager();
// List<ResolveInfo> activities = pm.queryIntentActivities(
// new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
// if (activities.size() != 0) {
// speakButton.setOnClickListener(this);
// } else {
// speakButton.setEnabled(false);
// speakButton.setText("Recognizer not present");
// }
// }
//
// /**
// * Handle the click on the start recognition button.
// */
// public void onClick(View v) {
// if (v.getId() == R.id.btn_voice) {
// startVoiceRecognitionActivity();
// }
// }
//
// /**
// * Fire an intent to start the speech 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, "Speech recognition demo");
// startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
// }
//
// /**
// * Handle the results from the recognition activity.
// */
// @Override
// protected void onActivityResult(int requestCode, int resultCode, Intent data)
// {
// if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK)
// {
// // Fill the list view with the strings the recognizer thought it could have
// heard
// ArrayList<String> matches = data.getStringArrayListExtra(
// RecognizerIntent.EXTRA_RESULTS);
// mList.setAdapter(new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1,
// matches));
// }
//
// super.onActivityResult(requestCode, resultCode, data);
// }
// }
android语音识别demo
最新推荐文章于 2019-07-19 19:55:18 发布