【Android论文栏目提醒】:网学会员为需要Android论文的朋友们搜集整理了基于Android的二维码的生成与识别系统 - 期刊论文相关资料,希望对各位网友有所帮助!
网络出版时间:2012-10-30 15:19网络出版地址:http://www.cnki.net/kcms/detail/34.1205.TP.20121030.1519.001.html 收稿日期:2012-08-31 、 、 作者简介:马鸣1983-男,河南省南阳市人,助教,研究生,主要从事《移动开发》《C语言程序设计》《Cwinform 开 、 、 发》《ASP.NET 基础》《ASP.NET 高级应用》等课程的教学工作;李海波(1982-),男,陕西省宝鸡市人,助教,研究生, 、 、 主要从事《C语言程序设计》《ASP.NET 技术基础》《ASP.NET 高级编程》等课程的教学工作。
基于
Android 的二维码的生成与识别系统 1 2 马鸣 ,李海波 (南阳理工学院,河南 南阳 473004) 摘要:随着二维码的广泛应用和
Android 智能手机的进一步普及,本文介绍了一个通过
Android 平台下的摄像和绘图功能, 利用二维码的编码和解码原理,通过
Android 手机对二维码的数据进行解析和编码,实现对二维码生成和识别系统。
该系统 内容包括两部分:二维条码的生成系统设计和二维条码的识别系统设计。
生成系统完成了从输入数据到生成相应二维码的功 能,识别系统完成对采集到的二维码符号进行译码还原出所携带信息的功能。
关键词:二维码;二维码生成;二维码识别;
Android 平台 中图分类号:TP311 文献标识码:A 文章编号:1009-3044201226- Design and Realization of the QR Code Generation and Recognition System Based on
Android MA Ming 1 LI Hai-bo 2 Nanyang Institute of Technology Nanyang 473004 China Abstract: Along with the wide application of QR Code and
Android smart phones further popularity. This paper introduces a camera and drawing function in the
Android workbench. Using of QR Code encoding and decoding principle through the
Android mobile phone resolve and code planar barcode to realize the QR Code identification and generate system. The content of this project includes the design of creation and recognition. The creation system completes the process from the input data to QR Code,and the recognition system completes the process of translating QR Code to relevant information. Key words: QR Code The generation of QR Code The recognition of QR Code The
Android Platform 一维条码自出现以来,由于受信息容量的限制,不得不依赖数据库的存在。
在没有数据库和不联网的地方,一维条码的 使用受到了较大的限制。
另外,要用一维条码表示汉字的场合,显得十分的不方便,且效率低下。
二维码的出现是为了解决一维条码无法解决的问题而产生。
因而它具有高密度、高可靠性等特点,所以可以用它表示数 据文件(包括汉字文件)、图像等。
二维码是大容量、高可靠性信息实现存储、携带并自动适读的最理想的方法。
手机二维 码的业务类型主要有两种:一是识读,就是借助应用软件直接读出码上信息,它可以衍生出上网浏览、电子购物等多种应用; 二是被读,就是由商家向手机用户发送二维码信息,通过设备识读,可作身份识别、电子凭证等之用。
1 系统相关技术分析 1.1
Android 系统架构
Android 是一种以 Linux 为基础的开放源代码操作系统,主要使用于便携设备。
Android 的系统架构采用了分层的架构。
android 分为四个层,分别是应用程序层、应用程序框架层、系统运行库层和 linux 内核层。
随着
Android 的快速发展,如 今已允许开发者使用多种编程语言来开发
Android 应用程序,而不再是以前只能使用 Java 开发
Android 应用程序的单一局 1 面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统 。
1.2 开发环境 系统主要分为两个大的模块:二维码的生成和二维码的识别。
二维码的生成主要就是基于 Winnows 上的开发工具 Netbeans 开发,而同时又开发一个在
Android 平台下的二维码生成。
而二维码的识别主要就是基于
Android 平台来开发, 主要就是运用
Android SDK 和 Eclipse 共同开发,但是环境需要搭建。
二维码的生成主要设计的是在电脑上运行的桌面程序。
通过在电脑上开发一个 Java 程序来生成二维码。
其开发环境主 要如下表: 1表1 Windows 平台上开发使用的环境 需求名称 平台及工具 开发工具 Net beans 优化工具 Photoshop 开发语言 Java 运行环境 Windows XPJDK 测试环境 Windows XPJDK 二维码的识别和生成是在
Android 平台上的开发的,并使用 Eclipse IDE 工具进行开发的。
Eclipse IDE 安装 ADT 插件搭建了很好的
Android 开发平台,方便与编程。
至于识别的功能要用到摄像头,虚拟机上面是没有摄像头的,这就需要有真机进行二维码的识别测试。
Android 平台开发环境如下表:表错误!文档中没有指定样式的文字。
Android 平台开发使用的环境 需求名称 平台及工具 开发工具 Eclipse、
Android SDK、测试机 优化工具 Photoshop 开发语言 Java 运行环境
Android 平台 测试环境
Android 平台2 系统的设计2.1 系统框架设计 本系统框架结构主要分成生成和识别两大部分。
识别功能主要就是对二维码和条形码的识别。
主要就是通过手机的摄像头对二维码或者是条形码进行扫描,然后把把扫描到的二维码或者是条形码送到后台进行解析,如果解析成功后,就不再进行扫描。
如果解析不成功,就会在进行扫描采集图像,在传到后台解析,直到能够识别图像为止2。
生成功能主要就是对二维码的生成。
而生成这个功能可以在电脑上运行生成,也可以在手机上运行生成。
二维码的生成主要支持名片、短信、文本、电子邮件及网络书签的生成。
当用户选择好多要生成的对象时,就会把用户输入的信息送到后台,通过调用解析包,来生成还有相应信息的二维码。
2.2 二维码的生成设计 二维码的生成,支持多种形式内容的二维码生成。
所以用户要先进行选择要生成的类型,当选择类型以后,系统将转入 3到多选该类型的生成界面给用户,用户将相应的信息填写完成,点击生成二维码,会跳转到生成界面,显示生成的二维码 。
2.3 二维码的识别设计 二维码的识别主要是通过对摄像头的调用,启用多线程,对摄像头进行快速的回调应用,当一次回调的图像没有识别出来就进行下一次的回调,直到识别出二维码为止4。
同时由于对与二维码的大小不同,显示的模糊度不同等等原因,会使摄像头不能很好的采集图像,在这里要使摄像头能够进行自动对焦,从而使识别更快的实现。
当识别完成以后就对用户进行提醒,对手机进行震动和播放声音,播放完成,显示识别出来的结果。
3 系统的实现3.1 二维码生成的实现 2 二维码的生成主要是靠官方相应的编码包,将用户输入字符转换成二维数组,然后根据二维码的编码规范,使用绘图功能将二维码进行绘制。
二维码的生成主要分为名片、短信、文本、电子邮件、网络书签的生成。
需要有相应的框架使程序与用户进行交互,使用户有选择自己想要生成的类型,然后就是用户将自己想编辑的信息输入到系统内,系统应该提供相应的交互界面给用户输入5。
该功能具体代码如下: public void QREncodeString strEncoding int qrcodeVersion c.swetake.util.Qrcode testQrcode new c.swetake.util.Qrcode testQrcode.setQrcodeErrorCorrectM testQrcode.setQrcodeEncodeModeB testQrcode.setQrcodeVersionqrcodeVersion byte bytesEncoding strEncoding.getBytesutf-8 if bytesEncoding.length 0 boolean bEncoding testQrcode.calQrcodebytesEncoding drawQRCodebEncoding getResources.getColorR.drawable.black //绘制条形码 private void drawQRCodeboolean bRect int colorFill int intPadding 20 Canvas mC mSurfaceHolder01.lockCanvas mC1.drawColorgetResources.getColorR.drawable.white Paint mP new Paint mP1.setStylePaint.Style.FILL mP.setColorcolorFill mP1.setStrokeWidth1.0F for int i 0 i bRect.length i for int j 0 j bRect.length j if bRectji mC.drawRectnew RectintPadding j 3 2 intPadding i 3 2 intPadding j 3 2 3 intPadding i 3 2 3 mP1 mSurfaceHolder01.unlockCanvasAndPostmC1 3.2 二维码识别的实现 在 系统在手机上实现图像的采集是重要的一步,
Android 平台上,是使用 Camera 类来完成摄像头的调用和图像采集 使用 Camera mCamera Camer-a. open 获得 Camera 的实例,然后使用 Camer-a.Parameters 来设置获得图像的大小,最后通过实现 Camera. Preview-Callback 的接口 onPreviewFrame byte〔〕 data, Camera camera 来获得摄像头的图像数据 data。
为能够较快地获得清晰的图像,提高识别速度,文中使用了自动对焦技术。
另外还应该对对焦进行定时操作,这就需要设置一个定时器对自动对焦进行定时调用。
后台对摄像头传过来的图像数据 data 进行解码处理,如果能够解析出来,则上面的对焦调用,摄像头回传图像数据调用等将暂停。
如果解析不成功,则继续轮回调用。
节约解析的时间6。
后台对摄像头传过来的图像数据 data 进行解码处理,如果能够解析出来,则上面的对焦调用,摄像头回传图像数据调用等将暂停。
如果解析不成功,则继续轮回调用。
节约解析的时间。
主要实现代码如下: public void handleMessageMessage message switch message.what case R.id.auto_focus: 3 if state State.PREVIEW CameraManager.get.requestAutoFocusthis R.id.auto_focus break case R.id.restart_preview: Log.dTAG Got restart preview message restartPreviewAndDecode break case R.id.decode_succeeded: Log.dTAG Got decode succeeded message state State.SUCCESS Bundle bundle message.getData Bitmap barcode bundle null null : Bitmap bundle .getParcelableDecodeThread.BARCODE_BITMAP activity.handleDecodeResult message.obj barcode break case R.id.decode_failed: state State.PREVIEW CameraManager.get.requestPreviewFramedecodeThread.getHandler R.id.decode break case R.id.return_scan_result: Log.dTAG Got return scan result message activity.setResultActivity.RESULT_OK Intent message.obj activity.finish break case R.id.launch_product_query: Log.dTAG Got product query message String url String message.obj Intent intent new IntentIntent.ACTION_VIEW Uri.parseurl intent.addFlagsIntent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET activity.startActivityintent break 4 结束语 本课题的研究目的是实现二维条码的生成与识别系统设计,设计内容包括两部分:二维条码的生成系统设计和二维条码的识别系统设计。
生成系统完成了从输入数据到生成相应二维码的功能,识别系统完成对图像的自动采集和数据编码解析。
参考文献: 1 杨丰盛.
Android 应用开发揭秘 M.北京:机械工业出版社2010.48-50. 2 刘宁钟杨静宇. 基于傅里叶变换的二维条码识别 J.中国图像图形学报2011 182: 45-46. 3 肖翔刘晓明王云柯. QR 码图像的矫正与定位方法研究J.计算机科学 2007 232: 18-20. 4 谷晓琳黄明戚海英. 基于遗传算法的二维 QR 码图像识别J.大连铁道学院学报 2005123: 35-38. 5 王文豪张亚红全银 等.QRCode 二维条码的图形识别技术J. 计算机技术与发展200982: 40-43. 6 梁凤梅.快速识读 QRCode 码J.电脑开发与应用2002122: 50-55. 4