版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 学士学位论文 题目:android二维码的扫描识别 太原科技大学毕业设计(论文)任务书学院: 计算机科学与技术学院 学生姓名学号专业班级计算机082002同组人任务下发时间2012.1任务完成时间2012.6设计(论文)题目android二维码的扫描识别设计目的要求1、熟练掌握软件工程设计思想。2、熟练掌握java语言和android开发环境。3、android二维码的扫描识别系统,应该具备完善的功能和合理的设计,并最终提交相应的设计论文。设计主要内容严格按照软件工程思想,按照需求分析、总体设计、详细设计、实现和测试分阶段完成整个系统的设计与实现。主要功能应包括:1、能够通过摄像头扫描识别q
2、r code二维码。2、若二维码隐藏的是网址信息,那么调用手机浏览器浏览该网站。3、若二维码隐藏的是电话号码,那么调用手机拨打电话功能。4、若二维码隐藏的普通文本信息,那么显示该文本信息即可。设计提交资料毕业设计论文外文资料翻译相应软件学生签名指导教师签名系主任签名主管院长签名说明:一式两份,一份装订入学生毕业设计(论文)内,一份交学院(直属系)。太原科技大学学士学位论文中文摘要一维条码在生产和生活的各个方面得到了广泛的应用,极大的提高了生产率,但是一维条码本身的缺点:信息量小、依赖数据库等也日益的现露出来。二维条码本身具有高容量、高密度、纠错能力强、安全强度高等特点,使得二维条码作为信息的载
3、体在信息自动化领域发挥着越来越重要的作用。qrcode作为快速响应二维码,以其独特的优势,在汉语国家发展迅速。目前,国内qr码的识别大多是基于pc的,android平台上当前流行的二维码识别软件普遍存在着扫描速度慢,需要精确对焦等缺点。该软件基于android开发平台在windows环境下采用面向对象方法进行开发。首先,进行需求分析,绘制了用例图和活动图。然后,在概要设计中建立了系统功能模型,并在详细设计阶段对图片处理过程进行设计。最后,对软件进行编码和测试。该软件实现了二维码的扫描与识别,具有很强的实用性。关键字:二维码;qrcode;解码;androidthe scanning and r
4、econgnition of two-dimensional barcodeauthor: lan honglin tutor: li fupingabstractone-dimension barcode is widely used recent years in all aspect of life, which greatly improved the productivity. however, the faults of 1-d barcode have become increasingly apparent, the information storage of it is s
5、o little, and also it must be rely on database. two-dimension barcode has the characteristics of high capacity, high density, high security and good error correction ability, which make it play more and more important role in information and automation field. qrcode(quick response code), as a 2-d ba
6、rcode, develops rapidly in chinese speaking countries with its unique advantages. at present, in our nation, recognition of qrcode mostly bases on pc, and the recognition speed and accuracy are not so good. moreover, the popular barcode recognition software on android platform has some shortcomings
7、prevalently, such as slow speed of recognition, etc. the development of the software is based on android platform by object-oriented programming method under the windows os. firstly, this paper describes the detailed demand analysis to draw use case diagram and activity diagram. then constructing th
8、e system function model in general design, meanwhile, designing the details of diagram process. finally, the software implements the scanning and recognition of two-dimensional barcode by decoding and testing, after that, this software has robust applicable ability. key words: two-dimensional barcod
9、e;qrcode;decoding;androidiii目录第一章 系统概述11.1 系统开发背景和意义11.1.1 系统开发背景11.1.2 系统开发的意义11.1.3 二维码介绍21.2 开发工具介绍31.2.1 eclipse简介31.2.2 jdk简介31.2.3 android sdk简介41.2.4 adt简介41.3 项目开发环境41.3.1 硬件环境41.3.2 软件环境51.4 环境搭建51.4.1 下载和安装android sdk51.4.2 安装eclipse和adt插件5第二章 可行性研究和需求分析72.1 可行性研究72.1.1 技术可行性72.1.2 经济可行性72
10、.1.3 操作可行性72.1.4 社会可行性82.2 需求分析82.2.1 系统功能需求82.2.2 系统功能结构图92.2.3 系统用例图102.2.4 系统活动图112.3 技术需求112.4 性能需求12第三章 系统总体设计143.1 系统总体设计目标143.2 系统概要设计143.2.1 系统模块结构设计143.2.2 计算机物理系统配置方案设计153.4 系统功能模块153.3.1 系统总体功能模块163.3.2 拍照解码功能模块16第四章 系统详细设计174.1 系统流程图174.2 图片处理过程图174.3 界面设计18第五章 系统编码实现205.1 基本编码设置205.2 相机
11、预览实现215.3 关闭相机实现225.4 拍照解码实现23第六章 系统测试266.1 测试目的266.2 测试方法266.3 功能测试266.3.1 软件安装测试266.3.2 相机预览功能测试276.3.3 关闭相机测试276.3.4 拍照解码功能测试27结束语31致谢32参考文献33附录i 英文原文34第一章 系统概述1.1 系统开发背景和意义1.1.1 系统开发背景条形码技术是集条码理论、光电技术、计算机技术、通信技术等技术于一体的综合性技术,起源于20世纪40年代。它具有输入速度快、可靠性高、采集信息量大、成本低等特点,近年来发展十分迅速,在国际上广泛应用于商品流通、物流仓储、信息服
12、务等各个领域,极大地提高了生产效率。近几年,另一个广泛得到普及的领域就是手机,自90年代初以来,无线移动技术和市场应用得到飞速发展和成功。从寻呼机到目前3g手机的面市,中国人已经习惯了手中的移动手机不停地变化。移动通信发展的焦点已经由用户数量的增长,转为业务量和新业务的增长;由技术驱动转为业务驱动。在激烈的市场竞争中,越来越成熟的手机用户不仅注重手机硬件的外观,更注重手机所赋予的强大功能。以上两个普及领域催生了一个新的需求:即将二维码和手机结合起来,利用手机作为读取设备,实现条码识别。目前国际iso标准已经有多种条形码,其中应用最广泛的有pdf417、datematrix、qr码等。qr码是矩
13、阵式二维条形码的代表,它除了具有一维条码和其它二维条码所具有的信息容量大、可靠性高等特点外,还具有全方位识读、能有效表示中、英、简、繁、日、韩等文字、超高速识读以及超强的纠错能力和抗干扰能力等特性。适合于我国的国情以及汉字编码的特点。综上,qr码在手机中的应用有着良好的前景和潜力,它将有效地推动移动增值业务的快速增长,有利于为我国信息产业的发展和经济建设带来社会及经济效益。1.1.2 系统开发的意义二维码作为一种全新的条码技术,已被广泛应用于国防、医疗保健、商业、金融、后勤管理等领域。由于qrcode二维码信息容量大,保密性能好,并且成本低,适合我国人口众多,计算机建设还不是很完善的国情,因此
14、在我国有着十分广阔的应用前景。可以预见,二维条码技术在我国的推广上应用必将为我国信息产业的发展和现代化的经济建设带来可观的社会效益和经济效益。 1.1.3 二维码介绍二维码(2-dimensional barcode),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。在许多种类的二维条码中,常用的码制有:datamatrix, maxicode, aztec, qrcode, vericode,pdf417,ultracode,code49,code16k等。1.堆叠式/行排式二维条码,如,code16k、code49、pdf417(如下图)等。2.
15、矩阵式二维码,最流行莫过于qrcode。qr(quick-response) code是被广泛使用的一种二维码,解码速度快。它可以存储多用类型。现在使用的qrcode二位条形码的规范一直遵循omia(open mobile internet alliance)的规范,qrcode基本结构如图1.1所示。图1.1 qrcode基本结构其中:位置探测图形、位置探测图形分隔符和定位图形用于对二维码的定位;对每个qr码来说,位置都是固定存在的,只是大小规格会有所差异;规格确定,校正图形的数量和位置也就确定了;格式信息表示改二维码的纠错级别,分为l、m、q、h;版本信息即二维码的规格,qr码符号共有40
16、种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块。数据和纠错码字实际保存的二维码信息和纠错码字(用于修正二维码损坏带来的错误)。简要的解码过程:二维码图像>图像解析出01编码->按照规则解释为相应的内容。1.2 开发工具介绍1.2.1 eclipse简介eclipse是一个综合开发环境(integrated development environment)ide,它是一个功能完整且成熟的软件,由ibm公司于2001年首次推出。大家可以在其官方网站免费下载该软件的打包
17、文件,释放到文件夹即可使用。eclipse是一个开放源代码、基于java的可扩展开发平台。开放源代码的意思是让使用者能够取得软件的原始码,部分地有权去修改和传播这个软件。有人非常形象地将eclipse比喻成软件开发者的“打铁铺”,它一开始备有火炉、铁砧与铁锤。就像铁匠会用现有的工具打造新的工具一样,程序员也能用eclipse打造新工具来开发软件这些新工具可扩充eclipse的功能。就eclipse本身而言,它只是一个框架和一组被称为平台核心的服务程序,用于通过插件组件构建开发环境。核心的任务是让每样东西动起来,并加载所需的外挂程序。当启动eclipse时,先执行的就是这个组件,再由这个组件加载
18、其他外挂程序。eclipse附带了一个包括java开发工具(java development tools,jdt)的标准插件集,因此如果要使用eclipse来开发java程序,必须安装jdk作为它的插件才能使它正常运作。1.2.2 jdk简介jdk(java development kit,jdk)是整个java的核心,包括了java运行环境(java runt ime envirnment),一堆java工具和java基础的类库(rt.jar)。不论什么java应用服务器实质都是内置了某个版本的jdk。最主流的jdk是sun公司发布的jdk,除了sun之外,还有很多公司和组织都开发了自己的j
19、dk,例如ibm公司开发的jdk,bea公司的jrocket,还有gnu组织开发的jdk等等。其中ibm的jdk包含的jvm(java virtualmachine,jvm)运行效率要比sun jdk包含的jvm高出许多。jdk的最重要命令行工具:java: 启动jvm执行class;javac: java编译器;jar: java打包工具;javadoc: java文档生成器。 1.2.3 android sdk简介android sdk(software development kit,sdk) tool软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立
20、应用软件的开发工具的集合,是android专属的软件开发工具包。1.2.4 adt简介目前android开发所用的开发工具是eclipse,在eclipse编译ide环境中,安装adt,为android开发提供开发工具的升级或者变更,简单理解为在eclipse下开发工具的升级下载工具。1.3 项目开发环境1.3.1 硬件环境处理器:intel celeron 2.4ghz以上处理器及以上内存:1gb及以上硬盘空间:80gb及以上华为c8650手机一部1.3.2 软件环境操作系统:windows xp (32-bit)或windows vista(32位或64位)或mac os x10.4.8或
21、更新的版本(硬件必须是x86的版本)或linux(在linux ubantu hardy heron上)。开发工具:jdk-6u26-windows-i586、eclipse indigo service release 2、android-sdk_r18-windows、adt18。1.4 环境搭建在开始搭建android开发环境之前,读者必须具有一定的java编程基础,像jdk环境安装,环境设置之类的入门知识,这里不做详细的介绍,下面将从android sdk的安装开始讲起,详细说明android开发、测试环境的安装和使用。1.4.1 下载和安装android sdk登陆android开发
22、者网站 sdk。下载和安装步骤如下:在android1.5之前,google提供了android sdk的完整开发包;从android 1.6之后,google不再提供完整开发包,开发者必须采用在线的方式安装android sdk。此处以windows开发平台为例,登陆界面之后点击“android-sdk_r18-windows.zip”连接,通过连接即可下载android sdk的在线安装包。下载完成后得到android-sdk_r18-windows.zip文件。将该文件解压到任意路径,解压后文件夹,启动文件夹中sdk manager.exe,单击出现窗口左边“installed pack
23、ages”项,可以查看已有安装工具,单击“available packages”然后选安装工具,其中android平台工具、android文档、android2.3 sdk必须选,然后单击“install selected”,窗口出现“accept all”单选按钮,单击“install”系统便开始安装android sdk,安装时间可能要花费一两个小时。1.4.2 安装eclipse和adt插件eclipse是一个市场占有率很高的java ide工具,java ee应用的开发者对eclipse应该十分熟悉,android推荐使用eclipse来开发android应用,并为它提供专门的插件ad
24、t(android development tools,adt)。安装eclipse工具按如下步骤进行:登陆站点,下载eclipse ide for java ee developer 的版本。下载完成后解压缩后双击eclipse.exe文件,即可看到eclipse启动界面,表明eclipse 已经安装成功,为了在eclipse中进行android 开发,还需要安装adt插件。安装adt请按如下步骤进行登陆下载:登陆网站:启动eclipse,单击eclipse的主菜单上help/install new software菜单项,单击窗口“add.”按钮,
25、选择adt插件adt-18.0.0.zip文件。选中“ok”按钮,在点击“next”,最后点击“finish”,eclipse开始安装adt插件。稍稍等几分钟,adt插件安装完成再配置相应环境变量即可进行android软件开发了。第二章 可行性研究和需求分析2.1 可行性研究一个项目的开发需要仔细分析,看它在目前的情况下是否可行,如果一个项目开发具有很好的背景和意义,但是在经济上或者是技术上是不可行的,那么它也只能称之为不能实现的项目。通过参照现有相似的其他网站的使用效果和分析实例进行可行性2研究,主要从以下四个方面进行讨论。2.1.1 技术可行性本次开发的android二维码扫描识别软件,用
26、户通过手机对qrcode二维码进行拍照解码识别并且显示二维码隐藏的信息,如果二维码为“http:/”,则打开手机浏览器直接上网;当发现为“wtai:/”或“tel:”规范,则调用手机拨打电话;而若未发现任何标准规范,则显示条形码的文字。如果拍照的图片不是qrcode二维码条形码或者程序无法识别,则不作任何处理。首先我们需要借助一个第三方的库函数qrcode.jar.然后我们可以通过手机照相机获取二维码图片,然后将其送往qrcode的函数进行解码,对比我们的omia规范,即可实现,因此在技术上可行。2.1.2 经济可行性二维码在国内应用引起众多用户群体的兴趣,国内许多厂商已经开始致力于二维码的研
27、究,设备开发与应用系统的应用推广及新市场的培育,投资方很看好这个项目,在资金方面没有问题,所以在经济上可行。2.1.3 操作可行性通过对android二维码扫描识别的研究,本系统能满足投资方的基本要求,同时由于本系统只需要有一台android手机即可对qrcode二维码进行扫描识别、在操作方面可行。2.1.4 社会可行性本软件可以让用户通过手机对一些产品上的二维码进行扫描识别,从而查看该产品的真伪。对社会帮助很大。根据以上几个方面的研究分析,android二维码的扫描识别在技术上可行、经济方面可行、操作方面可行、法律方面也是可行的,可得出结论:应该立即进行本项目的开发。2.2 需求分析需求分析
28、是软件定义的最后一个阶段,它的基本任务是回答“系统必须做什么”这个问题。需求分析的任务不是确定系统怎样完成他的工作,而仅仅是确定系统完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。可行性研究阶段产生的文档,是需求分析的出发点。从需求分析中已经划分出系统必须完成的许多基本功能,系统分析员将仔细研究这些功能并进一步将它们具体化。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。因此,必须用行之有效的方法对软件需求进行严格的审查验证。本系统的实现要考虑到很多方面的因素,因此要求的方法和技术要相应的有些多。具体来说,在开发过程中,要熟悉qrcode二维码解码和图像处理的
29、方法,能熟练运用java语言,还要懂得软件工程技术和系统测试技术。由于此系统的开发是在xp环境下借助jdk、eclipse、adt和sdk完成的,所以还应熟练使用xp和这些开发工具。2.2.1 系统功能需求1、相机预览需求此二维码识别系统必须能够调用手机上的照相机才能获取二维码的图像,因此需要一个相机预览功能,之后才能获取我们的二维码图片。2、关闭相机预览需求此系统既然要打开手机照相机,当然也能够关闭相机预览功能。3、图像处理和拍照解码需求既然此系统是要对二维码识别,我们通过相机预览后即可进行拍照截取图片,然后对图片进行处理,同时需要对二维码解码,因此需要有图像处理和解码的功能。4、调用浏览器
30、功能当我们二维码隐藏的是一个网站信息时,我们需要访问该网站,那么我们这时候需要调用我们手机浏览器功能。5、调用手机拨打电话功能当我们二维码隐藏的是一个电话号码时,这个时候我们需要调用我们手机拨打电话功能。6、其他功能显示文本功能:当二维码隐藏的只是一些文本信息的时候能够文本信息显示出来。2.2.2 系统功能结构图系统结构图是对软件系统结构的总体设计的图形显示,在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系,这就是功能设计。在设计阶段,基于这个功能的层次结构把各个部分组合起来成为系统。如图2.1所示。图2.1 系统
31、功能结构图2.2.3 系统用例图1、系统用户用例图用例图就是由主角、用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。通过上面对系统的分析即可得到系统的用例图,如图2.2所示。图2.2 系统用例图2、相机预览用例:调用手机照相机初始化相机模式。3、关闭相机用例:关闭手机照相机。4、拍照解码用例:通过手机照相机把二维码图片拍下来然后再送入系统解码。(1)调用浏览器用例:如果二维码信息隐藏的是以“http:/”开头的网址,那么手机便调用默认浏览器浏览该网站。(2)调用拨打电话功能用例:如果二维码信息隐藏的是以“tel:”或者是“wtai:/”开头的电话号码,那么手机直接调用拨打电话功能。
32、(3)显示文本信息用例:如果二维码信息只是包含一些文本信息,那么直接显示。2.2.4 系统活动图活动图(activity diagram,动态图)是阐明了业务用例实现的工作流程。业务用例工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。系统的活动图如图2.3所示。图2.3 系统活动图2.3 技术需求android二维码扫描系统是一个综合性比较强的题目,它需要在学校学习多方面知识,具体的几个主要技术要求如下:1、androi
33、d技术android开发之前呢,需要配置android开发环境。首先,android开发所需要的开发包和工具,以及获得它们的方式;其次,如何正确安装和配置这些开发包;最后,为了测试安装的开发环境,创建了第一个android项目-hello android,并在模拟器上运行和调试该程序,并且将该应用程序安装到android手机上。2、照相机实现技术在了解了android开发的过程之后需要学习android怎样进行照相。android应用提供了camera来控制拍照,使用camera进行拍照需要按照如下步骤进行即可.调用camera的open()方法打开照相机。调用camera和getparame
34、ters()方法获取拍照参数。该方法返回一个camera. parameters对象。调用camera. parameters对象方法设置相机参数。调用camera的setparameters(),并将camera. parameters对象作为参数传入,这样即可对相机的拍照参数进行控制。调用camera的startpreview()方法开始预览取景,在预览取景之前需要调用camera的setpreviewdisplay(surfaceholder holder)方法设置使用哪一个surfaceview来显示取景图片。调用camera的takepicture()方法进行拍照。3、二维码图片处理
35、技术首先二维码图片是图片的一种,当拍摄下来时需要将该图片送往解码函数解码,因此需要获取预览中图片,在这里用的是bitmap这个类。4、二维码解码技术将预览画面中的二维码图片送到我们的解码函数对二维码进行解码,因此需要应用android另外的一个jar包。这个系统主要是对二维码的一种qrcode进行解码,因此这里需要引用sourceforge.jp里的qrcode项目。2.4 性能需求android二维码的扫描识别系统性能方面的要求主要体现在以下几个方面: 1、时间需求本系统需要对二维码进行准确迅速的识别,所以对系统的时间要求更为严格。2、系统界面需求软件界面直观、简洁,人机交互性强。第三章 系
36、统总体设计3.1 系统总体设计目标经过可行性研究和需求分析阶段的工作,已经清楚系统必须完成的工作,下面的工作就应该是决定“如何做”的问题。概要设计的基本目的就是“概括地说系统应该如何实现?”通过该阶段的工作将划分出系统的物理元素程序、文件、数据库、文档等,另一方面的主要工作是设计软件的结构,即确定系统都由哪些模块组成及模块之间的相互关系。3.2 系统概要设计概要设计的主要任务是设计软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,
37、概要设计建立的是目标系统的逻辑模型,与计算机无关。总体设计包括系统模块结构设计和计算机物理系统的配置方案设计。android二维码扫描识别系统需要调用我们android手机的照相机,通过onpicturetaken函数二维码图片处理成位图,而且将位图在imageview中显示出来,然后再对位图进行译码,按照qrcode二维码生成的方式解码成字符型,qrcode遵循omia规范,如果二维码隐藏信息是一个网址那么调用浏览器访问该网站,如果二维码隐藏的信息是一个电话号码,那么调用手机拨打电话功能,如果该二维码隐藏的信息是普通的文本信息,那么显示出文本信息即可,若不是qrcode二维码不做任何操作。3
38、.2.1 系统模块结构设计系统模块结构设计的任务是划分子系统,然后确定子系统的模块结构,并画出模块结构图。在这个过程中必须考虑以下几个问题:如何将一个系统划分成多个子系统;每个子系统如何划分成多个模块;如何确定子系统之间、模块之间传送的数据及其调用关系;如何评价并改进模块结构的质量。3.2.2 计算机物理系统配置方案设计在进行总体设计时,还要进行计算机物理系统具体配置方案的设计,要解决计算机软硬件系统的配置、通信网络系统的配置等问题。计算机物理系统具体配置方案要经过用户单位和领导部门的同意才可进行实施。开发管理信息系统的大量经验教训说明,选择计算机软硬件设备不能光看广告或资料介绍,必须进行充分
39、的调查研究,最好应向使用过该软硬件设备的单位了解运行情况及优缺点,并征求有关专家的意见,然后进行论证,最后写出计算机物理系统配置方案报告。从我国的实际情况看,不少单位是先买计算机然后决定开发。这种不科学的、盲目的做法是不可取的,它会造成极大浪费。因为,计算机更新换代是非常快的,就是在开发初期和在开发的中后期系统实施阶段购买计算机设备,价格差别就会很大。因此,在开发管理信息系统过程中应在系统设计的总体设计阶段才具体设计计算机物理系统的配置方案。3.4 系统功能模块系统总体功能有以下几个方面:1、相机预览功能;2、关闭相机功能;3、拍照解码:(1)调用浏览器:如果二维码信息隐藏的是以“http:/
40、”开头的网址,那么手机便调用默认浏览器浏览该网址。(2)调用拨打电话功能:如果二维码信息隐藏的事以“tel:”或者是“wtai:”开头的电话号码,那么手机直接调用拨打电话功能。(3)显示文本信息:如果二维码信息只是包含一些文本信息,那么直接显示。3.3.1 系统总体功能模块通过上面的对系统的总体功能模块的分析,便可以得出系统总体功能模块图。系统总体功能模块图如图3.1所示。图3.1 系统总体功能模块图3.3.2 拍照解码功能模块在整个系统模块中最重要的模块是拍照解码功能,因此把这个模块单独分析,将它的功能进行分析如图3.2所示。图3.2 拍照解码功能模块图第四章 系统详细设计4.1 系统流程图
41、系统流程图(system flowchart)是描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。本系统流程图如图4.1所示。图4.1 系统流程图4.2 图片处理过程图首先图片的格式必须是jpeg格式的图片,通过照相机预览到二维码图片之后,需要对该图片拍下来,由于qrcode二维码是按照一定规则以矩阵的形式生成的,所以拍照截取到图片之后需要译码字节数组,将字节数组译码成位图,并将位图显示在imageview上,然后通过decodeqrimage函数将此位图送往系统自带的译码函数译码成
42、字符串,最后判断取出的字符串是否符合omia所规范的规则。图片处理过程图如图4.2所示。图4.2 图片处理过程图4.3 界面设计界面设计是人与机器之间传递和交换信息的媒介,一个好的界面是很重要的。它主要是站在用户角度考虑,因此界面的设计要人性化、简洁、清楚,还要有安全性和灵活性。此系统功能整体上可以分为三个部分。第一部分是相机预览显示部分,这部分用一个surfaceview来实现;第二部分是整个系统操作部分,分为三个按钮,第一个按钮为相机预览按钮,第二个按钮为关闭相机按钮,第三个为拍照解码按钮并且为各自按钮设置监听器并绑定;第三部分是显示拍照截取的二维码图片,在这儿我们用imageview视图
43、来显示。具体系统界面如图4.3所示。图4.3 系统界面第五章 系统编码实现5.1 基本编码设置从详细设计我们已经知道系统分为三部分,因此我们设置一个变量bifpreview来控制相机是否为预览模式,变量初始化为private boolean bifpreview = false,及设置相机预览模式为false。因为要调用手机相机和拨打电话功能,因此在我们的androidmanifest.xml文件中应该加上相机权限和拨打电话权限语句:<uses-permission android:name="android.permission.camera"/><us
44、es-permission android:name="android.permission.call_phone"/>对于布局文件来说,我们分为三层,第一层是拍照预览部分,用surfaceview实现;第二部分是三个按钮,添加三个按钮组件即可实现;第三部分是显示拍照截取的图片,我们用imageview来实现。对布局来说,每一层都是一个线性布局linearlayout。布局文件代码如下所示:<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:and
45、roid=" android:background="drawable/white" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal"> <surfaceview android:id="+id/msurfaceview1&qu
46、ot; android:visibility="visible" android:layout_width="160px" android:layout_height="120px" android:layout_gravity="center_horizontal" > </surfaceview> <linearlayout android:orientation="horizontal" android:layout_width="wrap_content
47、" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" > <button android:id="+id/mybutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="string/str_button1"/>
48、; <button android:id="+id/mybutton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="string/str_button2"/> <button android:id="+id/mybutton3" android:layout_width="wrap_content" android:layout
49、_height="wrap_content" android:text="string/str_take_picture"/> </linearlayout> <imageview android:id="+id/myimageview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /&
50、gt;</linearlayout>5.2 相机预览实现相机预览,用于开启手机照相机。我们用一个按钮实现该功能,添加一个按钮并且设置并绑定监听器。在监听器里面我用一个initcamera()函数实现,函数调用相机的open方法即可实现预览功能同时将变量bifpreview设置为true。当然我们要取得二维码,因此我们要不活图片,我们需要设置图片的格式和一些参数。调用相机代码如下:private void initcamera() if (!bifpreview) /* 若相机非在预览模式,则开启相机 */try mcamera01 = camera.open(); catch (e
51、xception e) log.e(tag, e.getmessage();设置图片参数及相关代码如下:mcamera01.setpreviewdisplay(msurfaceholder01);/* 建立camera.parameters物件 */camera.parameters parameters = mcamera01.getparameters();/* 设定相片格式为jpeg格式*/parameters.setpictureformat(pixelformat.jpeg);list<camera.size> s = parameters.getsupportedpre
52、viewsizes();其实现如图5.1所示:图5.1 相机预览5.3 关闭相机实现我们能调用手机相机,当然我们也可以关机手机相机。这里同样用一个按钮并且设置并绑定监听器实现,在监听器里面只需要调用相机的stoppreview()方法即可关闭相机,同时我们要释放相机资源将预览变量bifpreview设置为false。代码如下:private void resetcamera() if (mcamera01 != null && bifpreview) try mcamera01.stoppreview();/* 释放camera对象 */mcamera01.release();
53、bifpreview = false; catch (exception e) e.printstacktrace();其实现如下图5.2所示:图5.2 关闭相机5.4 拍照解码实现本系统的目的就是要将二维码识别出来知道里面所隐藏的信息,因此我们需要一个拍照解码的功能。同样使用一个按钮,设置并绑定监听器,监听器里面通过takepicture()函数调用相机的takepicture,takepicture方法调用一个jpegcallback回调函数专门处理jpeg格式的图片,调用onpicturetaken方法将二维码字节数组通过decodebytearray方法译码成位图,将位图显示在imag
54、eview上,再将位图通过decodeqrimage函数译码成字符串,对字符串进行比对实现其相关操作。代码如下:private picturecallback jpegcallback = new picturecallback() public void onpicturetaken(byte _data, camera _camera) / todo handle jpeg image datatry /* onpicturetaken传入的第一个参数即为相片的byte */bitmap bm = null;bm = bitmapfactory.decodebytearray(_data,
55、 0, _data.length);int resizewidth = 160;int resizeheight = 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);/* 建立新的bitm
56、ap对象 */bitmap resizedbitmap = bitmap.createbitmap(bm, 0, 0,bm.getwidth(), bm.getheight(), matrix, true);/* 撷取4:3的图档的置中红色框部分100x100像素 */bitmap resizedbitmapsquare = bitmap.createbitmap(resizedbitmap,30, 10, 100, 100);/* 将拍照的图文件以imageview显示出来 */mimageview01.setimagebitmap(resizedbitmapsquare);/* 将传入的图文件译码成字符串 */string strqr2 = deco
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国平行型闭门器数据监测研究报告
- 2024至2030年中国奥扎格雷钠葡萄糖注射液数据监测研究报告
- 2024至2030年中国增强聚丙烯管道视镜数据监测研究报告
- 2024至2030年中国单面汗布数据监测研究报告
- 2024年中国工艺品彩绘漆市场调查研究报告
- 2024年中国挡板警示牌市场调查研究报告
- 2024年中国宾馆大堂防尘地垫市场调查研究报告
- 2024年临沂道路运输客运从业资格证考试模拟试题
- 2024年铜仁道路运输从业资格证b2
- 2024年黑龙江客运考试应用能力试题及答案详解图片
- DB41-T 2689-2024 水利工程施工图设计文件编制规范
- 2024年刑法知识考试题库及答案(全优)
- 【学案】夏商周时期的科技与文化导学案 2024~2025学年统编版七年级历史上册
- 四年级上册信息技术人教版第10课设动作与超链接(教案)
- 空气动力学数值方法:有限体积法(FVM):离散化技术与数值通量
- 北师大版九年级物理全一册电子课本教材
- 合作安全责任协议书范本
- 2024-2030年中国船舶电子导航系统行业市场发展趋势与前景展望战略分析报告
- 生产管理培训课件
- 2024秋八年级数学上册 第十四章 整式的乘法与因式分解14.1 整式的乘法 4整式的乘法-单项式与单项式相乘教学设计(新版)新人教版
- 小学语文整本书阅读《夏洛的网》导读课公开课一等奖创新教学设计
评论
0/150
提交评论