当前位置: 首页>编程语言>正文

java 第三方sdk 怎样融入项目 接入第三方sdk目录

接触了语音合成的第三方讯飞,就导入时出现的问题特记录说明:

首先我们来说一下讯飞接入的流程,大致很简单,一般的第三方接入过程:

1、将开发工具包中libs目录下的Msc.jar和armeabi复制到Android工程的libs目录(如果工程无libs目录,请自行创建)中,详细图片官方网站有提供,这里注明一个地方:就是在eclipse中药添加依赖,选择build添加jar到项目。在AS中,则右键jar包,Add library或者选择file-project structure-Dependencies-加号

添加依赖

2、清单文件添加权限(官方都有提供,不做说明)

1. <!--连接网络权限,用于执行云端语音能力 -->  
2. <uses-permission android:name="android.permission.INTERNET"/>  
3. <!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->  
4. <uses-permission android:name="android.permission.RECORD_AUDIO"/>  
5. <!--读取网络信息状态 -->  
6. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
7. <!--获取当前wifi状态 -->  
8. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
9. <!--允许程序改变网络连接状态 -->  
10. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>  
11. <!--读取手机信息权限 -->  
12. <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  
13. <!--读取联系人权限,上传联系人需要用到此权限 -->  
14. <uses-permission android:name="android.permission.READ_CONTACTS"/>

3、关于初始化的问题,要说明的是, SpeechUtility.createUtility(context, SpeechConstant.APPID + "=12345678" );  方法中,appid一定要自己申请的应用下载的sdk包和对应的appid,否则会报错用户校验失败的错误

4、对应的初始化方法,官方建议在application中初始化,这里写了一个管理类来实现,方便全局调用语音合成方法

public class MscManager {
    private Context mContext;

    private SpeechSynthesizer speechSynthesizer ;
    private static MscManager instance;

    private static final String APPID = "自己申请的id";

    public static MscManager getInstance() {
        if (instance == null) {
            synchronized (MscManager.class) {
                if (null == instance) {
                    instance = new MscManager();
                }
            }
        }
        return instance;
    }

    public void init(Context context) {
        this.mContext = context;
        SpeechUtility.createUtility(context, SpeechConstant.APPID + APPID);
        initTts();
    }

    /**
     * 普通语音
     *
     * @param content 播放内容
     */
    public void speech(String content) {
        if (TextUtils.isEmpty(content)) {
            return;
        }
speechSynthesizer.startSpeaking(content, mSynListener);


} 
/** 
 *  
初始化语音合成 
  
*/ 
  
private void  
initTts() { 
 
speechSynthesizer= SpeechSynthesizer.createSynthesizer(mContext, null); 
  
 
speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME, "设置官方提供的语音人");//设置发音人 
  
 
speechSynthesizer.setParameter(SpeechConstant.SPEED, "80");//设置语速 
  
 
speechSynthesizer.setParameter(SpeechConstant.VOLUME, "100");//设置音量,范围0~100 
  
 
speechSynthesizer.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端 
 } 
/** 
 *  
语音回调 
  
*/ 
  
private SynthesizerListener 
mSynListener = 
new SynthesizerListener() { 
@Override 
  
public void  
onSpeakBegin() { } 
@Override 
  
public void  
onBufferProgress( 
int i 
, int i1 
, int i2 
, String s) { } 
@Override 
  
public void  
onSpeakPaused() { } 
@Override 
  
public void  
onSpeakResumed() { } 
@Override 
  
public void  
onSpeakProgress( 
int i 
, int i1 
, int i2) { } 
@Override 
  
public void  
onCompleted(SpeechError speechError) { 
 
 } 
@Override 
  
public void  
onEvent( 
int i 
, int i1 
, int i2 
, Bundle bundle) { } } 
;}然后调用speech方法,传语音提示内容。

整个过程如果没有问题,就不需要往下看了,如果你遇到了和我一样的问题,程序导入sdk后无法正常启动,可能是此类问题

ERROR_ENGINE_NOT_SUPPORTED

21002

引擎不支持

如果你找不到问题打印日志,你可以在

private SynthesizerListener mSynListener = new SynthesizerListener() {


方法中

@Override
public void onCompleted(SpeechError speechError) {
    Log.e("错误",speechError.toString());
}打印问题原因,遇到这种情况,很可能是你的libs下的jar没有引入程序,只是你以为引入依赖而已,           所以每次初始化程序找不到对应的jar包
修改方法:找到你的build.gradle文件,添加



sourceSets {
    main {
        jniLibs.srcDir 'libs'
    }



https://www.xamrdz.com/lan/5qc1944438.html

相关文章: