MojingSDK For Unity 接口说明文档
Unity-Demo之?语音识别-讯飞SDK使用过程

Unity-Demo之✨语音识别-讯飞SDK使用过程因为工作需求,现在要选择连接一个语音识别功能接入系统中,所以目前正在尝试使用讯飞的语音识别SDK进行连接。
在使用语音识别的sdk之前先查阅了一下语音识别的基本知识然后去讯飞的官网注册信息并创建一个应用用于使用SDK基本步骤处理完了,下面就是下载SDK进行集成使用了,我这里用的是语音唤醒的SDK,按照官方教程做就行。
教程在这-语音唤醒SDK教程当上面这几步做完了之后,接下来就是将这个工程打包成给unity 使用的aar包了。
可以参考这个教程:将Android Studio的工程打包成aar包给unity使用这样只是将讯飞语音的SDK可以跟Unity一起使用了,但是还没有写具体调用sdk的使用方法,还需要在Android Studio中写一些调用此语音识别的SDK的接口提供给Unity中使用才行。
正文:简单分析下SDK的结构,便于使用SDK包说明《Android SDK目录结构一览》•manifests:android配置应用权限文件•sample:相关离线能力demo(语音唤醒WakeDemo)•assets:SDK相关资源配置文件•Libs:动态库和jar包•res:UI文件和相关布局文件xml•readme说明(必看)•release 版本说明吐了语音唤醒搞了一天了,unity打包出来apk居然直接白屏安卓端语音识别代码package com.example.unity_asr;import android.os.Bundle;import android.util.Log;import com.iflytek.cloud.RecognizerListener;import com.iflytek.cloud.RecognizerResult;import com.iflytek.cloud.SpeechError;import com.iflytek.cloud.SpeechRecognizer;import com.iflytek.cloud.SpeechConstant;import com.iflytek.cloud.SpeechUtility;import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;import org.json.JSONException;import org.json.JSONObject;import java.util.HashMap;import java.util.LinkedHashMap;public class MainActivity extends UnityPlayerActivity {private SpeechRecognizer mIat;private HashMap<String, String> mIatResults = new LinkedHashMap<String, String>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//初始化SpeechUtility.createUtility(this, SpeechConstant.APPID + "=60307482");mIat = SpeechRecognizer.createRecognizer(this, null);//设置mIat的参数//表示是什么服务mIat.setParameter(SpeechConstant.DOMAIN, "iat");//设置语言mIat.setParameter(NGUAGE, "zh_cn");//接受语言的类型mIat.setParameter(SpeechConstant.ACCENT, "mandarin");//使用什么样引擎mIat.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD);}//创建一个监听器RecognizerListener mRecognizerLis = new RecognizerListener() {@Override//当声音改变的时候调用public void onVolumeChanged(int i, byte[] bytes) {}@Override//开始说话的时候调用public void onBeginOfSpeech() {}@Override//结束说话的时候调用public void onEndOfSpeech() {}@Override//返回结果public void onResult(RecognizerResult recognizerResult, boolean b) {printResult(recognizerResult);}@Override//出错的时候调用public void onError(SpeechError speechError) {}@Override//自定义事件public void onEvent(int i, int i1, int i2, Bundle bundle) {}};//解析Json的方法//方法来自speechDemo->java->voicedemo->IatDemo中的printResult方法private void printResult(RecognizerResult results) {String text = JsonParser.parseIatResult(results.getResultString());String sn = null;// 读取json结果中的sn字段try {JSONObject resultJson = new JSONObject(results.getResultString());sn = resultJson.optString("sn");} catch (JSONException e) {e.printStackTrace();}mIatResults.put(sn, text);StringBuffer resultBuffer = new StringBuffer();for (String key : mIatResults.keySet()) {resultBuffer.append(mIatResults.get(key));}//把消息发送给Unity场景中MsgController物体上的OnResult 方法UnityPlayer.UnitySendMessage("MsgController", "OnResult", resultBuffer.toString());}//这个方法让Unity来调用public void beginListen() {//开始识别mIat.startListening(mRecognizerLis);}public int beginTest(int a, int b){//交互测试UnityPlayer.UnitySendMessage("Canvans","TestDemo","");return a+b;}}。
Unity3D接口的使用

UNity3D 接口的使用定义:接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员。
接口使用interface 关键字进行定义,可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。
接口的特性:∙ 1、接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现接口的任何非抽象类型都必须实现接口的所有成员。
∙2、接口不能包含常量、字段、运算符、实例构造函数、析构函数或∙类型、不能包含静态成员。
、∙3、接口成员是自动公开的,且不能包含任何访问修饰符。
∙4、接口自身可从多个接口继承,类和结构可继承多个接口,但接口∙不能继承类。
例如:interface IProgram{void Fun();}class Program:IProgram{//显式实现接口成员void IProgram。
Fun(){Console.WriteLine("I am Fun.");}staticvoid Main(string[] args){IProgram p =new Program(); //声明一个接口实例,但不是对接口进行实例化p.Fun();Console.Read();}}实现接口可以显式实现和隐式实现,那么这两种实现到底有什么优缺点呢?一般情况,当类或者结构要实现的是单个接口,可以使用隐式实现。
如果类或者结构继承了多个接口且接口中具有相同名称成员时,就要用到显式实现,当显式实现方式存在时,隐式实现方式就失效了。
接口的继承:接口继承和类继承不同:首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。
也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现,其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口接口的覆盖:由于接口的实现没有方法体,抽象方法也没有方法体,那么当我们在接口的实现方法里调用抽象方法时,会如何执行呢?结果是:抽象类子类的实现方法功能接口和抽象类的区别∙接口用于规范,抽象类用于共性。
MojingSDK For Android 接口说明文档

MojingSDK for Android 开发说明文档北京暴风魔镜科技有限公司2016-02版本Version 日期Data作者Author注释Comments1.3 2016-06-21 刘满松1、支付相关接口增加错误详情回调void mjFailedDetail sCallback(String json)2、支付确认页面增加取消按钮的回调法律声明本文档包含的所有内容除特别声明以外,版权均属于北京暴风魔镜科技有限公司所有。
未经本公司书面许可,任何单位和个人不得以任何方式(电子机械,包括影印)翻印或转载本文档的任何部分,否则将视为侵权,追究法律责任。
目录目录 (4)一. SDK发布说明 (8)1 SDK发布包的文件格式 (8)2 SDK的命名规范 (8)二. SDK的使用说明和接口说明 (9)1在工程中使用SDK(以Eclipse为例) (9)2在代码中使用SDK (9)2.1 初始化SDK (10)2.2 使用头部跟踪系统 (10)2.2.1 检查当前手机设备的传感器信息 (10)2.2.2 头部跟踪复位 (10)2.2.3 复位Y AW旋转角 (11)2.2.4 开始校准头部跟踪偏置值 (11)2.2.5 获取头部跟踪偏置值是否已经校准 (11)2.2.6 获取当前视角,以矩阵形式表示 (11)2.2.7 获取当前视角,以欧拉角表示 (11)2.2.8 获取当前视角,以四元数表示 (12)2.3 使用反畸变 (12)2.3.1 选择VR眼镜和镜片 (12)2.3.2 开启关闭TimeWarp (12)2.3.3 开启关闭多线程反畸变 (13)2.3.4 设置Renderer (13)2.3.5 设置Message Handler (13)2.3.6 MojingSurfaceView的使用方法 (14)2.3.7 获取推荐视场角(FOV) (14)2.3.8 获取绘制纹理 (15)2.3.9 绘制畸变图像 (15)2.3.10 绘制畸变图像并且叠加一个额外的图层 (16)2.3.11 指定叠加图层的位置 (16)2.3.12 更改绘制图像的垂直位置(内测功能) (17)2.3.13 在屏幕中央位置绘制辅助线 (17)2.3.14 设置默认魔镜世界 (17)2.3.15 获取默认魔镜世界对应信息 (18)2.3.16 获取最后一次切换的魔镜世界对应信息 (19)2.4 获取SDK支持的厂商-产品-眼镜的信息 (19)2.4.1 获取SDK支持的厂家列表 (19)2.4.2 获取SDK支持的特定厂商的产品列表 (20)2.4.3 获取SDK支持的产品镜片列表 (20)2.4.4 获取Key的完整描述信息 (21)2.4.5 拼接两个Key (22)2.4.6 发生错误时返回的描述信息 (22)2.5 使用蓝牙手柄 (23)2.5.1 连接手柄 (23)2.5.2 断开手柄 (23)2.5.3 配置手柄使用方式 (24)2.5.4 使能特定的蓝牙手柄 (24)2.5.5 关于配置文件 (24)2.5.6 多个Activity共用一个MojingInputManager (24)2.5.7 手柄正常工作需要额外更改的代码 (24)2.5.8 响应手柄操作 (25)2.6 获取SDK的信息 (26)2.6.1 获取SDK版本信息 (26)2.6.2 获取SDK是否已经调用Init函数 (26)2.6.3 获取是否已经启用了头部跟踪 (26)2.6.4 获取是否已经进入了魔镜世界 (27)2.6.5 获取进入魔镜世界时指定的畸变算法适配的眼镜型号 (27)2.7 加入信息统计报数功能 (27)2.7.1 首次报活、使用时长等信息统计 (27)2.7.2 页面统计 (28)2.7.3 事件统计 (29)2.7.4 错误信息上报 (29)2.7.5 报数时机设置 (30)2.7.6 集中上报间隔时间设置 (30)2.8 使用用户自定义参数功能 (30)2.8.1 设置用户自定参数 (30)2.8.2 获取当前用户自定义参数 (30)2.8.3 用户自定义参数的字段和说明 (31)2.9 注册、登录、消费接口 (31)2.9.1 业务术语 (31)2.9.2 接口说明 (33)2.9.3 返回码 (39)三. 附录 (41)1使用SDK时需要的权限 (41)1.1 存储设备IO的权限 (41)1.2 网络访问权限 (41)1.3 蓝牙手柄相关权限 (41)1.4 使用报活相关权限 (41)1.5 SDK当前正在使用的手柄配置文件 (41)1.6 手柄配置文件详细说明 (41)MojingSDK For Android(下文简称SDK)是为了配合Android软件开发者开发适用于暴风魔镜(R)产品而推出的SDK(Software Development Kit)开发包。
SDK通用版接口文档

SDK通用版接口调用说明版本:2.0第一次修订时间:2011-01-06第二次修订时间:2011-01-14第三次修订时间:2011-12-15目录1请仔细阅读信息安全责任保证条款............. - 2 -1.1安全信息责任条款.................................................................................................. - 2 -1.2注意事项:.............................................................................................................. - 4 -2Webservice接口............................ - 4 -2.1webservice返回集合对照表................................................................................. - 4 -2.2Register注册(信息必须真实, 短信出现问题联系不上使用者后果自负.)... - 5 -2.3balance 查询余额.................................................................................................. - 5 -2.4ChargUp充值........................................................................................................... - 6 -2.5mt 发送短信............................................................................................................ - 6 -2.6mo接收短信............................................................................................................. - 8 -2.7gxmt 个性发送........................................................................................................ - 9 -3Http接口................................. - 10 -3.1http返回集合对照表........................................................................................... - 10 -3.2发送短信................................................................................................................ - 11 -3.3接收短信................................................................................................................ - 11 -4发送说明.................................. - 12 -4.1做单发说明............................................................................................................ - 12 -4.2做群发说明............................................................................................................ - 12 -4.3编码说明................................................................................................................ - 12 -4.4长短信说明............................................................................................................ - 12 -4.5长短信扣费说明.................................................................................................... - 12 -5接收说明.................................. - 12 -6附加说明.................................. - 13 -6.1接口地址................................................................................................................ - 13 -6.2其它说明................................................................................................................ - 13 -6.3郑重声明................................................................................................................ - 13 -1请仔细阅读信息安全责任保证条款1.1安全信息责任条款本人/本公司在使用本软件过程中,将严格遵守国家相关法律、法规、保证本公司信息发布的安全,并切实做到:(1)建立健全本公司信息发布的内部保障制度、信息安全保密制度、用户信息安全管理制度,建立健全本公司信息安全责任制度和信息发布的审批制度,严格审查本公司产品所发布信息。
unity游戏框架学习-SDK接入

unity游戏框架学习-SDK接⼊概述链接:之前概述有说过SDK的⼤概功能如下:1.账号类:创建、登录、切换2.充值3.外部分享如微信、朋友圈、FB等4.打开外部链接,如论坛、社区、反馈等5.功能类:语⾳、头像、埋点这些功能都是sdk提供的,⽽我们要做的就是调⽤sdk的接⼝(ios的OC接⼝,android的java接⼝)⼀、android和c#交互1.c#调⽤android⽅法,如下,使⽤ AndroidJavaClass获取AndroidJavaObject对象,在通过AndroidJavaObject调⽤java⽅法。
最常⽤的是AndroidJavaObject的Call⽅法,unity⽂档:这个Call是⽀持多参数的,第⼀个参数必须是⽅法名,第⼆个开始则是各种参数。
如果有返回值则需要使⽤泛型版本Call<Type>。
using UnityEngine;///<summary>/// Android帮助库///提供unity对android端的调⽤,属性的get和set⿇烦封装成⽅法///</summary>public class AndroidHelper{const string AndroidMainActivity = "com.unity3d.player.UnityPlayer";static AndroidJavaObject ms_MainActivity;public static AndroidJavaObject MainActivity {get {if (ms_MainActivity == null) {AndroidJavaClass jc = new AndroidJavaClass (AndroidMainActivity);if (jc != null) {ms_MainActivity = jc.GetStatic<AndroidJavaObject> ("currentActivity");}}return ms_MainActivity;}}#region MainActivity的⾮静态⽅法public static void Call(string method){MainActivity.Call(method);}public static void Call(string method, object[] args){MainActivity.Call(method, args);}public static void Call(string method, bool val){MainActivity.Call(method, new object[] { val });}public static void Call(string method, string val){MainActivity.Call(method, new object[] { val });}public static string CallWithReturn(string method){string result = "";AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");result = jo.Call<string>(method);return result;}#endregion#region MainActivity的静态⽅法public static void CallStatic(string method){MainActivity.CallStatic(method);}public static void CallStatic(string method, string val){MainActivity.CallStatic(method, new object[] { val });}public static string CallStaticWithReturn(string val){string result = "";AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");result = jo.CallStatic<string>(val);return result;}#endregion}2.Java回调unity,public static void UnitySendMessage(String var0, String var1, String var2) ,第⼀个参数为unity中的⼀个gameobject名称,第⼆个参数为这个gameobject⾝上捆绑的脚本中的⼀个⽅法,⽽第三参数是这个对应⽅法上的参数public static final String UNITY_HANDLER = "SDKMsgHandler";*** 向Unity传送* @param arg1 函数名* @param arg2 参数*/public static void UnitySendMessage(String arg1, String arg2){UnityPlayer.UnitySendMessage(UNITY_HANDLER, arg1, arg2);}⼆、ios和c#的交互,可以参照官⽹:,你需要把你的oc代码放在Plugins/iOS⽂件夹下才能正确调⽤到OC的代码c#调⽤ios:c#端[DllImport("__Internal")]private static extern string U3dGetAvailableDiskSize();///<summary>///获取磁盘空间///</summary>public long GetAvailableDiskSize(){string size = U3dGetAvailableDiskSize();return long.Parse(size);}OC端char* _MakeStringCopy( const char* string){if (NULL == string) {return NULL;}char* res = (char*)malloc(strlen(string)+1);strcpy(res, string);return res;}const char* U3dGetAvailableDiskSize(){struct statfs buf;long long freespace = -1;if(statfs("/var", &buf) >= 0){freespace = (long long)(buf.f_bsize * buf.f_bfree);}NSString *_msg = [NSString stringWithFormat:@"%lld", freespace];return _MakeStringCopy([_msg UTF8String]);}2.OC回调unity:UnitySendMessage("GameObjectName1", "MethodName1", "Message to send");参数1:gameobject名字;参数2:回调函数的名字;参数3:参数。
Mystic Light SDK参考文档说明书

Mystic Light Software Development Kit Reference DocumentationVersion 1.0.0.04Sept. 2019Micro-Star INT’L CO., LTD.Desktop Platform Solution Division Software DepartmentOverview-Introduction-System Requirements-Function APIs-Function Documentation-MLAPI Status ValuesIntroduction●This SDK is provides the LED control functions for MSI product such as MSI Motherboard, VGA,Keyboard, Mouse, Headset, etc.●This SDK is based on the Microsoft development environment, that supports Microsoft VisualStudio C++ and C# programming language.System Requirements●This SDK is supported on Windows 7 / 8 / 8.1 / 10, both 32-bit and 64-bit architectures.●MSI Mystic Light related applications must be installed before using the SDK function.Confidential Micro-Star INT'L CO., LTD.Function APIsint MLAPI_GetErrorMessage(int, BSTR*)This function converts a MLAPI error code into general string.int MLAPI_Initialize()This function initializes the APIs.int MLAPI_GetDeviceInfo(SAFEARRAY**, SAFEARRAY**)This function retrieves information of all devicesint MLAPI_GetDeviceName(BSTR,SAFEARRAY**)This function retrieves the friendly name of specific device.int MLAPI_GetDeviceNameEx(BSTR, DWORD, BSTR*)This function retrieves the friendly name of specific device.int MLAPI_GetLedInfo(BSTR,DWORD, BSTR*, SAFEARRAY**)This function retrieves the LED display name and enumerate the LED styles.int MLAPI_GetLedName(BSTR,SAFEARRAY**)This function retrieves the all LED name of specific device.int MLAPI_GetLedColor(BSTR, DWORD, DWORD*, DWORD*, DWORD*)This function retrieves the specific LED current color.int MLAPI_GetLedStyle(BSTR, DWORD, BSTR*)This function retrieves the specific LED current style.int MLAPI_GetLedMaxBright(BSTR, DWORD, DWORD*)This function retrieves a specific LED supports the maximum brightness level.int MLAPI_GetLedBright(BSTR, DWORD, DWORD*)This function retrieves the specific LED current brightness level.int MLAPI_GetLedMaxSpeed(BSTR, DWORD, DWORD*)This function retrieves a specific LED supports the maximum speed level.int MLAPI_GetLedSpeed(BSTR, DWORD, DWORD*)This function retrieves the specific LED current speed level.int MLAPI_SetLedColor(BSTR, DWORD, DWORD, DWORD , DWORD)This function sets the LED to a specific color.int MLAPI_SetLedColors(BSTR,DWORD,SAFEARRAY**,DWORD*,DWORD*,DWORD*) This function sets the colors for each individual LED within LED area by its name.int MLAPI_SetLedColorEx(BSTR,DWORD,BSTR,DWORD,DWORD,DWORD,DWORD) This function sets the colors for each individual LED within LED area by its name.int MLAPI_SetLedColorSync(BSTR,DWORD,BSTR,DWORD,DWORD,DWORD,DWORD) This function sets the colors for each individual LED within LED area by its name.Confidential Micro-Star INT'L CO., LTD.int MLAPI_SetLedStyle(BSTR, DWORD, BSTR)This function sets the LED to a specific style.int MLAPI_SetLedBright(BSTR, DWORD, DWORD)This function sets the LED brightness to a specific level.int MLAPI_SetLedSpeed(BSTR, DWORD, DWORD)This function sets the LED blink speed to a specific level.Function DocumentationConfidential Micro-Star INT'L CO., LTD.Confidential Micro-Star INT'L CO., LTD.Confidential Micro-Star INT'L CO., LTD.Confidential Micro-Star INT'L CO., LTD.Confidential Micro-Star INT'L CO., LTD.Confidential Micro-Star INT'L CO., LTD.Confidential Micro-Star INT'L CO., LTD.Micro-Star INT'L CO., LTD.ConfidentialMLAPI Status ValuesConfidential Micro-Star INT'L CO., LTD.10。
SDK使用说明范文

SDK使用说明范文一、SDK简介SDK(Software Development Kit,软件开发工具包)是一组开发工具和资源的集合,用于帮助开发者创建应用程序。
SDK提供了开发所需的应用程序接口(API)、示例代码、文档等。
SDK可以大大简化开发过程,提高开发效率。
二、SDK的安装和配置2.配置开发环境需要根据开发环境配置SDK。
例如,在Windows上,需要在系统环境变量中设置SDK的路径。
三、SDK的导入在开发工具中导入SDK,可以使用SDK提供的API进行开发。
1.创建新项目打开开发工具,创建一个新项目。
2.导入SDK在项目中添加SDK,可以通过添加依赖库或引入外部库的方式导入。
四、SDK的使用SDK提供了各种功能的API供开发者使用。
以下是一些常见的SDK使用方法。
1.初始化SDK在应用程序的入口处,调用SDK提供的初始化方法,完成SDK的初始化。
可以根据需要进行必要的配置。
2.登录与认证在用户登录模块中,调用SDK提供的登录与认证API,实现用户的身份认证与管理。
3.数据获取与处理使用SDK提供的API,获取所需的数据。
可以进行数据解析、处理与展示等。
4.事件与回调SDK通常提供事件与回调机制,用于处理异步操作或接收SDK返回的数据。
需要注册相应的事件监听器或回调函数。
5.功能扩展与定制SDK通常提供了一些扩展和定制功能的接口,开发者可以根据需要,自定义SDK的功能与行为。
五、SDK的调试与测试在开发过程中,调试和测试是不可或缺的环节。
1.调试开发者可以使用开发工具提供的调试功能,结合SDK的调试日志,来定位和解决开发中的问题。
2.测试开发者可以编写单元测试或集成测试,来验证SDK的使用是否符合预期,并检查各种边际情况下的功能表现。
六、SDK的更新与升级随着软件的发展和需求变化,SDK也需要进行更新和升级。
一般来说,开发者可以通过以下方式更新SDK:1.官方渠道更新开发者可以定期查看官方网站、论坛或邮件列表,了解最新版本的SDK发布信息。
工业相机SDK接口设计说明书.doc

工业相机SDK 接口设计说明书目录1.简介 (3)1.1目标及范围 (3)1.2相关术语 (3)1.3参考资料 (3)2.分析设计 (5)2.1设计思想 (5)2.2接口结构 (5)2.3数据流分析 (6)3.接口描述(C++接口) (8)3.1传输层工厂类 (8)3.2设备控制类 (11)3.3G EN A PI (16)4.接口描述(C接口) (21)4.1相机控制通用接口 (21)4.2XML相关接口 (37)4.3G IG EV ISION相机特有的接口 (41)4.4U3V相机特有的接口 (43)5.数据结构描述 (44)5.1MV_GIGE_DEVICE_INFO(G IG E设备信息) (44)5.2MV_USB3_DEVICE_INFO(USB3设备信息) (45)5.3MV_CC_DEVICE_INFO(相机信息统一结构体) (45)5.4MV_FRAME_OUT_INFO(输出帧信息) (46)5.5MV_XML_NODE_FEATURE(XML节点基本信息) (47)6.修订记录 (48)1.简介1.1目标及范围本文档的目的是设计一套工业相机SDK的统一接口,兼容GigEVision、1394、U3V 和CameraLink等标准协议。
业务层软件可同时调用GenApi和这套接口,以实现对相机的控制。
当前版本仅支持GigEVision和U3V两种传输协议,所以主要根据《GigEVisionSDK产品需求规格说明书》和《USB3VisionSDK产品需求规格说明书》进行设计,今后会在此版本的基础上逐渐完善。
本文档的预期读者是项目经理、软件详细设计者、软件开发人员、测试人员和项目管理人员等。
1.2相关术语1.3参考资料1.《GigEVisionSDK产品需求规格说明书.doc》.2.《USB3VisionSDK产品需求规格说明书.doc》.3.《GenICam_Standard_v2_0.pdf》.4.eBUS SDK C++ API.chm.5.FlyCapture2 C Documentation.chm.6.FlyCapture2SDKHelp.chm7.JAI SDK.chm8.ImagingSource.chm.9.PylonCSDK.chm2.分析设计2.1设计思想工业相机SDK的设计首先考虑的是支持多个相机协议,提取共性后设计通用的接口和结构体,使得上层应用软件不需要关心具体的相机协议。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MojingSDK for Unity3D 接口说明文档北京暴风魔镜科技有限公司2016-06法律声明本文档包含的所有内容除特别声明以外,版权均属于北京暴风魔镜科技有限公司所有。
未经本公司书面许可,任何单位和个人不得以任何方式(电子机械,包括影印)翻印或转载本文档的任何部分,否则将视为侵权,追究法律责任。
一、简介 (5)二、开发环境 (5)1、Windows 平台发布 (5)2、Android平台发布 (5)3、iOS平台发布 (6)三、支持的设备 (6)1、支持的眼镜及镜片 (6)2、支持的蓝牙手柄 (7)四、SDK包介绍 (7)1、Unity3D版本要求 (7)2、导入SDK开发包 (8)3、SDK示例场景 (8)4、Plugins文件夹 (13)5、StreamingAssets文件夹 (13)五、SDK功能模块 (14)1、陀螺仪头部跟踪 (14)2、图像抗镜片畸变 (16)3、魔镜蓝牙手柄适配及交互控制 (20)4、信息统计报数 (24)5、注册、登录、消费接口 (27)6、使用用户自定义参数功能 (33)7、角色控制器 (34)六、应用程序发布 (36)1、Windows(X64) Application 发布 (37)2、Android Application发布 (37)3、iOS Application发布 (38)七、总结 (39)附录 (40)1、手柄配置文件详细说明 (40)➢一、简介MojingSDK for Unity3D(下文简称SDK)是为了配合Unity3D软件开发者开发适用于VR眼镜(包括但不限于暴风魔镜公司出品的眼镜)而推出的SDK(Software Development Kit)开发包。
开发包主要从手机陀螺仪获取头部跟踪数据、校正静态偏置值,图像抗镜片畸变、蓝牙手柄适配及交互性操作等方面为开发者提供便利性支持。
SDK采用Unity3D的标准unitypackage包格式发布,同时支持Windows(X64)平台、Android平台和iOS平台发布。
二、开发环境1、Windows 平台发布SDK开发环境为Unity5.2.2(Win 64bit),提供64位库,采用OpenGL2渲染绘制,支持双眼反畸变渲染,键盘鼠标模拟头部Camera旋转,以及Unity原生Input作为交互。
开发者在导入unitypackage之前,需将Unity 图形API设为OpenGL2,如图22所示。
2、Android平台发布SDK开发环境为Unity3D 5.2.2(Win),建议采用Unity3D 5.2.2(Win)及以上的版本,Android-SDK版本为24.0.2,JDK 1.7.0以上;支持暴风魔镜系列、HID标准协议等蓝牙手柄(详见下表2)作为交互外设进行控制,支持Android4.4以上。
Android SDK Location配置,如下图1所示。
图1 Android SDK Location配置3、iOS平台发布SDK开发环境为Unity3D 5.2.2(Mac) & XCode7.1,建议采用Unity3D 5.2.2(Mac)及以上版本,Xcode采用7.1以上版本,支持Mojing4(魔镜4代手柄)、iCade模式手柄和iPhoneMFi 手柄作为交互外设进行控制,支持iOS6.0以上。
三、支持的设备1、支持的眼镜及镜片目前支持暴风魔镜所有型号的眼镜镜片,参见表1。
1.1 获取厂商列表➢GetManufacturers ( string strLanguageCodeByISO639)➢函数功能:获取json文件厂商列表➢输入参数:中文(“zh”)➢返回值:厂商列表1.2 获取产品列表➢GetProducts ( string strManufacturerKey, string strLanguageCodeByISO639)➢函数功能:获取Manufacturer下的产品列表➢输入参数:厂商信息KEY,“zh”➢返回值:产品列表1.3 获取镜片列表➢GetGlasses(string strProductKey, string strLanguageCodeByISO639)➢函数功能:获取Product下的镜片列表➢输入参数:产品信息KEY,“zh”➢返回值:镜片列表Mojing.cs,Awake( )中解析出GlassesKey和GlassesName,获取所有镜片的名称和对应的Key,加入glassesKeyList和glassesNameList;Menu.unity示例场景中生成眼镜列表,选择不同的眼镜,产生不同的畸变效果。
图2 Game窗口镜片切换下拉菜单效果2、支持的蓝牙手柄SDK包里,凡涉及到蓝牙手柄交互操作的场景demo,均需提前在手机上适配并连接蓝牙手柄,对于不同的系统平台,需要相应的蓝牙手柄做支持,如下表2所示。
产品名称支持的系统平台魔镜1代手柄Zeemote JS1 V3 Android魔镜2代手柄Mojing Android魔镜3代手柄Mojing3 Android魔镜4代手柄Mojing4A Android Mojing4 iOSHID标准协议手柄 e.g. 小米蓝牙手柄AndroidiCade模式手柄 e.g. BETOP 2585 BFM iOSiPhone MFi手柄 e.g. steelseries iOS四、SDK包介绍1、Unity3D版本要求在导入UnityPackage之前,确保Unity3D版本满足SDK包的要求,本文第二部分已详细说明,此处不再赘述。
2、导入SDK开发包如下图3所示,包内容如下图4所示。
图3 导入SDK package图4 SDK包文件目录3、SDK示例场景Demo中包含如下7个示例场景,涵盖SDK各个常见易用的功能模块。
图5 场景文件夹目录3.1 Menu.unity图6 Menu场景层次图在菜单切换场景中,Button选择提供两种交互模式:(1)蓝牙手柄摇杆键切换Button,OK 键按下确定,响应Demo.cs中的回调;(2)GazePointer射线检测选中Button,触屏按下确定,响应Demo.cs中的回调。
Canvas画布下的各个Button回调响应函数,实现对应的场景切换或者模式切换。
图7 ButtonOnClick回调响应函数UIListController.cs根据镜片列表信息实例化出镜片Text选项,可通过蓝牙手柄摇杆或GazePointer捕获焦点选择镜片模式。
图8 镜片切换下拉菜单3.2 360PhotoDemo.unity图9 360PhotoDemo场景层次图在全景图360PhotoDemo场景中,球体物体材质为全景图片材质,MojingMain实现陀螺仪位姿实时响应,MojingInputManager监听并接受蓝牙外设输入并响应,ruler_x,ruler_y分别为竖直和水平方向的标尺,可测量得到可视范围的角度大小。
Canvas画布实现UI Button,EventSystem监听触屏或按键操作,可切回Menu场景。
MojingMain.prefab、MojingHead.prefab和MojingInputManager.prefab在Assets\MojingSDK\Prefabs目录中已提供,开发人员可根据实际需要添加和修改。
3.3 StereoImage.unityStereoImage是为了呈现立体影像而制作的demo场景,对于影像资源具有一定的要求,需提供左右/上下全景影像文件,可参考Assets\Demo\Materials\Stereoimage.jpg。
在StereoImage场景中,将Assets\Demo\Models\UD中的两个球面模型拖入场景中,并分别设置对应的层Left/Right,VR Camera的Camera组件中,Culling Mask分别渲染对应的Left/Right层,运行效果如下图10所示。
图10 StereoPhoto场景运行效果与此类似,开发者可以实现立体视频功能,可考虑采用第三方插件EasyMovieTexture(可从Unity Store中获取)实现移动端视频播放,参数Target Material为渲染的两个球面,属性设置与StereoPhoto场景中设置相同,此处不再赘述,运行效果如下图11所示。
图11 StereoVideo场景运行效果3.4 Mojing1stC.unity & Mojing3rdC.unity漫游示例场景中,根据需要拖入MojingFirstCharacterController.prefab或MojingThirdCharacterController.prefab,实现角色控制,MojingInputManager.prefab监听并接受蓝牙外设指令键值并响应。
3.5 MojingLogin_Pay.unityMojingLogin_Pay场景用于示例注册登录支付功能的实现,该模块依赖库文件MJPaySdk.jar、android-query.0.26.7.jar(文件路径:Assets\Plugins\Android),请求接口调用脚本MojingLoginPay.cs,回调接口脚本Callback.cs(文件路径:Assets\MojingSDK\Scripts)。
具体接口说明,详见本文档五.5部分。
图12 MojingLoginPay场景3.6 MojingReport.unity数据统计示例场景用以测试和举例PageStart、PageEnd、SetEvent、AppResume、AppPause接口函数;开发者可在进入场景时调用Unity_AppPageStart,退出场景时调用Unity_AppPageEnd,触发特定事件时调用Unity_AppSetEvent,应用切到前端时调用Unity_AppResume,应用切到后台时调用Unity_AppPause。
4、Plugins文件夹图13 Plugins文件夹目录4.1 Plugins/x64存放Windows_x64平台发布所需动态链接库及依赖库文件。
4.2 Plugins/Android存放Android插件,包括.jar、.so、.xml文件等。
4.3 Plugins/iOS存放iOS插件,包括.a、.bundle、.m、.mm文件等。
开发者可在UnityIOSAPI.h头文件中看到接口函数的声明,具体的函数功能及参数说明见本文第五部分“SDK功能模块”。
5、StreamingAssets文件夹json文件用于配置手柄的使用方式以及使能可支持的蓝牙手柄型号。