为了能够让导航正常进行语音播报,还需要对tts模块进行初始化,百度导航sdk支持两种tts实现方案,即内置tts和外置tts。 导航sdk自带tts能力已经打包为一个独立的aar,命名为navitts.aar,可以将其以aar module引入集成app project,引入后,可以利用导航sdk提供的tts接口进行初始化。
当不需要导航sdk自带tts时,可以不进行集成,此时需要利用导航sdk支持外部tts的方式进行tts能力初始化。
// 使用内置ttsbnttsinitconfig config =newbnttsinitconfig.builder().context(getapplicationcontext()).appid(bndemoutils.getttsappid()).appkey(bndemoutils.getttsappkey()).secretkey(bndemoutils.getttssecretkey()).authsn(bndemoutils.getauth()).build();baidunavimanagerfactory.getttsmanager().inittts(config);
需要状态的回调可以参考:
// 注册同步内置tts状态回调baidunavimanagerfactory.getttsmanager().setonttsstatechangedlistener(newibnttsmanager.ionttsplaystatechangedlistener(){@overridepublicvoidonplaystart(){log.e("bnsdkdemo","ttscallback.onplaystart");}@overridepublicvoidonplayend(string speechid){log.e("bnsdkdemo","ttscallback.onplayend");}@overridepublicvoidonplayerror(int code,string message){log.e("bnsdkdemo","ttscallback.onplayerror");}});
当初始化tts只传入ibnouterttsplayercallback时,表示将使用外置tts能力,不需要集成百度导航sdk自带的tts资源。
// 使用外置tts播报,与上面的内置tts播报接口二选一,不可同时存在baidunavimanagerfactory.getttsmanager().inittts(newibnttsmanager.ibnouterttsplayercallback(){/*** 外部tts播报文案* @param speech 播报文案* @param bpreempt 是否抢占播报** @return 执行成功1, 执行失败0*/@overridepublic int playttstext(string speech, int bpreempt,string speechid){log.e(tag, speech);return0;}/*** 获取外部tts当前播报状态** @return {@link player_state_not_init} {@link player_state_idle} {@link player_state_playing}* {@link player_state_pause} {@link player_state_error}*/@overridepublic int getttsstate(){return0;}});
ibnttsmanager.ibnouterttsplayercallback.player_state_not_init;//未初始化ibnttsmanager.ibnouterttsplayercallback.player_state_idle;// 空闲ibnttsmanager.ibnouterttsplayercallback.player_state_playing;// 播放中ibnttsmanager.ibnouterttsplayercallback.player_state_pause;// 暂停ibnttsmanager.ibnouterttsplayercallback.player_state_error;// 错误
上一篇
下一篇
本篇文章对您是否有帮助?