Android课程设计论文.docx
- 文档编号:6720837
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:13
- 大小:314.27KB
Android课程设计论文.docx
《Android课程设计论文.docx》由会员分享,可在线阅读,更多相关《Android课程设计论文.docx(13页珍藏版)》请在冰豆网上搜索。
Android课程设计论文
湖北民族学院2015年秋季考查课试卷
A或B
A卷
课程
移动互联网开发
使用班级
0313401-04
制卷份数
姓名
彭佳豪
命题人
张华
试卷审核人
单位审核人
答题纸数
班级
0313403
题号
一
二
三
四
五
六
七
八
九
十
合计
学号
031340308
评分
分数
阅卷人
考查形式为论文撰写,要求如下:
一、内容:
以一个实际Android系统为核心,从系统产生背景、问题提出、问题分析、系统分析、系统设计、系统实现等方面进行阐述。
二、具体要求:
1、题名要求简明扼要,能反映论文主题;摘要必须说明研究目的、方法、结果、结论,字数200字左右为宜,忌与引言及结论中的内容雷同;
2、字数3000~5000字
3、论文参考架构(请注意各级内容的字体格式,以示区分)
论文标题(三号黑体)
班级、学号、姓名(五号宋)
摘要(五号黑):
内容(五号宋)
关键字(五号黑):
内容(五号宋)
1 引言
2系统设计 (小三黑)
2.1设计原则(四号黑)
正文(五号宋)
2.2功能模块划分
3系统实现
3.1实现技术
3.2具体实现
3.3性能优化(如果有的话)
4 结束语
基于android平台的二维码识别软件的设计与实现
1.绪论
1.1研究背景以及意义
随着科学技术的发展,物联网已成为当今信息技术当中一门炙手可热的话题。
物联网是指通过各种信息传感设备实时采集各种需要的信息并与互联网结合形成的一个大型网络。
物联网的目的在于实现物与物、物与人以及所有的物品与网络的连接,以方便识别、管理和控制。
物联网由感知层、网络层和应用层三层组成。
感知层由各种传感器以及传感器网关构成,其作用在于识别物体和采集信息。
条形码技术是集条码理论、光电技术、计算机技术、通信技术等技术于一体的综合性技术。
它具有输入速度快、可靠性高、采集信息量大、成本低等特点,近年来发展十分迅速,在国际上广泛应用于商品流通、物流仓储、信息服务等各个领域,极大地提高了生产效率。
从寻呼机到目前3G手机的面市,中国人已经习惯了手中的移动手机不停地更新变化。
也正是由于这些现实因素,本课题以理论为基础,方便人们生活,提高工作效率为目的而选择本课题。
1.2Android平台特点
Android是一个专门针对移动设备的软件集,它包括一个底层Linux操作系统,中间层的中间件和上层的java应用程序。
Android平台的开发特点如下:
(1)应用程序框架支持组件的重用与替换。
这在之前的手机操作系统当中是很难想象的。
这意味着我们可以把系统中不喜欢的应用程序替换掉,安装我们喜欢的应用程序。
(2)Dalvik虚拟机专门为移动设备做了优化。
Android应用程序将由java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。
Dalvik虚拟机是基于寄存器的,相对于java虚拟机要快很多。
(3)内部集成浏览器基于开源的WebKit引擎。
有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。
(4)优化了图形库包括2D和3D图形库,3D图形库基于OpenGLES1.0。
强大的图形库给游戏开发带来福音。
(5)SQList用作结构化的数据存储。
(6)多媒体支持包括常用的音频、视频和静态印象文件格式(如:
MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)。
(7)GSM电话(8)蓝牙,EDGE,3G,WIFI。
(9)照相机,GPS,指南针和加速计。
(10)丰富的开发环境包括设备模拟器、调试工具,内存及性能分析图表和Eclipse集成开发环境插件。
1.3Eclipse简介
Eclipse是一个综合开发环境(IntegratedDevelopmentEnvironment)IDE,它是一个功能完整且成熟的软件,由IBM公司于2001年首次推出。
大家可以在其官方网站http:
//www.eclipse.org免费下载该软件的打包文件,释放到文件夹即可使用。
Eclipse是一个开放源代码、基于Java的可扩展开发平台。
开放源代码的意思是让使用者能够取得软件的原始码,部分地有权去修改和传播这个软件。
有人非常形象地将Eclipse比喻成软件开发者的“打铁铺”,它一开始备有火炉、铁砧与铁锤。
就像铁匠会用现有的工具打造新的工具一样,程序员也能用Eclipse打造新工具来开发软件———这些新工具可扩充Eclipse的功能。
1.4AndroidSDK简介
AndroidSDK(softwaredevelopmentkit,SDK)Tool软件开发工具包。
被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合,是Android专属的软件开发工具包。
1.5ADT简介
目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。
2软件设计
2.1系统概要设计
概要设计的主要任务是设计软件结构和数据结构。
设计软件结构的具体任务是:
将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。
数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。
显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。
总体设计包括系统模块结构设计和计算机物理系统的配置方案设计。
Android二维码扫描识别系统需要调用我们Android手机的照相机,通过onPictureTaken函数二维码图片处理成位图,而且将位图在imageview中显示出来,然后再对位图进行译码,按照QRCODE二维码生成的方式解码成字符型,QRCODE遵循OMIA规范,如果二维码隐藏信息是一个网址那么调用浏览器访问该网站,如果二维码隐藏的信息是一个电话号码,那么调用手机拨打电话功能,如果该二维码隐藏的信息是普通的文本信息,那么显示出文本信息即可,若不是QRCODE二维码不做任何操作。
2.2系统功能模块
系统总体功能有以下几个方面:
(1)相机预览功能;
(2)关闭相机功能;
(3)拍照解码:
1)调用浏览器:
如果二维码信息隐藏的是以“http:
//”开头的网址,那么手机便调用默认浏览器浏览该网址。
2)调用拨打电话功能:
如果二维码信息隐藏的事以“TEL:
”或者是“wtai:
”开头的电话号码,那么手机直接调用拨打电话功能。
3)显示文本信息:
如果二维码信息只是包含一些文本信息,那么直接显示。
2.2.1系统总体功能模块
通过上面的对系统的总体功能模块的分析,便可以得出系统总体功能模块图。
系统总体功能模块图如图4.1所示。
图4.1系统总体功能模块图
2.2.2拍照解码功能模块
在整个系统模块中最重要的模块是拍照解码功能,因此把这个模块单独分析,将它的功能进行分析如图4.2所示。
图4.2拍照解码功能模块图
2.3系统流程图
系统流程图(SystemFlowchart)是描绘系统物理模型的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。
本系统流程图如图4.3所示。
图4.3系统流程图
2.3.2界面设计
界面设计是人与机器之间传递和交换信息的媒介,一个好的界面是很重要的。
它主要是站在用户角度考虑,因此界面的设计要人性化、简洁、清楚,还要有安全性和灵活性。
此系统功能整体上可以分为三个部分。
第一部分是相机预览显示部分,这部分用一个surfaceview来实现;第二部分是整个系统操作部分,分为两个按钮,第一个按钮为重扫,第二个按钮为关闭;第三部分是显示拍照截取的二维码图片,在这儿我们用imageview视图来显示。
3软件实现
3.1代码编写
在已经搭建好的Android应用程序开发平台:
JavaJDKSE+Eclipse+GoogleAndroidSDK+ADT中建立Android应用程序程序项目,如图5.1所示。
图5.1建立Android应用程序项目
3.2主界面Activity布局
在整个界面的背景,用Surface整个底层界面用来显示照相机拍摄到的图像。
在界面的顶部放置TextView用来存放解码后显示的信息。
在界面的中间部分,FrontView用来把显示到的图像周围都涂成半透明的白色,中间的空白区域用来扫描二维码,ImageView用来显示扫描二维码成功后截取到的图像。
在操作界面的地步,TextView用来简单介绍本软件可以扫描的范围,Button用来关闭软件和重新扫描。
主界面的Activity的布局是由layout下的main.xml确定的:
Android: layout_width="wrap_content" Android: layout_height="wrap_content"> Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: layout_x="80dp" Android: layout_y="410dp" Android: textColor="#000000" Android: text="扫描: "/> Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: layout_x="125dp" Android: layout_y="385dp" Android: textColor="#000000" Android: text="一维EAN码"/> Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: layout_x="125dp" Android: layout_y="400dp" Android: textColor="#000000" Android: text="二维QR码"/> Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: layout_x="125dp" Android: layout_y="415dp" Android: textColor="#000000" Android: text="二维WEPC码"/> Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: layout_x="125dp" Android: layout_y="430dp" Android: textColor="#000000" Android: text="快递单"/> Android: id="@+id/textview" Android: layout_width="wrap_content" Android: layout_height="wrap_content" Android: layout_x="0dp" Android: layout_y="0dp" Android: textColor="#000000" />
3.3Activity组件的编写
相机预览,用于开启手机照相机。
我们用一个按钮实现该功能,添加一个按钮并且设置并绑定监听器。
在监听器里面我用一个Camera.PreviewCallback()函数实现,函数调用相机的OPEN方法即可实现预览功能同时将变量bIfPreview设置为true。
当然我们要取得二维码,因此我们要不活图片,我们需要设置图片的格式和一些参数。
privateCamera.PreviewCallbackpreviewcallback=newCamera.PreviewCallback(){
publicvoidonPreviewFrame(byte[]data,Cameraarg1){
//取得指定范围的帧的数据
Log.e("tag","previewcallback");
PlanarYUVLuminanceSourcesource=newPlanarYUVLuminanceSource(
data,800,480,dsLeft,dstop,dswidth,dsheight);
mbitmap=source.renderCroppedGreyscaleBitmap();
//显示灰度图
Matrixmatrix=newMatrix();
matrix.setRotate(90);
mbitmap=Bitmap.createBitmap(mbitmap,0,0,400,350,matrix,true);
通过google提供的二维码识别方法getText()得到二维码所包含的的字符串信息储存在字符串strQR2中,如果二维码信息隐藏的是以“http:
//”开头的网址,那么手机便调用浏览器浏览该网站;如果二维码信息隐藏的是以“wait:
//”开头的电话号码,那么手机直接调用拨打电话功能;如果二维码信息隐藏的是以“TEL:
”开头的电话号码,那么手机直接调用拨打电话功能;若仅是普通文字,则将文本显示出来即可。
try{
Resultresult=reader.decode(bitmap);
StringstrQR2=result.getText();
StringstrResult="BarcodeFormat:
"
+result.getBarcodeFormat().toString()+"text:
"
+result.getText();
if(strQR2!
=""){
if(URLUtil.isNetworkUrl(strQR2)){
/*如果二维码信息隐藏的是以“http:
//”开头的网址,那么手机便调用浏览器浏览该网站*/
mMakeTextToast(strQR2,true);
UrimUri=Uri.parse(strQR2);
Intentintent=newIntent(Intent.ACTION_VIEW,mUri);
startActivity(intent);
}elseif(eregi("wtai:
//",strQR2)){
/*如果二维码信息隐藏的是以“wait:
//”开头的电话号码,那么手机直接调用拨打电话功能*/
String[]aryTemp01=strQR2.split("wtai:
//");
IntentmyIntentDial=newIntent(
"Android.intent.action.DIAL",Uri.parse("tel:
"
+aryTemp01[1]));
startActivity(myIntentDial);
}elseif(eregi("TEL:
",strQR2)){
/*如果二维码信息隐藏的是以“TEL:
”开头的电话号码,那么手机直接调用拨打电话功能*/
String[]aryTemp01=strQR2.split("TEL:
");
IntentmyIntentDial=newIntent(
"Android.intent.action.DIAL",Uri.parse("tel:
"
+aryTemp01[1]));
startActivity(myIntentDial);
}else{
/*若仅是普通文字,则将文本显示出来即可*/
mMakeTextToast(strQR2,true);
}
}
3.4验证程序读取的二维码信息
测试是为了发现程序中的错误而执行程序的过程,测试的目的就是在软件投入生产运行之前,尽可能的发现软件中的错误并能及时改正。
当我们把整个项目的完成之后,将其SurfaceViewTest.apk文件拷贝到手机上,在Android手机上进行安装,能够成功安装软件。
为了确定二维码的解析是否正确,通过在线二维码生成器生成包含特定信息的二维码对程序的识别准确率进行测试。
(1)当二维码中包含特定网址信息时,用Android手机对准二维码扫描成功后就会自动调用浏览器,访问特定网址信息,如图3.3所示;
图3.3网址信息扫描识别成功
(2)当二维码中包含特定电话号码信息时,用Android手机对准二维码扫描成功后会自动调用系统拨号程序,并自动完成特定电话号码输入,如图3.4所示;
图3.4电话号码扫描识别成功
总结与展望
在互联网和移动通信不断发展的今天,以手机为代表的移动终端技术及产品得到了极大的推广,Android手机应用程序也是花样翻新层出不穷。
通过这次毕业设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。
Android二维码的扫描识别系统设计的基本目的,在于通过理论与实际的结合进一步提高思想觉悟,将以前学习的知识串联起来并进一步巩固。
在本次毕业设计的Android软件开发过程中,也学习到了很多软件工程领域的规范化的开发方法、建模方法、同时也锻炼了自己查找资料和文档撰写的能力。
在需求分析阶段,我根据所学软件工程理论知识,特别是需求分析、总体设计、详细设计部分的知识,和其中的分析和建模的方法,设计了需要实现的基本功能。
提出本项目所要实现的目标,系统性能、安全性、可靠性方面的要求等。
在系统设计阶段,我们又仔细复习教材中关于概要设计中应用的相关方法、应注意的几个问题和概要设计阶段的目标,在需求分析的基础上有提出了更具体的可行性分析和实现方案。
通过这次毕业设计使自己对知识的运用能力得到提升;而且还锻炼了我的自学能力;更重要的是培养了观察、分析和解决问题的实际工作能力,对以后的工作将会起到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 课程设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)