收藏 分享(赏)

安卓天气预报课程设计.docx

上传人:HR专家 文档编号:4837352 上传时间:2019-01-15 格式:DOCX 页数:36 大小:474.63KB
下载 相关 举报
安卓天气预报课程设计.docx_第1页
第1页 / 共36页
安卓天气预报课程设计.docx_第2页
第2页 / 共36页
安卓天气预报课程设计.docx_第3页
第3页 / 共36页
安卓天气预报课程设计.docx_第4页
第4页 / 共36页
安卓天气预报课程设计.docx_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、石家庄铁道大学Android 系统课程设计报告2016 年 夏 季学期题 目: 基于 Android 的天气预报开发 学 院: 电气与电子工程学院 专 业: 电子信息工程 学 生 姓 名: 学 号: 指 导 教 师: 完 成 日 期: 2016 年 7 月 15 日 评分表项目号 一 二 三 总分满 分 25 50 25 100得 分评阅人说明:项目一,考察程序运行情况。项目二,考察完成情况包括功能完整性,工作量,界面,用户体验等。项目三,考察课程设计报告的格式和完整性。摘 要随着移动通信技术的发展和无线数据业务的进步,手机已被赋予了除通话以外的其它许多功能。全新的手机软件领域已逐渐聚焦了众多

2、软件开发商的目光,软件开发者和软件用户将共同面临这个振奋人心的新境界。本设计使用 Android 设计技术开发了一种运用在 Android 系统上的手机天气预报软件系统,本系统通过选择城市来获得天气,风向,风向,温度等信息。基于手机的天气预报系统软件可以使用户对于各地的天气情况的实时掌握,极大的方便了用户的出行和行程安排,避免了不必要的麻烦,具有很强的实用性。关键词:Android;手机天气预报软件。目 录第 1 章 绪论 .11.1 课题研究内容 11.2 课题研究的目的和意义 11.3 课题研究前景 2第 2 章 系统需求分析 .32.1 系统功能需求 32.2 系统流程图 32.3 系统

3、界面需求 42.4 系统性能需求 4第 3 章 详细设计和功能实现 .53.1 界面的设计 53.1.1 欢迎界面设计 53.1.2 菜单界面设计 .63.2 各模块详细设计 63.2.1 欢迎模块设计 .63.2.1 主工程设计 .7第 4 章 软件测试 .154.1 电脑模拟器测试 154.2 手机端测试 17第 5 章 总结与展望 .185.1 总结 185.2 不足与展望 18参考文献 .19附录 .20重要程序 118重要程序 218Android 系统课程设计1一、绪论Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由

4、 Google 公司和开放手机联盟领导及开发。Android 操作系统最初由 Andy Rubin 开发,主要支持手机。2005 年 8 月由 Google收购注资。2007 年 11 月,Google 与 84 家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良 Android 系统。随后 Google 以 Apache 开源许可证的授权方式,发布了 Android 的源代码。第一部 Android 智能手机发布于 2008 年10 月。Android 逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011 年第一季度,Android 在全球的市场份额首次超过塞班

5、系统,跃居全球第一。 2012 年 11 月数据显示,Android 占据全球智能手机操作系统市场 76%的份额,中国市场占有率为 90%。2013 年 09 月 24 日谷歌开发的操作系统 Android 在迎来了 5岁生日,全世界采用这款系统的设备数量已经达到 10 亿台。1.1 课题研究内容本课题研究的是基于 Android 平台下的天气软件,目的是使用户能随时随地的查询天气信息及天气变化情况,让生活更加舒适方便。本文讲述 Android 平台下天气软件的界面设计以及数据的获取和解析,主要包括界面的实现,控件的使用,界面的布局和数据处理等内容,结合中国气象网的天气数据,将准确的天气情况以

6、友好的方式呈现给用户,使用户更加赏心悦目的体验本软件的服务。通过对界面的布局及控件的应用等相关内容的学习,使我们对 Android 平台下界面开发工作有一个初步的了解,并且经过这次开发过程,能够基本掌握这些内容。1.2 研究目的和意义天气软件是一种非常实用的信息服务,随着智能手机的不断普及,各种智能手机平台下都有各种各样的天气软件。Android 作为现在主流的智能手机之一,自然也需要这方面的软件。天气关系到人们的日常生活,如告知温暖,方便出行等。一款简单实用的天气软件会很吸引用户。基于 Android 平台的天气软件已经有很多,经过分析,用户第一眼往往是一个Android 系统课程设计2软件

7、的外观,一个好看的界面才能让用户以一种爱美之心去尝试,才能进一步了解一个软件的好坏,所以吸引眼球的界面是争取用户的第一步。因此,界面设计工作对应用程序来说非常重要,在界面上吸引了用户,才能进一步让用户体验应用程序中的功能,使用这个软件。1.3 研究前景Android 最吸引人的特点是开源特性,因其开源,允许所有人对其代码进行开发和修改,同时又由于其代码的简单易学性,Android 在全世界拥有众多的粉丝。Android 在中国的前景十分广阔,首先是有成熟的消费者,在国内,Android 社区十分红火,这些社区为 Android 在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了 An

8、droid 阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同时不仅仅局限于手机,国内厂家也陆续推出了采用 Android 系统的产品,我们可以预见 Android 将会被广泛应用在国产智能上网设备上,将进一步扩大 Android 系统的应用范围。Android 采用了软件层(Software stack)的构架,主要分为三个部分。底层以Linux 为内核作为基础,由 C 语言开发,只提供基础功能,中间层次包话函数库和虚拟机,由 C+开发。最上层是各种应用软件,包话通话程序,短信程序。应用软件可以由各公司或个人自行开发,以 JAVA 编写。Android 系统课程设计3二、系统

9、需求分析2.1 系统功能需求1.可以罗列出全国所有的省市县。2.可以查看全国任意城市的天气信息3.可以自由的切换程式去查看其他城市的天气4.提供手动更新以及后台自动更新天气的功能2.2 系统流程图Android 系统课程设计4图 2.1 系统流程图2.3 系统界面需求根据应用程序的功能需要,对用户界面做如下分析:实时天气界面:显示城市当前的实时天气状况,包括城市名称、城市名片、天气情况、温度高低、星期等信息。界面左边有一列城市列表,显示中国各个城市名称,当用户想知道哪个城市的天气情况时,点击这个城市名就可以获取天气状况,考虑到使软件占用尽量小的内存,软件去掉了不必要的花哨,显示城市名称,城市名

10、片,温度和天气情况,同时对未来 6 天的天气情况简要描述,简要显示星期、天气描述、温度高低等数据,使用户一目了然,使人们及时了解天气变化,对日常生活出行、穿衣做好准备。Android 系统课程设计52.4 系统性能需求1.应用程序能根据中国天气网接口返回的数据准确的显示地区天气信息。2.应用程序响应时间应在人的感觉和视觉范围内,系统响应时间足够迅速。3.应用程序在 android4.0 及以上版本运行时,应具有适应能力,能稳定运行。4.应用程序操作界面简单明了,易于操作。Android 系统课程设计6三、详细设计和功能实现3.1 界面的设计3.1.1 欢迎界面的设计欢迎界面,采用简洁明了的布局

11、,添加了一个 button 点击事件,点击即可跳转到主界面即省份选择菜单。如图 3.1 所示图 3.1 欢迎界面Android 系统课程设计73.1.2 菜单界面设计菜单界面菜单界面采用列向布局和子菜单。这样直观明了,简洁清晰。(当为省份时标题栏显示中国),省份,城市。如图 3.2 所示3.2 a b注:a 为省份菜单, b 为市级菜单3.2 各模块详细设计3.2.1 欢迎模块设计1.新建一个 WelcomeActivity 类,并让它继承 Activity 类。任何活动都应该重写onCreate()方法。public class WelcomeActivity extends Activit

12、yprotected void onCreate(Bundle savedInstanceState) Android 系统课程设计8super.onCreate(savedInstanceState);2.新建一个布局文件,命名为 welcome_layout,根元素选择为 LinearLayout。创建成功后,再 LinearLayout 下添加背景添加语句:android:background=“drawable/b“添加一个按钮,用于点击事件的触发:在 WelcomeActivity 里,关联布局文件和实例化 button.然后添加 onClick,构造出一个 intent,传入 We

13、lcomeActivity 上下文,传入 ChooseAreaActivity.class 为目标活动。即在 WelcomeActivity 这个活动的基础上打开 ChooseAreaActivity 这个活动。然后通过 startActivity()方法来执行这个 intent。setContentView(R.layout.welcome_layout);Button button1=(Button)findViewById(R.id.button1);button1.setOnClickListener(new OnClickListener()public void onClick(V

14、iew v)Intent intent=new Intent(WelcomeActivity.this,ChooseAreaActivity.class);startActivity(intent);Android 系统课程设计93.2.2 主工程设计3.2.2.1 第一阶段1.新建工程命名为 coolweather。为了让项目有更好的结构。需要在com.coolweather.app 包下再新建一个包,如图 3.3 所示。图 3.3 新建包构架其中 activity 包用于存放所有活动代码,db 包用于存放所有数据库相关的代码,model 包用于存放所有模型相关的代码,receiver 包用

15、于存放所有广播相关的代码,service 包用于存放所有服务相关的代码,util 包用于存放所有工具相关的代码。2.创建数据库和表,这样从服务器获取的数据才能够存储到本地。表的设计这里建立三张表,Province,City,County,分别用于存放省,市,县的各种数据信息,三张表的建表语句如下(以 county 表为例)County:create table County(id integer primary key autoincrement,county_name text,county_code text,city_id integer)其中 id 是自增长主键,county_name

16、 表示县名,county_code 表示县级代号,Android 系统课程设计10city_id 是 county 表关联 city 表的外键。接下来将建表语句写入到代码中。在 db 包下新建 CoolWeatherOpenHelper 类,用于 province,city,county 的建表。核心代码如下所示。public void onCreate(SQLiteDatabase db) /创建表db.execSQL(CREATE_PROVINCE);db.execSQL(CREATE_CITY);db.execSQL(CREATE_COUNTY);3.为每张表创建一个对应的实体类。在 m

17、odel 下分别新建 Province 类,city 类,county 类。实体类非常简单,基本就是对应字段的 get 和 set 方法。类的创建如图3.4 所示。图 3.4 实体类4.创建一个 CoolWeatherDB 类,这个类将会把一些常用的数据库操作封装起来,以方便后面使用。代码如下所示。定义数据库名,版本。将构造方法私有化,实例化数据库。保存加载省级、市级、县级数据信息从提交的程序中可以看到 CoolWeatherDB 是一个单例类,这里将它的构造方法Android 系统课程设计11私有化,并提供了一个 getInstance()方法来获取 CoolWeatherDB 的实例,这样

18、就可以保证全局范围内只会有一个 CoolWeatherDB 的实例。在 CoolWeatherDB 中,提供了六组方法,saveProvince() 、loadProvince()、saveCity()、loadCities() 、saveCounty()、loadCounties(),分别用于存储省份数据、读取所有省份数据,存储城市数据、读取某省内所有城市数据,存储县数据、读取某市内所有县的数据。3.2.2.2 第二阶段1.全国所有的省市县的数据都是从服务器端获取到的,所以为了使程序具有遍历全国省市县的功能,这里和服务器的交互式必不可少的。所以先在 util 包下增加一个 HttpUtil

19、类。因为在 HttpUtil 中使用到了 HttpCallbackListener 接口来回调服务返回的结果,因此还需要在 util 包下添加这个接口。另外由于服务器返回的省市县数据都是“代号|城市,代号 |城市,”这种格式的,所以要再提供一个工具类来解析和处理这种数据,。在 util 包下再新建一个 Utility 类。在该类中,提供了handlepRrovince()、handleCitiesResponse() 、handleCountiesResponse() 这三个方法,分别用于解析和处理服务器返回的省级、市级、县级数据。解析的规则就是先按逗号分隔,再按单竖线分隔,接着将解析出来的数

20、据设置到实体类中,最后调用CoolWeatherDB 中的三个 save()方法将数据存储到相应的表中。两个类和一个接口的创建如图 3.5 所示。图 3.5 解析数据工具类2.工具类准备好,开始布局,在 res/layout 目录下新建 choose_area.xml 布局。布局文件中的内容比较简单,先是定义一个 50dp 高的头布局,并在里面放置了一个 TextView 用于显示标题内容。然后在头布局的下面定义了一个 ListView,用于显示省市县的数据。3.编写用于遍历省市县的活动,在 activity 包下新建 ChooseAreaActivity 继承自Activity。Androi

21、d 系统课程设计12该类中的代码非常多,这里只把逻辑理理。在 onCreate()方法中先是获取到了一些控件的实例,然后去初始化了 ArrayAdapter,将它设置为 ListView 的适配器。之后又去获取到了 CoolWeatherDB 的实例,并给 ListView 设置了点击事件,到这,初始化工作完成。在 onCreate()方法的最后调用了 queryProvince()方法,也就是从这里开始加载省级数据的。queryProvinces() 方法的内部会首先调用 CoolWeatherDB 和 loadProvinces()方法来从数据库读取省级数据。如果读取到了就直接将数据显示到

22、界面上,如果没有读取到就调用 queryFromServer()方法从服务器上查询数据。queryFromServer()方法会先根据传入的参数来拼装查询地址,现在网上有不少免费的天气预报接口可以实现上述功能,例如新浪天气,百度天气的,这里我准备使用中国天气网提供的 API,接口来实现上述功能。比如要想,努力出中国所有的省份,只需访问如下地址,这里需要注意,如果用浏览器直接访问的话,可能会得到一个错误提示。这是因为浏览器认为服务器应该返回一个 xml 格式的数据。但实际上服务器返回的数据,并不是 xml 格式所导致的,右键查看网页源码代码就可以看到服务器返回的真是数据了:http:/ 黑龙江,

23、06| 吉林,07|辽宁,08|内蒙古,09|河北,10|山西,11| 陕西,12|山东,13| 新疆, 14|西藏,15|青海,16|甘肃,17|宁夏,18|河南,19|江苏, 20|湖北,21| 浙江,22|安徽,23|福建,24|江西,25|湖南,26|贵州,27|四川,28| 广东,29|云南,30| 广西, 31|海南,32|香港,33|澳门,34|台湾可以看到北京的代号是 01,上海的代号是 02,不同省份之间以逗号隔开,省份名称和省级代号之间用单竖线分隔。要想知道某个省内有哪些城市,比如江苏的代号是 19,那么只要访问如下地址:http:/ 系统课程设计13这次服务器返回的数据如

24、下:190401|苏州,190402|常熟,190403|张家港,190404|昆山,190405|吴县东山,190406|吴县,190407|吴江,190408|太仓通过这种方式,就能把全国所有的省,市,县,都罗列出来了。那么解决了全国省市县数据的获取,然后就是解决查询天气信息的问题。这里原理同上,比如,昆山的县级代号是 190404,那么访问如下地址:http:/ 101190404 就是昆山所对应的天气代号了。这个时候再去访问查询天气接口,将相应的天气代号填入即可,接口地址如下:http:/ JSON 格式返回给我们了,如下所示:“weatherinfo”:“city”:昆山,”city

25、id ”:101190404,”temp1”:”21”,”temp2 ”:”9”,”weather”:”多云转小雨” ,”img1”:”d1.gif”, ”img2”:”n7.gif”,”ptime”:”11:00”其中 city 表示城市名,cityid 表示城市对应的天气代号, temp1 和 temp2 表示气温是几度到几度,weather 表示今日天气信息的描述,img1 和 img2 表示今日天气对应的图片,ptime 表示天气发布的时间。确定了查询地址之后,接下来就调用 HttpUtil 的 sendHttpRequest()方法来向服务器发送请求,响应的数据会回调到 onFini

26、sh()方法中,然后去调用 Utility 的handleProvincesResponse()方法牵扯到了 UI 操作,因此必须要在主线程中调用,这Android 系统课程设计14里借助了 runOnUiThread()方法来实现从子线程切换到主线程,它的实现原理其实也是基于异步消息处理机制的。现在数据库中已经存在了数据,因此调用queryProvinces()就会直接将数据显示到界面上。当你点击了某个省的时候进入到 ListView 的 onClick()方法中,这个时候会根据当前的级别来判断是去调用 queryCities()方法还是 queryCounties()方法,queryCit

27、ies()方法是去查询市级数据,而 queryCounties()方法是去查询县级数据,这两个方法内部的流程和 queryProvinces()方法基本相同,不重复说明了。这里重写 onBackPressed()方法来覆盖默认 Back 键的行为,会根据当前的级别来判断是返回市级列表、省级列表、还是直接退出。配置 androidMainifest.xml 文件。为活动添加访问网络权限现在已经程序已经可以运行。如图 3.6 所示。图 3.6 省份菜单Android 系统课程设计15可以看到,全国所有的省级单位都出来了,继续查看市级单位,比如点击黑龙江如图 3.7 所示。图 3.7 市级菜单然后再

28、点击黑河,结果如图 3.8 所示。Android 系统课程设计16图 3.8 县级菜单这样第二阶段的开发工作完成。3.2.2.3 第三阶段1.查询天气,需要把天气信息显示出来。所以要穿件一个新的界面用于显示。创建 weather_layout.xml。在这个布局文件中,并没有特殊的控件,基本就是使用TextView 显示数据信息,然后嵌套多层 LinearLayout 和 RelativeLayout 来控制TextView 的显示位置。在 Utility 类中添加几个方法,用于解析和处理服务返回的 JSON 数据,如下所示其中 handleWeatherResponse()方法用于将 JSO

29、N 格式的天气信息全部解析出来,saveWeatherInfo()方法,用于将这些数据都存储到 SharedPreferences 文件中。Android 系统课程设计17在 activity 包下,新建 WeatherActivity 继承自 Activity。该活动用于显示城市名,发布时间,气温,日期等。最后将 ChooseAreaActivity 和 WeatherActivity 关联。在 ChooseAreaActivity 中添加代码:SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this

30、);if(prefs.getBoolean(“city_selected“, false)startActivity(intent);finish();else if(currentLevel=LEVEL_COUNTY)String countyCode=countyList.get(index).getCountyCode();Intent intent=new Intent(ChooseAreaActivity.this,WeatherActivity.class);intent.putExtra(“county_code“, countyCode);startActivity(inten

31、t);finish();最后添加切换城市和更新天气按钮。运行程序,如图 3.9 所示Android 系统课程设计18图 3.9 北安天气Android 系统课程设计19四、软件测试4.1 电脑模拟器测试软件编写完成,对其进行测试,首先将手机天气预报系统在电脑模拟环境下测试的方案,以下是对系统进行测试,在 Eclipse 的 Package Explorer 窗口中用鼠标右键选择 weather 工程名,在弹出的窗口中选择“Run As“Android Application“安装该应用程序到 Android 模拟器并启动它,如图 4.1 所示。图 4.1 启动模拟器等待模拟器启动完成软件的安装

32、,然后单击所要查询的城市名称列表项,稍等片刻便会显示出该城市的天气实况信息。电脑模拟测试结果如图 4.2 所示。Android 系统课程设计20图 4.2 潞城天气经查询当地的天气发现基本一致,所以可以知道软件获得的数据是正确的,说明软件的可行性基本满足要求。Android 系统课程设计214.2 手机端测试图 4.3 临武天气该测试说明开发的天气预报软件可以独立在 Android 设备运行,满足设计要求Android 系统课程设计22的独立性,通过与网络的数据比较,可以发现,天气预报软件获取的数据与实际的天气情况非常接近,说明数据的准确性,实时性;从图 9 可以看出,当选择不同的城市时,软件

33、可以通过网络获取不同城市的天气信息,说明该天气预报软件可以获取不同城市的气象信息,满足设计要求。Android 系统课程设计23五、总结与展望5.1 总结为期两周的 Android 实训已经结束,在这两周中我学习了很多,也得到了很多。实训是把理论与实际结合,通过对理论知识的理解,领悟从而运用到生活实际巩固所学的知识,提高对实际生活的认识,积累经验。在此期间能够初次体会到实际生产中的种种技能与经验。完成一项项项目能体现出独立思考能力。在本次 Android天气预报软件开发过程中,我通过学校的图书馆资料和网上查询,了解了 Android的搭建、Intent、Activity 、 Service 等

34、知识。Android 环境搭建的基本工作完成后,本文对界面的控件、布局和美观方面进行设计,对数据获取和解析做了分析,通过模拟器显示城市名片,实时天气情况Android 生产实习对目前应用现状进行了分析与比较,进而研究分析 Android平台的系统架构和组件模型。在此基础上,基于 Android 平台设计和开发,实现对android 编程的理解与应用,特别是在对于控件的应用和活动的创建有了很深的理解。5.2 不足和展望这次实习我制作的软件还是有很多不足之处,这个软件还可以进一步发展,比如“短信预报”、“新闻模块”等功能,如果这些功能都能实现将会对用户有更多的帮助,使他们的生活更加愉悦和方便。我会

35、继续为这个软件添加功能,直到它成长为一个强大的 app。Android 智能手机应用程序的开发涉及了它的整个体系结构,是一项非常复杂的工程。我要以严谨的态度对待它。不骄纵,不菲薄。Android 系统课程设计24参考文献1 .Bill Phillips.Android 编程权威指南 .人民邮电出版社,20152.任玉刚.Android 开发艺术探索 .电子工业出版社,20163.何红辉 关爱民.Android 源码设计模式解析与实战 .人民邮电出版社,20154.郝玉龙 .Android 程序设计基础 .北京交通大学出版社,20135.徐宜生.Android 群英传.电子工业出版社 ,2012

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报