首先到讯飞语音官网注册,创建应用,把需要的   官方sdk  下载 , 解压完之后,按照官方文档操作.

 大致上是   拷贝  libs 目录下的 文件,拷贝 assets 到main下,然后在 清单文件   添加权限.

     ps :  官方文档中有

<!--连接网络权限,用于执行云端语音能力 -->
     <uses-permission android:name="android.permission.INTERNET"/>
     <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
     <!--读取网络信息状态 -->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <!--获取当前wifi状态 -->
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
     <!--允许程序改变网络连接状态 -->
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
     <!--读取手机信息权限 -->
     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>

在activity中的setContentView(R.layout.activity_main) 下面添加     xxxxxxx  就是appkey,

SpeechUtility.createUtility(this, SpeechConstant.APPID + "=xxxxxxxx");

     然后  下面的代码可以设置在点击时间在 , 也可以抽成一个方法


         

//1.创建RecognizerDialog对象,第二参数就是一个初始化的监听,我们用不上就设置为null
                 RecognizerDialog mDialog = new RecognizerDialog(MainActivity.this,null);
                 //2.设置accent、language等参数
                 mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//设置为中文模式
                 mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//设置为普通话模式
                 //若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解
                 //mDialog.setParameter("asr_sch", "1");
                 //mDialog.setParameter("nlp_version", "2.0");
                 //创建一个装每次解析数据的容器(你说话有停顿,解析就是一段一段的,而用容器就能拼接成一句话了)
                 mStringBuilder = new StringBuilder();
                 //3.设置回调接口,语音识别后,得到数据,做响应的处理.
                 mDialog.setListener(new RecognizerDialogListener() {
                     //识别成功执行 参数1 recognizerResult:识别出的结果,Json格式(用户可参见附录12.1)
                     // 参数2 b:等于true时会话结束。方法才不会继续回调
                     //一般情况下会通过onResults接口多次返回结果,完整的识别内容是多次结果的累加,(关于解析Json的代码可参见MscDemo中JsonParser类)
                     public void onResult(RecognizerResult recognizerResult, boolean b) {
                         //拿到讯飞识别的结果
                         String resultString = recognizerResult.getResultString();
                         System.out.println("讯飞识别的结果 "+resultString);
                         //自定义解析bean数据的一个方法.用到了Gson,在项目里关联一下.(这个方法就是下面的)
                         String text = parseData(resultString);
                         //容器装解析出来的数据
                         mStringBuilder.append(text);
                         //对参数2进行判断,如果为true,代表这个方法不会再回调,就把容器里的数据转成字符串.拿来使用.
                         if(b){
                             String result = mStringBuilder.toString();
                             et.setText(result);
                         }
                     }
                     @Override//识别失败执行 speechError:错误码
                     public void onError(SpeechError speechError) {
                     }
                 });
                 //4.显示dialog,接收语音输入
                 mDialog.show();

方法  gson解析的,上面有调用的    


private String parseData(String resultString) {
              //创建gson对象,记得要关联一下gson.jar包方可以使用.
              Gson gson = new Gson();
              //参数 1.String类型的json数据  参数 2.存放json数据对应的bean类  //这个类是官方给的,找起来有点麻烦,就写到下面了
             XFBean xfBean = gson.fromJson(resultString, XFBean.class);
              //创建一个集合,用来存放bean类里的对象.
              ArrayList<XFBean.WS> ws = xfBean.ws;
              //创建一个容器,用来存放从每个集合里拿到的数据,使用StringBuilder效率更高
              StringBuilder stringBuilder = new StringBuilder();
              //使用高级for循环,取出特定属性的特有数据,装入StringBuilder中
              for ( XFBean.WS w: ws) {
                  String text = w.cw.get(0).w;
                  stringBuilder.append(text);
              }
              //把容器内的数据转为字符串返回出去.
              return stringBuilder.toString();
          }

上面的在mainactivity里面写,一定要看官方文档,需要拷贝的东西一定要细心.

      这个是那个gson'解析需要的类

public class XFBean {
          public ArrayList<WS> ws;
          public class WS{
              public ArrayList<CW> cw;
          }
          public class CW{
              public String w;
          }
      }

做一张效果图看一下,