盛大听听中心开发指南——Android语音播报服务软件
一、概述
二、开发前准备
2.1 申请权限
2.2 导入接口
三、绑定服务
四、接口调用
4.1 朗读
4.2 停止朗读
4.3 停止朗读所有
五、数据结构
5.1 朗读任务类
5.2 广播事件类型
六、使用高级语音设置
七、更多问题
-------------------------------------------
一、概述
听听中心是一款由盛大语音创新院推出的Android语音播报服务软件,旨在让第三方软件方便的调用语音合成接口,使用盛大语音合成服务。朗读服务无需联网,安全免费无限制。本文定义了盛大Android语音合成接入方法和开放接口,供广大开发者做接入参考。
听听中心作为独立应用,安装后可作为远程服务,其他应用成功绑定后即可调用播报接口。如果想让用户进行一些高级的语音设置,可以调用听听中心的设置Activity进行 男女音选择,音、音调、音速、音量调节以及播报时间窗口控制。
二、开发前准备
2.1 申请权限
所有开发者需要经过申请方可使用听听中心服务接口,填写《盛大听听中心合作申请表》并成功提交。请注意应用id填写正确,应用id在l里 … 定义。经审核将根据应用id开通接入权限,3个工作日内邮件回复并附接口文件。如有应用id变更请提前邮件tingting@snda通知,否则会导致无法使用语音服务。
2.2 导入接口
在应用工程里面新建一个名为”s.service”(注意命名拼写要完全一致)的包,将确认邮件里提供的接口文件复制到这个包的下面
三、绑定服务
定义绑定器
private ITtsService mServiceBinder = null;
定义服务监控接口
ServiceConnection mSConnection = new ServiceConnection() {
// 重写服务连接上时的回调函数
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// 获得绑定器,之后可以用来调用语音接口
mServiceBinder = ITtsService.Stub.asInterface(service);
}
// 重写服务断开时的回调函数
@Override
public void onServiceDisconnected(ComponentName name) {
mServiceBinder = null;
}
};
绑定服务
context.bindService(new Intent(“”), mSConnection, Context.BIND_AUTO_CREATE);
解绑服务
context.unbindService(mSConnection);
1). 建议在应用生命周期内一直绑定,比如主要Activity的OnCreate()中,OnDestroy()时解绑。
2). 服务的绑定需要些许时间,如果这时候用户播报不会成功。可以在onServiceConnected()中监控到绑定成功的信息再允许接受播报行为。
3). 听听中心安装后第一次绑定会进行一些初始化工作,这时调用播报接口会返回错误码,初始化完成会发送广播通知
四、接口调用
4.1 朗读
播放TtsTask中定义的内容,如果当前有其他播放任务,会按先后顺序排队播放。
函数原型
int speak(in TtsTask ttsTask);
参数说明
ttsTask: 定义播放消息内容和调用者名称等,播放的开始和结束时都会按调用者名称发广播通知相应的调用者。高级使用者也可以传入消息内容id等信息,广播中会回传给调用者,用于实现一些复杂逻辑。
返回值
0 为成功,其他值表示调用失败
调用示例
int result;
TtsTask task = new TtsTask();
t = “听我知世界”;
task.caller = “aller”;
if (mServiceBinder != null) {
try {
result = mServiceBinder.speak(task);
} catch (RemoteException e) {
// 处理异常
}
}
4.2 停止朗读
根据调用者名称,停止当前正在读的消息。非该调用者的消息不会停止。
函数原型
int stopCaller(String caller);
参数说明
caller: 调用者名称,应该跟调用speak时传的TtsTask.caller一致。
返回值
0 为成功,其他值表示调用失败
调用示例
if (mServiceBinder != null) {
try {
mServiceBinder.stopCaller(“aller”);
} catch (RemoteException e) {
// 处理异常
}
}
4.3 停止朗读所有
停止某调用者的所有播放任务。非该调用者的消息不会停止。
函数原型
int stopCallerAll(String caller);
接口说明和事例代码请参考stopCaller接口。
五、数据结构
5.1 朗读任务类
根据调用者名称,停止当前正在读的消息。非该调用者的消息不会停止。
类定义
public class TtsTask implements Parcelable
成员变量
1). public String content: 需要朗读的文字内容
2). public String caller: 调用者名称,在任务开始朗读和朗读完毕的时刻听听中心会发送以caller为过滤条件的广播,建议用包名作为前缀以避免跟其他应用程序的caller重名。
3). public Long id: 任务ID,会通过广播回传
4). public String extra: 其他自定义需要通过广播回传的数据
接收广播的例子
// 定义广播接收器
...
private BroadcastReceiver mBR = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Bundle b = Extras();
android软件 String type = b.getString("type");
Long id = b.getLong("id");
if (type.equals(SndaTts.STATUS_STOPPED_MANUALLY)) {
// 用户停止了听听中心的播放
...
} else if (type.equals(SndaTts.STATUS_SPEAK_BEGIN)) {
// 调用者的任务(id)开始播放
...
} else if (type.equals(SndaTts.Status_Speak_Finish){
// 调用者的任务(id)播放完毕
...
}
}
}
...
// 注册广播接收器
...
IntentFilter intentFilter = new IntentFilter(caller);
intentFilter.addAction(MSG_STATE);
registerReceiver(mBR, intentFilter);
...
5.2 广播事件类型
定义广播事件类型名称,开发者可以根据不同类型广播做相应的处理。
类定义
public class SndaTts
成员变量
1). public static String STATUS_SPEAK_BEGIN: 朗读开始
2). public static String STATUS_SPEAK_FINISH: 朗读结束
3). public static String STATUS_STOPPED_BY_PHONE: 朗读任务被电话来电停止
4). public static String STATUS_STOPPED_MANUALLY: 朗读任务被用户通过翻转手机等行为停止
六、使用高级语音设置
应用可以远程打开“听听中心”中的设置界面,让用户进行高级声音设置。
示例代码
Intent intent = new Intent();
intent.setClassName("s.service", "s.config.TtsConfig");
startActivity(intent);
【】
听听中心论坛:tingting.sdo/center/index.html
盛大听听微博:weibo/duanxintingting
听听推他:duanxintingting.tuita/
邮箱:tingting@snda
声音试听:v.youku/v_show/id_XMzA1ODI0Mjg4.html
(PS:听听搞笑视频,配音即为听听的基础声音。听听中心已支持用户自主调节参数,设置个性声音。
真诚欢迎安卓平台阅读类、资讯类、服务类应用等企业与个人开发者申请合作。多谢各位对盛大听听的关注与支持!tingting.sdo/center/apply.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论