安卓天气预报查询app试验报告

上传人:ai****ue 文档编号:57606297 上传时间:2022-02-24 格式:DOC 页数:15 大小:283KB
收藏 版权申诉 举报 下载
安卓天气预报查询app试验报告_第1页
第1页 / 共15页
安卓天气预报查询app试验报告_第2页
第2页 / 共15页
安卓天气预报查询app试验报告_第3页
第3页 / 共15页
资源描述:

《安卓天气预报查询app试验报告》由会员分享,可在线阅读,更多相关《安卓天气预报查询app试验报告(15页珍藏版)》请在装配图网上搜索。

1、唯辱致戒工用优CHAFKSSHLISHSTiTUTE3rTEEHnDLiS3VCHAFKSSHLISHSTiTUTE3rTEEHnDLiS3V课程设计报告课程名称:移动平台开发设计题目:天气预报院系:计算机科学与工程学院专业:计算机科学与技术班级:学号:姓名:指导教师:孙霞设计地点:N6-113开课时间:2016至2017学年第1学期目录1 .引言错误!未定义书签。.题目描述错误!未定义书签。.设计意义错误!未定义书签。2.开发环境错误!未定义书签。.硬件环境错误!未定义书签。.软件环境错误!未定义书签。3.相关技术及知识点错误!未定义书签。.Activity错误!未定义书签。.Service

2、错误!未定义书签。.网络通信错误!未定义书签。4.需求分析错误!未定义书签。.系统功能需求分析错误!未定义书签。.系统流程图错误!未定义书签。.系统界面需求分析错误!未定义书签。.系统性能需求分析错误!未定义书签。5.设计与实现错误!未定义书签。.界面布局错误!未定义书签。.省市二级联动错误!未定义书签。.获取天气数据错误!未定义书签。.播放背景音乐错误!未定义书签。6.个人总结错误!未定义书签。参考资料错误!未定义书签。1.引言1.1.题目描述本次实验是开发一款基于Android平台的天气预报应用,将网络系统的功能扩展到智能手机终端上,让手机能够通过移动网络访问Web网站并处理各种各样的业务

3、,可以让智能手机用户能够随时随地查询互联网所提供的天气信息。1.2.设计意义可以让广大Android手机用户能够在第一时间获取最新的天气预报信息,以便提前预防,方便出行。同时,把气象灾害造成的损失降到最低,也可以提高公共服务质量,更好的发挥气象事业对经济社会发展的现实性作用,有巨大的实用价值。虽然该技术在Android平台已经比较成熟,但是通过该软件的开发仍然能帮助我更好的认识Android系统的工作原理。2.开发环境2.1.硬件环境戴尔灵越笔记本电脑2.2.软件环境Android的上层应用程序是用Java语言开发的,一般情况下是基于Dakik虚拟机的,所以Google公司推荐使用主流的Jav

4、a集成开发环境Eclipse。而用Java语言进行开发,需要用到SUN公司提供的JavaSDK(其中包括JREJavaRuntimeEnvironment)。此外,Android的应用程序开发和Java开发有较大区别白需要使用Google提供的AndroidSDK同时,要在Eclipse上安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级或下载的工具。简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。JavaSDKEclipseAndroidSDKADT3.相关技术及知识点3.1.Activity应用程序中,一

5、个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通彳t。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有:MAIN(activity的门户)、VIEWPICK、EDIT等。而动作对应的数据则以URI的形式进行表示。例如:要查看一个人的联系方式,你需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI。与之有关系的一个类叫IntentFilter。相对于intent是一个有效的做某事的请求,一个intentfilter则用于描述一个activity(

6、或者IntentReceiver)能够操作哪些intent。一个activity如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示一个人的URLIntentFilter需要在中定义。通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,activity将会调用startActivity(IntentmyIntent)方法。然后,系统会在所有安装的应用程序中定义的IntentFilter中查找,找到最匹配myIntent的Intent对应的activity。新的activity接收到myInt

7、ent的通知后,开始运行。当startActivity方法被调用将触发解析myIntent的动作,这个机制提供了两个关键好处:A、Activities能够重复利用从其它组件中以Intent的形式产生的一个请求;B、Activities可以在任何时候被一个具有相同IntentFilter的新的Activity取代。3.2.Service一个Service是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中, 应该会有多个activity,让使用者可以选择歌曲并播放歌曲。 然而, 音乐重放这个功能并

8、没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity会使用()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service一直执行,直到这个service运行结束。另外,我们还可以通过使用()方法,连接到一个service上(如果这个service还没有运行将启动它)。当连接到一个service之后,我们还可以service提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。Service使用步骤如下(1)继承service类;(2)配置清单文件中节点里对

9、服务进行配置。服务不能自己运行,需要通过()或()启动服务通过startService()方法启动的服务于调用者没有关系,即使调用者关闭了,服务仍然运行想停止服务要调用(),此时系统会调用onDestory(),使用此方法启动时,服务首次启动系统先调用服务的onCreate()-onStart(),如果服务已经启动再次调用只会触发onStart()方法。使用bindService()启动的服务与调用者绑定,只要调用者关闭服务就终止,使用此方法启动时服务首次启动系统先调用服务的onCreate()-onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的onU

10、nbind()-onDestory(),想主动解除绑定可使用(),系统依次调用onUnbind()-onDestory()。3.3.网络通信JSONB据解析:(1)JavaScriptObjectNotation是一种轻量级的数据交换格式;(2)AndroidAPI中直接支持对JSON数据的处理;(3)常用类JSONObject、JSONArray、JSONStringer和JSONTokener等;(4)数据在名称/值对中、数据由逗号分隔、花括号保存对象、方括号保存数组。HttpURLConnection:提供了基于HTTP的网络访问方法,主要的操作步骤为:(1)利用URLM址实例化URL类

11、;(2)由URL类创建HttpURLConnection对象;(3)以GET/POS访式向服务器发送请求;(4)接收服务器响应。4.需求分析4.1.系统功能需求分析能够由用户设置省份城市;根据用户设置的城市,点击刷新按钮获取当地当天的日期、天气信息以及未来六天的天气情况。以淡入淡出的方式显示主页面;打开软件时可以自动播放音乐,用户可以在Menu菜单里选择关闭音乐;Menu菜单里可以查看开发者信息。4.2.系统流程图图4-1系统流程图4.3.系统界面需求分析目前国内软件开发者在设计过程中很注重软件的开发技术及其具有的业务功能,而忽略了用户对软件界面的需求,影响软件的易用性、友好性。界面设计要简约

12、、美观,不能太复杂,让用户操作起来太繁琐,影响用户的使用体验,要在交互性与应用性上让用户感到舒适,让用户准确、高效、轻松、愉快地完成天气的查询,所以软件的友好性、易用性对软件系统至关重要。4.4.系统性能需求分析软件在完成功能需求之后,还要进一步的优化,不能占用手机太多的内存资源,在交互性上使用户获得最佳感受,让使用不同手机设备的用户都能有良好地体验。5.设计与实现5.1.界面布局在页面的布局上,因为界面设计的比较简单,所以只使用了基础的横向布局和纵向布局,横向布局与纵向布局交替使用,完成了天气预报的界面设计。JA,Wla也:事天气孩报-J JLiLinearnearLayLayoutoutJ

13、|_|LinearLjyoutLinearLjyout. .imaq&VieiArlimaq&VieiArlIc|Ab|Ab;wea.crtywea.crty;1门看尸 imaqeView2imaqeView2L LimageViewSimageViewS-i:2-i:2*口 LinearLdyoutLinearLdyoutlAblAbday_te)rtViewday_te)rtView阳 tevtViewl-tevtViewl-IAbwea_textViewAbwea_textView| |LinesLinesrLayoutrLayouttinearLdyouttinearLdyout|Li

14、nearLyoutLinearLyout| |tineatinearLayoutrLayout 口linearLayoutlinearLayout imageView6imageView6- -施|textViewStextViewS- -W 无天气日li&tViewlli&tViewl太原o中 M 星用三天IW2016-12-2B/直:通由OTDTFAjt-r理寺羯音宜埼达码fUj:3领先担用Nf六天团天,飞电;里HR三如出1e翎-C-ITC西二问码无邦埃闻而3噂盛状11凤二?uia.9014-12WTC比挣餐房的依应史剧话州T*,i3,3O尔的元尚知):为风星瞅2(iiM241mrc图5-

15、1界面布局图5-2软件主界面5.2.省市二级联动将老师给的中国省市的编号手动输入到文件中,再定义省份和城市编号两个数组,再定义ArrayAdapter,在两个下拉框上分别放上监听器,将省份与城市进行绑定,将所选择的城市的城市ioibioibmt3-43-4 ,邕 F344344I I:期刘刈乐法2929南用转北闰I I201201 -133-133TO-6TCTO-6TC南北JQJQ图5-4天气信息界面图5-3启动界面2pi4i-T?-32pi4i-T?-3nmgekimnmgekim比oioi图5-5刷新界面图5-6作者信息界面编号存放到一个数组之中,以便之后进行天气信息的获取。关键代码:p

16、rivateintcities=;privateintcitycode=;(newOnClickListener()OverridepublicvoidonClick(Viewv)nflate(null);sp1=(Spinner)sp2=(Spinner)(newOnItemSelectedListener()OverridepublicvoidonItemSelected(AdapterViewparent,Viewview,intposition,longid)etStringArray(citycodeposition);OverridepublicvoidonNothingSelec

17、ted(AdapterViewparent)oString();cityId=st1;(city,().toString();(citycode,cityId);();refresh(););(取消,null);AlertDialogdialog=();(););5.3.获取天气数据获取天气信息主要使用的是HttpURLConnection类,提供了基于HTTP的网络访问方法,E类创建HttpURLConnection对象,以GET/POS访式向服务器发送请求,接收服务器响应,最后通过JSONB据解析,将解析得到数据绑定到相应的组件中。关键代码:publicvoidrefresh()build

18、er=new;Viewv1=.inflate(null);(Waiting);newThread()publicvoidrun()Stringurl=&weaid=+cityld+&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json;(da11111,url);HttpClientclient=newDefaultHttpClient();HttpGetget=newHttpGet(url);tryURLrefresh_textView=(TextView)(v1);finalAlertDialogdialog=();(

19、正在送来+()+的天气信息”);史1313出?dlfeMiKiKdlfeMiKiK图5-7选择省份图5-8选择省份HttpResponseresponse=(get);HttpEntityis=();parseJson(is);catch(ClientProtocolExceptione)tart();();newThread()publicvoidrun()trysleep(1000);();catch(InterruptedExceptione)tart();publicvoidparseJson(Stringjsondata)tryMessagemsg=();Bundledata=new

20、Bundle();JSONObjectob=newJSONObject(jsondata);JSONArrayarr=(result);StringBuildersb=newStringBuilder();for(inti=0;i();i+)JSONObjectjob=(JSONObject)(i);(days)+,);(da,);(week)+,);(temperature)+,);(humidity)+,);(weather)+,);(wind)+,);(winp)+,);(weather_icon)+,);(weather_icon1);(key+i,();(data);(0);(msg

21、);catch(JSONExceptione)penConnection();(3000);(GET);intcode1=();URLurl2=newURL(img2_url);HttpURLConnectionconn2=(HttpURLConnection)url2.openConnection();(3000);(GET);intcode2=();if(code1=&code2=InputStreamis1=();InputStreamis2=();bp=(is1);bp1=(is2);(1);catch(MalformedURLExceptione)tart();handler=new

22、Handler。OverridepublicvoidhandleMessage(Messagemsg)etString(key+0);Stringst=(,);(今天+st1);(st0);(st4);(st2);(st3);(st6);(st5);Stringimg1_url=st7.toString();Stringimg2_url=st8.toString();(ersdfsfgdvystnsdbrev,img2_url);getImg(img1_url,img2_url);handler1=newHandler。OverridepublicvoidhandleMessage(Messa

23、gemsg)/TODOAuto-generatedmethodstub(msg);if=1)(bp);(bp1);5.4.播放背景音乐在src中新建一个service类,在其中实现播放音乐的功能,在主程序中调用时,直接用intend跳转,想要停止播放时,直接停止这个service就可以了。关键代码:publicclassPlayMusicextendsServiceprivateMediaPlayermpOverridepublicIBinderonBind(Intentintent)/TODOAuto-generatedmethodstubreturnnull;Overridepublicv

24、oidonCreate()/TODOAuto-generatedmethodstub();mp=(this,(true);OverrideDeprecatedpublicvoidonStart(Intentintent,intstartId)/TODOAuto-generatedmethodstub(intent,startId);();OverridepublicvoidonDestroy()/TODOAuto-generatedmethodstub();if()();();)6 .个人总结本次大作业是做一个小app,但整合了这一学期上课所学的知识,由于平时上课知识掌握的不怎么牢靠,做起来还是有一点难度的,因此我遇到了很多问题,通过上网查找资料以及在同学的悉心帮助与指导下,终于顺利完成了这次的期末大作业。但要想完全掌握本学期所学的知识,还需在平时多加努力,多加练习。这门课很有趣,带给了我许多兴趣与挑战,我相信在以后的学习中,会逐渐掌握这门课的技术。参考资料1张荣,宋辉,曹小鹏Android开发与应用,人民邮电出版社,2014年2月第1版2百度文库,CSDN,评语:成绩指导教师

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!