Vuforia插件与Esa yCode Scanner在Android与IOS平台下的使用

发表于2018-05-18
评论0 2.9k浏览
由于在项目中需要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。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引