手机二维码识别系统的设计与实现_第1页
手机二维码识别系统的设计与实现_第2页
手机二维码识别系统的设计与实现_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

收稿日期: 2011-10-28; 修回日期: 2011-12-19。 基金项目: 科技部国家重大专项( 2009ZX07315 006 5) ; 国家自然科学基金资助项目( 60975015) 。 作者简介: 徐玲( 1975 ) , 女, 安徽庐江人, 副教授, 博士, 主要研究方向: 软件工程、 数据挖掘; 蒋欣志( 1988 ) , 男, 重庆綦江人, 硕士研 究生, 主要研究方向: 软件工程、 数据挖掘; 张杰( 1977 ) , 女, 辽宁阜新人, 硕士, 主要研究方向: 网络通信、 软件技术。 文章编号: 1001 9081( 2012) 05 1474 03doi: 10 3724/SP J 1087 2012 01474 手机二维码识别系统的设计与实现 徐玲1 * , 蒋欣志1, 张杰 2 ( 1 重庆大学 软件学院, 重庆 400030; 2 重庆理工大学 电子信息与自动化学院, 重庆 400054) ( * 通信作者电子邮箱 xuling cqu edu cn) 摘要: 在研究二维码及其手机识别技术的基础上, 开发了基于 Android 平台的手机二维码识别系统, 在系统架 构设计中将二维码识别系统的平台支撑层、 客户端应用层、 云端处理层进行分层设计, 保证了系统的安全性, 根据需 求给出系统的功能模块划分和用例分析, 最后实现了手机二维码的编码解码的核心功能。 关键词: 二维码识别; 手机;QR 码; J2EE; SSH2; Android 中图分类号:TP311 52文献标志码: A Design and implementation of two- dimensional code recognition system in mobile phone XU Ling1 * , JIANG Xin- zhi1, ZHANG Jie2 (1 School of Software Engineering, Chongqing University, Chongqing 400030, China; 2 School of Electronic Information and Automation, Chongqing University of Technology, Chongqing 400054, China) Abstract: 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 Key words: two- dimension code recognition; mobile phone; Quick Response ( QR) code; J2EE; SSH2; Android 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 平台, 服务 器端基于 J2EE12 13 体系架构, 该系统具有良好的稳定性、 灵 活性、 可伸缩性和易维护性。 1 1系统体系架构 图1 为基于 Android 平台的二维码识别系统的系统架构。 系统采用 C/S 架构设计, 把二维码详情数据库内容放在远程 的服务器上, 在手机客户端上安装相关软件。采用这种设计 主要是考虑到了手机端的数据处理能力有限, 当需要对数据 作出复杂分析与处理时可以借助远程服务器的运算处理能 力, 这样就大大减轻了手机终端的运行压力。服务器端采用 J2EE 三层架构, 基于 SSH( Struts + Spring + Hibernate) 框架, 整 个服务器端扩展性强, 稳定性好, 可维护性高。 图 2 所示是二维码识别的体系结构设计。整个体系结构 包括管理系统安全性的安全防护机制、 权限控制机制、 云端处 理层、 客户端应用层和平台支撑层, 作为一个 C/S 系统, 其服 务器端安全性要求是非常重要的, 安全防护机制可以防止大 部分非安全性操作包括越权访问、 跨用户操作等, 权限控制机 制同样起到相似作用。而在系统架构方面主要分为三层: 云 端处理层、 客户端应用层和平台支撑层。云端处理层即为系 统中间服务器, 整个服务器端是基于 J2EE 架构移植性好, 可 以与所有平台的客户端兼容, 即使将来程序移植到其他平台 也可以在不修改服务器端代码的情况下与服务器端正常交 互; 客户端应用层主要是系统在 Android 客户端上的应用, 包 Journal of Computer Applications 计算机应用,2012,32(5) : 1474 1476 ISSN 1001-9081 CODEN JYIIDU 2012-05-01 http: / /www joca cn 括生成二维码和解码二维码图片; 平台支撑层主要是 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 hp qrcode encode 包负责生成二维码相关操作及页 面; 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 qrcode view entity 包主要包括菜单 项的实体类 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_ 5741第 5 期徐玲等: 手机二维码识别系统的设计与实现 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 类型 的二维码图像对象。 public Bitmap AndroidQREncode ( String strEncoding, int qrcodeVersion) Log i( wwj, QREncode) ; Bitmap canvasBmp = null; try / / 构建 QRCode 编码对象 com swetake util Qrcode testQrcode = new com swetake util Qrcode( ) ; /*L,M,Q,H * / estQrcode setQrcodeErrorCorrect( M) ; /*N,A or other * / testQrcode setQrcodeEncodeMode( B) ; /*0 20 * / testQrcode setQrcodeVersion( qrcodeVersion) ; / / getBytes byte bytesEncoding = strEncoding getBytes( utf- 8) ; if ( bytesEncoding length 0) / / 转化成 boolean 数组 bEncoding = testQrcode calQrcode( bytesEncoding) ; int w =240; int h =240; canvasBmp = Bitmap createBitmap ( w, h, Config ARGB_8888) ; Canvas cn = new Canvas( canvasBmp) ; onDraw( cn) ;/ /将二维码图像绘制到新建的画布上 cn save( Canvas ALL_SAVE_FLAG) ; cn restore( ) ; catch ( Exception e) e printStackTrace( ) ; return canvasBmp; 2 4二维码识别功能实现 通过调用第三方库 SourceForgeQRCode jar, 只需要将二 维码图片以 AndroidQRCodeImage 类型作为参数调用 jp sourceforge qrcode QRCodeDecoder 的 decode 方法即能得到解 析出来的字符串数据, 最后对字符串数据根据已经设定的信 息类型标准进行比较以判断是哪种信息格式再给用户对应的 操作。图 7 显示的是解码成功的显示页面。 图 7解码成功页面 3结语 本文设计并实现了基于 Android 手机二维码识别系统。 系统在研发过程中结合了现代软件工程理论和先进的智能手 机应用, 充分考虑到了移动终端的优缺点并采用扬长避短的 方式以便能够开发出一套完全符合手机终端用户行为习惯的 系统, 系统将二维码的识别与生成相结合, 实现对 QR 二维码 的编码和解码, 使用户能够通过二维码的使用更加方便自己 的生活、 学习和工作, 具有非常大的实用价值。通过实践应用 和测试结果表明, 该系统能够识别 QR 码信息, 并满足时间和 准确度的要求。 参考文献: 1PAVLIDIS T, SWARTZ J, WANG Y P Information encoding with two- dimensional bar codesJ IEEE Computer,1992,25(6):18 28 2周晓伟 二维条码识别技术研究D 上海:上海交通大学,2007 3RUSS A Two dimensional bar codes J Adams Communications, 2002,27(4) :15 18 4王毅 二维条码技术应用及标准化状况介绍J 中国标准化, 2006(5) :25 26 5KATO H,TAN K 2D barcodes for mobile phonesC/ / 2nd Inter- national Conference on Mobile Technology, Applications and Sys- tems Washington, DC: IEEE Computer Society,2005: 15 17 6LYCON S, KSCHISCHAN F R Two- dimensional barcodes for mobile phonesC/ / 2010 25th B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论