Unity 接讯飞语音SDK
来源:互联网 发布:手机上c语言编程软件 编辑:程序博客网 时间:2024/05/16 00:31
在上班时间一边接sdk ,一边总结接入语音sdk中出现的一些问题。拿来和大家分享一下, 不会写得很详细。
官方的sdk例子值得了解,并可以解决很多问题。
我在这里例举出几个自己犯下的错误 跟大家一起分享。
1.报单例创建失败的问题,参考 http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9688
2.AndoridJavaException: android.view.ViewRootImpl$CalledFromWrongThreadException :only the original thread that created a view hiearchy can touch its views.错误,
主要是在非UI层调用,如何解决。将内容写在 runOnUiThread 里可以解决问题,实际上的问题 :http://blog.csdn.net/vivianyouyi/article/details/51781141 ,我的问题是将Toast在Unity 调用的方法里直接调用。
3.导入jar包到Unity 里面的, build 之后运行发现报错说找不到引用, 要去看一下 讯飞的libs库是否导入到了Unity 的lib 库中(不能连文件夹一起拷,会有问题),讯飞Demo下有一个JsonParser 需要导入到Eclipse工程目录下,
4. 压缩问题, 因为讯飞支持的语音格式为wav 和pcm ,要支持语音发送的话得先压缩 ,我这里将pcm 格式转换为amr格式,你会发现还需要引用一个文件AmrInputStream,但是找不到这个文件,其实是有的,去sdk 目录全局搜索, 然后把文件找到了放到工程中 ,不能修改AmrInputStream的包名。
public byte[] pcm2amr()throws IOException {InputStream inStream = new FileInputStream("/msc/mAudio.pcm"); AmrInputStream aStream = new AmrInputStream(inStream); File file = new File("/msc/mAudio1" + ".amr"); file.createNewFile(); OutputStream out = new FileOutputStream(file); byte[] x = new byte[1024]; out.write(35);out.write(33);out.write(65);out.write(77);out.write(82);out.write(10); int len; while ((len = aStream.read(x)) > 0) { out.write(x, 0, len); } out.close(); aStream.close(); /*读取字节流*/ FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream bos = new ByteArrayOutputStream(1024); byte[] b = new byte[1024]; int n; while((n = fis.read(b))!= -1){ bos.write(b,0,n); } fis.close(); bos.close(); byte[] buffer = bos.toByteArray(); return buffer; }
Android向Unity发送信息: UnityPlayer.UnitySendMessage("场景中的物体名", "场景中的物体名上挂在的任意名称Script里面的方法名", "传递内容”);
Unity向Android发送消息:
private AndroidJavaObject _ajo;
#if UNITY_ANDROID && !UNITY_EDITOR
AndroidJavaClass ajc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
if (ajc != null)
{
_ajo = ajc.GetStatic<AndroidJavaObject>("currentActivity");
}
#endif
_ajo.Call<返回值>("方法名",params);
本文没有仔细检查或许还有很多问题, 大致犯的错误就这么多,仅供参考。后面再完善吧 。
- Unity 接讯飞语音SDK
- 【Unity】外接讯飞语音的IOS SDK
- c# 讯飞语音 sdk
- unity接入讯飞语音识别iOS SDK的遇到的棘手问题!
- Android 使用讯飞语音SDK
- ios开发大连讯飞语音sdk
- 关于讯飞语音SDK开发学习
- 第三方SDK:讯飞语音听写
- 讯飞语音识别SDK试用
- python3 调用讯飞语音听写sdk
- Delphi调用讯飞语音SDK
- 第三方SDK:讯飞语音
- 讯飞语音SDK继承简单使用
- Unity结合讯飞语音在线识别
- 讯飞语音SDK提示用户校验失败10407
- 讯飞语音文成合成语音(官网下载SDK)
- iOS开发-讯飞语音识别SDK简单实用
- 关于hololens调用讯飞语音sdk问题汇总
- c++中vector的用法详解
- 通过 命令提示符(cmd.exe)连接 Oracle 数据库
- escape(),encodeURI(),encodeURIComponent ajax处理乱码
- shell指令 grep -r
- ListView使用Android提供的进行单选多选
- Unity 接讯飞语音SDK
- OIS输入系统
- [Echarts可视化] 一.入门篇之简单绘制中国地图和贵州地区
- hibernate连接过程报错:Table 'performance_schema.session_variables' doesn't exist
- 神将挂机 一款超好玩的放置类挂机RPG游戏
- ROM 、RAM和FLASH 的区别
- JQuery中 .solidToggle()和.Toggle()的区别
- Ceph删除一个OSD
- Vue.js中v-bind v-model的使用和区别