为了能够让导航正常进行语音播报,还需要对TTS模块进行初始化,百度导航SDK支持两种TTS实现方案,即内置TTS和外置TTS。 导航SDK自带TTS能力已经打包为一个独立的aar,命名为NaviTts.aar,可以将其以aar module引入集成APP project,引入后,可以利用导航SDK提供的TTS接口进行初始化。
当不需要导航SDK自带TTS时,可以不进行集成,此时需要利用导航SDK支持外部TTS的方式进行TTS能力初始化。
// 使用内置TTSBNTTsInitConfig config = new BNTTsInitConfig.Builder().context(getApplicationContext()).appId(BNDemoUtils.getTTSAppID()).appKey(BNDemoUtils.getTTSAppKey()).secretKey(BNDemoUtils.getTTSsecretKey()).authSn(BNDemoUtils.getAuth()).build();BaiduNaviManagerFactory.getTTSManager().initTTS(config);
需要状态的回调可以参考:
// 注册同步内置tts状态回调BaiduNaviManagerFactory.getTTSManager().setOnTTSStateChangedListener(new IBNTTSManager.IOnTTSPlayStateChangedListener() {@Overridepublic void onPlayStart() {Log.e("BNSDKDemo", "ttsCallback.onPlayStart");}@Overridepublic void onPlayEnd(String speechId) {Log.e("BNSDKDemo", "ttsCallback.onPlayEnd");}@Overridepublic void onPlayError(int code, String message) {Log.e("BNSDKDemo", "ttsCallback.onPlayError");}});
当初始化TTS只传入IBNOuterTTSPlayerCallback时,表示将使用外置TTS能力,不需要集成百度导航SDK自带的TTS资源。
// 使用外置TTS播报,与上面的内置TTS播报接口二选一,不可同时存在BaiduNaviManagerFactory.getTTSManager().initTTS(new IBNTTSManager.IBNOuterTTSPlayerCallback() {/*** 外部TTS播报文案* @param speech 播报文案* @param bPreempt 是否抢占播报** @return 执行成功1, 执行失败0*/@Overridepublic int playTTSText(String speech, int bPreempt, String speechId) {Log.e(TAG, speech);return 0;}/*** 获取外部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() {return 0;}});
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; // 错误
上一篇
下一篇
本篇文章对您是否有帮助?