xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.yuyinshuru.MainActivity">
<TextView
android:id="@+id/etText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Button
android:id="@+id/button"
android:layout_marginTop="20dp"
android:text="语音输入"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
DictationResult
package com.bwie.yuyinshuru;
import java.util.List;
/**
* Created by lenovo on 2017/10/31.
*/
public class DictationResult {
private String sn;
private String ls;
private String bg;
private String ed;
private List<Words> ws;
public static class Words {
private String bg;
private List<Cw> cw;
public static class Cw {
private String w;
private String sc;
public String getW() {
return w;
}
public void setW(String w) {
this.w = w;
}
public String getSc() {
return sc;
}
public void setSc(String sc) {
this.sc = sc;
}
@Override
public String toString() {
return w;
}
}
public String getBg() {
return bg;
}
public void setBg(String bg) {
this.bg = bg;
}
public List<Cw> getCw() {
return cw;
}
public void setCw(List<Cw> cw) {
this.cw = cw;
}
@Override
public String toString() {
String result = "";
for (Cw cwTmp : cw) {
result += cwTmp.toString();
}
return result;
}
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getLs() {
return ls;
}
public void setLs(String ls) {
this.ls = ls;
}
public String getBg() {
return bg;
}
public void setBg(String bg) {
this.bg = bg;
}
public String getEd() {
return ed;
}
public void setEd(String ed) {
this.ed = ed;
}
public List<Words> getWs() {
return ws;
}
public void setWs(List<Words> ws) {
this.ws = ws;
}
@Override
public String toString() {
String result = "";
for (Words wsTmp : ws) {
result += wsTmp.toString();
}
return result;
}
}
MainActivity
package com.bwie.yuyinshuru;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.RecognizerResult;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechUtility;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import java.util.List;
import static com.bwie.yuyinshuru.R.id.etText;
public class MainActivity extends AppCompatActivity {
private Button button;
private TextView textView;
// public static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (Button) findViewById(R.id.button);
textView= (TextView) findViewById(R.id.etText);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
init();
}
});
}
private void init()
{
//有动画效果
RecognizerDialog iatDialog;
// ①语音配置对象初始化
SpeechUtility.createUtility(MainActivity.this, SpeechConstant.APPID + "=59f82fcc");//将这里的578f1af7替换成自己申请得到的8位appid
// ②初始化有交互动画的语音识别器
iatDialog = new RecognizerDialog(MainActivity.this, mInitListener);
//③设置监听,实现听写结果的回调
iatDialog.setListener(new RecognizerDialogListener() {
String resultJson = "[";//放置在外边做类的变量则报错,会造成json格式不对(?)
@Override
public void onResult(RecognizerResult recognizerResult, boolean isLast) {
System.out.println("----------------- onResult -----------------");
if (!isLast) {
resultJson += recognizerResult.getResultString() + ",";
} else {
resultJson += recognizerResult.getResultString() + "]";
}
if (isLast) {
//解析语音识别后返回的json格式的结果
Gson gson = new Gson();
List<DictationResult> resultList = gson.fromJson(resultJson,
new TypeToken<List<DictationResult>>() {
}.getType());
String result = "";
for (int i = 0; i < resultList.size() - 1; i++) {
result += resultList.get(i).toString();
}
textView.setText(result);
//获取焦点
textView.requestFocus();
//将光标定位到文字最后,以便修改
// textView.setSelection(result.length());
}
}
@Override
public void onError(SpeechError speechError) {
//自动生成的方法存根
speechError.getPlainDescription(true);
}
});
//开始听写,需将sdk中的assets文件下的文件夹拷入项目的assets文件夹下(没有的话自己新建)
iatDialog.show();
}
private InitListener mInitListener = new InitListener() {
@Override
public void onInit(int code) {
// Log.d(TAG, "SpeechRecognizer init() code = " + code);
if (code != ErrorCode.SUCCESS) {
Toast.makeText(MainActivity.this, "初始化失败,错误码:" + code, Toast.LENGTH_SHORT).show();
}
}
};
}