[Unity3D]自製UnityForAndroid二維碼掃描外掛程式

來源:互聯網
上載者:User

標籤: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二維碼掃描外掛程式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.