二维条形码扫描仪毕业论文.doc_第1页
二维条形码扫描仪毕业论文.doc_第2页
二维条形码扫描仪毕业论文.doc_第3页
二维条形码扫描仪毕业论文.doc_第4页
二维条形码扫描仪毕业论文.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

二维条形码扫描仪毕业论文目录1 引言.51.1系统开发和意义.61.1.1系统开发的意义.71.1.2 二维码介绍.81.2 开发工具介绍.91.2.1 Eclipse 简介.91.2.2 JDK简介.91.2.3 Android SDK简介.101.2.4 ADT简介.101.3 项目开发环境.111.3.1 硬件环境.111.3.2 开发环境.112 需求分析.122.1 需求分析.122.1.1 系统功能需求.122.1.2 系统功能结构图.142.1.3 系统用例图.142.1.4技术需求.152.2性能需求.163系统总体设计. 173.1系统总体设计目标. 173.2系统概要设计.173.3系统功能模块.183.3.1拍照解码功能模块.184 系统详细设计.194.1 系统流程图.194.2 图片处理过程.204.3 界面设计.215 系统编码实现.225.1 基本编码设置.225.2 相机预览实现.245.3 关闭相机实现.265.4 拍照解码实现.276 系统测试.316.1 测试目的.316.2 功能测试.316.2.1 软件安装测试.316.2.2 相机预览功能测试.316.2.3 关闭相机测试.326.2.4 拍照解码功能测试.32结论.38致谢.39参考文献.401 引言目前,手机也越来越广泛多的普及了,自90年代以来,无线移动技术和市场应用得到飞速发展和成功,从寻呼机到3G手机的面市,中国人已经习惯了手中的移动手机不同的变化。越来越成熟的手机用户不仅重视手机硬件的外观,更重视手机所赋予的强大功能。所以根据市场需求,我们有必要把二维码和手机结合起来,利用手机作为读取设备,实现条码的识别。由于一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准。一维条形码的应用可以提高信息录入的速度,减少差错率,但是其数据容量较小,只有30个字符左右,而且只能包含字母和数字,而且一维码遭到损坏到便不能阅读。所以二维码在人们生活中得到了越来越广泛的应用。由此,我们可知,QRcode在手机中的应用有着良好的前景和潜力,它将有效地推动移动增值业务的快速发展,有利于为我国信息产业的发展和经济建设带来社会及经济效益。1.1 系统开发和意义1.1.1系统开发的意义二维码具有储存量大,保密性高,追踪性高,抗损性强,备援性大,成本便宜等特性,这些特性特别适用于表单,安全保密,追踪,证照,资料备援等方面。表单应用公文表单、商业表单、进出口报单、舱单等资料的传送交换,减少人工重覆输入表单资料,避免人为错误,降低人力成本。 保密应用商业情报、经济情报、政治情报、军事情报、私人情报等机密资料之加密及传递。 证照应用护照、身份证、挂号证、驾照、会员证、识别证、连锁店会员证等证照之资料登记及自动输入,发挥随到随读、立即取用的资讯管理效果。 二维码作为一种连接报纸、手机和网络的新兴数字媒体,报纸利用二维码技术打造“立体报纸”以来,看报的用户通过使用智能手机上的各类二维码软件扫描报纸上的二维码,报纸立即成“立体”,同时还可以轻松阅读观赏报纸的延伸内容。国内目前应用二维码的报纸有华西都市报、长江日报、成都商报等。二维码应用使报纸的容量大大扩展,读报的乐趣也大大增加,这意味着,报纸、期刊已经不仅仅是平面的新闻纸,更可以为我们带来一个全新3D视听影像感受,并且为产品提供了更为全面的资讯以及更为便捷的购买方式,缔造了全方位的移动互联网商务平台。景点门票/火车票应用景点门票,火车票告别传统文字纸张模式,采用二维码进行售票、检票,提高通行效率,防止伪票。车辆管理应用行驶证,驾驶证,车辆的年审文件,车辆违章处罚单等采用印制有二维码,将有关车辆上的基本信息,包括车驾号、发动机号、车型、颜色等车辆的基本信息转化保存在二维码中,其信息的隐含性起到防伪的作用,信息的数字化便于与管理部门的管理网络的实施实时监控。 创意应用随着智能手机的普及,各种各样的二维码(2-dimensional bar code)应用也接踵而至,有如下极具创意的二维码应用:1、二维 码请柬;2、二维码展示海报;3、二维码签到;4、二维码名片;5、二维码指示牌;6、二维码宣传广告。7、二维码食品验证 1.1.2二维码介绍二维码 ,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念。在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K 等,QR码是1994年由日本Denso-Wave公司发明。QR来自英文Quick Response的缩写,即快速反应的意思,源自发明者希望QR码可让其内容快速被解码。 QR code,它可以存储多种类型。现在使用的QR code二位条形码的规范一直遵循OMIA(Open Mobile Internet Alliance)的规范.简要的解码过程:二维码图像图像解析编码按照规则解释成相应的代码。图例中显示的是“百度百科”网页的二维码。1.2 开发工具介绍1.2.1 Eclipse 简介 Eclipse是一个综合开发环境IDE,它是一个功能完整且成熟的软件,由IBM公司于2001年首次推出。在官方网站免费下载该软件的打包文件,释放到文件夹即可使用。Eclipse是一个开放源代码、基于Java的可扩展开发平台。开放源代码的意思是让使用者能够取得软件的原始码,部分的有权去修改和传播这个软件。程序员也能用Eclipse打造新工具来开发软件这些新工具可扩充Eclipse的功能。 就Eclipse本身而言,它只是一个框架和一组被称为平台核心的服务程序,用于通过插件构建开发环境。核心的任务是让每样东西动起来,并加载所需的外挂程序。当启动Eclipse时,先执行的就是这个组件,再由这个组件加载所需的外挂程序。Eclipse附带了一个包括Java开发工具的标准插件集,因此,如果要使用Eclipse来开发Java程序,必须安装JDK作为它的插件才能使它正常运作。1.2.2 JDK简介JDK(Java Development Kit,JDK)是一个整个Java的核心,包括了Java运行环境(Java Runt ime Environment ),一堆Java工具和Java基础的类库(rt.jar),不论什么Java应用服务器都是内置了某个版本的JDK。最主流的JDK是SUN公司发布的JDK,除了SUN之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BME公司的Jrocket,还有GNU组织开发的JDK等等。JDK最重要命令行工具:Java:启动JVM执行class;Javac:Java编译器;Jar:Java打包工具;Javadoc: Java文档生成器。1.2.3 Android SDK简介Android SDK(software development kit ,SDK)Tool软件开发工具包。被软件开发工程师用于特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具集合,是Android专属的软件开发工具包。1.2.4 ADT简介 目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Eclipse开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。1.3 项目开发环境1.3.1 硬件环境 内核版本perf: 内存:512 M 型号:HUAWEIC88101.3.2 开发环境 操作系统:Windows XP 开发工具:jdk、Eclipse 、android-sdk2 需求分析2.1 需求分析条码可分为一维条码和二维条码,一维条码在生产和生活中得到了广泛的应用,极大的提高了生产率,但是一维条码本身的缺点:信息量小,依赖数据库等日益突显出来。而二维条码是在二维空间上由具有特殊结构的几何图形元素按一定规律和顺序组合成的图形,巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息。二维条码的编码范围非常广泛,它不仅可以保存英文、数字等符号信息,还可以保存中文、图片、声音、指纹、签字等多种数据类型。二维条码可加密,具有很高的保密性,且纠错能力很强,二维条码可以用扫描仪扫描或用摄像头直接读取,它还具有条码符号形状、大小可变的特点。二维条码作为一种全新的自动识别和信息载体技术,其经济性和可靠性正被越来越多的人们所了解和认知。因此,我们要进一步研究二维条形码扫描仪扫描二维码。2.1.1 系统功能需求设计Android二维条形码扫描仪我们应当确定这个系统要完成哪些动作,即对目标系统提出完整,准确,清晰,具体的要求。具体来说,在开发过程中,要熟悉QRcode二维码解码和图像处理的方法。具体需求如下:1 相机预览需求此二维码识别系统必须能够运用手机上的照相机设计瞄准框,让user对准条形码才能获得二维码的图像。2 图像处理和拍照解码需求我们用照相机拍照之后,图片保存在手机缓存中,可以截取图片对它进行处理,同时需要对二维码进行解码,在解码的时候,从手机缓存中调去图片解码,缓存中的图片删除。3 调用浏览器功能当二维码隐藏的一个网站信息http:/时,我们需要访问该网站,所以需要一个手机浏览器功能。4 调用手机拨打电话功能当发现为wtai:/或TEL:规范,则调用手机拨打电话。5 解读图像的功能如果二维码是一个静态图像,那么我们则需要对静态图片译码,取得译码之后的字符串,识别其条形码类型,解读图像。 2.1.2 系统功能结构图系统结构图是对软件系统结构的总体设计的图形显示,如图所示为总体的系统功能结构,它包括相机预览,相机解码和关闭相机三个部分,同时相机解码包括调用浏览器,调用拨打电话和显示文本。Android二维码扫描识别相机预览相机解码关闭相机调用浏览器调用拨打电话显示文本2.1.3 系统用例图1 系统用户用例图用例图就是由主角,用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。通过上面对系统的分析即可的得到系统的用例图,如图所示:2.1.4 技术需求Android二维码扫描系统具体的几个技术要求如下:1 照相机实现技术在了解了Android开发的过程之后需要知道Android怎样进行照相。Android应用提供了Camera来控制拍照,使用Camera进行拍照需要按照如下步骤进行:调用Camera的open()方法打开照相机。调用Camera和getParameters()方法获取拍照参数。方法返回一个Camera.Parameters对象。调用Camera.Parameters对象方法设置相机参数。调用Camera的setParameters(),并将Camera.Parameters对象作为参数传入,这样即可对相机的拍照参数进行控制。调用Camera的starPreview()方法开始预览取景,在预览取景之前需要调用Camera的setPreviewDisplay(SurfaceHolder holder)方法设置使用哪一个SurfaceView显示取景图片。调用Camera的takePicture()方法进行拍照。2 二维码图片处理技术首先二维码图片是图片的一种,当拍摄下来时需要将该图片送往解码函数解码,因此需要获取预览中图片,在这里用的是bitmap这个类。3 二维码解码技术将预览画面中的二维码图片送到我们的解码函数对二维码进行解码,因此需要应用android另外的一个JAR包,这个系统主要是对二维码的一种QRcode进行解码。2.2 性能需求Android二维码的扫描识别系统性能方面的要求主要体现在一下几个方面:1.时间需求本系统需要对二维码进行准确迅速的识别,所以对系统的时间要求更为严格。2.系统界面需求软件界面直观、简介,人机交互性强。3 系统总体设计3.1 系统总体设计目标经过可行性研究和需求分析阶段的工作,已经清楚系统必须完成的工作,下面的工作应该是决定“如何做”的问题。概要设计的基本目的就是“概括地说系统应该如何实现”。另一方面的主要工作是设计软件的结构,即确定系统都由哪些模块组成及模块之间的相互关系。3.2 系统概要设计概要设计的主要任务是设计软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。总体设计就是系统模块结构设计。 Android二维码扫描识别系统需要调用我们Android手机的照相机,通过onPictureTaken函数二维码图片处理成位图,而且将位图在imageview中显示出来,然后再对位图进行译码,按照QRcode二维码生成的方式解码成字符型。如果二维码隐藏信息是一个网址那么调用浏览器访问该网站,如果二维码隐藏的信息是一个电话号码,那么调用手机拨打电话功能,如果该二维码隐藏的信息是普通的文本信息,那么显示出文本信息即可,若不是QRcode不做任何操作。3.3系统功能模块设计系统总体功能有以下几个方面:相机预览功能;关闭相机功能;拍照解码;调用浏览器:如果二维码信息隐藏的是以“http:/”开头的网址,那么手机便调用默认浏览器浏览该网址。调用拨打电话功能:如果二维码信息隐藏的是以“TEL:”或者是“wtai:”开头的电话号码,那么手机直接调用拨打电话功能。显示文本信息:如果二维码信息只是包含一些文本信息,那么直接显示。3.3.1拍照解码功能模块在整个系统模块中最重要的模块是拍照解码功能,因此把这个模块单独分析,将它的功能进行分析如图所示。4 系统详细设计4.1 系统流程图系统流程图是描绘系统物理模型的传统工具。本次毕业设计的流程图答题属于顺序流程,首先初始化相机,然后拍照截取图片,对图片处理的过程中要判断字符串类型,然后根据不同类型调用不同功能。本系统流程图如图所示。初始化相机拍照截取图片图片处理并译码相机重置判断字符串类型结束调用浏览器调用拨打电话显示文本信息开始4.2 图片处理过程QRcode二维码是按照一定规则以矩阵的形式生成的,所以拍照截取到图片之后需要译码字节数组,将字节数组译码成位图,并将位图显示在imageview上,然后通过decodeQRImage函数将此位图送往系统自带的译码函数译码成字符串,最后判断取出的字符串是否符合OMIA所规范的规则。图片处理过程如下图:相机预览拍照截取QRCODE二维码图片译码字节数组成位图通过decodeQRimage函数将位图译码成字符串判断字符串类型调用浏览器显示文本信息调用拨打电话4.3 界面设计界面设计是人与机器之间传递和交换信息的媒介,一个好的界面是很重要的。它主要是站在用户的角度考虑,因此界面的设计要人性化、简洁、清楚,还要有安全感和灵活性。此系统功能整体上可以分为三个部分。第一个部分是相机预览显示部分,这部分用一个surfaceview来实现;第二部分是整个系统操作部分,分为三个按钮,第一个按钮为相机预览按钮,第二个按钮为关闭相机按钮,第三个按钮为拍照解码按钮并且为各自按钮设置监听器并绑定;第三部分是显示拍照截取的二维码图片。系统界面如下图 5 系统编码实现5.1 基本编码设置从详细设计我们已经知道系统分为三部分,因此我们设置一个变量bIfPreview来控制相机是否为预览模式,变量初始化为private boolean bIfPreview=false,及设置相机预览模式为false。因为要调用手机相机和拨打电话功能,因此在我们的AndroidManifest.xml文件中应该加上相机权限和拨打电话权限语句: 对于布局文件来说,我们分为三层,第一层是拍照预览部分,用surfaceview实现;第二部分是三个按钮,添加三个按钮即可实现;第三部分是显示拍照截取的图片,我们用imageview来实现。对布局来说,每一层都是一个线性布局LinearLayout。布局文件代码如下: 5.2 相机预览实现相机预览,用于开启手机照相机。我们用一个按钮实现该功能,添加一个按钮并且设置并绑定监听器。在监听器里面我们用一个initCamera()函数实现,函数调用相机的open()方法即可实现预览功能同时将变量bIfPreview设置为 true.当然我们要取得二维码,因此我们要捕获图片,我们需要设置图片的格式和一些参数。调用相机代码如下: Private void initCamera()If(!bIfPreview)/*若相机非在预览模式,则开启相机*/TrymCamera01=Camera.open();Catch(Exception c)Log.e(TAG,e.getMessage()设置图片参数相关代码如下:mCamera01.setPreviewDisplay(mSurfaceHolder01);/*建立Camera.Parameters物件*/Camera.Parameters parameters=mCamera01.getParameters();/*设定相片格式为JPEG格式*/parameters.setPictureFormat(PixelFormat.JPEG);Lists=parameters.getSupportedPreviewSizes();其实现如图所示:5.3 关闭相机实现 我们能调用手机相机,当然我们也可关闭手机。这里同样用一个按钮并且设置绑定监听器实现,在监听器里面只需要调用相机的stopPreview()方法即可关闭相机,同时我们要释放相机资源将预览变量bIfPreview设置为false。代码如下:Private void restCamera()if(mCamera01!=null&bIfPreview)try mCamera01.stopPreview(); /*释放Camera对象*/ mCamera01.release(); bIfPreview=false; catch(Exception e) e.printStackTrace(); 其实现如下图所示:5.4 拍照解码实现本系统的目的就是要将二维码识别出来知道里面所隐藏的信息,因此我们需要一个拍照解码的功能。同样使用一个按钮,设置并绑定监听器,监听器里面通过takePicture()函数调用相机的takePicture,takePicture方法调用一个jpegCallback回调函数专门处理JPEG格式的图片,调用onPictureTaken方法将二维码字节数组通过decodeByteArray方法译码成位图,将位图显示在imageview上,再将位图通过decodeQRImage函数译码成字符串,对字符串进行对比实现其相关操作。代码如下:Private PictureCallback jpegCallback=new PictureCallback()Public void onPictureTaken(byte_data,Camera_camera)/处理JPEG图片数据 Try /* onPictureTaken传入的第一个参数即为相片的byte */ Bitmap bm=null;bm=BitmapFactory.decodeByteArray(_data,0._data.length); int resizeWidth=160;int resuzeHeight=120;float scaleWidth=(float)resizeWidth)/bm.getWidth();float scaleHeight=(float)resizeHeight)/bm.getHeight();matrix matrix=new Matrix();/*使用matrix.postScale方法缩小Bitmap size */ matrix.postScale(scaleWidth,scaleHeight);/*建立新的bitmap对象 */bitmapresizeBitmap=Bitmap.createBitmap(bm,0,0,bm.getWidth,bm.getHeight,matrix,true);/*截取4:3的图档的位置中红色框部分100*100像素*Bitmap resizeBitmapSquare=Bitmap.createBitmap(resizedBitmap,30,10,100,100);/*将拍照的图文件以ImageView显示出来 */mImageView01.setImageBitmap(resizedBitmapSquare);/*将传入的图文件译码成字符串*/String strQR2=decodeQRImage(resized BitmapSquare);If(strQR2!=) If(URLUtil.isNetworkUrl(strQR2)/*如果二维码信息隐藏的是以“http: /”开头的网址,那么手机便调用浏览器浏览该网站*/ mMakeTextToast(strQR2,true); Uri mUri=Uri.parse(strQR2); Intent intent=new Intent(Intent.ACTION_VIEW,mUri); startActivity(intent);else if(eregi(wtai:/,strQR2)/*如果二维码信息隐藏的是以“TEL:”,开头的电话号码,那么手机直接调用拨打电话功能*/StringaryTemp01=strQR2.split(TEL:); Intent myIntentDial=new Intent(ent.action.DIAL,Uri.parse(tel:+aryTemp011);startActivity (myIntentDial);else/*若仅是普通文字,则将文本显示出来即可*/mMakeTextToast(strQR2,true); /*显示完图文件,立即重置相机,并关闭预览*/resetCamera();Thread,sleep(1000);/*再重新启动相机继续预览*/initCamera();catch(Exception e) Log.e(TAG,e.getMessage(); ;拍照解码界面如下图所示: 6 系统测试6.1 测试目的测试是为了发现程序中的错误而执行程序的过程,测试的目的就是在软件投入生产运行之前,尽可能地发现软件中的错误并能及时改正。6.2 功能测试6.2.1 软件安装测试当我们把整个项目完成之后,将其Qr.apk文件拷贝到手机上,在android手机上进行安装,能够成功安装软件。6.2.2 相机预览功能测试运行软件,点击“相机预览”按钮,预览窗口出现摄像头前面的画面。相机预览功能测试结果如图所示。6.2.3 关闭相机测试运行软件,点击“关闭”按钮,预览窗口出现的画面消失。关闭相机功能测试结果如图所示。 6.2.4 拍照解码功能测试运行软件,点击“相机预览”按钮,调用照相机,然后对准我们的QRcode二维码

温馨提示

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

评论

0/150

提交评论