当我们开发新闻客户端,电子书等阅读类app的时候要用到的一个功能--语音播报。这里给大家介绍的是科大讯飞的语音播报系统的接入。
注册过程和和其他第三方接入一样,按照提示操作就行了。下面主要讲讲我遇到的坑。
一.语音播报无法识别数字英文等特殊语言,这个问题纠结了半天老是读到一的前面停止了。结果检查了好久才发现是少了引入了.so文件。当初只引入了下面的jar包忘记引入上面文件夹里的.so文件了,现在看来这问题出的太低级了。
二.没有标识暂停的接口,以至于用一个按钮控制语音播放暂停继续播放需要自己添加标识。
在activity中声明这些方法在adapter中调用
activity中代码:
判断正在播放
public boolean isSpeeking(){ return mTts.isSpeaking(); } //停止播放 public void pauseSpeek(){ mTts.pauseSpeaking(); audioService.pause(); } //继续播放 public void resumeSpeek(){ mTts.resumeSpeaking(); audioService.reset(); }adapter中代码:
//自己定义一个标识,用于判断播放状态
private boolean isStart = true;
convertView.findViewById(R.id.start).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
//将activity类传过来 StudyEverydayActivity tempAc = ((StudyEverydayActivity) context); if (!tempAc.isStartSpeek()) { start.setBackgroundResource(R.drawable.start); ((StudyEverydayActivity) context).voice( parse.getText().toString()); }else if (!isStart) { tempAc.resumeSpeek(); start.setBackgroundResource(R.drawable.start); isStart=true; } else if(isStart) { tempAc.pauseSpeek(); start.setBackgroundResource(R.drawable.stop); isStart=false; } } });