標籤:unity掃描二維碼android外掛程式 aladdincodescanner
一周左右終於將二維碼產生和掃描功能給實現了,終於能舒緩一口氣了,從一開始的疑惑為啥不同的掃碼用戶端為啥掃出來的效果不同?通用的掃描器掃出來就是一個下載APK,自製的掃描器掃出來是想要的有效資訊,然後分析出來其實二維碼無非就是記錄了一個簡單的資訊,一般是URL,然後自己在URL上面做文章!得知了需求之後然後開始著手做二維碼的產生,用了開源架構QRCode,然後解析ZXing,都是站在前人的肩膀上繼續做下去,我就沒有深入研究二維碼的深層次方面的東西,大概只知道產生是根據一個二維Bool數組然後繪製像素點形參一個方形的圖片,其中三個角跟中間一塊是不包含資訊的三個角是三個小矩形,是為了定位位置,正中間有一個方形地區沒有資訊是為了放置Logo用的,相比大家也比較清楚,都見過,現在餐廳,地鐵上基本都有掃一掃的標誌,呵呵,二維碼已經成為一個通用的宣傳手段!然後我接到這個任務之後就要一步一步的分析問題到解決問題,從產生一張二維碼圖片開始,到批量產生再到批量產生頁面,並且每個頁面中要嵌套與之對應的二維碼,然後再到學習Android,因為之前沒怎麼接觸過Java方向的東西,然後簡單的看了兩天Android,對Android開發有了一個大體的認識和瞭解,然後再到學習Android和Unity的互動,再到做出Android外掛程式等過程,截止今晚終於將功能實現,沒有什麼解決不了的問題,只要動手,動腦,一切都OK!
接下來我就分享一下製作過程,關於產生二維碼的我當時寫了一個教程,結果還被抨擊了,說.net程式員就你這水平...對於這個網友,我的確很慚愧,我的水平有限,寫的內容的確比較淺顯,無法滿足你求高深技術的法眼,但我寫出來是為了更過廣大初學者,希望能給他們一點入門的協助!我想說的人外有人,不要覺得自己厲害就看不起新手或者沒你水平高的人,說不定將來他就有可能技術比你厲害!總而言之,或許對大牛而言,這個二維碼的產生和解析很簡單,但我還是堅持下下來,一來也是對自己這一周多時間的一個小結,二來還是前面那句話,希望和廣大初學者一起學習和進步,一起交流!
二維碼產生和互動可以看我之前寫的文章:二維碼產生 http://blog.csdn.net/dingxiaowei2013/article/details/22925709,Unity和Android互動http://blog.csdn.net/dingxiaowei2013/article/details/24485937。在這基礎之上,然後接著實現功能!
更多精彩內容請關注我的微博 http://weibo.com/dingxiaowei2013 轉載請註明出處:http://blog.csdn.net/dingxiaowei2013/article/details/24677795
:
手機掃描後的效果:
說明:這裡是Unity介面調用Android的Java方法跳轉Android開發的Activity視圖,然後在Android中Java方法調用Unity再回到Unity介面。
源碼Unity:
using UnityEngine;using System.Collections;public class NewBehaviourScript : MonoBehaviour { private AndroidJavaObject activity; private string result="http://blog.csdn.net/dingxiaowei2013"; //result用於接收二維碼的傳回值 void Start() { AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); activity = jc.GetStatic<AndroidJavaObject>("currentActivity"); } void OnGUI() { //點擊掃碼調用Android方法 if (GUI.Button(new Rect(Screen.width / 2 - 50, 20, 100, 50), "點擊掃碼")) { activity.Call("Show"); } GUI.Label(new Rect(Screen.width / 2 - 100, 120, 300, 20), result); } //這個是Android調用的方法 void GetString(string str) { result = str; }}
Android:
package com.example.qr_codescan;import android.content.Intent;import android.os.Bundle;import android.widget.ImageView;import android.widget.TextView;import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;public class MainActivity extends UnityPlayerActivity {private final static int SCANNIN_GREQUEST_CODE = 1;/** * 顯示掃描結果 */private TextView mTextView ;/** * 顯示掃描拍的圖片 */private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);//mTextView = (TextView) findViewById(R.id.result); //mImageView = (ImageView) findViewById(R.id.qrcode_bitmap);//////點擊按鈕跳轉到二維碼掃描介面,這裡用的是startActivityForResult跳轉////掃描完了之後調到該介面//Button mButton = (Button) findViewById(R.id.button1);//mButton.setOnClickListener(new OnClickListener() {////@Override//public void onClick(View v) {//Intent intent = new Intent();//intent.setClass(MainActivity.this, MipcaActivityCapture.class);//intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//startActivityForResult(intent, SCANNIN_GREQUEST_CODE);//}//});}public void Show(){Intent intent = new Intent();intent.setClass(MainActivity.this, MipcaActivityCapture.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivityForResult(intent, SCANNIN_GREQUEST_CODE);}@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) {case SCANNIN_GREQUEST_CODE:if(resultCode == RESULT_OK){Bundle bundle = data.getExtras();//顯示掃描到的內容//mTextView.setText(bundle.getString("result"));//顯示//mImageView.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap"));UnityPlayer.UnitySendMessage("Cube","GetString",bundle.getString("result"));}break;} }}
匯出外掛程式:然後我匯出成外掛程式,之前一個掃碼外掛程式是EasyCodeScanner,然後我今後的網名叫Aladdin,我也命名一個掃碼的Android外掛程式,為AladdinCodeScanner,日後可能繼續完成添加上IOS的掃碼功能,完善這一外掛程式,我這也是深受EasyCodeScanner的折磨才決定自食其力!之前好不容易找到一個掃碼的外掛程式EasyCodeScanner,結果發現會出錯還有關鍵的是沒有實現Android的掃碼功能,Android部分的方法沒實現,所以也促成了我自己寫外掛程式的念頭,今天如願以償,一身輕鬆!時間不早,感覺熬夜身體有點吃不消了,身體是本錢,明兒繼續將工程補上!晚安!
[Unity3D]自製UnityForAndroid二維碼掃描外掛程式