Android语音识别--RecognizerIntent用法 intent setdata 用法

在网上找了一篇关于Android语音识别的文章,自己慢慢研究。
Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别!
RecognizerIntent的一些常量:


我们只需要通过Intent来传递一个动作以及一些属性,然后通过startActivityForResult来开始语音,代码如下:

Intentintent=newIntent(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);

下面是RecognizerIntentActivity中的代码:
01public classRecognizerIntentActivity extendsActivity {
02
03privateButton btnReconizer;
04privatestatic final intVOICE_RECOGNITION_REQUEST_CODE =1234;
05@Override
06protectedvoid onCreate(Bundle savedInstanceState){
07//TODO Auto-generated method stub
08super.onCreate(savedInstanceState);
09setContentView(R.layout.reconizer);
10
11btnReconizer=(Button)this.findViewById(R.id.btnRecognizer);
12btnReconizer.setOnClickListener(newOnClickListener() {
13
14@Override
15publicvoid onClick(View v) {
16//TODO Auto-generated method stub
17try{
18//通过Intent传递语音识别的模式,开启语音
19Intentintent=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
20//语言模式和自由模式的语音识别
21intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
22//提示语音开始
23intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"开始语音");
24//开始语音识别
25startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);
26}catch(Exception e) {
27//TODO: handle exception
28e.printStackTrace();
29Toast.makeText(getApplicationContext(),"找不到语音设备",1).show();
30}
31}
32});
33
34}
35
36@Override
37protectedvoid onActivityResult(intrequestCode, int resultCode, Intentdata) {
38//TODO Auto-generated method stub
39//回调获取从谷歌得到的数据
40if(requestCode==VOICE_RECOGNITION_REQUEST_CODE&&resultCode==RESULT_OK){
41//取得语音的字符
42ArrayList<String>results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
43
44StringresultString="";
45for(inti=0;i<results.size();i++){
46resultString+=results.get(i);
47}
48Toast.makeText(this,resultString, 1).show();
49}
50super.onActivityResult(requestCode,resultCode, data);
51}
52}
其主要原理就是将语音发送到google云端,然后云端处理,匹配相应的数据,发送到客户端。
最后不要忘记,在manifest中加入网络访问权限:
<uses-permissionandroid:name="android.permission.INTERNET" />

运行后效果:



Android语音识别--RecognizerIntent用法 intent setdata 用法


另一个代码:
  1. publicclassActivity01extendsActivity
  2. {
  3. privatestaticfinalintVOICE_RECOGNITION_REQUEST_CODE=4321;
  4. privateListViewmList;
  5. publicvoidonCreate(BundlesavedInstanceState)
  6. {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.main);
  9. mList=(ListView)findViewById(R.id.ListView01);
  10. Buttonbutton=(Button)findViewById(R.id.Button01);
  11. button.setOnClickListener(newView.OnClickListener()
  12. {
  13. @Override
  14. publicvoidonClick(Viewv)
  15. {
  16. try
  17. {
  18. //通过Intent传递语音识别的模式,开启语音
  19. Intentintent=newIntent
  20. (RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
  21. //语言模式和自由形式的语音识别
  22. intent.putExtra(RecognizerIntent.EXTRA_
  23. LANGUAGE_MODEL,RecognizerIntent.
  24. LANGUAGE_MODEL_FREE_FORM);
  25. //提示语音开始
  26. intent.putExtra(RecognizerIntent.EXTRA_
  27. PROMPT,"开始语音");
  28. //开始执行我们的Intent、语音识别
  29. startActivityForResult(intent,
  30. VOICE_RECOGNITION_REQUEST_CODE);
  31. }
  32. catch(ActivityNotFoundExceptione)
  33. {
  34. //找不到语音设备装置
  35. Toast.makeText(Activity01.this,
  36. "ActivityNotFoundException",
  37. Toast.LENGTH_LONG).show();
  38. }
  39. }
  40. });
  41. }
  42. //当语音结束时的回调函数onActivityResult
  43. @Override
  44. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)
  45. {
  46. //判断是否是我们执行的语音识别
  47. if(requestCode==VOICE_RECOGNITION_REQUEST_CODE&&resultCode==RESULT_OK)
  48. {
  49. //取得语音的字符
  50. ArrayList<String>results=data.getStringArrayListExtra
  51. RecognizerIntent.EXTRA_RESULTS);
  52. //设置视图更新
  53. //mList.setAdapter(newArrayAdapter<String>(this,android.
  54. R.layout.simple_list_item_1,results));
  55. StringresultsString="";
  56. for(inti=0;i<results.size();i++)
  57. {
  58. resultsString+=results.get(i);
  59. }
  60. Toast.makeText(this,resultsString,Toast.LENGTH_LONG).show();
  61. super.onActivityResult(requestCode,resultCode,data);
  62. }
  63. }
  64. }

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/64599.html

更多阅读

adapt用法搭配 adapt用法

adapt这个词的用法搭配如果根据for表目的,from表来源的规律记还是好记的,只是改编这个意思不常见。1.Adapt vt.使适应Adapt+to “适用于”Adapt +for“适用的目的”2. Adapt vt.改编Adapt+as“改编的形式”

动词ing形式动名词 的形式及用法 动名词用法

【本讲教育信息】一. 教学内容:动词ing形式(动名词)的形式及用法1. doing的形式:doing; being done2. doing做主语,表语和宾语。3. doing与to do在动词后面做宾语的区别二. 知识总结归纳:(一)动词ing形式起名词作用,在语法中也称做动名词.在句

警卫语音识别系统终结升级版 云os终结者升级版 apk

本软件的使用需要有微软中文语音识别引擎支持方可使用,如果您的系统还没有安装微软中文语音识别引擎请到下面地址下载(直接复制用下载工具下载):http://www.ie5.net/speechsoft/speechsdk51.exe(语音识别引擎,先安装)http://www.ie5.net/sp

声明:《Android语音识别--RecognizerIntent用法 intent setdata 用法》为网友伪文艺分享!如侵犯到您的合法权益请联系我们删除