主题:Android教程之Android自带的语音识别例子初探

版权申明:http://yarin.javaeye.com/blog/453262

语音识别技术是在Android SDK1.5中才加入的(RecognizerIntent),这里我们简单的分析一下自带的api例子,其实它就是通过一个Intent的Action动作来完成的。主要有以下两种模式:

ACTION_RECOGNIZE_SPEECH:一般语音识别,在这种模式下我们可以捕捉到语音的处理后的文字列。

ACTION_WEB_SEARCH:网络搜索

该例子同样是使用ACTION_RECOGNIZE_SPEECH模式,我们需要实现onActivityResult方法,当语音识别结束之后的回调函数。

好了,废话不多说,看下面的代码,我加入了注释,重要的本来就不多几行。

Voicerecognition.java代码 复制代码
  1. packagecom.example.android.apis.app;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.content.pm.PackageManager;
  5. importandroid.content.pm.ResolveInfo;
  6. importandroid.os.Bundle;
  7. importandroid.speech.RecognizerIntent;
  8. importandroid.view.View;
  9. importandroid.view.View.OnClickListener;
  10. importandroid.widget.ArrayAdapter;
  11. importandroid.widget.Button;
  12. importandroid.widget.ListView;
  13. importjava.util.ArrayList;
  14. importjava.util.List;
  15. publicclassVoiceRecognitionextendsActivityimplementsOnClickListener{
  16. privatestaticfinalintVOICE_RECOGNITION_REQUEST_CODE=1234;
  17. privateListViewmList;
  18. /**
  19. *Calledwiththeactivityisfirstcreated.
  20. */
  21. @Override
  22. publicvoidonCreate(BundlesavedInstanceState)
  23. {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.voice_recognition);
  26. ButtonspeakButton=(Button)findViewById(R.id.btn_speak);
  27. mList=(ListView)findViewById(R.id.list);
  28. //Checktoseeifarecognitionactivityispresent
  29. PackageManagerpm=getPackageManager();
  30. List<ResolveInfo>activities=pm.queryIntentActivities(newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),0);
  31. if(activities.size()!=0)
  32. {
  33. speakButton.setOnClickListener(this);
  34. }
  35. else
  36. {
  37. speakButton.setEnabled(false);
  38. speakButton.setText("Recognizernotpresent");
  39. }
  40. }
  41. publicvoidonClick(Viewv)
  42. {
  43. if(v.getId()==R.id.btn_speak)
  44. {
  45. startVoiceRecognitionActivity();
  46. }
  47. }
  48. privatevoidstartVoiceRecognitionActivity()
  49. {
  50. //通过Intent传递语音识别的模式
  51. Intentintent=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
  52. //语言模式和自由形式的语音识别
  53. intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
  54. //提示语音开始
  55. intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Speechrecognitiondemo");
  56. //开始执行我们的Intent、语音识别
  57. startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);
  58. }
  59. //当语音结束时的回调函数onActivityResult
  60. @Override
  61. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)
  62. {
  63. if(requestCode==VOICE_RECOGNITION_REQUEST_CODE&&resultCode==RESULT_OK)
  64. {
  65. //取得语音的字符
  66. ArrayList<String>matches=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
  67. mList.setAdapter(newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,matches));
  68. }
  69. super.onActivityResult(requestCode,resultCode,data);
  70. }
  71. }

当然这里需要设备的支持,所以模拟器是没有效果的!

实际上在没有设备时会跑出ActivityNotFoundException异常。

这个例子很简单,到此为止,谢谢!

更多相关文章

  1. Android中Activity的四种启动模式
  2. cocos2dx调用android的说明很多,我直接给例子
  3. android 中使用sqLite例子
  4. 开始Android应用程序国内广告盈利模式
  5. MVP -----个人理解与示例(android例子 实现)
  6. 智能手机软件平台 Android VS iPhone OS: 商业模式分析 (2/4)
  7. android的单选框例子
  8. 移除Android中的安全模式
  9. Android任务栈和启动模式

随机推荐

  1. Android中应用界面主题Theme使用方法和页
  2. Android内存管理-SoftReference的使用
  3. Android应用程序内存泄漏介绍
  4. Android Training学习笔记之开始篇
  5. Android5,6,7,8新特性
  6. android 自动化测试工具 Monkey
  7. android 敏捷开发系列(一)——《啥是敏捷开
  8. Android:设置圆形头像,Android截取圆形图片
  9. android动态创建控件
  10. Android 9.0 cmds