1、基于Android平台的天气预报软件设计(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)教学单位学生学号本科毕业论文(设计)题 目 基于Andoid平台的天气预报软件设计学生姓名lin专业名称指导教师21年5 月20日基于Android平台的天气预报软件设计摘要:Gogle于20年推出了一款名为Android的开源智能手机操作系统,它采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。ndri的最大特点是其开放性体系架构,不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验。因此,对于软件从业人员来说,Adroid平台
2、具有无限的吸引力.目前Android操作系统已经成为用户最多的智能操作系统。本天气预报软件的设计,为ndroid终端用户提供一款方便的实时天气预报查询软件,为用户带来良好的用户体验及便利的对天气情况进行掌控.本天气预报软件采用iewFliper组件,提供友好的界面滑动切换方式,同时减少系统运行时占用的空间。使用Fles方式保存天气信息,Sared Prefereces保存用户偏好设置,节约了文件存储的空间.本文就在分析讨论Arod手机软件开发技术原理的基础上,利用Androd中基本组件和常用设计模式,开发出能为用户提供更好的基于ndod平台的手机天气预报软件。关键字:Anroid;天气预报;智
3、能手机平台Designof eaherforecs softwae Based on h Androdbstrc:Goole in 2008 aunced roduc caledth Android opesorc smartphone opeatin ysem, whih es t Linux kernel, en Hnset Alliace (OHA)mber an befre touseand modify the SDK pckag,oen source,i has good calabiltyo thesystem. heostmorant fauefArid i itsope ar
4、hiteture, notnly as vr good dvment and ebuggig evironment, utalso supors varieyf scalablese xperience。 Theefe, forsotware professional, he Androidlatfrm has unlmited apel.Adrod perting ystehasbecome th user the most intellgent oprating sytem。Thewer sotwr esign o the Androded urs t providea nvenet, e
5、altim weathe qur oftwre, to roid user wi a ood us eprence ad onveece f ntrlof he wehercoiios The eat fcas sowarthe ViewFlipper cmpon, friendlinerfce sliing switch, whieeding the spceocpied whn he sytemis rnnig Fils sae Weathe Ifoatin, hredrference to sv userprernes setting, sve th l torage spae。 Thi
6、 rticl n teass oalyss a dscusion of theAndid ilephone ftare develpmentehnicprinciples, sg tebasic copoes andomon desgpattnsAndro, deveoprsca proid ers wth etr mobile phoneweherforeas software bedon the Anrod patorm.Kewords:Aoid;weatheforecst;mr phone ptfor目 录1系统概述111 研究内容1.2 研究意义1。3 研究现状和发展趋势12系统分析.
7、1研究目标42 需求分析42。 性能分析43程序设计6。1用户界面设计63.程序模块设计9程序开发041 文件结构与用途102 数据存储3。2。 hrePreerece1342。2 Fies1.3 主要功能代码1。3。1 获取天气数据184。32网络检查204。.3 定时更新时间2.3 ViewFlppe手势监听24。3. 城市管理中城市点击事件34 主要界面结构布局代码2444. ViewFlipe框架结构2544.2 城市管理界面24.43 生活指数4。4城市简介27系统测试29总结36参考文献37致谢381系统概述.1 研究内容Andoi平台手机天气预报软件是基于Andrid手机平台,运
8、用Jva语言,应用htp:/ww.bxl。com。n/网站上提供的免费的ebSerice接口获取天气预报信息,深入研究Anrd平台Aciity、Srvice、radcastReceivr、net Provider这四大组件及Anroid平台的程序运行机制,开发出针对使用Anrid平台的手机天气预报系统。1 研究意义Andrd平台手机天气预报软件的开发可以进一步扩大气象信息的覆盖面,让广大公众能够在第一时间方便快捷地获取最新的气象预报(预警)信息,以便提前预防,把气象灾害造成的损失降到最低.同时也可以强化气象公共服务的职能,完善公共服务体系、改善公共服务手段、增加公共服务产品、提高公共服务质量,
9、更好地发挥了气象事业对经济社会发展的现实性作用。1。3研究现状和发展趋势据百度数据研究中心202年3手机操作系统及应用分析数据显示,随着智能手机的发展,操作系统越来越受到网民的关注。在刚刚过去的Q3,Andoid和iOS继续蚕食Symbian的份额,其中Andrid更是以接近55%的关注度进一步巩固其第一的位置。图1 手机操作系统关注度变化趋势图安卓是首款开源代码的操作系统,采用Lin内核,开放手机联盟(HA)成员可以任意使用和修改安卓的SDK软件包。系统的开源性使其具有良好的拓展性,一方面,为众多移动应用开发者提供了良好的系统性平台,有利于移动应用的集合;另一方面,终端厂商可以针对自身的特殊
10、需要“定制化开发”。与此相比,尽管0年2月,塞班基本完成开源工作,但由于代码臃肿,用户界面设计缺失,塞班的开源并无实际意义,错失发展良机。dod操作系统给予了用户跟高的自由度熟悉Andrid的都清楚用户可以根据自己的喜好来设置手机界面,Android的应用市场甚至上还有各式各样的启动器来供用户自己选择,让自己的手机与众不同。例如用户要是喜欢HT的操作界面便马上可以在应用市场上找到,甚至还能模仿IS的界面。相比于IOS操作系统,Iphone手机只有一成不变的手机界面,不能对其进行更改。我们认为,安卓在全球市场的成长壮大,塞班市场份额不断下跌已成不争事实.安卓操作系统发展迅猛主要得益于免费、开源和
11、良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择,这也是谷歌值得众多厂商学习的地方。此外,谷歌通过OHA联合众多厂商进行系统研发,不断更新版本,目前以推出十多个Android版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。系统分析2。1 研究目标(1) 了解Anri应用程序的设计和开发过程;(2) 使用多种组件进行Aod 平台手机天气预报软件的开发。本软件是基于clpse的开发环境,依托wSeie服务气象数据建立气象信息,开发出了针对ndrid平台的手机
12、天气预报系统。2 需求分析本程序主界面采用ewlippe视图,实现Adro界面滑动效果,主界面分为四个一面,第一页显示用户选定的首要城市的当天天气详细情况,以及未来三天天气的概况,并提供手动更新天气的按钮;第二页是城市设置页面,用户可以在设定最多9个城市作为用户关注的城市,并提供当天天气概览,用户可以在这里设定选择已经关注的城市作为首要关注城市;第三页是用户选定的首要城市天气情况的各种生活指数,包括晾晒指数、旅游指数、路况指数、舒适度指数、空气污染指数、紫外线指数,用户可以根据各种生活指数安排自己日常生活;第四页用一个可以上下滑动的crolViw(卷轴视图)显示用户选定的首要城市的城市简介.系
13、统提供定时更新功能,根据用户选择可以设置每天天气自动更新的起始时间及更新时间间隔。2.性能分析ndd是一个多任务操作系统,最近运行过的程序都常驻后台,而在内存管理上则由系统选择性的自动杀掉占用内存的近期非活跃进程,而不是关闭程序,当程序再次显示时速度更快。程序采用Viewlippe实现多个页面的滑动切换,四个视图页面封装在一个view中,不显示的页面有Viewlippe封装的资源收缩方法保留最基本的数据,节约内存,滑动时只需要还原子vi即可,与Acit的切换相比既节约资源,又加快了界面切换的速度。因为Activt的切换涉及到Activiy的创建与销毁.3程序设计3.1 用户界面设计根据需求分析
14、可以知道,应用程序应包含四个主要的用户界面,以及几个辅助页面,这里需要进一步分析每个用户界面中应该包括哪些显示内容.在城市天气页面,如图3,分为上中下三个部分,上面部分显示用户设定的首要城市的城市名、当日温度区间、天气情况、风力大小、湿度、紫外线强度,实时温度及实时天气的图标。中间是三个自定义Viw,显示未来三天的天气情况,每个iew中都包括日期、星期、天气图标、最高温度、最低温度。底部显示了当前天气的更新时间,及手动更新天气的按钮。图2 城市天气添加城市页面,如图4,由一个Gridiw构成,GidView中有9个相同的iew作为ridView的m,供用户选择关注的城市。每个item中显示所选
15、城市的天气概览,包括编号、城市名称、天气图标、天气状况、温度及更新时间。图3 选择城市生活指数页面,如图,生活指数页面,通过下拉列表选择不同的生活指数种类,显示各种生活指数,包括:晾晒指数、旅游指数、路况指数、舒适度指数、空气污染指数、紫外线指数。图4 生活指数城市介绍页面,如图6,crolVew(卷轴视图)显示用户选定的首要城市的城市简介。图5 城市简介3。 程序模块设计从功能需求上分析可以看出,整个应用程序应划分为3个模块,分别是用户界面模块、后台控制模块和基础功能模块.后台控制模块更具用户界面的需求调用基础功能模块的各项功能得到用户界面需要的数据并返回到用户界面。基础工具模块提供天气查询
16、、网络状况检查、定时器功能 、自定义风格dialog、数据存取、数据处理6个功能模块;后台控制模块分为城市管理、dialog调用两个部分;用户界面模块包括,城市天气、城市管理、生活指数、城市简介、添加城市、定时设置、操作提示几个部分组成.图 用户界面图7 基础工程模块4程序开发4。 文件结构与用途在程序开发阶段,确定“基于Android平台手机天气预报软件的工程名为Weer,据程序模块设计的内容,建立ather工程。Weate工程源代码的结构如图9所示。图8 项目结构以下对项目Wather下各资源包进行介绍。src文件夹中包含项目大部分的代码;en是roi项目自动生成的文件夹,其中由系统自动生
17、成的Rjava为系统中每一个资源分配了一个资源编号,包括图片、tr文件中定义的字符串以及layout中的布局文件和aim中的样式文件,都会在R。va中自动生成一个,方便在其他地方调用。Anroid 2。及droid pdence是项目需要的ja包;bin文件夹中保存了项目运行后的可执行文件即apk文件;rs下的am文件夹中自定义界面切换样式,drawal-hdpi、rableld、rawaemdpi三个文件夹中分别存放像素高、低、中的图片资源,三个文件夹中可以存放文件名相同的图片,但系统在R。jv中只生成一个资源id,调用到这个I是系统会根据用户手机屏幕像素情况自动选择适应屏幕的图片,layo
18、ut中定义了界面布局的ml文件,valu中存放的是strgs。x字符串定义文件和自定义的样式文件;ndroidManifest。ml中配置了系统的相关参数,以及所有的Activity、service声明。下面对eah项目的文件用途进行说明:表1 Wathr工程的文件用途说明包 名 称文 件名说 明eduin。euAbutActiit。jv菜单中“关于”选项对应的tviy。e。qi。menMenuAtivty。jav定义菜单eu。n.srvicetyeri。jva创建城市添加到城市列表中服务edu.qn。serviceDialgServie.java创建程序中弹出的Dlog服务eduqin。se
19、rvcePefreesService.jaa用户偏好设置服务edu.qi。ervieQueryWetheSerice。jaa查询天气服务e.qitsNtworChck.ja网络检查eu。qi.tilStreamoo.ava字节处理eu.qinutlsTkirTooljava字符串处理eu.qin。wAddCityDialog.java添加城市的activeuqinwfLoginAtivt.jav欢迎界面ettngDialog。jav定时设置界面edu.qin.featherctivity.java天气预报界面表2 自定义Vi及Adater包名 称文件 名说 明d.qiusAtoCleteTvA
20、dapterva自定义adapt用于自动适配下拉输入框。qin.usecityAat.ja自定义城市列表adpteredu.inuseCteathrOeriew.jaa西定义vie,用于显示城市天气duqin.ueMyiaogjav自定义iagd.q.seMYGestLitene.jav自定义滑动监听eu。in。seMyLisview.jaa自定义iewedu.qin.ueyTexVie。java自定义extViwe。qinusesliydapte。jav自定义adapter用于城市管理ndrod的资源文件保存在/res的子目录中.其中、/res/an目录中保存的是产生动画效果的XM文件,/e
21、sdrawable/目录中保存的是图像文件,/resvues目录中保存的是用来自定义字符串和颜色的文件,/re/xml目录中保存的是X格式的数据文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表3:表 资源文件名称与用途资源目录文 件说 明aimpuslft_i.xml画面转换位置移动动画效果(左进)psh_left_out。m画面转换位置移动动画效果(左出)ush_igt_inxml画面转换位置移动动画效果(右进)puh_igh_ouxm画面转换位置移动动画效果(右出)drawl略这个文件夹里是工程里所用的图片,如有表示天气状况、背景等,此处不赘述。
22、layoutaout.关于界面的布局tyenviontxl生活指数的布局cyitr。x城市介绍的布局cty_seig.xm城市管理的布局itywathr。ml城市天气的布局dl_lit.xl弹出选择列表的布局dlg_tpsne_but。xm单按钮提示dilg的布局loin。xml欢迎界面的布局optin_ity。xml添加城市dalog中选择城市的布局setng.m自动更新天气设定的布局ve_pper.xml天气预报滑动容器布局wther_veriew。xml天气概览的布局wetherm城市管理中tme的布局valuestyle.xml自定义Diag的样式定义tips_style。xm提示对话
23、框的样式定义st.xml保存字符串的XML的文件4。2 数据存储本程序数据存储用到nrid数据存储的两种方式ShePreerenes和Fils。2.1 haedPrefrencesShad referens用于保存用户的偏好设置,比如首要城市、关注城市、定时更新信息等。下面用保存首要城市名称和取出首要城市名称两个例子介绍hare Prfren的用法。(1) 保存首要城市名称的代码:/*保存首要城市名称,即第一页显示天气的城市 param rmaryCit */plivoi sePmaryCy(Stin iaryity)SharedPrefences prefres= context。getSh
24、aePeereces(weathe”,context。ODE_RIVATE);Shaerefernces。Edito edior= preferences.edit();edor.putSn(prryCity, priryity);edirommit();首先用etShaePrefenes方法得到一个SarPreernces对象,文件名为wather,权限为MOD_RIVAE.获取SharedPfrences对象时有三种权限可以选择,ODE_PRIVTE、MOE_WRL_EDABL、MODWORD_WRITEABLE;DE_RIVTE表示创建的文件只能由调用的应用程序访问,即只能被本程序访问;
25、O_WD_DAL表示创建的文件让所有其他应用程序有读权限;MOE_LDWRTEBLE表示创建的文件让所有其他应用程序有写权限.用geSharedPfeeces方法创建的文件,系统会自动保存到用户安装程序的dat/data/haared_pref文件夹下。然后用创建的aredPeferences对象获取Sharereerencs的Edito对象,再用Editor的put方法向weather文件中写入用户偏好设置,最后用Eitr的ommit方法保存写入的用户偏好信息.(2)取出首要城市名称的代码:/*取出首要城市的名称 * eturn 首要城市的名称,不存在则返回空串 */pul tring ge
26、rimayCity()SharePrefrences rfereces = conetSharedPefeences(ether,cntxt。MODEPRIVT);rurn preferencs。getStrig(rimarCty,”);读取用户偏好信息时要用与保存用户偏好信息时同样的参数获取SaedPrerces对象,用haredrefereces的对象调用gt方法即可得到设置进去的用户偏好信息。4。2。2 FilesFiles数据储存方式主要用来天气信息。本程序调用ebSeve获取天气信息,该eSer调用采用sap2协议,通过标准xml文件流交互信息,得到的天气预报信息为一个文件输入流对象
27、,保存后为一个xml文件.由于天气预报信息实时性比较强,信息结构复杂;将xml文件解析处理后保存到数据库中可以以后一次也用不上,所以本程序采用文件方式保存天气信息,Ao系统中集成u解析器,pll解析器是一个功能强大并且使用方便的xml解析器。下面通过保存天气信息文件和读取天气文件介绍File和pull解析器的用法。(1)保存天气信息保存天气到x文件中 * aam aherIn 天气情况的输入流对象 prm cityNam 城市名,这将用作文件名 thros Ixcpton /pulic void saveeatherfo(InuSreweatheno,Strig ityName) thrws
28、Ixcptio FieOututSteamfos conxt.openFiuut(itNme,Contxt。ODE_RITE);yufr = new yt1024;intl ;hle(ln = weahrIno.re(bufe))!= -1)os.write(buffer,0, len);fs.cle();Files的方保存文件先用Conext对象打开一个文件输出流,与用户偏好设置一样,我们可以设定这个文件的权限,在这里我就不再次说明,将获取到的输入流写到输出流中,关闭输出流天气信息就保存成功了.(2)获取天气信息(包括解析天气信息)/*解析天气预报的xm文件 param ciyName需要解
29、析城市的名称 * reurn 天气情况 trws Ecepton */pulicAraListsting湖北sring孝感/stngsrig748/tringstig201311 16:11:3stingsring3/0stin。gf/sringsrin1./stingin今日天气实况:气温:11;风向/风力:南风 2级;湿度:40;空气质量:中;紫外线强度:最弱穿衣指数:暂缺. 过敏指数:天气条件极不易诱发过敏,可放心外出,享受生活。运动指数:天气较好,但考虑天气寒冷,推荐您进行室内运动,若在户外运动请注意保暖并做好准备活动。 洗车指数:较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少
30、能保持一天. 晾晒指数:天气不错,午后温暖的阳光仍能满足你驱潮消霉杀菌的晾晒需求。 旅游指数:多云,有时云会遮挡住阳光,但丝毫不会影响您出行的心情。温度适宜又有微风相伴,很适宜旅游。 路况指数:天气较好,路面比较干燥,路况较好. 舒适度指数:天气较好,早晚会感觉偏凉,午后舒适、宜人。 空气污染指数:气象条件对空气污染物稀释、扩散和清除无明显影响,易感人群应适当减少室外活动时间。 紫外线指数:属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦PF在2之间的防晒护肤品。/stringsring1/3/stingstri1月2日多云转阴trisring北风3-4级/tringstrng.ist
31、rintri2.gstrin11strinstin1月3日 阴转雨夹雪tingstring北风3-4级转无持续风向微风stingstrin2。gif位于湖北省东北部,南临省会武汉市,北与河南、随州交界,西接天门、仙桃、京山等县市,东连黄冈市的红安县和武汉市的黄陂区。因东汉孝子董永行孝感天而得名。孝感市是改革开放中发展起来的新兴中等城市,辖孝南区、汉川市、应城市、安陆市和云梦县、大悟县、孝昌县;国土面积150平方公里,总人口0万人。孝感是楚文化的重要发祥地之一.周代贰国、轸国、郧国都建都于此。秦代竹简、秦汉漆器、东汉陶楼等国宝文物和楚王城等遗址展示了孝感绚丽多财的古代文化。剪纸、皮影、膏塑等传统
32、文化艺术源源流长.孝感市属亚热带大陆性季风气候,四季分明,雨量充沛,温暖湿润,光照充足。全年主导风向为东南风,年均气温在1.516.5C之间。景观:大洪山、白水寺、白云泉、石刻题记、董永故里、鄂豫边区革命烈士陵园、高挂三潭、擂鼓墩古墓群。/ng从上面天气信息xm文件看出,有用的天气信息都在trinsrng标签中,我们用pu解析器不断解析,并保存strig标签中的内容便可以得到天气信息。whie(evnt!= XmlulPase。END_DOCUE)wich(vent)cs XlPllParser.STRT_TAG:if(”strig。equals(pllParser.eNe())wtherIn
33、o。ad(prsr.xtext());brea;ven pullarser。n();4。3 主要功能代码本项目使用的代码较多,本部分对天气预报项目中核心代码进行解析,这部分代码能够完成天气预报的查询与显示的基本功能,另外一部分代码则实现的了能够与用户更好的交互,增加应用的界面美观的功能。43。1 获取天气数据从ht:/wwwwbxl.cm。c/提供的eb Servi中获取的天气数据,数据的获取地址为:tt:/wwwebxml。omcn/WebServices/WeaherWbSerieasmx代码如下:/通过城市名称查询天气情况,并调用保存天气函数* pramitye 城市名*eturn 获取
34、成功则返回true,否则fals throws xceon ubi oolenqeyWee(Sring cityae)throw Exceptionial String WEATHECI tp:/wwwwebxl。WeSevics/athrWebrvice。asmx”;Strin sa readSoa();soso。replceAl(”ityNamea”, cityName);be nt soapgByes();Strah=ETHER_T;tpRLConection cnn=(HttpURLConection) new URL(ah)。opnCnecto();cn.setCoecTimout(
35、500);onn。setReuesehod(POST”);nn.DoOtpt(te);co。setRequsPrerty(”ConentType”, ”ppiatiosoa+ml; harst=ut8);conn。seRequePropet(CotentLengt,Strngvalef(entiy。engh);cn.geOutpuStm().wte(eity);i(con.tesonseCod() = 00)/保存天气信息到xml文件saveWeatheInfo(cnngetnputtea(),itNam);reur true;reur fale;rap方法iva static SrigraS
36、oa()throws Excpton npSeam npuStrem= QueryWeatherSrvie。clas。etClassLoade().getReouceAsSream(sop1.xl);byteata Streamool.read(iptStem);eurn wStrig(daa);通过raSoa方法读取sc下oap12.xm文件,得到访问天气预报的wevic的标准天气交互格式,查询天气时将l中指定的城市名称换成实际要查询的天气预报的城市名,然后提交查询.然后获取到天气信息的输入流对象。432 网络检查bli sta blean kec(Cntext cntex) Connectivtyanar co (ConetivityManaer) conext.geSystemSrice(Context。NNTIVY_EIE);NworInfo ntworinfo = con。etActiNetworkInfo();if (netwokinfo =ull | !etwrkifo.isConnect() / 当前网络不可用rtr ase;eurn te;检查设备当前是否接入网络,使用此功能需要在Andridanifst。m中添加访访问权限: