《智能终端软件开发设计报告.docx》由会员分享,可在线阅读,更多相关《智能终端软件开发设计报告.docx(13页珍藏版)》请在三一办公上搜索。
1、题目: Android手机团购小组成员: 俊 邱波中国地质大学()信息工程学院2013年12月1. 项目概述智能手机现在已经全方位的扎入到我们的生活,而智能手机的操作系统-Android目前 市场占有率很高,安卓操作系统的操作简单,代码开源使得安卓迅速成为现在主流,代码开 放后,对于安卓软件的开发就没有了限制,用户可以用到广泛的免费软件Android的系统 架构和其他操作系统一样,采用了分层的架构,分为四层,从高层向底层分别是应用程序层, 应用程序框架层,系统运行库层和L inux核心层。随着移动端的购物软件快速发展,淘宝移动客户端,京东商城移动客户端成为人们 购物的常用工具。在安卓软件市场,
2、移动购物软件同游戏软件以及其他类型的软件在质量, 数量都存在较大差距。这次我们做的团购软件就是仿照美团,利用大众点评的API数据开发的,能够查看到全 国100多个城市的团购项目,也能看到你当前位置周围的团购项目。并且才用分页加载数据 的方式,每次批量获取一定量的数据,这样大大的节约了流量,而对于图片的获取采用异步 加载的方式,即先从服务器端获取图片,保存在本地的软引用中,再显示出来。2. 技术介绍2.1. Android 简介Android本意指机器人”,最初由现任Google 工程副总裁的安迪罗宾(AndyRubin),创建于2003年,2005年被Google收购。2007年11月5日 基
3、于Linux核的软件平台和操作系统由Google正式发布,开启了一个新手机系统辉煌时代的开始。同时Google联合了 34家厂商并成立了 “开放手机联 盟”,开启了 Android发展的最初标准和加盟支持原则。2008 年 9 月 23 日 Android 初步发布 SDK1.0第一款机型 DreamGl 的诞生(Android 1.0 时代)在2009年10月23日。不被市场认可-G1和G2逐渐被市场接受(Android 1.5时代) HTC Hero G3广受欢迎,成为最受欢迎的机型(Android 1.6时代)众多厂商加盟支持,机型 越来越多,市场反应和占有率越来越高,同时伴随着Mark
4、et出现爆发式增长。然后支持蓝 牙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虚拟机专门
5、为移动设备做了优化。将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提供了
6、 Android开发包SDK,其中包含大量的类库和开发工具。2.3. Android平台架构Android操作系统结构分为4层,由上到下一次是应用程序、应用程序框架、核心类库和Linux核。1. 应用程序:Android连同一个核心应用程序抱一起发布,改应用程序包包括E-mail 客户端。SMS短消息程序、日历、地图、浏览器、联系人管理应用程序等。2. 开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架用来简化组件 软件的重用,任何一个应用程序度可以发布它的功能并且任何其他应用程序度可以使用其所 发布的功能块。应用程序都是由一系列的服务和系统组成包括:一个可扩展的视图(Views
7、)、 容管理器(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核,如安全性、
8、存管理、进程管 理、网络协议、和驱动模型。2.4.数据解析方式介绍在移动端的开发中,最主要的两种数据解析方式为JSON解析和XML解析。相比XML解 析,JSON解析方式更加简单,而且从服务器端传递的数据量更少,从而更加省流量。在 Android应用框架中为我们提供了 JSON库,JSON库中主要包括以下两个JSON解析库。1. JSONObject用于把对象型的JSON数据转化为JSONObject对象,然后使用get系列方法获取对象属 性的数据。其中最常用的方法为getString ,即获取数据并存为字符串,这样处理也是为了 适应Web应用的特点。除此之外,我们也经常使用getJSONAr
9、ray和getJSONObject方法, 它们的存在是为了处理复合型的JSON数据,分别用于获取数组型和对象型的属性值。2. JSONArray用于把数组型的JSON数据转化成JSONArray对象,该类所提供方法和JSONObject类基 本相同,只不过其中的get系列方法的参数都是整型(int),代表的是数组型的位置索引。在 Android 平台上对 XML 的解析常常使用 Simple API for XML(SAX)、Document Object Model(DOM) 和Android附带的pull解析这三种方式。SAX是一个解析速度快并且占用存少的xml解析器,非常适合用于Andr
10、oid等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按容顺序 解析文档的过程中,SAX会判断当前读到的字符是否合法XML语法中的某部分,如果符合就 会触发事件。所谓事件,其实就是一些回调(callback)方法,这些方法(事件)定义在 ContentHandler 接口。DOM解析XML文件时,会将XML文件的所有容读取到存中,然后允许您使用DOM API遍 历XML树、检索所需的数据。使用DOM操作XML的代码看起来比较直观,并且,在某些方面 比基于SAX的实现更加简单。但是,因为DOM需要将XML文件的所有容读取到存中,所以存 的消耗比较大,特别
11、对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建 议还是采用SAX来解析XML文件,当然,如果XML文件的容比较小采用DOM是可行的。Pull解析器的运行方式与SAX解析器相似。它提供了类似的事件,如:开始元素和结 束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代 码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用 parser.nextText()方法可以获取下一个Text类型元素的值。2.5. Event控制用户行为在Android系统中,所有的UI控件的动作都是通过事件监听器Listener
12、来控制的;而 UI控件的基类View视图类为我们提供了一系列设置事件监听器的方法,来为不同的UI控 件设置对应的监听器;下面是几个比较常用的方法。1. setOnClickListener(View.OnClickListener l)方法此方法用于设置控件被点击时触发事件的监听器。在我们的软件中,就大量使用了这个 方法。另外,该监听器需要程序实现的抽象方法onClick(View v),参数只有一个,就是被 点击的控件对象。2. setOnFocusChangeListener(View.OnFocusChangeListener l)方法此方法用于设置控件焦点变化时触发事件的监听器当选中控
13、件焦点变化的时候将触发 OnFocusChangeListener监听器中的程序逻辑,该监听器需要程序实现的抽象方法为 onFocusChange(View v,Boolean hasFocus),两个参数分别是控件对象本身和是否聚焦的状态值。3. setOnKeyListener(View.OnKeyListener )方法此方法用于设置按键触发事件的监听器。当选中控件同时按下键盘的时候将触发OnKeyListener监听器中的程序逻辑,该监听器需要程序实现的抽象方法为onKey (View v,int keyCode,KeyEvent event),三个参数分别是按键时控件选中的控件对象
14、按键的码值, 以及按键事件。当然,Activity类本身已经包含了捕捉按键动作的onKeyDown方法;另外, OnKeyListener只能监听硬键盘事件,而我们却可以通过TextWatcher类来同时监听软键盘 和硬键盘的响应。4. setOnLongClickListener(View.OnLongClickListener l)方法此方法用于设置长时间按下控件时触发事件的监听器,用法和setOnClickListener方法基 本相同。5. setOnTouchListener(View.OnTouchListener l)方法此方法用于设置触屏事件的监听器。对于目前流行的移动设备来说
15、都是匹配触摸屏的, 所以触屏事件的运用围非常的广泛;另外,对于触屏设备来说,几乎所有的操作都是通过触 屏来实现的,也包括之前提到的点击,按键等操作。触屏事件监听器类(OnTouchListener)中需要程序实现的抽象方法为onTouch(View v,MotionEvent event),两个参数分别为触屏的视图控件和MotionEvent动作事件。在使用 的时候我们可以使用MotionEvent对象的getAction方法来获取事件手势进行相应的处理, 实例代码如下:OnTouchListener mTouchListener = new OnTouchListener。 Override
16、public 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秒后,进入主界面,软件主要有四大模块, 全城团购,附近的团购,用户的登录与注册,以及软件的其他信息。具
17、体架构图如图所示:4.界面框架实现软件的简单操作流程1.启动软件后,进入欢迎界面,如图41所示:图4-1在欢迎界面中停留3秒钟后。进入主界面,如图4-2所示:抠电昌劣炎定卡妪电彩仅无最高妨元涟民卡全 国3。辛家畛院口选 淡定 你值泻拥有原4打i W3卫。一口却MT; zoo.a天河里际膨城双人如影宜涝现价:32.0 原价;7了6一天河国际膨嘛仅苫与全元价慎1 76元双人呗澎M黄 人性化服务超舒适座椅让枕党听党充分亭安制 撼湖北剧院银兴电影城双人观影53奁餐|现,:占。一。 原价:福口一日湖.匕剧院拒兴电彩城KR5S.7L 1汗值丁邛口亓双A斓部套萍 焉唏面n斤吝效好幻网面三审体睑申.彩中 ?|
18、38 20:46。武汉仪*叟索三 电影 v 件价格高优先图4-2在团购中,可以自己选择城市,在城市显示界面中,提供搜索功能,还可以点击右边的索引项,效果和手机通讯录差不多,界面如图4-3所示:、图4-34.择热门搜索,效果如图4-4所示:图4-4点击团购中的搜索,进入搜素界面,在搜索界面中可以进行关键字搜索,也可以选5.所示:在团购界面中,也可以选择团购种类,大的种类下面还有小的种类,效果如图4-5倚梧高优先万达国际电影址E仅告 扁城电子码4店词甲辽汉 网位换冲3迎第票在缱购买人数做多武商摩尔国际电膨城仅皆*5元疝值1如无中彩 票T张超炫华丽指陌 视听曲真 光客结合恍 若育身精徉情节图4-56
19、.在团购界面中,也可以对团购进行排序,软件提供了四种排序,效果如图4-6所示:武商摩尔国MMMH票T张珊m secg:皿口图4-74-88. 在附近团购中,效果基本上团购界面相同,只是在附近团购中,提供了选择团购与用户的位置距离,如图4-9所示:4 U+ 零 nilBG% 2O;5G附近团购=全部种类yQv侃SX认v武商哼尔国际中1 奈张超炮华丽t若宜身精彩情节1干米卫千米价;go僚0。元电祖歧光5?结含恍3千米4干吉7个r粉;1网q*七初SOS干米 11仟吉里糕位官134元价恒f我8元醐寸重糕T个 全市 通用持有效短信到仟吝西爆任崽门点芫短 新爵 水果融入香i农原味奶油嗣哲诱人澹味让人欲w万
20、达国际电影城万达国际电彩 20.2K/S现价:31.0 原所:m*万国际电畛成位告新元价值】皿。元万际电 由MIS 4 CF i南甲ST.V 福. 空并TTi大 店E*卜宣LI 况 -I L119. 在我的界面中,主要是用户的登录与注册,数据都存在本地,效果图就不一一展示了,在更多界面中,主要是软件的信息。5. 设计总结在这次开发中,我们的收获还是很多的,初次接触Android开发,在最开始时,由于对 Android环境不熟悉,走了很多弯路。后来熟悉后,我对Android的开发产生了浓厚的兴趣, 在这个过程中也学会了许多知识,例如:自定义控件,从服务器端到客户端数据解析的方式, 异步加载数据等
21、,我觉得我还可以进一步对Android系统经行研究,了解其部机制,还可 以学习在Android 上进行NDK开发,学习怎样客户端优化,例如:避免存泄露,优化图片, 数据库缓存等。在开发过程中,我们也存在很多不足的地方,没有服务器端的开发,而大众点评提供的 API接口不足,许多功能就不实现,例如:关联个人账户,进行团购,提交订单等。另外, 界面不美观,也是一个重要的问题,而且,对软件的性能没有进行优化,许多地方值得改进。6. 参考文献1 兴华.Java开发实战经典(名师讲坛)M.:清华大学,20092 Nicolas Gramlich,劲锋.Android编程入门教程andbook中文版M.人民邮电,20103 吴亚峰,索依娜.Android核心技术与实例详解M.:电子工业,20104 Rogers Cadenhead,Laura Lemay.21 天学通Java 2M.人民邮电,20045 海藩.软件工程导论M.:清华大学,20036 钟尉,周小彤,丹丹.Java从入门到精通(第2版)M.:清华大学,2010