美文网首页Unity跨平台技术分享Unity教程合集
unity+android studio接讯飞SDK 详细dem

unity+android studio接讯飞SDK 详细dem

作者: 东北大熊 | 来源:发表于2017-02-15 19:23 被阅读3465次

    1,讯飞官网创建应用程序可参考:

    github.com/wwnje/GitBook/blob/master/unity/demo/unity_xfyun.md

    2,创建android studio 项目 以下简称as

    3,将讯飞sdk下载解压,libs文件夹里面的 msc.jar 和unity class.jar 放置在 as项目的libs目录下 如下图

    unity class.jar  在D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes 下面

    4,在 as 项目 main文件夹下面新建一个文件夹,名字为 jniLibs ,将讯飞sdk libs目录下的so文件,拷贝到jniLibs文件夹下 如下图:

    5,在as项目下引用 Msc.jar 和 class.jar , as项目-右键如下图

    6,点击+添加引用库。

    7,修改 AndroidManifest.xml配置

    框起来的部分 unity 和 android 交互必须添加

    应用style theme直接删除

    再添加一些讯飞权限

    8,修改 build.gradle

    第一个框 修改成 apply plugin: 'com.android.library'

    第二个直接删除

    9,编写测试代码

    11. public classMainActivity extends UnityPlayerActivity   继承UnityPlayerActivity

    importandroid.os.Bundle;

    importandroid.util.Log;

    importcom.iflytek.cloud.InitListener;

    importcom.iflytek.cloud.RecognizerResult;

    importcom.iflytek.cloud.SpeechConstant;

    importcom.iflytek.cloud.SpeechError;

    importcom.iflytek.cloud.SpeechUtility;

    importcom.iflytek.cloud.SpeechRecognizer;

    importcom.iflytek.cloud.SpeechSynthesizer;

    importcom.iflytek.cloud.SynthesizerListener;

    importcom.iflytek.cloud.ErrorCode;

    importcom.unity3d.player.UnityPlayer;

    importcom.unity3d.player.UnityPlayerActivity;

    importorg.json.JSONArray;

    importorg.json.JSONObject;

    importorg.json.JSONTokener;

    public classMainActivityextendsUnityPlayerActivity {

    private static finalStringTAG="MainActivity";

    publicSpeechRecognizerspeechRecognizer;

    publicSpeechSynthesizerspeechSynthesizer;

    @Override

    protected voidonCreate(BundlesavedInstanceState) {

    super.onCreate(savedInstanceState);

    //注意这里的appid为讯飞官网上注册获得的appid

    SpeechUtility.createUtility(getApplicationContext(),"appid=你的ID");

    speechSynthesizer= SpeechSynthesizer.createSynthesizer(getApplicationContext(),sInitListener);

    }

    publicInitListenersInitListener=newInitListener() {

    @Override

    public voidonInit(intcode) {

    UnityPlayer.UnitySendMessage("Manager","Result","speak init success!");

    Log.d("mySynthesiezer:","InitListener init() code = "+ code);

    }

    };

    //开始合成  将文本转换成语音

    public voidstartConstant() {

    //设置发音人

    speechSynthesizer.setParameter(SpeechConstant.VOICE_NAME,"xiaoyan");

    //设置音调

    speechSynthesizer.setParameter(SpeechConstant.PITCH,"50");

    //设置音量

    speechSynthesizer.setParameter(SpeechConstant.VOLUME,"50");

    intcode =speechSynthesizer.startSpeaking("欢迎使用语音导航!",mSynListener);

    Log.d(TAG,"mySynthesiezer start code:"+ code);

    }

    privateSynthesizerListenermSynListener=newSynthesizerListener() {

    //会话结束回调接口,没有错误时,error为null

    public voidonCompleted(SpeechError error) {

    Log.d(TAG,"onCompleted: ");

    }

    //缓冲进度回调

    //percent为缓冲进度0~100,beginPos为缓冲音频在文本中开始位置,endPos表示缓冲音频在文本中结束位置,info为附加信息。

    public voidonBufferProgress(intpercent,intbeginPos,intendPos, String info) {

    }

    //开始播放

    public voidonSpeakBegin() {

    }

    //暂停播放

    public voidonSpeakPaused() {

    }

    //播放进度回调

    //percent为播放进度0~100,beginPos为播放音频在文本中开始位置,endPos表示播放音频在文本中结束位置.

    public voidonSpeakProgress(intpercent,intbeginPos,intendPos) {

    }

    //恢复播放回调接口

    public voidonSpeakResumed() {

    }

    //会话事件回调接口

    public voidonEvent(intarg0,intarg1,intarg2,Bundlearg3) {

    }

    };

    }

    10,build arr

    11,将 arr 放到 unity 项目 Plugins - Android 目录下

    12,编写 c# 测试脚本

    c#测试脚本

    13 player Setting  设置和as项目一样的id

    模拟器或真机测试!! 目前我只是测试的  合成 !!

    如果有values 报错!!  如图文件修改成

    以上可以通过测试!!  写的有点乱 请见谅!!  

    相关文章

      网友评论

        本文标题:unity+android studio接讯飞SDK 详细dem

        本文链接:https://www.haomeiwen.com/subject/ueiqwttx.html