基于Android的二维码识别系统的研究与实现——毕业论文_第1页
基于Android的二维码识别系统的研究与实现——毕业论文_第2页
基于Android的二维码识别系统的研究与实现——毕业论文_第3页
基于Android的二维码识别系统的研究与实现——毕业论文_第4页
基于Android的二维码识别系统的研究与实现——毕业论文_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

XXXX本科生毕业设计(论文)学院(系): XX 专 业: XX 学 生: XX 指导教师: XX XX 完成日期 年 月XXX本科生毕业设计(论文)基于Android的二维码识别系统的研究与实现 Research and Implementation of QRcode Recognition System Based on Android总 计:毕业设计(论文) 31页表 格: 5个图 片: 20个毕业设计(论文)网: QQ:306826066XXXXX 本 科 毕 业 设 计(论文)基于Android的二维码识别系统的研究与实现 Research and Implementation of QRcode Recognition System Based on Android学 院(系): XXX 专 业: XXX 学 生 姓 名: XXX 学 号: XXX指导教师(职称): XXX 指导教师(职称): XXX 评 阅 教 师: XXX 完 成 日 期: 基于Android的二维码识别系统的研究与实现软件工程 XXX摘 要 一维条码在生产和生活的各个方面得到了广泛的应用,极大的提高了生产率,但是一维条码本身的缺点:信息量小、依赖数据库等也日益的现露出来。二维条码本身具有高容量、高密度、纠错能力强、安全强度高等特点,使得二维条码作为信息的载体在信息自动化领域发挥着越来越重要的作用。QR码作为快速响应二维码,以其独特的优势,在汉语国家发展迅速。目前,国内QR码的识别大多是基于PC的,而且对于光照不均、背景较复杂的二维码图像,其识别速度和准确度也有待提高。另外,Android平台上当前流行的二维码识别软件普遍存在着扫描速度慢,需要精确对焦等缺点,而且大都是由国外开发。鉴于此,深入研究QRCode码的准确与快速识别算法及其在Android手机平台上的软件实现具有十分重要的意义。本课题分析研究QRCode二维码编解码原理与图像预处理算法,根据Android嵌入式平台的特点,设计出一种嵌入式设备中的QRCode二维码别软件,具有很强的实用性。本文首先分析研究了QR码结构的基本特征、编解码理论、RS纠错算法和二维码图像预处理算法,然后在当前预处理算法的基础上,基于QR码图像的特点,进行程序的编写。课题利用Android平台,设计出一套QR码的识别系统,系统首先在模拟器中运行,然后下载到手机中进行测试。最后论文给出了测试结果。关键词 Android;条码;二维码;识别 Research and Implementation of QRcode Recognition System Based on AndroidSoftware Engineering MajorXXXAbstract: One-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 so 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 barcode, develops rapidly in Chinese speaking countries with its unique advantages. At present, in our nation, recognition of QRCode mostly bases on PC, and especially for QR image with uneven illumination or complicated background, the recognition speed and accuracy are not so good. Moreover, the popular barcode recognition software on android platform has some shortcomings prevalently, such as slow speed of recognition, etc. This article studies the QRCode codec theory and barcode image preprocessing algorithms, and then puts forward some optimization algorithms based on embedded android mobile phone system, and designs a QRCode recognition system. At first, this thesis makes a deep research on QRCode features, codec theory, RS error correction algorithm and 2-D barcode image preprocessing algorithms. And then in the current pretreatment algorithm, and on the basis of the characteristics of the QR code based on image, the writing of the program. Then, a QRCode recognition system is implemented on Android platform. This system firstly is tested on emulator and then downloaded on HTC mobile phone. At last, thesis gives the test results.Key words: Android;Barcode;Two-dimension code;Recognition目 录1 Android系统开发背景与意义11.1 Android系统平台的出现11.2 Android系统的发展11.3 Android系统架构的介绍11.4 Android开放系统31.5 Android系统的特点32 二维码识别系统背景介绍32.1 二维码识别系统背景32.1.1 二维码技术产生的背景32.1.2 二维码分类及其特点42.1.3 二维码技术国内外的发展52.2 二维码技术研究的意义和应用62.2.1 二维码技术的应用62.2.2 二维码研究的意义73 需求分析83.1 系统需求分析83.1.1 课题可行性分析83.1.2 课题功能需求分析93.1.3 课题功能需求分析说明93.1.4 系统界面需求93.1.5 系统性能需求93.1.6 运行环境需求93.2 系统需要解决的问题93.3 系统关键技术分析103.4 本章总结104 系统设计104.1 课题需要解决的问题104.1.1 界面布局104.1.2 条形码二维码解码功能104.2 系统总体设计114.2.1 课题功能框架114.2.2 课题总体流程图124.2.3 数据库的概念结构设计134.3 系统详细设计134.3.1 系统模块设计134.3.2 系统界面详细设计164.3.3 数据库详细设计164.4 本章小结175 编码与实现175.1 开发环境搭配175.1.1 软件下载安装175.1.2 配置环境变量175.2 二维码识别系统功能实现175.2.1 二维码识别系统界面设计175.2.2 二维码功能的设计与实现195.2.3 查看扫描历史记录功能实现215.2.4 分享功能实现225.3 本章小结226 系统测试与运行226.1 测试目的226.2 测试环境236.3 测试的流程和测试236.3.1 基于Android模拟器的运行测试236.3.2 基于Android移动设备的运行测试246.4 本章小结27结束语28参考文献29附录30致谢311 Android系统开发背景与意义1.1 Android系统平台的出现Android操作系统最初是由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资。并组建开放手机联盟开发改良,后来Google公司进军移动领域,逐渐扩展到平板电脑及其他领域上。直到2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成。这一联盟将支持谷歌发布的手机操作系统以及应用软件,并共同开发Android系统的开放源代码。这一开放平台后来被人们称之为“Android工程”。第一款搭载 Android 系统的手机是 2008 年 9 月由 T-Mobile 发布的 G1,它拥有 GPS 功能,3.1M 摄像头,以及一系列的 Google 应用。G1 的面市,正式拉开了 Google 以及整个移动业界激动人心的大冒险的序幕,Android系统这才真正进入智能手机舞台。1.2 Android系统的发展随着Android平台的推出到现在的普遍推广,其发展的速度可以称之为神速。从最初的平台的发布,许多的手机巨头都看到了Android的巨大前景并纷纷加入Android平台的研究与开发。后来随着Android各版本的相继发布及其开放性,Android越来越受欢迎。随着Android2.0智能手机操作系统的正式发布,Android已经相当的火热。随后Google相继宣布与雅虎、亚马逊等知名公司合作。截止到2012年,Google相继发布了android系统的一系列版本,每个新的版本不但向下兼容,而且也提供了新的功能,系统更加稳定。到2011年第一季度,Android在全球的市场份额首次最超越塞班系统,跃居全球第一。2012年2月数据,Android占据全球的智能手机操作系统市场的52.5%的份额,中国占有率为68.4%1。1.3 Android系统架构的介绍Android操作系统是一个开源的软件平台,基于Linux 内核,定义并实现了一套系统服务框架和图形用户接口。Android操作系统组成如图1-1所示:图1-1 Android系统架构从软件的角度来看,Android平台由Linux内核、系统库、Android运行时、应用程序框架以及应用程序共5部分构成。(1) Linux 内核(Linux Kernel),主要也就是操作系统的内核框架和硬件驱动。这也是Android平台的开放性、安全性的基础。所示就是Linux内核层为我们在软件层和硬件层建立的抽象层,如下图1-2所示:图1-2 Android系统内核(2)Android的系统库(Libraries),主要采用C/C+语言编写,为Android系统服务提供一些底层实现和一些函数库。(3)Android运行时(Android Runtime),主要就是提供一个Android虚拟机和虚拟机运行的一些类库。(4)应用程序框架(Application Framework),主要实现Android的系统框架和GUI。应用程序框架层包含了视图系统、内容提供器、窗口管理器、活动管理器、通知管理器、位置管理器、资源管理器、电话管理器和包管理器9大部分,如图1-3所示:图1-3 Android应用框架(5)应用程序(Applications),主要就是包含Android的一些常用的应用程序。这些应用程序包括邮件、短信、日历、地图、浏览器、联系人管理程序等,而这些程序也是基于Java程序语言编写的。1.4 Android开放系统我们可以从上面内容中可以发现Android是一个包括操作系统、中间件和关键应用的移动设备软件堆。Google的Android系统是一个完全开放的系统,也是一个完整的生态系统,分成了三个有机个体。(1) 源代码工程Open Source Project(2) 开发应用 Developer(3) 市场 Market1.5 Android系统的特点由于android系统的这三个有机个体的综合应用,Android系统具有5大特点:(1)开放性(2)应用程序无界性(3)平等条件创建应用程序(4)轻松嵌入网络(5)并行运行正是由于Android系统的这些特点,才使得Android系统有了如今的发展2。2 二维码识别系统背景介绍2.1 二维码识别系统背景2.1.1 二维码技术产生的背景条码技术自20世纪70年代初问世以来,发展十分迅速,仅仅20年时间,它已广泛应用于商业流通、仓储、医疗卫生、图书情报、邮政、铁路、交通运输、生产自动化管理等领域。条码技术的应用极大地提高了数据采集和信息处理的速度,改善了人们的工作和生活环境,提高了工作效率,并为管理的科学化和现代化做出了重要贡献。 二维条码技术是在一维条码无法满足实际应用需求的前提下产生的。由于受信息容量的限制,一维条码通常是对物品的标识,而不是对物品的描述。所谓对物品的标识,就是给某物品分配一个代码,代码以条码的形式标识在物品上,用来标识该物品以便自动扫描设备的识读,代码或一维条码本身不表示该产品的描述性信息。因此,在通用商品条码的应用系统中,对商品信息,如生产日期、价格等的描述必须依赖数据库的支持。在没有预先建立商品数据库或不便联网的地方,一维条码表示汉字和图像信息几乎是不可能的,即使可以表示,也显得十分不便且效率很低。随着现代高新技术的发展,迫切需要用条码在有限的几何空间内表示更多的信息,以满足千变万化的信息表示的需要3。2.1.2 二维码分类及其特点二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码。堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”, 用“空”表示二进制“0”,由“点”和“空”的排列组成代码。(1) 堆叠式/行排式二维码堆叠式/行排式二维条码(又称堆积式二维条码或层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code 16K、Code 49、PDF417等。其中的CODE49,是1987年由 David Allair 博士研制,Intermec 公司推出的第一个二维码。(2) 矩阵式二维码短阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:Code One、Maxi Code、QR Code、Data Matrix等。除了这些常见的二维码之外,还有Vericode条码、CP条码、Codablock F条码、田字码、 Ultracode条码,Aztec条码。下图列举了国内外二维码制及符号。下图2-1列举了国内外二维码制及符号。图2-1二维码分类2.1.3 二维码技术国内外的发展国外对二维码技术的研究始于20世纪80年代末,已研制出多种码制,全球现有的一维码、二维码多达250种以上,到目前二维码已经是一项非常成熟的技术,其中常见的有PDF417,QRCode,Code49,Code16K,CodeOne等20余种,并有许多国家开始应用这项技术。二维码技术标准在全球范围得到了应用和推广。美国讯宝科技公司(Symbol)和日本电装公司(Denso)都是二维码技术的佼佼者。在当今生活中我们经常见到一维条码,二维条码的应用还刚刚起步,随着带摄像头的智能手机普及,二维条码的应用渐渐来到我们的日常生活中。手机二维码的技术是指以二维码标准为核心,将手机作为载体,而展开的码制编码、译码、识别、被识别相结合的综合性技术。在众多的二维码技术标准中,QR(Quickly Response)码与DM(Data Matrix)码应用最为广泛。DM码产生于1989年,包括NASA、USDoD两种标准。DM码主要采用了复杂的纠错码技术,使得该编码具有超强的抗污染能力。目前DM码在韩国市场上属于手机二维码的主流技术。QR码是由日本Denso公司于1994年研制的一种矩阵二维码符号,该二维码已经成为日本主流的手机二维码技术标准,它的最大特点就是可高效地表示汉字。日本是最早开始使用二维码的国家。目前市场上已有很成熟的QR手机二维码市场应用,QR条形码在日本得到相当规模的应用,日本的海报、游览手册、传单、折扣券、电子票证,甚至连树上都贴着二维码,成为日本手机用户登录网站以及获得广告商品信息的非常便捷的方式。近几年来,日本二维码手机市场的占有率在逐年上升,从2002年的0.8%上升到了2005年的52.6%,2006年日本二维码手机市场占有率达到70%左右。日本手机二维码的运营模式是开放的,二维码扫描是手机上的一项功能,而不是运营商提供的一种服务。二维码的技术商将解码软件提供给运营商后,按手机的装机量收取版权费,运营商则将软件的解码完全公开,用户可以进行任意编码4。在我国,GM 二维码网格矩阵码(GM)SJ/T11349-2006和CM二维码紧密矩阵码(CM)SJ/T11350-2006标准是由原国家信息产业部于2006年5月25日所颁布的两项国产行业推荐标准。此两项标准于2006年5月30日起实施。GM码其全称为网格码(Grid Matrix Code)是一种正方形的二维码码制,该码制的码图由正方形宏模块组成,每个宏模块由6乘6个正方形单元模块组成。网格码可以编码存储一定量的数据并提供5个用户可选的纠错等级。CM码意为“紧密矩阵”,是英文Compact Matrix的缩写。码图采用齿孔定位技术和图像分段技术,通过分析齿孔定位信息和分段信息可快速完成二维码图像的识别和处理。当前,我国二维码产业还处于成长期,总体来看,我国的条码标准体系尚显单薄,具有自主知识产权的二维码核心技术不多,二维码技术标准的应用和推广也存在一些困难。但是,各方面条件的逐渐成熟,正推动整个产业的发展提速。目前,几方面有利因素是我国二维码产业发展的重要驱动力:首先,二维码自身的优势和价值使将其在全球范围内得到更广泛更深入的应用。其次,作为物联网产业的重要技术,二维码将成为优先受益市场,背景行业的发展将对二维码产业的发展起到推波助澜的作用。另外,二维码与手机的结合,将开辟二维码的更广阔的市场空间。经过了近几年的技术、应用推广和产业链的不断壮大,我国二维码市场日渐繁荣,未来2-3年将保持高速的成长态势5。2.2 二维码技术研究的意义和应用2.2.1 二维码技术的应用二维码可以被广泛应用于各个行业,如,物流业、生产制造业、交通、安防、票证等行业,由于各行业特性不同,二维码被应用于不同行业的不同工作流程中。目前,二维码在应用比较广泛的几个行业的具体应用如下:1.物流行业应用二维码在物流行业的应用主要包括四个环节。第一,入库管理:入库时识读商品上的二维码标签,同时录入商品的存放信息,将商品的特性信息及存放信息一同存入数据库,存储时进行检查,看是否是重复录入。第二,出库管理:产品出库时,要扫描商品上的二维码,对出库商品的信息进行确认,同时更改其库存状态。第三,仓库内部管理:在库存管理中,一方面二维码可用于存货盘点,另一方面二维码可用于出库备货。第四,货物配送:配送前将配送商品资料和客户订单资料下载到移动终端中,到达配送客户后,打开移动终端,调出客户相应的订单,然后根据订单情况挑选货物并验证其条码标签,确认配送完一个客户的货物后,移动终端会自动校验配送情况,并做出相应的提示。2.生产制造业以食品的生产为例,二维码在食品的生产与流通过程中的应用主要在三个环节。第一,原材料信息录入与核实:原材料供应商在向食品厂家提供原材料时,将原材料的原始生产数据制造日起、食用期限、原产地、生产者、遗传基因组合的有无、使用的药剂等信息录入到二维码中并打印带有二维码的标签,粘贴在包装箱上后交与食品厂家。第二,生产配方信息录入与核实:在根据配方进行分包的原材料上粘贴带有二维码的标签,其中含有原材料名称、重量、投入顺序、原材料号码等信息。第三,成品信息录入与查询:在原材料投入后的各个检验工序,使用数据采集器录入检验数据;将数据采集器中记录的数据上传到电脑中,生成生产原始数据,使用该数据库,在互联网上向消费者公布产品的原材料信息。3.安防类应用由于二维码具有可读而不可改写的特性,也被广泛应用于证卡的管理。将持证人的姓名、单位、证件号码、血型、照片、指纹等重要信息进行编码,并且通过多种加密方式对数据进行加密,可有效地解决证件的自动录入及防伪问题。此外,证件的机器识读能力和防伪能力是新一代证件的标志。4.交通管理应用二维码在交通管理中的应用主要应用环节有:行车证驾驶证管理、车辆的年审文件、车辆的随车信息、车辆违章处罚、车辆监控网络。行车证驾驶证管理:采用印制有二维码行车证,将有关车辆上的基本信息,包括车驾号、发动机号、车型、颜色等车辆的基本信息转化保存在二维码中,信息的数字化和网络化便于管理部门的实时监控与管理。车辆的年审文件:在自动检测年审文件的过程中实现通过确认采用二维码自动记录的方式,保证通过每个检验程序的信息输入自动化。车辆的随车信息:在随车的年检等标志上将车辆的有关信息,包括通过年检时的技术性能参数,年检时间,年检机构、年检审核人员等信息印制在标志的二维码上,以便随时查验核实。车辆违章处罚:交警可通过二维码掌上识读设备对违章驾驶员的证件上的二维码进行识读,系统自动将其码中的相关资料和违章情况记录到掌上设备的数据库中,再进一步通过联网,实现违章信息与中心数据库信息的交换,实现全网的监控与管理。2.2.2 二维码研究的意义维码目前主要是在行业或企业中应用,对于消费者也许我们没有注意它,但二维码与手机结合拓展了二维码的应用空间,最显著的特征,使得二维码离消费者越来越近。技术正应用到我们的生活中,二维码不再向是一个黑白条块/方快,它将成为新的信息沟通平台,为企业和个人带来更多的应用价值。(1)促进跨媒体营销发展手机二维码促进了媒体、通信和互联网的融合,带来一个全新的跨媒体营销平台。使得平面媒体、移动运营商可以充分发挥各自的媒体优势,为企业开辟新营销服务;对于平面媒体延伸了媒体空间、带来新的广告形式,对于广大企业,利用该平台,开创新的营销模式、增进与客户的互动、提升客户服务。二维码作为一种全新的沟通方式,在时间、空间、媒介三个维度上实现企业与消费者的沟通。比如一个简单的商品广告,消费者通过扫描旁边的二维码就可以获得产品详细介绍、经销商名录、成功案例、其他产品系列等信息,甚至通过二维码登录广告商的WAP网站。(2)促进社会和企业资源的节约,提升社会和经济效益。手机二维码在应用到电子票务降低票据制作成本、减少配送成本、提升票务防伪和检验能力;提升客户服务质量、有利于开展针对性的营销;手机二维码在应用到电子折扣上,提升促销效果、增进与客户的互动、降低折扣券制作成本等;手机二维码用在防伪盗版上,可以有效打击防伪盗版,保护消费者利益,为企业创造效益。手机二维码用于交通违章处理上,可以大大提高工作效率。(3)为手机用户带来精彩体验 手机二维码的发展简化手机用户信息输入,提升用户获取信息的能力、拓展手机上网入口,带给我们更多精彩体验6。3 需求分析3.1 系统需求分析3.1.1 课题可行性分析随着Android的快速发展和不断完善,Android的应用是越发的广泛。所以基于Android平台的手机小程序也是越来越多、越来越受欢迎。Java是一种跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立。随着Android移动设备大部分都带有自动调焦作用,这就对Android二维码系统的应用带来了更广阔的市场。又各国对二维码的发展和研究,也产生了很多稳定和安全的二维码系统,并且Google根据每种条形码二维码的标准开发了开源项目Zxing。根据Zxing核心库的基础,该系统可以根据核心库提供的二维码标准,依据编码解码原理实该项目的条码、二维码识别。这对二维码的开发和研究带来了更多发展前景7。3.1.2 课题功能需求分析本次的毕业设计主要就是在基于Android平台下设计并开发一个条码二维码识别系统。运用当前Google提供的Android SDK来以及开源项目Zxing核心库编码解码原理为基础,来实现二位码识别系统。本课题的总体的功能业务可以主要描述为以下几点:(1) 主界面上显示出主要的功能(2) 进行一维条行码的识别(3) 进行二维QR码的识别(4) 进行二维DM矩阵码识别(5) 对二维码进行分享(6) 软件使用帮助3.1.3 课题功能需求分析说明根据对本课题的主要需求的分析做如下说明:(1) 主界面上主要就是显示该系统所能够进行的动作和所能实现的功能,也是用户进行软件操作的主要界面。(2) 本软件最强大的功能是实现当前主流的条码、QR码和DM矩阵码的识别功能。(3) 可以分享二维码。(4) 对扫描历史进行查看。(5) 对软件使用提供帮助。3.1.4 系统界面需求本系统的界面需要布局合理、美观,需要体现系统的友好性。3.1.5 系统性能需求本系统需要扫描速度快、安全性高、处理结果速度快,尽可能为用户节省时间。3.1.6 运行环境需求系统运行环境:基于Android操作系统移动设备系统支持版本:Android 1.5及以上版本开发环境:Eclipse 3.5 ADT16-16.0.1 JDK-7u3-windows-i5863.2 系统需要解决的问题 开发基于Android二维码识别系统需要解决一下几个问题:(1)数据库问题本系统需要用到SQLite轻量级数据库。用SQLite数据库来实现历史记录数据的存放。(2)布局问题在Android平台下开发该应用软件,一个非常重要问题的是要解决布局问题。android平台中采用的是xml文件来设置布局。SDK提供了包括图片、文字显示、以及xml文件的设计方法。该系统需要用到FrameLayout布局来调用摄像头。3.3 系统关键技术分析(1)SQLite轻量级数据库的使用。 该系统需要使用到Android自身的数据库系统,使用SQLite数据创建存放扫描结果的历史记录表。(2)移动设备Camera摄像头的调用。该系统要是使用摄像头才能进行二维码的扫描和处理,通过摄像头来进行二维码图片数据的输入。3.4 本章总结通过对Android平台的架构的分析和对毕业设计课题的需求的分析,我们基本可以了解到该课题的主要功能。为下一阶段的设计的研究打下好的基础。4 系统设计4.1 课题需要解决的问题4.1.1 界面布局一个Android软件的好坏很大程度上并不是功能如何强大,而是友好易操作的界面的好坏。一个友好的界面不仅让用户更容易操作和使用软件,也让用户感觉到很舒服的感觉。Android系统正是考虑到这一点,为开发人员提供了强大的布局实现,并提供了很多布局方式包括:LinearLayout水平布局、FrameLayout框架布局、RelativeLayout相对布局、TableLayout表单布局和TAbWidget切换卡、AbsoluteLayout绝对布局。本软件需要用调用Camera来实现扫描功能,需要用到框架布局FrameLayout能重叠控件,实现“范围框”的效果。4.1.2 条形码二维码解码功能本系统是根据Google研究开源项目Zxing核心库为基础,通过二维码发布的标准,就是为了实现二维码扫描功能,当前最流行条形码,日韩所使用最多的QR码和美国的DM矩阵码。Zxing不仅对最主要的二维码扫描功能做了详细的分析,同时也实现了国际化的操作,针对不同国家,使用不同的语言,由于QRcode二维码的广泛应用且QRcode支持中文,所以在此我们主要使用QRcode二维码识别,语言为简体中文9。系统用例图如图4-1所示:图4-1 系统功能用例图4.2 系统总体设计4.2.1 课题功能框架基于Android二维码系统功能主要包括:一位条码扫描、二位QR码扫描、DM矩阵码扫描和分享二维码扫描。功能框架如图4-2所示:图4-2 系统功能模块图4.2.2 课题总体流程图启动模拟器,软件会自动运行到主界面,界面会自动变为横屏全屏模式,直接进行二维码扫描界面。当扫描完毕后,我们可以通过扫描的结果进行分享。本课题总体流程图如图4-3所示:图4-3 系统流程图上面主要讲解的是软件使用的流程,二维码识别系统通过摄像头来获取图片文件,然后通过图片预处理,然后进行解码,扫描解码流程图如图4-4所示:图4-4 解码过程图4.2.3 数据库的概念结构设计本课题需要创建一个存放扫描历史记录的数据库。数据库名称:barcode_scanner_history.db表名:history表中字段:ID_COL,TEXT_COL,FORMAT_COL,DISPLAY_COL,TIMESTAMP_COL说明:历史记录实体用来存放二维码查询结果,记录ID是表的主键,唯一标示一条记录。FORMAT_COL列是存放数据存储的格式。TIMESTAMP_COL是用来存放扫描的时间。DISPLAY_COL是用来存储解析值。TEXT_COL用来存放文本信息。、扫描时间、解析显示10。历史记录概念结构设计图如图4-5所示:图4-5 历史记录实体属性图4.3 系统详细设计4.3.1 系统模块设计(1) 二维码识别功能模块用户打开应用程序之后会进入主界面,然后就可以进行二维码扫描,将二维码的图片放于摄像头下面,摄像头会自动调焦,获取二维码图片,然后程序会进行图片解析,解析成功之后将结果显示在屏幕上。流程图如图4-6所示:图4-6 二维码识别功能流程图(2) 分享功能模块当用户点击menu菜单之后就会显示分享功能选项,点击之后出现分享联系人、应用程序选项,根据用户不同的选项程序会生成相应的二维码图片,然后其他的用户可以通过二维码扫面的方式尽享分享。分享功能模块的流程图如图4-7所示。图4-7 分享功能流程图图4-8 查看历史记录流程图(3) 历史记录功能模块当用户扫面完二维码之后,程序会自动保存到历史记录表当中,用户可以通过点击menu菜单找到历史记录选项,点击查看历史记录按钮之后,程序会自动弹出历史记录对话框,上面会直接显示扫描过的历史记录。接下来可以进行清除历史记录,发送历史记录操作。流程图如图4-8所示。4.3.2 系统界面详细设计(1) 主界面设计系统运行之后就会进入主界面,主界面直接进行扫面,在项目res文件中的layout中的新建一个capture.xml文件,并在里面添加扫描所用到的抽象布局来实现二维码图片获取界面,并设置结果集布局不可见,当扫描后设置结果集布局可见,获取图片的布局设置为不可见,从而来实现二维码识别功能。(2) 分享界面设计分享界面的按钮实现是在menu菜单中添加的,在运行程序以后我们通过点击menu菜单来实现分享功能,当点击分享按钮时,系统会调用分享功能的Activity来实现。(3) 历史记录界面设计查看历史记录的界面按钮实现首先也是在menu菜单中添加的,在运行程序以后我们通过点击menu菜单中的查看历史记录选项,然后我们一dialog提示框的方式来显示历史记录的显示。(4) 功能设置界面设计功能设置界面可以进行系统功能的设置,在项目res文件夹下新建一个xml文件,并进行preferences.xml内容的添加,包括是否选择震动、有无提示音和是否复制到剪切板等功能。(5) 帮助界面设计在开源项目中下载二维码扫描帮助页面,并在项目中的assets资源文件中新建一个html文件来存放帮助界面,里面包含了如何正确扫面二维码的页面以及如何在网页上生成二维码等界面。4.3.3 数据库详细设计本系统采用Android操作系统自带的内嵌小型数据库sqlte3作为后台数据库。历史记录表设计如表4-1所示:表4-1历史记录表字段名称字段类型长度是否为主键 说明Id_colinteger8是记录id号Text_colvarchar40否文本信息Format_colvarchar40否存储格式Display_colvarchar80否解析值Timastamp_coldatetime8否扫描时间4.4 本章小结本章主要根据系统分析,针对本课题进行了总体设计和详细设计,在完成以上总体设计和详细设计之后,至此系统设计阶段基本完成。5 编码与实现5.1 开发环境搭配5.1.1 软件下载安装(1) JDK下载安装(2) Eclipse IDE下载安装(3) Android SDK下载安装(4) ADT插件安装 注:开发Android应用程序,还需要用到ADT Plugin for Eclipse插件,也可以在Eclipse中网址安装,更利于开发android软件。5.1.2 配置环境变量(1) Java JDK环境变量配置(2) 搭配Android 系统的环境变量(3) AVD(Android virtual device)模拟器注:可以从Eclipse里面点击Android图标中来启动模拟器管理,同时我们也可以在Android SDK文件夹中直接点击运行AVD Manager。5.2 二维码识别系统功能实现5.2.1 二维码识别系统界面设计二维码识别系统启动时需要用调用Camera来实现扫描功能,需要用到框架布局FrameLayout能重叠控件,实现“范围框”的效果。在程序启动后会进入二维码捕捉界面,在res文件layout目录下创建capture.xml,在里面需要添加自定义的View以看到在XML里面用到了 ViewfinderView 自定义view 。所以新建一个View 的包,然后把:ViewfinderView 和ViewfinderResultPointCallback 靠到里面(记得对应修改XML里面的包)。在FrameLayout里面我们还需要加入存放result的控件,在扫描时需要将存放result结果的空间设置为不可见。实现代码如下: SurfaceView是整个界面的窗口,其中的ViewfinderView就是中间扫描的小窗口,其中的TextView是程序扫描的提示框,提示程序扫描时图片要放在窗口中间。该界面还包含了扫描结果的控件,在扫描时设置为不可见,当扫描出结果是将存放结果的控件设置为可见,上面扫描时的控件设置为不可见。下面的代码是存放结果的控件11。 效果图如图5-1所示:图5-1 主界面布局5.2.2 二维码功能的设计与实现(1) 二维码识别功能实现首先建立项目将启动Activity命名为CaptureActivity,并导入核心库。项目完成后我们为CaptureActivity建立布局文件res目录下capture.xml,并修改里面内容。在XML文档里面用到了ViewfinderView自定义View来获取条码二维码图片。然后打开CaptureActivity覆盖onCreate方法,代码如下:public void onCreate(Bundle icicle) super.onCreate(icicle); Window window = getWindow(); /设置屏幕保持亮度 window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.capture); /初始化 CameraManager /这里调用到的 CameraManager 类是控制摄像头的包里的类 CameraManager.init(getApplication(); viewfinderView = (ViewfinderView) findViewById(R.id.viewfinder_view); resultView = findViewById(R.id.result_view); statusView = (TextView) findViewById(R.id.status_view); handler = null; lastResult = null; hasSurface = false; historyManager = new HistoryManager(this); historyManager.trimHistory(); inactivityTimer = new InactivityTimer(this); /showHelpOnFirstLaunch(); 这里我们调用了CameraManager类,是控制摄像头的包里的类。我们需要把com.google.zxing.client.android.camera包导入我们建立的应用程序,另外我们还需要用到PlanarYUVLuminanceSource类。在使用调用Camera时,需要修改项目的配置文件,在manifest.xml中添加如下代码:用来说明程序运行特征,需要用到摄像头。接着我们覆盖onResume方法初始化摄像头,其中initCamera方法是用来初始化摄像头,如果排除了所有的error ,surfaceHolder.addCallback(this);表示让CaptureActivity实现其callback接口。解码:上面的步骤都是对摄像头的控制,而解码真正的工作入口是CaptureActivityHandler里面的。CaptureActivityHandler类中用到解码线程DecodeThread类。这里我们调用handleDecodeInternally方法来实现。private void handleDecodeInternally(Result rawResult, Bitmap barcode) statusView.setVisibility(View.GONE); viewfinderView.setVisibility(View.GONE); resultView.setVisibility(View.VISIBLE); ImageView barcodeImageView = (ImageView) findViewById(R.id.barcode_image_view); if (barcode = null) barcodeImageView.setImageBitmap(decodeResource(getResources(), R.drawable.launcher_icon); else barcodeImageView.setImageBitmap(barcode); TextView formatTextView = (TextView) findViewById(R.id.format_text_view);formatTextView.setText(rawResult.getBarcodeFormat().toString(); ResultHandler resultHandler = ResultHandlerFactory.makeResultHandler(this, rawResult); TextView typeTextView = (TextView) findViewById(R.id.type_text_view); typeTextView.setText(resultHandler.getType().toString(); DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); String formattedTime = formatter.format(new Date(rawResult.getTimestamp(); TextView timeTextView = (TextView) findViewById(R.id.time_text_view); timeTextView.setText(formattedTime);后返回结果,解码之后会自动将扫描的结果放进rawResult结果集里面12。扫描后结果会显示在屏幕上,如图5-2所示:图5-2 扫描结果5.2.3 查看扫描历史记录功能实现查看历史记录的功能就是从数据库历史记录表history中读取记录。在点击历史记录选项时,查询出内容的界面中, 实现过程:首先将历史记录选项添加到Menu菜单中,当历史记录选项被选择时,添加事件处理函数,系统会调用HistoryActivity类,里面包括数据库的创建,历史记录的插入,查询等操作。其实现界面如图5-3所示:图5-3 查询历史记录界面5.2.4 分享功能实现分享功能就是通过将手机中的书签、应用程序、联系人和剪切板生成二维码显示在手机上,然后其他人可以通过扫描二维码的方法来分享自己手机中的内容。在分享功能的界面中,当点击分享按钮后,就会出现分享的选项供用户选择。分享的二维码。实现过程:首先在onCreateMenu()函数中添加分享选项。然后在创建的添加选项onOptionsItemSelected()函数当中添加处理函数。当分享按钮被点击时,就会调用ShareActivity,然后在ShareActivity类中添加按钮点击事件,根据用户不同的选择来调用不同的函数。其实现界面如图5-4所示:图5-4 分享功能界面5.3 本章小结至此系统的编码与实现阶段已经结束,系统的基本功能已经实现,接下来是系统的运行于测试。6 系统测试与运行6.1 测试目的每个软件的编程,都会出现一些问题和Bug,系统测试的目的,就是要找出该软件可能存在的一些问题和Bug。测试也是软件开发过程的重要部分,用来确认一个程序的品质和性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行之前,对软件需求分析、设计规格说明和编码的最后总复审,也是为了发现错误而执行程序的过程。可以说,软件测试的最终目的就是保证软件产品的最终质量。对于该课题测试主要就是测试以下几方面:(1)界面是否正常显示(2)功能是否可以正常的实现(3)操作过程中是否会有一些Bug出现(4)系统的后台是否会出现异常的信息(5)其他方面明显的错误6.2 测试环境本课题的测试主要是基于Android平台。主要也就是在Windows下搭建的环境通过Android模拟器进行测试和在移动设备上测试,如表6-1所示:表6-1 测试环境需求名称需求说明操作系统Windows xp以上操作系统、Android系统测试方法黑盒测试(功能测试)测试工具Eclipse IDE、Android SDK、Android移动设备6.3 测试的流程和测试6.3.1 基于A

温馨提示

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

评论

0/150

提交评论