上次说到科大讯飞的语音集成,至于基础的步骤就不在这里细说,直接一把梭,先做出来demo再说,如果说咱们的
科大讯飞和极光推送集成好了之后,接下来就是根据需求来实现功能。
现在项目的需求是,当有商品的库存低于设置的最低库存数的时候,服务器就会推送一条消息到客户端。客户端根据
用户的设置,来进行通知栏显示和语音播放。至于服务这一块咱们先不关心,客户端来说,要实现的是接收服务器推送过来
消息,然后进行语音合成。思路简单明了,但是可能会踩一些小坑。
首先接收消息,肯定是在onReceive中进行操作了, 在这个方法中,可以根据约定好的类型,是一般,还是自定义,亦或者
是多媒体,这里暂时采用的一般的通知,下边这个就是普通的消息通知,我们在这个里面,解析服务返回的json串,然后
根据自己的需求是增删字段,在这里,我是采用 extras 作为区分类型的扩展字段,以此来区分传过来的是什么类型的
消息,是否需要进行语音合成播放。这算是接收,解析,然后接下来等拿到message字段之后,那开始进行语音合成播放
进行语音播放的首先是在application中初始化科大讯飞的类库,记得这个ID要对应,后期要扩展或者续费也要认准该id
在接下来就是在推送的接收方法中去初始化合成对象,当然这个是固定的步骤,安装人家的步骤来
下边呢,就是把文字信息传递给合成对象,设置发音人,语速,以及一些其它参数,当一般默认的足够使用
如果对这个要求比较高的话,一般需要花钱,这个是没啥好的办法,语音库免费的就那几个,
上面这段代码都是固定格式,如果咱们的语音没有正常播放的话,需要仔细去检查一下,尤其是采用本地引擎的小伙伴
看看引入的so,以为相应的文件路径,以及资产即assets下边的语音文件是否完整导入。另外示例代码里面还有一个监听的
方法,这个对于demo的测试也是很重要,通过这个监听,可以清晰的看到语音播放的流程以及对应的错误代码。
好了,能做到这一步,基本来说没啥问题,可以验证一下是否能在真机上正常播放,最后我说一下我遇见的问题。也算是一个小
bug吧,我第一次做这个demo的时候,很快做完了,但是语音不响,我也检查了配置参数,以及查看上边这个监听,发现
语音播放了,但是没得声音,最后找了半天错误,发现依赖的so库版本上,有点欲哭无泪的感觉。这个原因我解释不清楚,所以
就不干扰各位同学了,当时配置的时候,是其它类型在前边,比方说armeabi,但是就是不响,后来改成armeabi-v7a,
然后一切就正常了,只能说还是按照讯飞的文档走吧,现在主流适配一般也就这个了,可能是so库编译的时候,就是以这个
为最先的吧,其它的只是辅助。好了,这个demo到此结束,如果有业务的,可以再拓展。