徐玲;蒋欣志;张杰
【摘 要】Based on the research of two-dimensional code and recognition of mobile phone, the authors have developed a two-dimensional code recognition system on Android platform. In the system architecture design, the two-dimensional code recognition system platform support layer, client application layer, cloud handle layer were hierarchically designed to ensure the system security. According to the requirements, the system function models and cases analyses were given. Finally, the two-dimensional code core encode and decode functions of mobile phone were achieved.%在研究二维码及其手机识别技术的基础上,开发了基于Android平台的手机二维码识别系统,在系统架构设计中将二维码识别系统的平台支撑层、客户端应用层、云端处理层进行分层设计,保证了系统的安全性,根据需求给出系统的功能模块划分和用例分析,最后实现了手机二维码的编码解码的核心功能.
【期刊名称】《计算机应用》
【年(卷),期】2012(032)005
【总页数】3页(P1474-1476)
【关键词】二维码识别;手机;QR码;J2EE;SSH2;Android
【作 者】徐玲;蒋欣志;张杰
【作者单位】重庆大学软件学院,重庆400030;重庆大学软件学院,重庆400030;重庆理工大学电子信息与自动化学院,重庆400054
【正文语种】中 文
【中图分类】TP311.52
0 引言
二维码(2-dimensional code)作为一种信息存储和传递技术,是按照特定的编码规则形成的平面几何图形[1-4]。二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。它具有储存容量大、可靠性高、保密防伪性强、成本低等优点,可以用来存储多国文字、数据文件、图像等信息。
随着3G时代的来临,手机二维码的应用越来越丰富[5-8]。Android系统作为目前最为流行的智能手机平台,其与二维码技术的结合使二维码信息以各类业务的形式在手机中存储、阅读和传播。手机既可作为二维码信息的载体结合二维码识读设备加以应用,也可在手机中内置或下载二维码识读引擎来识读商品上的二维码标识,从而获取二维码内隐含的有效信息来进行相关应用的开发。
在许多种类的二维码中,常用的码制有:Data Matrix,Maxi Code,Aztec,QR Code,Vericode,PDF417,Ultracode,Code 49,Code 16K 等[9]。其中快速响应码(Quick Response code,QR 码)[10-11]是应用最为成功的一种二维码,QR 码是一种矩阵式二维码,信息容量大,一张条码可以放入1817个汉字,或7089个数字,或4200个英文字母;支持字母、数字、汉字、照片、指纹、音/视频等信息嵌入。跟其他二维码相比,QR码具有识读速度快、数据密度大、占地空间小的优势。把QR码运用在手机平台上,开发基于Android手机系统的二维码识别系统具有重要的理论意义和实际价值。
1 二维码识别系统的设计
本文设计并实现了基于Android平台的二维码识别系统。系统采用C/S模式,系统客户端采用
Android平台,服务器端基于J2EE[12-13]体系架构,该系统具有良好的稳定性、灵活性、可伸缩性和易维护性。
1.1 系统体系架构
张杰图片大全图1为基于Android平台的二维码识别系统的系统架构。系统采用C/S架构设计,把二维码详情数据库内容放在远程的服务器上,在手机客户端上安装相关软件。采用这种设计主要是考虑到了手机端的数据处理能力有限,当需要对数据作出复杂分析与处理时可以借助远程服务器的运算处理能力,这样就大大减轻了手机终端的运行压力。服务器端采用J2EE三层架构,基于SSH(Struts+Spring+Hibernate)框架,整个服务器端扩展性强,稳定性好,可维护性高。
图2所示是二维码识别的体系结构设计。整个体系结构包括管理系统安全性的安全防护机制、权限控制机制、云端处理层、客户端应用层和平台支撑层,作为一个C/S系统,其服务器端安全性要求是非常重要的,安全防护机制可以防止大部分非安全性操作包括越权访问、跨用户操作等,权限控制机制同样起到相似作用。而在系统架构方面主要分为三层:云端处理层、客户端应用层和平台支撑层。云端处理层即为系统中间服务器,整个服务器端是基于J2
EE架构移植性好,可以与所有平台的客户端兼容,即使将来程序移植到其他平台也可以在不修改服务器端代码的情况下与服务器端正常交互;客户端应用层主要是系统在Android客户端上的应用,包括生成二维码和解码二维码图片;平台支撑层主要是Android 2.1系统平台,整个二维码识别系统都是以它为基础进行开发的。最后用户通过客户端界面表示层与本系统取得交互。
图1 系统架构
图2 系统体系结构
1.2 系统功能设计
系统从功能角度来分析,分为客户端和服务器端,能够利用手机生成和识别出二维码图片。生成的二维码图片应支持多种信息格式,如商品信息格式、网页标签格式、联系人信息等,识别二维码图片是指系统从SD卡上选择二维码图片并解码,而且可以对解码出来的信息作出不同响应。
系统总体功能模块如图3所示。其中JSON(JavaScript Object Notation)[14-15]是一种轻量
级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,是一种理想的数据交换语言。本系统开发以JSON作为标准的客户端与服务器端数据交换格式,以便于将来将客户端移植到其他智能手机平台时也可以方便地与服务器端通信。
图3 系统功能模块
1.3 系统用例分析
系统用例分析如图4所示,从图中可以看出注册用户可以使用系统全部功能,包括生成商品信息、电话号码、网络标签三种格式的二维码信息,彩信分享自己生成的二维码图片、解码本地二维码图片,对解码出来的信息进行智能处理(包括直接拨号、添加至联系人、直接浏览、添加至书签、将解码出来的商品信息上传至服务器并查看详情)等功能。未注册用户必须先注册才能使用注册用户的功能。
图4 系统整体用例图
2 二维码识别系统的实现
2.1 客户端实现
整个客户端是基于 Android2.1、Eclipse3.6、ADT8.0.0。客户端的顶层包如图5所示。
图5 客户端顶层包图
其中,com.hp.qrcode包放置的是系统的主要界面的Activity类;com.hp.qrcode.decode包主要是关系系统解码部分操作,包括解码时的文件选择浏览器以及解码二维码图片类;com.de包负责生成二维码相关操作及页面;com.hp.qrcode.util包主要是负责系统的工具类,主要包括三个工具类(GeneralUtils.java类、HttpUtils.java类和ListUtils.java类)和一个 QRCODE 图像扩展类;com.hp.qrcode.view包负责系统自定义视图组件类,主要是系统下方菜单基类和菜单中使用的标签栏类;com.hp.qrcode.view.adapter包负责自定义视图的内容适配器,主要包括下方菜单项和菜单图标的适配;com.hp.qrcode.view.base包负责自定义视图的基础类;com.hp.ity包主要包括菜单项的实体类 MenuItems.java;com.hp.qrcode.view.static_data包主要包括菜单项的数据类Data.java,里面主要是菜单标题内容及对应的图标资源ID。
2.2 服务器端实现
系统服务器端是搭建在基于Web的J2EE平台之上,采用SSH框架进行开发的。对于整个开发平台环境的简单搭建描述如下:运行时环境JDK1.6,集成开发环境Myeclipse 6.5,服务器 tomcat 6,数据库 MySQL 5.0。
整个服务器端顶层包如图6所示。其中,com.hp.qr_server.domain:该包内放置的是普通JavaBean,系统运用Hibernate技术将这些JavaBean对象映射到数据库中;com.hp.qr_server.util包内放置的是系统的工具类GeoIP.java,该类主要是通过IP地址在GeoLiteCity.dat中查询并获得IP对应的经纬度、所属国家、所属城市名信息;com.hp.qr_server.action包内放置的是系统的所有action类,处理前端的各类请求,包括登录、注册、接收客户端信息等操作均是提交给这里的action处理。
com.hp.qr_server.service 包内放置的是系统的所有service接口,定义了所有用到的业务逻辑方;com.hp.qr_server.serviceImpl包内放置的是系统的所有service实现类,实现了所有的业务逻辑方法的具体行为;com.hp.qr_server.dao:包内放置的是系统的所有数据访问的数据持久化方法的实现的接口;com.hp.qr_server.daoImpl:包内放置的是系统的所有dao接口的实现类,直接操作数据库数据,包括各类数据的增、删、改、查等。
图6 服务器端顶层包图
2.3 二维码生成功能实现
二维码的生成主要是通过 MyView类的AndroidQREncode方法,当前端将需要生成二维码图片的信息和QRCODE版本号分别以字符串类型参数和整型参数的形式传递给AndroidQREncode方法,方法内容使用第三方包SwetakeQRCode.jar以传入的参数构建 QRCODE对象,再对QRCODE对象转化为布尔类型的二维数组,通过对数组进行循环用画笔在画布中绘出二维码图形,最后生成Bitmap类型的二维码图像对象。
发布评论