由于在项目中需要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平台下: