智能终端软件开发设计报告.doc_第1页
智能终端软件开发设计报告.doc_第2页
智能终端软件开发设计报告.doc_第3页
智能终端软件开发设计报告.doc_第4页
智能终端软件开发设计报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

智能终端软件开发设计报告题目: Android 手机团购 小组成员: 李俊 邱波 中国地质大学(武汉)信息工程学院2013 年 12月1. 项目概述智能手机现在已经全方位的扎入到我们的生活,而智能手机的操作系统Android目前市场占有率很高,安卓操作系统的操作简单,代码开源使得安卓迅速成为现在主流,代码开放后,对于安卓软件的开发就没有了限制,用户可以用到广泛的免费软件。Android的系统架构和其他操作系统一样,采用了分层的架构,分为四层,从高层向底层分别是应用程序层,应用程序框架层,系统运行库层和Linux核心层。随着移动端的购物软件快速发展,淘宝移动客户端,京东商城移动客户端成为人们购物的常用工具。在安卓软件市场,移动购物软件同游戏软件以及其他类型的软件在质量,数量都存在较大差距。这次我们做的团购软件就是仿照美团,利用大众点评的API数据开发的,能够查看到全国100多个城市的团购项目,也能看到你当前位置周围的团购项目。并且才用分页加载数据的方式,每次批量获取一定量的数据,这样大大的节约了流量,而对于图片的获取采用异步加载的方式,即先从服务器端获取图片,保存在本地的软引用中,再显示出来。2. 技术介绍2.1 . Android 简介Android本意指“机器人”,最初由现任Google工程副总裁的安迪罗宾(Andy Rubin),创建于2003年,2005年被Google收购 。2007年11月5日 基于Linux内核的软件平台和操作系统由Google正式发布,开启了一个新手机系统辉煌时代的开始。同时Google联合了34家厂商并成立了“开放手机联盟”,开启了Android发展的最初标准和加盟支持原则。 2008年9月23日,Android初步发布SDK1.0。第一款机型Dream G1的诞生(Android 1.0时代)在2009年10月23日。 不被市场认可-G1和G2逐渐被市场接受(Android 1.5时代) HTC Hero G3广受欢迎,成为最受欢迎的机型(Android 1.6时代) 众多厂商加盟支持,机型越来越多,市场反应和占有率越来越高,同时伴随着Market出现爆发式增长。然后支持蓝牙2.1、多点触控(Android 2.0时代),支持动态桌面(Android 2.1时代),支持在线视频Flash播放、网络共享功能,加入了Just-In-Time(JIT)功能较大提升了运行速度(Android 2.2时代)内置NFC Reader功能、强化游戏性(Android 2.3时代),专门针对平板电脑进行优化的Android 3.0版(Android进入真正意义上的平板电脑时代)陆续上市。2.2. Android平台特征1.支持组件的重用与替换。意味着我们可以把系统中不喜欢的应用程序换掉,安装我们自己喜欢的程序。2.Dalvik虚拟机专门为移动设备做了优化。将class文件通过DX工具转换成后缀为.dex的文件来执。Dalvik虚拟机基于寄存器,比java虚拟机快。3.内部集成浏览器基于开源的WebKit引擎。4.优化的2D和3D图形库。5.SQLite数据库,用于结构话的数据存储。6.支持各种多媒体格式:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF,7.GSM电话全球通。8.蓝牙、Wifi(无线局域网)、EDGE(GSM到3G的过渡)。9.照相机、GPS、指南针和加速度计。10. 丰富的开发环境包括设备模拟器,调式工具,内存及性能分析表和Eclipse集成开发环境插件。Google提供了Android开发包SDK,其中包含大量的类库和开发工具。2.3. Android 平台架构Android操作系统结构分为4层,由上到下一次是应用程序、应用程序框架、核心类库和Linux内核。1.应用程序:Android连同一个核心应用程序抱一起发布,改应用程序包包括E-mail客户端。SMS短消息程序、日历、地图、浏览器、联系人管理应用程序等。2.开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架用来简化组件软件的重用,任何一个应用程序度可以发布它的功能并且任何其他应用程序度可以使用其所发布的功能块。应用程序都是由一系列的服务和系统组成包括:一个可扩展的视图(Views)、内容管理器(Content Providers)、资源管理器(Resource Manager)、通知管理器(Notification Manager)、活动类管理器(Activity Manager)。3.Android程序库通过Android应用程序框架为开发者提供服务主要核心库包括:系统C库、媒体库、Suface Manager、LibWebCore、SGL、3D libraries、FreeType、SQLite。4. Android运行库包括一个核心库,提供java编程语言核心库的大多数功能。5.Linux内核:Android的核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议、和驱动模型。2.4. 数据解析方式介绍在移动端的开发中,最主要的两种数据解析方式为JSON解析和XML解析。相比XML解析,JSON解析方式更加简单,而且从服务器端传递的数据量更少,从而更加省流量。在Android应用框架中为我们提供了 JSON库,JSON库中主要包括以下两个JSON解析库。1.JSONObject 用于把对象型的JSON数据转化为JSONObject对象,然后使用get系列方法获取对象属性的数据。其中最常用的方法为getString ,即获取数据并存为字符串,这样处理也是为了适应Web应用的特点。除此之外,我们也经常使用getJSONArray和getJSONObject方法,它们的存在是为了处理复合型的JSON数据,分别用于获取数组型和对象型的属性值。2.JSONArray用于把数组型的JSON数据转化成JSONArray对象,该类所提供方法和JSONObject类基本相同,只不过其中的get系列方法的参数都是整型(int),代表的是数组型的位置索引。在Android平台上对XML的解析常常使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析这三种方式。SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在ContentHandler接口。DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOM API遍历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小采用DOM是可行的。Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。2.5. Event控制用户行为在Android系统中,所有的UI控件的动作都是通过事件监听器Listener来控制的;而UI控件的基类View视图类为我们提供了一系列设置事件监听器的方法,来为不同的UI控件设置对应的监听器;下面是几个比较常用的方法。1. setOnClickListener(View.OnClickListener l)方法此方法用于设置控件被点击时触发事件的监听器。在我们的软件中,就大量使用了这个方法。另外,该监听器需要程序实现的抽象方法onClick(View v),参数只有一个,就是被点击的控件对象。2. setOnFocusChangeListener(View.OnFocusChangeListener l)方法此方法用于设置控件焦点变化时触发事件的监听器。当选中控件焦点变化的时候将触发OnFocusChangeListener监听器中的程序逻辑,该监听器需要程序实现的抽象方法为onFocusChange(View v,Boolean hasFocus),两个参数分别是控件对象本身和是否聚焦的状态值。3. setOnKeyListener(View.OnKeyListener l)方法此方法用于设置按键触发事件的监听器。当选中控件同时按下键盘的时候将触发OnKeyListener监听器中的程序逻辑,该监听器需要程序实现的抽象方法为onKey (View v,int keyCode,KeyEvent event),三个参数分别是按键时控件选中的控件对象,按键的码值,以及按键事件。当然,Activity类本身已经包含了捕捉按键动作的onKeyDown方法; 另外,OnKeyListener只能监听硬键盘事件,而我们却可以通过TextWatcher类来同时监听软键盘和硬键盘的响应。4. setOnLongClickListener(View.OnLongClickListener l)方法此方法用于设置长时间按下控件时触发事件的监听器,用法和setOnClickListener方法基本相同。5. setOnTouchListener(View.OnTouchListener l)方法此方法用于设置触屏事件的监听器。对于目前流行的移动设备来说,都是匹配触摸屏的,所以触屏事件的运用范围非常的广泛;另外,对于触屏设备来说,几乎所有的操作都是通过触屏来实现的,也包括之前提到的点击,按键等操作。触屏事件监听器类(OnTouchListener)中需要程序实现的抽象方法为onTouch(View v,MotionEvent event),两个参数分别为触屏的视图控件和MotionEvent动作事件。在使用的时候,我们可以使用MotionEvent对象的getAction方法来获取事件手势进行相应的处理,实例代码如下:OnTouchListener mTouchListener = new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent event) switch (event.getAction() case MotionEvent.ACTION_DOWN:/ 按下手势触发逻辑.break;case MotionEvent.ACTION_MOVE:/ 拖动手势触发逻辑.break;case MotionEvent.ACTION_UP:/松开手势触发逻辑.break;return true;3. 软件的系统架构软件在启动后,首先进入欢迎界面,延迟3秒后,进入主界面,软件主要有四大模块,全城团购,附近的团购,用户的登录与注册,以及软件的其他信息。具体架构图如图所示:欢迎界面软件信息登录与注册附近团购全城团购团购 热门搜索用户登录用户注册团购排序范围选择团购种类定位地点团购排序团购种类关关键字搜索搜索团购城市选择4. 界面框架实现软件的简单操作流程1. 启动软件后,进入欢迎界面,如图41所示:图4-12. 在欢迎界面中停留3秒钟后。进入主界面,如图4-2所示:图4-23. 在团购中,可以自己选择城市,在城市显示界面中,提供搜索功能,还可以点击右边的索引项,效果和手机通讯录差不多,界面如图4-3所示:、图4-34. 点击团购中的搜索,进入搜素界面,在搜索界面中可以进行关键字搜索,也可以选择热门搜索,效果如图4-4所示: 图4-45. 在团购界面中,也可以选择团购种类,大的种类下面还有小的种类,效果如图4-5 所示:图4-56. 在团购界面中,也可以对团购进行排序,软件提供了四种排序,效果如图4-6所示:图4-77. 在团购界面,可以选中一条团购,显示其具体信息,效果如图4-8所示: 4-88. 在附近团购中,效果基本上团购界面相同,只是在附近团购中,提供了选择团购与用户的位置距离,如图4-9所示:9. 在我的界面中,主要是用户的登录与注册,数据都存在本地,效果图就不一一展示了,在更多界面中,主要是软件的信息。5. 设计总结在这次开发中,我们的收获还是很多的,初次接触Android开发,在最开始时,由于对Android环境不熟悉,走了很多弯路。后来熟悉后,我对Android的开发产生了浓厚的兴趣,在这个过程中也学会了许多知识,例如:自定义控件,从服务器端到客户端数据解析的方式,异步加载数据等,我觉得我还可以进一步对Android 系统经行研究,了解其内部机制,还可以学习在Android上进行NDK开发,学习怎样客户端优化,例如:避免内存泄露,优化图片,数据库缓存等。在开发过程中,我们也存在很多不足的地方,没有服务器端的开发,而大众点评提供的API接口不足,许多功能就不实现,例如:关联个人账户,进行团购,提交订单等。另外,界面不美观,也是一个重要的问题,而且,对软件的性能没有进行优化

温馨提示

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

评论

0/150

提交评论