Android语音识别--->>RecongnizerIntent实现

首先,咱得先说下注意点:

    Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就会抛出异常 ActivityNotFoundException,所以我们需要捕捉这个异常。而且语音识别在模拟器上是无法测试的,因为语音识别是访问google 云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别,我的话用的是那个科大的某某飞的语音软件,一运行就可以自动调用这个软件进行语音识别。

 RecognizerIntent的一些Summary(在Android API中也可以查到):

下面可以查下Android的这个类RecognizerIntent的用法,然后我们开始使用Intent传递消息

 1  try{  
 2                 //通过Intent传递语音识别的模式,开启语音  
 3                 Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
 4                 //语言模式和自由模式的语音识别  
 5                 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);  
 6                 //提示语音开始  
 7                 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "开始语音");  
 8                 //开始语音识别  
 9                 startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);  
10                 }catch (Exception e) {  
11                     // TODO: handle exception  
12                     e.printStackTrace();  
13                     Toast.makeText(getApplicationContext(), "找不到语音设备", 1).show();  
14                 }  

作为一个使用的模块使用。

  • 主要是先使用
RecognizerIntent.ACTION_RECOGNIZE_SPEECH  开启语音
  • 然后在可以切换语音模式和自由模式
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
  • 然后开始语音识别:
startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);  
主要的过程就是如上所示了,自然还需要回调用户语音的数据。
 1 @Override  
 2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
 3         // TODO Auto-generated method stub  
 4         //回调获取从google得到的数据   
 5         if(requestCode==VOICE_RECOGNITION_REQUEST_CODE && resultCode==RESULT_OK){  
 6             //获得语音输入的字符  
 7             ArrayList<String> results=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);  
 8               //获得需要的字符
 9             String resultString="";  
10             for(int i=0;i<results.size();i++){  
11                 resultString+=results.get(i);  
12             }  
13             Toast.makeText(this, resultString, 1).show();  
14         }  
15         super.onActivityResult(requestCode, resultCode, data);  
16     }  

这样的结合就可以实现语音识别了。

 
 


我就是我,是不一样的烟火...
原文地址:https://www.cnblogs.com/Mr-stockings/p/8252786.html