Vuforia插件与Esa yCode Scanner在Android与IOS平台下的使用
发表于2018-05-18
由于在项目中需要Vuforia插件中使用二维码扫描的功能,如果我们不使用Easy Code Scanner插件做二维码的扫描功能的话,就需要自己在Android和XCode中写原生的代码,为此下面就和大家介绍下Vuforia与Esa yCode Scanner在移动平台下的使用。
首先需要下载Vuforia插件,直接官网下载。
一、Android平台下
首先,新建一个项目,先导入其中一个插件包,然后在project视图中,找到plugins的文件夹,剪切文件夹中的AndroidManifest.xml,可放在任意文件夹(android配置文件,规定了android的访问权限,启动界面等等);接下来再导入另一个插件包。你会发现这个时候又有一个名为AndroidManifest.xml的文件。
之所以分别加载两个插件,主要原因是两个插件包都是android插件,同时导入不做任何处理可能会导致AndroidManifest.xml这个文件的替换。这样就可能导致发布出来的android 应用只能启动一个界面(就是在项目运行的时候只能使用一个功能,如果使用另一个得从新退出再进入),不能结合使用两个插件的功能。
这里说一下,一开始我也天真的以为同时导入就能使用,翻来覆去折腾了两天时间,才找到这个原因,万恶的配置文件啊……
接下来是整理两个配置文件,分别打开两个文件(我推荐使用notepad++ 这个软件,用起来挺顺手的),你会发现都用一个的标签,这个标签之中的代码就记录了android应用的启动界面,在配置文件中,每一个activity都是一个android界面,在application 标签中,把两个配置文件的所用activity 标签整理到一起,然后删除到其中一个intent-filter标签,这里删掉的是二维码扫描的intent-filter标签,即activity android:name="com.c4mprod.ezcodescanner.RootActivity"标签下的启动界面被删除。
接下来就可以结合使用增强现实和二维码扫码的功能了。
上面说了这么多意思就是删除掉其中一个AndroidManifest.xml文件,然后将另一个的文件修改为以下代码:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" android:installLocation="preferExternal" android:theme="@android:style/Theme.NoTitleBar" android:versionCode="1" android:versionName="1.0"> <uses-feature android:name="android.hardware.camera" /> <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true"/> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:debuggable="false"> <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" /> </activity> <activity android:name="com.unity3d.player.VideoPlayer" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"> </activity> <activity android:name="com.c4mprod.ezcodescanner.RootActivity" android:label="@string/app_name"> </activity> <activity android:name="com.c4mprod.ezcodescanner.camera.CameraActivity" android:screenOrientation="sensor"/> <!-- To support devices using the TI S3D library for stereo mode we must add the following library. Devices that require this are: ODG X6 --> <uses-library android:name="com.ti.s3d" android:required="false" /> </application> <!--package="com.c4mprod.ezcodescanner" android:versionCode="3" android:versionName="1.2">--> <!--<uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE"/> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" />--> </manifest>
这一段代码主要就是对两个文件进行合并,现在就可以在android平台下使用了,经过测试的哦!
二、IOS平台下:
解决方案:
1、导入到Unity中之后,切换平台为IOS,然后把自身的Demo场景进行打包,打包成Xcode工程导入到Xode里面
2、点开项目,然后在Build Settings中搜索C++ Exceptions ,选项勾选为Yes
3、打开Build Phases -> Compile Sources,找到
双击该文件,标记为-fno-objc-arc打开方式
然后编辑此文件
修改mLabel.textAlignment = NSTextAlignmentCenter
然后编辑Xocde程序,发现现在只有一个错误了,如果没有错误,则到这一步已经成功了,如果有错误,请继续往下看
4、如果没有其他问题,则此时就剩下一个报错了,也就是如下图所示:
解决办法是打开
错误提示:
ARC forbids explicit message send of "autorelease"
解决办法:
xcode5创建项目时没有“Use Automatic Reference Counting”的选项,所以自动引用了ARC机制,可以在项目的Build Setting中设置。
如图所示,将Objective-C Automatic Reference Counting选项修改成NO。