由於在項目中需要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平臺下:
解決方案:
如圖所示,將Objective-C Automatic Reference Counting選項修改成NO。