package com.itheima24.know.recognizer;
/**
* 语音播放接口
* @author lenovo
*
*/
public interface VoicePlayer {
/**
* 不带UI的播放
* @param text
*/
public void play(String text);
/**
* 带UI的播放
* @param text
*/
public void playUI(String text);
/**
* 暂停
*/
public void pause();
/**
* 恢复
*/
public void resume();
/**
* 销毁
*/
public void destory();
/**
* 取消
*/
public void cancel();
}
实现类
package com.itheima24.know.recognizer;
import android.content.Context;
import android.widget.Toast;
import com.iflytek.speech.SpeechError;
import com.iflytek.speech.SynthesizerPlayer;
import com.iflytek.speech.SynthesizerPlayerListener;
import com.iflytek.ui.SynthesizerDialog;
import com.itheima24.know.utils.Constants;
public class VoicePlayerImpl implements VoicePlayer {
private SynthesizerDialog dialog;
private SynthesizerPlayer player;
private Context context;
public VoicePlayerImpl(Context context){
this.context = context;
String appid = "appid="+ Constants.XUNFEI_APPID +"";
dialog = new SynthesizerDialog(context,appid);
player = SynthesizerPlayer.createSynthesizerPlayer(context,appid);
}
@Override
public void play(String text) {
//设置播放的速度
player.setSpeed(50);
//设置播放的音量
player.setVolume(100);
//设置背景音
player.setBackgroundSound(null);
//设置播报的角色
player.setVoiceName("xiaoyan");
player.playText(text, null,new SynthesizerPlayerListener() {
/**
* 播报恢复
*/
@Override
public void onPlayResumed() {
}
/**
* 当前播放百分比
* @param arg0
* @param arg1
* @param arg2
*/
@Override
public void onPlayPercent(int arg0, int arg1, int arg2) {
}
/**
* 播报暂停
*/
@Override
public void onPlayPaused() {
}
/**
* 开始播报
*/
@Override
public void onPlayBegin() {
Toast.makeText(context, "开始播报了 ... ", 0).show();
}
/**
* 播报结束
*/
@Override
public void onEnd(SpeechError arg0) {
}
/**
* 当前缓存的百分比
* @param arg0
* @param arg1
* @param arg2
*/
@Override
public void onBufferPercent(int arg0, int arg1, int arg2) {
}
});
}
@Override
public void playUI(String text) {
//设置播放的速度
dialog.setSpeed(50);
//设置播放的音量
dialog.setVolume(50);
//设置背景音
dialog.setBackgroundSound(null);
//设置播报的角色
dialog.setVoiceName("vinn");
dialog.setText(text, null);//播放的文本 null是一些配置参数 没有传值
dialog.show();//将当前对话框显示
}
@Override
public void pause() {
dialog.pause();
player.pause();
}
@Override
public void resume() {
dialog.resume();
player.resume();
}
@Override
public void destory() {
dialog.destory();
player.destory();
}
@Override
public void cancel() {
dialog.cancel();
player.cancel();
}
}
调用
/**
* 播放语音
*/
player.play(text);
权限
<!-- 读取网络状态所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 科大讯飞语音所需的权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<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" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
包名:
Msc.jar
libmsc.so