一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不一样的扫码客户端为啥扫出来的效果不一样?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想要的有效信息,而后分析出来其实二维码无非就是记录了一个简单的信息,通常是URL,而后本身在URL上面作文章!得知了需求以后而后开始着手作二维码的生成,用了开源框架QRCode,而后解析ZXing,都是站在前人的肩膀上继续作下去,我就没有深刻研究二维码的深层次方面的东西,大概只知道生成是根据一个二维Bool数组而后绘制像素点形参一个方形的图片,其中三个角跟中间一块是不包含信息的三个角是三个小矩形,是为了定位位置,正中间有一个方形区域没有信息是为了放置Logo用的,相比你们也比较清楚,都见过,如今餐厅,地铁上基本都有扫一扫的标志,呵呵,二维码已经成为一个通用的宣传手段!而后我接到这个任务以后就要一步一步的分析问题到解决问题,从生成一张二维码图片开始,到批量生成再到批量生成页面,而且每一个页面中要嵌套与之对应的二维码,而后再到学习Android,由于以前没怎么接触过Java方向的东西,而后简单的看了两天Android,对Android开发有了一个大致的认识和了解,而后再到学习Android和Unity的交互,再到作出Android插件等过程,截止今晚终于将功能实现,没有什么解决不了的问题,只要动手,动脑,一切都OK!java
接下来我就分享一下制做过程,关于生成二维码的我当时写了一个教程,结果还被抨击了,说.net程序员就你这水平...对于这个网友,个人确很惭愧,个人水平有限,写的内容的确比较浅显,没法知足你求高深技术的法眼,但我写出来是为了更过广大初学者,但愿能给他们一点入门的帮助!我想说的人外有人,不要以为本身厉害就看不起新手或者没你水平高的人,说不定未来他就有可能技术比你厉害!总而言之,或许对大牛而言,这个二维码的生成和解析很简单,但我仍是坚持下下来,一来也是对本身这一周多时间的一个小结,二来仍是前面那句话,但愿和广大初学者一块儿学习和进步,一块儿交流!android
二维码生成和交互能够看我以前写的文章:二维码生成 http://blog.csdn.net/dingxiaowei2013/article/details/22925709,Unity和Android交互http://blog.csdn.net/dingxiaowei2013/article/details/24485937。在这基础之上,而后接着实现功能!程序员
更多精彩内容请关注个人微博 @丁小未 转载请注明出处: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()
- {
-
- 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);
- }
-
-
- 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;
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
-
- 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();
-
-
-
-
- UnityPlayer.UnitySendMessage("Cube","GetString",bundle.getString("result"));
- }
- break;
- }
- }
-
- }
导出插件:
而后我导出成插件,以前一个扫码插件是EasyCodeScanner,而后我从此的网名叫Aladdin,我也命名一个扫码的Android插件,为AladdinCodeScanner,往后可能继续完成添加上IOS的扫码功能,完善这一插件,我这也是深受EasyCodeScanner的折磨才决定自食其力!以前好不容易找到一个扫码的插件EasyCodeScanner,结果发现会出错还有关键的是没有实现Android的扫码功能,Android部分的方法没实现,因此也促成了我本身写插件的念头,今天如愿以偿,一身轻松!时间不早,感受熬夜身体有点吃不消了,身体是本钱,明儿继续将工程补上!晚安!
工程源码:
http://down.51cto.com/data/1156726