集成指南

  • DEMO 中已经集成了 SDK。您可以参考DEMO,集成SDK。
  • 集成前,请先测通DEMO,了解调用原理。
  • 如果您自己代码过于复杂,可以使用一个helloworld项目了解集成过程。
    本文以Android Studio 2.3.3作为示例

AndroidManifest.xml 文件

设置权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

设置AppId, AppKey, SecretKey

mSpeechSynthesizer.setAppId(appId);
mSpeechSynthesizer.setApiKey(appKey, secretKey);

android 6.0 以上版本权限申请

以下代码可以在demo中查找

/**
* android 6.0 以上需要动态申请权限
*/
private void initPermission() {
String permissions[] = {
Manifest.permission.INTERNET,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.MODIFY_AUDIO_SETTINGS,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_SETTINGS,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CHANGE_WIFI_STATE
};

ArrayList<String> toApplyList = new ArrayList<String>();

for (String perm : permissions) {
if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) {
toApplyList.add(perm);
//进入到这里代表没有权限.
}
}
String tmpList[] = new String[toApplyList.size()];
if (!toApplyList.isEmpty()) {
ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123);
}

}


@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// 此处为android 6.0以上动态授权的回调,用户自行实现。
}

引入jar包

com.baidu.tts_2.3.1.*.jar 库
将app/libs/com.baidu.tts_2.3.1.20170808_e39ea89.jar复制到您的项目的同名目录中。确认在build.gradle文件中引入。

复制NDK 架构目录

  1. 将 app/src/main/jniLibs 下armeabi等5个目录,复制到您的项目的同名目录中。
  2. 如与第三方库集成,至少要保留armeabi目录。如第三方库有7个架构目录,比语音识别SDK多出2个目录 mips和mips64,请将mips和mips64目录删除,剩下5个同名目录合并。
  3. 如第三方库仅有armeabi这一个目录,请将语音识别SDK的额外4个目录如armeabi-v7a删除,合并armeabi目录下的so。 即目录取交集,so文件不可随意更改所属目录。
  4. 打包成apk文件,按照zip格式解压出libs目录可以验证。

build.gradle 文件及包名确认

  1. 根目录下build.gradle确认下gradle的版本。
  2. app/build.gradle 确认下 applicationId 包名是否与官网申请应用时相一致(离线功能需要)。 demo的包名是"com.baidu.tts.sample"。
  3. 确认 compileSdkVersion buildToolsVersion 及 targetSdkVersion

proguard文件

-keep class com.baidu.tts.**{*;}
-keep class com.baidu.speechsynthesizer.**{*;}

BEST PRACTICE

  • 请先测通DEMO,了解DEMO的功能,代码的运行原理后再集成。DEMO有bug,请立即反馈。
  • 对应任何第三方库,从一开始集成,边开发边测试,不要等所有功能都开发完再集成。否则一旦有问题,难以隔离排查。
  • 有问题先与DEMO做对比。DEMO有bug,请查看错误码文档,如无法解决请立即反馈;DEMO无bug,自身代码有问题,请设置同样的输入参数后,对比两边代码及日志,自行排查问题。