毕 业 论 文(设 计)
题目:二维码电子请柬
生成与扫描系统设计
姓 名 岳栋栋
学 号 200900171263
学 院 控制科学与工程学院
专 业 自动化
年 级 2009 级
指导教师 赵子健
2013 年 5 月 20 日
摘 要
随着计算机技术和图像编码技术的不断发展与进步产生了一种自动识别技
术,既条码技术。二维码是条码的一种,由于它信息容量大、容错能力强,可靠
性高、成本低,近年来得到了广泛应用。随着智能手机的普及,Android 平台以
其开放性、良好的用户体验成为了智能手机主力的操作系统。结合二维码技术,
在 Android 平台上进行相关软件的开发可以进一步普及二维码技术应用,方便数
据信息的交流。
本项目就是用 Java 语言,通过 Eclipse 平台设计了一个适用于 Android 平台
的基于二维码生成与解码的一个应用软件。本软件可以将一些信息加密后生成为
二维码,生成的二维码可以应用在电子请柬中。然后再用本软件扫描电子请柬中
的二维码,可以获得加密前的信息,并且确认来着的身份。本软件可以防止不被
邀请的人混入一些场合,应用性较强。
关键词:二维码,安卓,手机软件
ABSTRACT
With the continuous development of computer technology and image coding
technology a kind of automatic identification technology called bar code technology
imerged. Quick Respond code is one kind of the bar code. In recent years ,it’s widely
used because of its large information capacity, fault tolerant ability, high reliability
and low cost . With the popularity of smartphones, Android platform has become the
main smartphone operating system with its openness and good user experience. The
development of applications related to QRcode on the Android platform can make
code technology more popular and make data communication more convenient..
In this project, a application based on the generate and encode of the Qrcode on
the Android platform was designed and application was developed on
Eclipse with Java programming language. This software can put some information in
a qr code that can be used in the electronic invitation. Then you can scan the qr code
in the electron invitation to get the original information and confirm the identification
of the visitor. This software can prevent people who are not invited entering some
occasions.
KEYWORDS: Qrcode,Android,application
目录
第一章 绪论 ................................................................................................................1
1.1 系统开发背景以及意义 ...............................................................................1
系统开发背景 ........................................................................................1
系统开发意义 ........................................................................................1
二维码介绍 ............................................................................................2
1.2 开发工具介绍 ...............................................................................................3
JDK 简介 .................................................................................................3
Android SDK 简介 ..................................................................................3
Eclipse 简介 ............................................................................................3
ADT 简介 ................................................................................................4
1.3 项目开发环境 .............................................................................................4
硬件环境 ................................................................................................4
软件环境 ................................................................................................4
环境搭建 ..........................................................................................................4
安装配置 JDK........................................................................................4
安装配置 Android 平台 SDK................................................................5
下载安装集成开发环境 Eclipse ...........................................................5
安装设置 ADT 插件 ..............................................................................5
第二章 系统的总体设计 ............................................................................................6
系统模块结构设计 ..........................................................................................6
计算机物理系统的配置方案设计 ..................................................................6
第三章 系统的详细设计 ............................................................................................8
系统流程图 ......................................................................................................8
界面设计 ..........................................................................................................9
第四章 应用程序的编程实现 ..................................................................................11
Android 应用工程文件组成 ...........................................................................11
Android 应用程序组成 ...................................................................................12
Intent 的使用 ...................................................................................................12
调用 ZXing.....................................................................................................13
编程实现 ........................................................................................................14
编写配置文件 ......................................................................................14
编写布局文件 ......................................................................................15
编写源程序 ..........................................................................................16
第五章 应用程序的测试 ..........................................................................................18
在模拟器上测试 ............................................................................................18
在目标设备上测试 ........................................................................................18
软件安装测试 ......................................................................................18
生成二维码测试 ..................................................................................19
扫描二维码测试 ..................................................................................19
结论 ..............................................................................................................................21
致谢 ..............................................................................................................................22
参考文献 ......................................................................................................................23
第一章 绪论
1.1 系统开发背景以及意义
系统开发背景
智能手机是指具有独立的操作系统,可以由用户自行安装软件、游戏等第三
方服务商提供的程序,并可以通过移动通讯网络来实现无线网络接入的这样一类
手机。智能手机具备无线接入互联网的能力,具有 PDA 的功能,具有开放性的
操作系统,人性化,功能强大,扩展性能强,第三方软件支持多。这些优点决定
了智能手机必将在市场上占有一席之地,智能手机市场的潜力不可估量。
Android 智能操作系统是一种基于 Linux 的自由及开放源代码的操作系统,
主要使用于移动设备,是由谷歌、开放手持设备联盟联合研发,谷歌独家推出的
智能操作系统。Android 平台有多种优势,首先在开放性方面,Android 平台允许
任何移动终端厂商加入到 Android 联盟中来。显著的开放性可以使其拥有更多的
开发者。其次,用户可以更加方便地连接网络,运营商的制约减少。第三,安卓
平台有丰富的相关硬件。第四,Android 平台提供给第三方开发商一个十分宽泛、
自由的环境。Android 平台手机可以无缝结合优秀的 Google 服务。这种种优势决
定了安卓逐渐成为全球最受欢迎的智能手机操作系统。2011 年初数据显示,仅
正式上市两年的操作系统 Android 已经超越称霸十年的塞班操作系统,跃居全球
第一。
条码技术是在计算机应用中产生并发展起来的,具有输入快、准确度高、成
本低、可靠性强等优点,广泛应用于商业、邮政、图书管理、仓储、工业生产过
程控制、交通等领域。条码分为一维码和二维码,一维条形码只是在一个方向
(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,数据容量小,
损坏后不能读取,这些缺点决定了二维码的诞生以及二维码广阔的应用前景。
系统开发意义
本项目设计了个安装在 Android 平台智能手机的电子请柬系统。可以完成二
维码生成,二维码扫描,以及信息核实。二维码信息容量大、编码范围广、容错
能力强、译码可靠度高、成本低、容易制作,这些优点决定了二维码特别适用于
表单、安全保密、追踪、证照、存货盘点、资料备援等方面。二维码电子请柬服
务,是二维码技术在移动商务服务中的另一种应用,主要用于二维码会议。二维
码电子请柬系统属于手机二维码应用,它将现代移动通信技术和二维码技术结合
在一起。通过本系统把请柬信息编码成为一个二维码图形,可以通过短信等方式
发送至受邀者的手机上。然后可以通过本系统对受邀者手机上收到的二维码图形
进行扫描验证。它不仅节约了成本,更重要的是节省时间提高效率方便使用,同
时还非常环保和时尚。而且避免了主办方现场核对信息时手忙脚乱的尴尬,而且
非常安全,有效核实身份,杜绝误闯者。
二维码介绍
二维码最早起源于日本,它是用特定的几何图形按一定规律在平面(二维方
向)上分布的黑白相间的图形。二维条码与一维条码相比具有高容量、高密度、
纠错能力强、安全强度高等特点,不仅可以存储传统的字符数字等文本信息,还
可以存储图像等高容量的信息。二维码有堆叠式二维码和矩阵式二维码两种。其
中矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”和“空”的排
列组成代码,这种排列组合确定了矩阵式二维码所代表的意义,“点”表示二进制
“1”,“空”表示二进制“0”。矩阵式二维码是以计算机图像处理技术、组合编码原
理等为基础的一种新型图形符号识读处理码制,其中具有代表性的有:Code
One、Maxi Code、QR Code 等。
QR Code 是二维码的一种。它是由日本 Denso 公司于 1994 年 9 月研制的一
种矩阵二维码符号,它除具有一维条码及其它二维条码所具有的信息容量大、可
靠性高等优点外,还可以超高速识读,它纠错能力强,能够有效地表示中国汉字
和日本汉字[2]。由于 QR 码具有对汉字信息进行独特优化处理的功能,符合汉字
国家使用习惯,QR 码拥有一定的持续发展潜力。
QR 码的基本构造如图 1 所示。其中各部分有各部分的功能:位置探测图形、
位置探测图形分隔符、定位图形用于对二维码的定位,对每个 QR 码来说,位置
都是固定存在的,只是大小规格会有所差异;规格确定,校正图形的数量和位置
也就确定了;格式信息表示改二维码的纠错级别,分为 L、M、Q、H;版本信息
即二维码的规格,QR 码符号共有 40 种规格的矩阵(一般为黑白色),从 21×21
(版本 1),到 177×177(版本 40),每一版本符号比前一版本 每边增加 4 个模
块。数据和纠错码字表示了实际保存的二维码信息,和纠错码字(用于修正二维
码损坏带来的错误)。
图 1 QR 码的基本构造
1.2 开发工具介绍
JDK 简介
JDK 全称是 Java Development Kit,是 Sun 针对 Java 开发的产品。JDK 是整
个 Java 的核心,包括了 Java 运行环境、Java 工具和 Java 基础类库。JDK 有使用
于各种设备各种环境的版本。没有 JDK 的话,无法编译 Java 程序,如果想只运
行 Java 程序,要确保已安装相应的 JDK。JDK 的基本组件包括 javac(编译器),
jar (打包工具),javadoc(文档生成器),jdb – debugger(查错工具),java (运行编
译后的 java 程序),appletviewer(小程序浏览器)Javap(Java 反汇编器),Jconsole
(调试和监控工具)等。
Android SDK 简介
SDK 全称是 software development kit,即软件开发工具包。SDK 是指软件开
发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件
的开发工具的集合。Android SDK 指的是 Android 专属的软件开发工具包。
Eclipse 简介
Eclipse 是著名的跨平台的自由集成开发环境(IDE), 是一个基于 Java 的、
开发源代码的可扩展开发平台。本质上它只是一个框架和一组服务,用户通过插
件组件构建开发环境。Eclipse 还包括插件开发环境,这个组件允许希望扩展
Eclipse 的软件开发人员构建与 Eclipse 环境无缝集成的工具。Eclipse 中的每样东
西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发
环境而言,所有工具开发人员都具有同等的发挥场所。由于任何人都可以免费得
到 Eclipse 的源码,并可以在此基础上开发各自的插件,因此越来越受人们关注。
Eclipse 的设计思想是:一切皆插件。除 Eclipse 基本内核,比如图形 API
(SWT/Jface)、Java 开发环境插件(JDT)、插件开发环境(PDE),Eclipse 其它所有
功能都以插件的形式附加于 Eclipse 上。
ADT 简介
ADT 全称是 Android Development Tools,即安卓开发工具。目前 Android 开
发所用的开发工具是 Eclipse,在 Eclipse 编译 IDE 环境中,安装 ADT,为 Android
开发提供开发工具的升级或者变更,简单理解为在 Eclipse 下开发工具的升级下
载工具。ADT 是 Android 在 Eclipse 上的开发工具。
1.3 项目开发环境
硬件环境
联想 G450 电脑一台
三星 s5830i 手机一部
软件环境
操作系统:windowsXP(32 bit)
开发工具:、Eclipse-TADP、Android SDK、ADT
环境搭建
安装配置 JDK
在网站 下载适合目标平台
的 JDK 版本。下载完成后,双击并根据提示安装 JDK。安装结束后,还要配置 JDK
环境变量,步骤如下:我的电脑→属性→高级→环境变量,然后在系统变量中设
置 3 项属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),若已存在则点击
“编辑”,不存在则点击“新建”: JAVA_HOME 指明 JDK 安装路径,Path 使得系
统 可 以 在 任 何 路 径 下 识 别 java 命 令 , 设 为 :
%JAVA_HOME%\bin;%JAVA_HOME%\jre\binCLASSPATH 设
为:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\ (要加.表示当前路径)。
安装配置 Android 平台 SDK
在 Android Developers 下载 android SDK,下载完成后解压到目标文件夹。
与 JDK 设置相同,Android SDK 安装目录下的“tools”子文件夹的路径需要添加到
系统的“PATH”环境变量中。SDK 下载戒烟后,其中包括非常丰富的开发资源,
包括丰富的辅助工具和完备的开发参考。
下载安装集成开发环境 Eclipse
到 下载 Eclipse。Eclipse 工具的下载文件也
是压缩文件,直接解压后就可以使用。
安装设置 ADT 插件
安装 ADT 插件有两种办法,一种是通过网络安装,另一种是通过本地文件
安装。在此选择第二种方法。步骤如下:启动 Eclipse,选择 Help→Software Updates
→Available Software→Add Site→Achieve。然后在弹出的页面选择 ADT 下载文件,
点击 OK,完成 ADT 插件的安装。ADT 插件安装完毕后,重启 Eclipse,选择
Window→Preferences,进入首选项设置页面。选择左侧的“Android”项目,按照要
求选择 Android SDK 的位置,然后点击 OK。至此,开发环境安装完毕。
第二章 系统的总体设计
总体设计即对有关系统全局问题的设计,也就是设计系统总的处理方案,又
称系统概要设计。总体设计包括系统模块结构设计和计算机物理系统的配置方案
设计。在进行总体设计时,还要进行计算机物理系统具体配置方案的设计。
系统模块结构设计
系统模块结构设计的目的是划分子系统并确定其模块结构,最后画出模块结
构图。要想进行好的模块设计,必须考虑如何将一个系统划分成多个子系统;每
个子系统如何划分成多个模块;如何确定子系统之间、模块之间传送的数据及其
关系。
顾名思义,基于二维码的电子请柬生成与扫描系统有两个子系统,二维码的
生成系统和二维码的扫描系统。其模块划分分别如图 2(a)、图 2(b)所示。
图2(a) 子系统模块图 图2(b) 子系统模块图
计算机物理系统的配置方案设计
进行总体设计除了进行系统模块结构设计,还要进行计算机物理系统具体配
置方案的设计。本项目用到了一部三星 S5830i 手机,一台 windowsXP 系统的电
将二维码解码后的信
息传递到一个字符串
调用 BarcodeScanner
扫描二维码
选择“扫描二维码”
显示解密后的信息,判
断来宾是否被邀请者
加密信息并通过 Intent
传递信息
通过一个文本框
输入信息
选择“生成二维码”
调用 BarcodeScanner
生成二维码
脑。另外还需要自己搭建开发平台,用到了 JDK,Android SDK,Eclipse,ADT。
具体的平台搭建在第一章有详细介绍。做条形码生成和扫描,一般要用到
ZXing。ZXing 有多种复用方式,在本项目中,选择的方式是在手机上安装 Zxing
库中的相关软件,即使用于 Android 平台的 BarcodeScanner。然后在自己的应用
中,通过 Intent 调用 ZXing 的生成条码或者扫描条码的 Activity,然后将结果返
回自己的 Activity。
第三章 系统的详细设计
系统流程图
系统流程图(System Flowchart)是描绘系统物理模型的传统工具。系统流
程图用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、
表格、人工过程等),表达信息在各个部件之间流动的情况。本系统的系统流程
图如图 3:
否
是
图3 系统流程图
界面设计
界面设计是人与机器之间传递和交换信息的媒介。UI 即用户界面。UI 设计
开始
输入请柬内
包含的信息
调用 BarcodeScanner
生成二维码
将信息加密
将解码后的信息传入
TextView
调用 BarcodeScanner
扫描二维码
是 否 含 有 加
密字符串
输出“匹配” 输出“警告”
结束
将解码后的信息传入
TextView
输出“匹配” 输出“警告”
结束
则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的 UI 设计要充
分考虑到用户的感受,让软件的操作变得舒适、简单、自由。
此系统有如下几个界面如图 4 所示:界面一中,TextView1 显示了一些软件
介绍信息。在界面一中选择 Button1,就出现了界面二。界面二中,EditText1 中,
可以输入文本,以生成二维码,选择 Button3,跳转到生成的二维码。在界面二
中,选择 Button2,则跳转到界面三,选择 Button4,则出现二维码扫描界面,扫
描结果返回到界面三中的 TextView3,对结果进行检验后,在界面三的 TextView4
中,返回“匹配”或者“警告”。
图 4(a) 界面一 图 4(b) 界面二
TextView1
Button2
Button1
Button3
EditText1
图 4(c) 界面三
Button4
TextView3
TextView2
第四章 应用程序的编程实现
Android 应用工程文件组成
Android 应用工程文件(如图 5 所示)主要由以下工程文件组成:
既源文件目录。
目录,包含 文件,它由 Eclipse 自动生成和修改,不需要去维护。
库。
目录,存放多媒体等文件。
目录,存放应用用到的资源文件。
目录,存放图片资源,分别为高中低三个分辨率。
目录,放置布局文件,均为.xml 文件。
目录,放置字符串(),颜色(),数组()。
.相当于应用的配置文件,我们要在这个文件中声明应用的
名称,所有的 Activity,Service,Reciver 等。
图 5 工程文件目录
Android 应用程序组成
一个典型的 Android 应用程序通常由 5 个组件组成,即 Activity、Intent and
Intent Filters、Service、BroadcastIntentReceiver、ContentProvider。
Activity 是这 5 个组件中最常用的,程序中 Activity 通常的表现形式是一个
单独的界面。每个 Activity 都是一个单独的类,它扩展实现了 Activity 基础类。
这个类显示为一个由 Views 组成的用户界面,并响应事件。大多数程序有多个
Activity。
另一个比较常用的类就是 Intent and Intent Filters。Android 通过一个专门的
Intent 类来进行界面的切换,Intent 描述了程序想做什么。有个相关的类叫
IntentFilter。Intent 是一个请求来做什么事情;IntentFilter 则描述了一个 Activity(或
下文的 IntentReceiver)能处理什么意图。系统通过解析传递进来的 Intent 来完成
Activity 的切换。使用 startActivity()方法来启用新的 Activity。
Intent 的使用
Intent 是一个对象,它可以解决 Activity 之间的相互跳转、相互传递数据。解决
了 Android 应用的各项组件之间的通讯。Intent 负责对应用中一次操作的动作、动作
涉及数据、附加数据进行描述,Android 则根据此 Intent 的描述,负责找到对应的组
件,将 Intent 传递给调用的组件,并完成组件的调用[14]。
一个 Intent 对象包括一组信息,主要的包括:
1.Component name,它决定从一个 Activity 究竟启动哪个组件;
2.Action,决定了启动另一个 Activity 后,传递进入一个 Intent 方法进来,然后
这个 Activity 要做的动作;
3.Data,是从一个 Activity 想向另一个 Activity 传递的数据。
4.Extras,是额外的一些信息,即键值对。可以在一个 Activity 中存放键值对,
然后通过 Intent 对象在另一个 Activity 中将这个键值对取出来。
在多个 Activity 的跳转过程中,Intent 起到了非常重要的作用。要想实现从
Activity1 跳转到 Activity2,就要调用 Activity1 的 startActivity()方法传递一个
intent 对象进来,而究竟跳转到哪个 Activity,又将有什么动作,主要是由 intent
对象决定。
使用 Intent 实现 Activity1 跳转到 Activity2 的主要代码如下:
……
Intent intent=new Intent();
(,);
startActivity(intent);
……
使用 Intent 将 Activity1 中的键值对传递进入 Activity2 的主要代码如下:
在 Activity1 中编写有关代码
……
Intent intent=new Intent();
(name,value);
(,);
startActivity(intent);
……
在 Activity2 中调用 getIntent()方法得到传递进入 Activity2 的 intent
……
Intent intent=getIntent();
……
调用 ZXing
第一章已经讲过 android 众多优点中的一个,就是 Android 提供了一种机制,
可以通过 Intent 复用多个应用的界面,可以无缝结合优秀的 Google 服务。比如
可以在自己的应用中调用条形码识别程序,然后返回条形码的结果。不过呢,这
需要系统必须事先在手机上安装 ZXing 的条码扫描工具。
ZXing 是一个开放源码的,用 Java 实现的多种格式的 1D/2D 条码图像处理
库,它包含了联系到其他语言的端口,可实现的条形码编码和解码。Zxing 提供
了程序的核心代码、适用于 J2SE 客户端的程序、适用于 Android 客户端的程序
(即 BarcodeScanner),而且通过 Intent 支持 Android 程序和 BarcodeScanner 的集
成。ZXing 提供了一个集成 API,使用者可以通过这个集成 API 调用 ZXing 的相
应 Activity。
本项目就是利用了 Zxing 提供的 BarcodeScanner,以及 ZXing 通过 Intent 支
持 app 和 BarcodeScanner 集成的特点。当项目需要生产或者扫描二维码的时候,
Activity 通过 Intent 调用 BarcodeScanner 中的相应的方法,就能实现相应的功能,
调用结束后,然后再讲结果返回到相应的 Activity。通过 Intent 传递数据和信息
的主要代码见下文 。
编程实现
编写配置文件
本项目用到了 3 个 Activity。在 注册如下:
<?xml version="" encoding="utf-8"?>
<manifest xmlns:android="
package=""
android:versionCode="1"
android:versionName="" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".MainActivity" >
<intent-filter >
<action android:name="" />
<categoryandroid:name="" />
</intent-filter>
</activity>
<activity
android:label="@string/app_name"
android:name=".ContentActivity" >
</activity>
<activity
android:label="@string/app_name"
android:name=".QrActivity" >
</activity>
</application>
</manifest>
其中打开应用程序,首先进入的Activity是含有以下语句的Activity。
<intent-filter >
<action android:name="" />
<categoryandroid:name="" />
</intent-filter>
编写布局文件
布局文件,即为 res 文件夹中的 layout 文件。Android 平台定义了线性布局、
相对布局、绝对布局、框布局和表格布局这五种布局类型。在本项目的三个
Activity 中,我们选择使用线性布局。线性布局就是将容器内的子组件按照直线
进行摆放的一种方式。通过布局文件,我们摆放了各个 Activity 中的各个组件,
并且设置好了组件的长、宽、内容等属性。
一个完整的布局文件如下:
<?xml version="" encoding="utf-8"?>
<LinearLayout xmlns:android="
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/jieshao"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:text="@string/jieshao"/>
<Button
android:id="@+id/encode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/encode" />
<Button
android:id="@+id/btnscan"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/scan" />
</LinearLayout>
上面这个完整的布局文件就是 Acitivity1 的布局文件,它用到了 TextView
和 Button 这两种组件。对组件的属性设置如下:
android:id="@+id/jieshao"这句话可以在 R 文件中自动生成 TextView 的 id,当我
们引用这个 Textview 时,我们只需要引用 R 中生成的那个 id。
android:layout_width="fill_parent"定义了组件的宽度是占满整个屏幕。
android:layout_height="wrap_content"定义了组件的高度随着内部文字变化。
android:textSize="25sp"定义了TextView内文字的大小。
android:text="@string/jieshao"定义了 TextView 中的文字内容。在此,文字内容存
放在一个字符串中。这个字符串资源存放在 values 文件夹下的 strings 文件中。
Activity2、Activity3 的布局文件中,除了 Button 组件和 TextView 组件,还
用到了 EditText 组件。基本属性和 TextView 设置类似。需要特殊说明的两个属
性是:android:inputType="none" 定义了可输入任何类型的信息,包括文字、数
字、字母等。android:hint="请输入内容..." 定义了在不输入文字的时候,EditText
中显示的文字。而当 EditText 中输入文字时,这些文字消失。
编写源程序
编写程序步骤如下:
1. 在程序中,导入需要用到的类。
2. 建立一个继承Activity的新类。
3. 定义Activity内用到的组件。
4. 重写onCreate方法。
5. 通过setContentView();选择布局文件。
6. 通过findViewById();来使用各个组件。
7. 编写主要程序。
新建按钮,并将按钮和一个监听器绑定的程序如下:
(new buttonListener());
class buttonListener implements OnClickListener{
@Override
public void onClick(View v){
Intent intent = new Intent();
(,);
(intent);
}
}
这段程序可以实现按下 button 按钮时,从当前的 Activity 即 MainActivity 跳转到
QrActivity。
7.2 调用 BarcodeScanner 生成二维码的主要程序如下:
@Override
public void onClick(View view) {
Intent intent =
new Intent("");
String content = ().toString();
content=content+"\n123456";
("ENCODE_DATA", content);
("ENCODE_TYPE", "TEXT_TYPE");
startActivity(intent);
}
通过这段程序,可以调用 getText().toString()方法将用户输入到 EditText
中的文本信息存入字符串 content 中,然后系统给 content 加入一串字符以生成新
的字符串,最后将新生成的字符串传递进入 BarcodeScanner 中,并且生成二维码。
调用 BarcodeScanner 扫描二维码并且检测信息的主要程序如下:
@Override
public void onClick(View view) {
Intent intent = new Intent("");
(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode != 0) {();
return;
}
if(resultCode==RESULT_OK){
String contents = ("SCAN_RESULT");
int i=();
String jieguo=(0,i-6);
(jieguo);
String key="123456";
String Str=(i-6);
if ((key)){
("匹配");
();
}
else { ("警告");
();
}
} else if (resultCode == RESULT_CANCELED) {
}
}
通过这段代码,将扫描二维码得到的文本信息传递到字符串 contents 中。然
后去除在生成二维码阶段,系统自动加上的字符串,将原本输入的那部分文本信
息传递到字符串 jieguo,通过 Activity3 中的 TextView3 显示出来。取出字符串
contents 中系统自动加上的字符串,并且与字符串 key 比较。如果比较结果一样,
就在 Activity3 中的 TextView2 中显示绿色字体“匹配”。如果比较结果不一样,就
显示红色字体“警告”。
第五章 应用程序的测试
在编程基本完成后,还要对设计的系统进行测试。系统测试是设计一个应用
软件必不可少的一部分。系统测试是针对整个产品系统进行的测试,测试目的是
验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,
从而提出更加完善的方案。系统测试发现问题之后要经过调试找出错误原因和位
置,然后进行改正。
对 Android 应用软件进行测试有两种方法,一是用 Eclipse 自带的 Android 模
拟器进行测试,二是用实体手机测试。
在模拟器上测试
使用 Android 模拟器可降低测试费用,并提高测试覆盖率。使用模拟器可以
在没有目标设备的情况下,可使用 AVD 设备设置快速进行测试。要想使用
Android 模拟器,首先要先在 Eclipse 中创建一个模拟器。创建模拟器的步骤如下:
选择 window→AVD manager→new,并且在弹出的页面中设置想创建模拟机的参
数,其中 Name 即模拟器的名称,Size 即模拟器 SD 卡大小,Target 即模拟器版
本。创建好模拟机后,在左边程序列表中,右键点击要运行的程序。点击 Run as
→Android Application。模拟器就会打开,并且要运行的程序已经安装在模拟器
里面,然后就可以进行测试。
在目标设备上测试
在通过模拟器上的测试后,为确保应用程序能正确运行,还必须要在目标设
备上测试。通过模拟用户使用的环境,可确保应用程序在实际使用过程中按预期
的那样运行。
软件安装测试
打开工程文件,将根目录 bin 文件夹中的 apk 文件下载并安装到手机中。能
够成功安装,即测试通过。
生成二维码测试
打开应用软件,界面如图 6 所示。点击“生成二维码”按钮,则出现如图 7 所
示界面。可以在文本框中输入文本信息,然后点击按钮生成二维码。生成的二维
码如图 8 所示。
图 6 程序开始页面 图 7 输入信息页面
图 8 生成的二维码
扫描二维码测试
在图 6 界面中,按下“扫描二维码”,在界面 9 中点击“开始扫描”,出现图 10
所示界面,等解码读出结果后,当二维码是本系统生成的,解码后有本系统加上
的一串数字时,满足条件,出现图 11 所示界面,在本系统输入的原来的信息也
正常显示。当二维码是其他在线系统生成的,二维码解码后,如果没有系统加的
一串数字,就出现图 12 所示界面,而且输入的原本信息丢失一部分。
图 9 开始页面 图 10 图像采集页面
图 11 扫描后页面 图 12 扫描后页面
结论
在计算机上,有许多在线生成二维码的网页,在手机等智能终端,也有很多
可以完成二维码扫描的软件。本项目将二维码的生成、二维码的扫描以及二维码
的加密监测综合在一起,设计了一个二维码电子请柬生成与扫描系统。总的来说,
本项目完成了二维码电子请柬生成与扫描系统的基本功能。可以在 Android 实体
手机上完成二维码的生成、二维码的扫描,而且实现了一个简单的加密,可以识
别电子请柬是不是本系统生成的,完成对来宾的身份检测。而且本软件通过了测
试,可以投入使用。
通过这个项目,我对用 Java 语言在 Eclipse 建造工程,编写可以使用的
Android 程序有了一个整体的认识。虽然已经基本实现所设想的功能,但是在一
些方面还有待提高。首先就是加密设计的比较简单,可以考虑用一些比较复杂的
加密,例如 DES、AES 等比较复杂专业的加密算法。其次,可以考虑将本项目
和数据库联系起来,将请柬扫描信息输入数据库,可以实现会议的签到。
致谢
本项目是我做的一个最完整的项目,从学习 Java 语言,安装软件,建立工
程,编写程序,测试程序到程序的最后使用。我遇到了无数的困难和障碍,也学
到了很多东西。能做出这个项目,写出这篇论文,绝非我一人之力。
感谢我的论文指导老师,对我进行了无私的指导和帮助,不厌其烦的帮助进
行论文的修改和改进。
感谢全体控制学院的老师,我能做出这个项目,和您们四年来给我灌输的各
种理论知识是分不开的。
感谢我同组的队友,在和你们的交流与讨论中,我才能发现自己的不足,并
且不断进步。你们不畏困难,勇于求知的品德给我留下了深刻的印象。
感谢这篇论文所涉及到的各位学者。如果没有各位学者的研究成果的帮助和
启发,我将很难完成本篇论文的写作。
感谢互联网各种论坛上各位从事 Android 程序开发的各位前辈各位大神,没
有你们在论坛上无私分享的经验,我简直不敢想象该怎么解决层出不穷的各种错
误。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友
批评和指正!
参考文献
[1]高羽佳,张旭东,项尚.基于图像处理的QR码识别研究.[J]滁州学院学报,:65~67
[2]刘宏伟,严妍.快速响应码的识别和解码.[J]计算机工程与设计,:1560~1563
[3]Tor Helleseth. Legendre sums and codes related to QR codes. Discrete Applied Mathematics
(1992) 107-l13
[4]张思民.Java 语言程序设计.[M]北京:清华大学出版社,2007
[5]李钟尉.JAVA从入门到精通 第二版.[M] 北京:清华大学出版社,2010
[6]李兴华.名师讲坛—Java开发实战经典. [M]北京:清华大学出版社,2009
[7]梁勇.Java语言程序设计:基础篇. [M]北京:机械工业出版社,2011
[8]Jensen M. Eclipse of the public corporation[J]. Harvard Business Review (Sept.-Oct. 1989),
revised, 1997
[9]陈刚.Eclipse从入门到精通.[M]北京:清华大学出版社,2007
[10]汪永松.Android 平台开发之旅.[M]北京:机械工业出版社,2010
[11]Enck W, Ongtang M, McDaniel P. Understanding android security[J]. Security & Privacy,
IEEE, 2009, 7(1): 50-57
[12]李佐彬.Android 开发入门与实战体验.[M] 北京:机械工业出版社,2011
[13]吴善财.Android 基础开发与实践.[M]北京:清华大学出版社,2012
[14]何孟翰.Google Android SDK 开发实战演练.[M]北京:人民邮电出版社,2012
[15]兰红林.Android二维码的扫描识别.[D]太原:太原科技大学,2012
[16]吴凯,辛阳.基于Android平台的条码扫描软件的设计与实现.[D]北京:北京邮电大学,2012
[17]佘凤娅.基于Android的手机搜索定位应用开发.[D]北京:北京邮电大学,2010