在unity中Vuforia与EsayCodeScanner在移动平台的使用

由于在项目中需要Vuforia插件中使用二维码扫描的功能,所以把自己的心得写下来,为了以后方便使用和让其他同志们有更多的借鉴。

如果我们不使用Easy Code Scanner插件做二维码的扫描功能的话,需要自己在Android和XCode中写原生的代码,对于从来没有写过的我们是一种痛苦,所以我们可以直接站在巨人的肩膀上来完成所需的功能。

首先我们需要下载Vuforia插件,这个我在这里就不进行介绍了,直接去它的官网下载就可以了,至于Esay Code

Scanner插件,直接点击http://download.csdn.net/my进行下载。

(一):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:如果没有其他问题,则此时就剩下一个报错了,也就是如下图所示:

解决办法是打开
2015.10.16更新:
错误提示:
ARC forbids explicit message send of "autorelease"
解决办法:

xcode5创建项目时没有“Use Automatic Reference Counting”的选项,所以自动引用了ARC机制,可以在项目的Build Setting中设置。
如图所示,将Objective-C Automatic Reference Counting选项修改成NO。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值