常量 | 描述 |
ACTION_RECOGNIZE_SPEECH | 开启语音活动 |
ACTION_WEB_SEARCH | 开启网络语音模式,结果将以网页搜索显示 |
EXTRA_LANGUAGE | 设置语言库 |
EXTRA_LANGUAGE_MODEL | 语音识别模式 |
EXTRA_MAX_RESULTS | 返回的最大结果 |
EXTRA_PROMPT | 提示用户可以开始语音 |
EXTRA _RESULTS | 将字符串返回到一个ArrayList中 |
LANGUAGE_MODEL-FREE_FORM | 在一种语言模式上自由语言 |
LANGUAGE_MODEL-WEB_SEARCH | 使用语言模型在Web上搜索 |
RESULT_AUDIO_ERROR | 返回结果时,音频遇到错误 |
RESULT_CLIENT_ERROR | 返回结果时,客户端遇到错误 |
RESULT_NETWORK_ERROR | 返回结果时,网络遇到错误 |
RESULT_NO_MATCH | 没有检测到语音的错误 |
RESULT_SERVER_ERROR | 返回结果时,服务器遇到错误 |
Intent intent= new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");当然,如果找不到设置,就会抛出ActivityNotFoundException,所以我们需要捕捉这个异常。在以下的例子中,我们实现了一个简单的语音识别程序,当我们点击“点击使用语音识别”按钮之后,开始语音,然后在onActivityResult方法中取得结果并显示出来,其中如果当前手机没有连接到互联网则会显示连接问题,运行效果如以下所示:
public class RecognizerIntent_TestActivity extends Activity {private static final int VOICE_RECOGNITION_REQUEST_CODE = 1;private ListView mList;Button mButton;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mButton = (Button) findViewById(R.id.button1);mButton.setOnClickListener(new myRecognizerIntentListener());mList = (ListView) findViewById(R.id.listView1);}public class myRecognizerIntentListener implements OnClickListener {public void onClick(View v) {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, "请开始语音");// 开始语音识别startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);} catch (ActivityNotFoundException e) {Toast.makeText(RecognizerIntent_TestActivity.this, "找不到语音设备",Toast.LENGTH_LONG).show();}}}// 语音结束时的回调函数@Overrideprotected 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);// 设置视图的更新mList.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, 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);}}更多关于Android相关内容感兴趣的读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android资源操作技巧汇总》及《Android控件用法总结》