百度地图Android司乘同显SDK司机端—TTS语音播报

百度地图Android司乘同显SDK司机端—TTS语音播报

TTS语音播报

为了能够让导航正常进行语音播报,还需要对TTS模块进行初始化,百度导航SDK支持两种TTS实现方案,即内置TTS和外置TTS。
使用TTS语音播报功能需要额外申请ak,申请步骤见【工程配置-SDK和TTS授权申请配置】详细介绍

内置tts

当使用内置TTS接口初始化时,表示将使用内置TTS模块,此时App工程需要集成TTS module,同时设置申请配置过的tts appid。

内置tts初始化

在进入导航之前需要初始化TTS语音,初始化方法是:

/**
 * @param activity       Activity引用
 * @param sdcardRootPath sd卡根路径
 * @param appFolderName  app 文件夹名称
 * @param appid          app id
 * @param outTTSListener 外部设置的tts监听器,也就是外部tts方案
 */
void initTTS(final Activity activity, final String sdcardRootPath, final String appFolderName, final String appid, final IBNOuterTTSPlayerCallback outTTSListener);

示例如下:

注意:参数appid是在语音平台申请的id。(具体申请请见配置页面)

// 注册同步内置tts状态回调
BaiduNaviManagerFactory.getTTSManager().setOnTTSStateChangedListener(
        new IBNTTSManager.IOnTTSPlayStateChangedListener() {
            @Override
            public void onPlayStart() {
                Log.e("BNSDKDemo", "ttsCallback.onPlayStart");
            }

            @Override
            public void onPlayEnd(String speechId) {
                Log.e("BNSDKDemo", "ttsCallback.onPlayEnd");
            }

            @Override
            public void onPlayError(int code, String message) {
                Log.e("BNSDKDemo", "ttsCallback.onPlayError");
            }
        }
);

// 注册内置tts 异步状态消息
BaiduNaviManagerFactory.getTTSManager().setOnTTSStateChangedHandler(
        new Handler(Looper.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                Log.e("BNSDKDemo", "ttsHandler.msg.what=" + msg.what);
            }
        }
);

外置TTS

外置TTS初始化

BaiduNaviManagerFactory.getTTSManager().initTTS(mIBNOuterTTSPlayerCallback );

注意:当使用外置TTS能力时,一定要正确返回getTTSState()接口的返回值,百度导航SDK内部将根据该值判断当前TTS模块状态,是否能够进行播报,其返回值类型如下:

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; // 错误
🚀 如未找到文章请搜索栏搜素 | Ctrl+D收藏本站 | 联系邮箱:15810050733@qq.com