科大讯飞语音播报

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyan147/article/details/52779725

当我们开发新闻客户端,电子书等阅读类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;
        }
    }
});

猜你喜欢

转载自blog.csdn.net/liyan147/article/details/52779725