本科毕业论文---基于android平台的天气查询系统的设计与开发安卓天气预报

本科毕业论文---基于android平台的天气查询系统的设计与开发安卓天气预报
本科毕业论文---基于android平台的天气查询系统的设计与开发安卓天气预报

本科毕业论文(设计)基于Android平台的天气查询系统的设计与开发

摘要

天气预报是非常实用的信息服务,随着移动设备的性能不断提高,天气预报在科技不断进步的推动下,已实现了集中、统一、数字化的服务。随着人们日常生活水平的提高,迫切需要高效、及时、稳定的天气高速交互平台。因此,实现一个天气预报服务功能的信息系统就显得十分必要。即可以节省时间,又可以实现个性化的服务,减少不必要的等待和繁重的信息,方便用户及时了解最新的天气信息。

本文介绍了通过访问聚合数据全国天气预报的数据接口,使用HttpClient进行Get方式通信,建立网络连接,使用HttpGet方法读取数据,并且通过HttpResponse获取Entity返回值。并且解析出来获取实时天气,未来4~5天的天气预报及生活信息。用户可以选择城市来获得包括风力、风向、紫外线强度等的天气信息。极大的方便了用户的行程安排或其他情况,避免了不必要的麻烦,且界面美观,操作简单,具有很强的实用性。

关键字:数据接口;界面;实时天气预报;Android

Abstract

The weather forecast is very practical information service, with the continuous improvement of the performance of mobile devices, weather forecast under the impetus of the continuous progress of science and technology, has realized the centralized and unified, digital services. With the improvement of people's daily living standards, it is urgent to need efficient, timely and stable weather interactive platform. Therefore, it is necessary to realize the information system of a weather forecast service function.. That saves time, but also can achieve personalized service, reduce unnecessary waiting and heavy information, convenient users to understand the latest weather information.

By visiting the polymerization data the weather data interface, using httpclient to get communication mode, to establish a network connection, use httpget to read the data and through the httpresponse acquiring entity return value, is introduced in this paper. And resolved to get real-time weather, weather forecasts and life information of the next 4~5 days. Users can choose the city to get the weather information including wind, wind direction, UV intensity and so on. Greatly convenient for the user itinerary or other circumstances, to avoid unnecessary trouble, and the interface is beautiful, simple operation, with strong practicality.

Keywords: API; UI; Real-time weather forecast; Android

目录

摘要................................................................................................................................. I Abstract ........................................................................................................................ I I 第1章引言 (1)

1.1 研究背景 (1)

1.2 国内外的研究状况及发展趋势 (1)

1.3 系统分析及其主要内容 (2)

1.4 论文组织结构 (2)

第2章系统实现所涉及的技术 (3)

2.1 Android系统概述 (3)

2.2 Eclipse介绍 (3)

2.3 Android系统框架 (4)

2.4 Android四大组件 (4)

2.5 用户界面 (6)

2.6 Fragment (7)

2.7 网络编程之使用HttpClient进行Get方式通信 (7)

第3章开发环境配置 (9)

3.1 Android开发框架 (9)

3.2 开发所需软件 (12)

3.2.1 Android开发环境配置 (13)

3.2.2 Eclipse的设置 (14)

第4章系统总体分析与模型设计 (15)

4.1 系统的总体结构 (15)

4.2 功能分析 (16)

4.2.1 天气模块功能分析 (16)

4.2.2 生活模块功能分析 (17)

4.2.3 我模块功能分析 (17)

4.3 系统流程图 (18)

第5章详细设计 (20)

5.1 新建工程 (20)

5.2 Android UI界面的实现 (21)

5.3 登陆注册模块的实现 (22)

5.4 界面切换功能实现 (23)

5.5 天气模块的实现 (23)

5.5.1 天气信息 (24)

5.5.2 温度曲线图的画法 (25)

5.5.3 下拉刷新 (25)

5.6 生活模块的实现 (25)

5.7 我模块的实现 (26)

5.7.1 城市管理的功能实现 (26)

5.7.2 通知提醒功能实现 (27)

第6章系统测试 (28)

6.1 测试目的 (28)

6.2 测试环境 (29)

6.3 测试结果 (30)

致谢 (32)

参考文献 (33)

附录 (34)

附录A: 主要源程序 (34)

附录B: 软件使用说明书 (42)

附录C: 光盘 (43)

中原工学院信息商务学院毕业设计(论文)

第1章引言

许多先进技术迅速地应用于气象业务中,可供天气预报用的实时和非实时资料急增,这就要求利用自动化的高速通信技术和信息处理技术处理这些资料。为适应上述发展,正逐步改进气象通信体制,加速气象通信现代化。

现在人们生活水平的提高,对生活质量的要求也越来越高,然而外部自然气候的变化却不容乐观。不管是外出旅行还是农业生产等,气候变化情况一直都引起人们的普遍关注,人们迫切的需要随时随地的掌握准确的天气预报信息。比如,如果有雨,就建议出门带伞;如果温度高于某值就建议防晒等。

1.1 研究背景

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。在如今这个智能手机系统群雄纷争的时候,Android采用Linux内核,开放手机联盟成员可以任意使用和修改SDK包,系统的开源性使其具有良好的拓展性。不仅具有非常好的开发、调试环境,而且还支持各种可扩展的用户体验,包括丰富的图形组件、多媒体支持功能以及强大的浏览器。因此,对于软件从业人员来说,Android平台具有无限的吸引力。2013年09月24日Android迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。

1.2 国内外的研究状况及发展趋势

近些年来,世界范围的气候异常,使人类面临日益严重的粮食、能源和水资源危机,因此社会对气象工作提出了更为迫切的要求。与此同时,遥感技术,电子计算机等最新科学技术进入气象业务,形成了新的大气探测技术,快速通信和计算处理,从而获取更多的大气信息,推动了气象业务的发展。国外气象业务发展的一个重要趋势是日益趋向自动化,即把自动化观测、数据处理、通信及客观分析、预报制作和发布结合成一个完整的自动化系统。

移动设备性能的不断提高,无线网络从2G提高到3G甚至4G,天气预报在科技不断进步的推动下也需要朝着信息多元化演变,应该从单纯的文字信息逐渐向文字图像视频等多种数据融合转变。形成了一个集中、统一、数字化的天气预报系统,实现智能终端高效、及时、稳定的信息交互。

田凯:基于Android平台的天气查询系统的设计与开发

1.3 系统分析及其主要内容

Android平台的天气预报软件可以进一步扩大气象信息的覆盖面,让广大Android手机用户能够在第一时间获取最新的天气预报信息,以便提前预防,方便出行。同时,把气象灾害造成的损失降到最低,也可以提高公共服务质量,更好的发挥气象事业对经济社会发展的现实性作用,有巨大的实用价值。该技术在Android 平台已经比较成熟,通过该软件的开发让我们更好的认识Android系统的工作原理。

本软件是一个App 应用程序,启动程序后可以切换城市,通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。这些天气数据通过后台服务获取,后台服务可以按照一定时间间隔,从互联网上获取天气预报信息,并将天气信息解析显示在手机界面上。

从上面的描述中可以基本了解软件的功能需求:

(1) 启动App应用程序注册登陆。

(2) 显示天气模块:通过文字和图片显示当前的天气情况,包括日期、时间、城市、最高温度、最低温度、当前温度等。

(3) 显示生活模块:通过文字图片动画显示当前的天气情况,包括城市当前天气、温度、风向、风速、湿度;同时显示今后5天的天气情况。

(4) 我模块:城市管理,通知提醒,意见反馈,关于。

1.4 论文组织结构

本论文讨论的是基于android平台的天气查询系统的设计与开发,所以本文的组织结构就是围绕着基于基于android平台的天气查询系统的设计与开发的整个过程来进行。

第一章引言。

第二章系统实现所涉及的技术。

第三章安卓开发环境配置。

第四章系统总体分析与模型设计。

第五章详细设计,对界面模块设计、数据解析、曲线图的画法进行代码设计。

第六章测试,对设计功能进行了测试。

文章最后是总结、致谢与参考文献等。

中原工学院信息商务学院毕业设计(论文)

第2章系统实现所涉及的技术

2.1 Android系统概述

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。

Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号,[1] 于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。其中的文字使用了Ascender公司专门制作的称之为“Droid ”的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。

2012年7月美国科技博客网站BusinessInsider评选出二十一世纪十款最重要电子产品,Android操作系统榜上有名。

2.2 Eclipse介绍

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。Eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。

它主要由Eclipse项目、Eclipse工具项目和、Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。

田凯:基于Android平台的天气查询系统的设计与开发

2.3 Android系统框架

Android系统的软件开发,语言基础是java语言,通过控件的设置以及方法调用,实现一系列的功能。Android系统提供给应用程序开发者的只是一个框架,在该平台下开发应用程序必须要遵守这个框架原则。我们开发的应用程序其实就是在这个框架上进行拓展,下面介绍一下android这个框架所提供的功能。

Android.app:提供最上层的程序模型和运行环境。

Android.content:包含对设备上的数据进行访问和发布的类。

Android.database:Android系统内置一个轻量级的SQLite数据库。

Android.graphics:底层的图形库,包含颜色过滤,画布,矩形,点,可以用来将它们直接绘制到屏幕上。

https://www.360docs.net/doc/0017323965.html,: 提供用来帮助访问网络的类。

Android.location:定位以及与定位有关的一些类。

Android.util:涉及到一些实用性的方法,例如对时间和日期进行操作。

Android.media: 提供一些管理多种视频,音频的媒体接口。

Android.os:提供了系统服务,IPC机制和消息传输。

Android.opngl:提供了OpenGL的工具。

Android.provider:提供了访问Android中的内容提供者的类。

Android.telephony:提供用来与拨打电话相关的API交互的类。

Android.view: 提供最基本的用户界面接口框架。

Addroid.webkit:提供用来调用默认浏览器的接口。

Android.widget包含各种UI元素,可以在应用程序的布局中使用。

2.4 Android四大组件

一个Android 应用程序,通常由Activity、Intent Receiver、Service、CONtent Provider 四种功能组件构成。但是,并不是每一个Android 应用程序都需要用到这四种功能组件,而是只需上述四种功能组件的某些组合。

(1)Activity

Activity是最基本的Android 应用程序组件。大多数应用由多个屏幕组成,一个Activity 通常则是一个单独的屏幕。每一个Activity 都被实现为一个独立的类,并且从Activity 基类中继承而来。Activity 类将会显示由视图控件组成的用户接口,并对事件做出响应。Android 使用Intent 这个特殊类,实现在屏幕与屏幕之间移动。通过解析各种Intent,从一个屏幕导航到另一个屏幕是很简单的。当向前导航时,Activity 将会调用STartActivity(Intent myIntent)方法,然后,系统会在所有安装的

中原工学院信息商务学院毕业设计(论文)

应用程序中所定义的IntentFilter 中查找,找到最匹配myIntent的和Intent 对应的Activity.新的Activity 接收到myIntent 的通知后,开始运行。当startActivity 方法被调用时将触发解析myIntent 的动作。这个机制具有两点优势:一是能够重复利用从其他组件中以Intent 形式产生的一个请求;二是Activity 可以在任何时候被一个具有相同IntentFilter 的新Activity 取代。

Activity 的生命周期

在Android开发中,Activity是非常重要的。Activity主要负责创建和显示窗口,也可以把一个Activity理解成一个显示的屏幕;在Android的应用中不是仅有一个Activity,而是由很多个Activity存在。因其重要性,开发Android务必熟悉Activity 生命周期。

onCreateView:Activity初次创建时被调用,一般在这里创建view,初始化布局信息,将数据绑定到list以及设置监听器等。如果Activity首次创建,本方法将会调用onStart( );如果是停止后重新显示,则将调用onRestart( )。

onStart:当Activity对用户即将课件的时候被调用onResume( )。

onRestart:当Activity停止后重新显示的时候被调用,然后调用onStart( )。

onPause:当系统要启动一个其他的Activity时调用(其他的Activity显示之前),这个方法使用来停止动画和其他占用CPU资源的事情,所以这这里应该保存那些持久数据,这些数据可以在onResume( )方法中读出。

onStop:当另一个Activity恢复并遮盖住当前Activity,导致其对用户不再可见时调用,一个新的Activity启动,其他Activity重新回到前景与用户交互时会重新调用onResume( ),如果Activity将退出则调用哦你D额story( )。

onDestory:在当前Activity被销毁之前所调用的最后一个方法,当进程终止前调用。

(2)Intent Receiver

Intent Receiver 是实现的应用能够对一个外部的事件作出响应。Intent Receiver 在AndroidManifest.xml 中注册,也可以在代码中使用Context.registerReceiver( )进行注册。当一个IntentReceiver 被触发时,应用不必对请求调用Intent Receiver,系统会在需要的时候启动应用。各种应用还可以通过使用Context.brOAdcastIntent( )将它们自己的Intent Receiver广播给其他应用程序。

(3)Service

Service 是一段长生命周期的、没有用户界面的程序。例如媒体播放器这个Activity 会使用Context.startService( )来启动一个Service,从而可以在后台播放音乐。同时,系统也将保持这个Service 一直执行,直到Service 运行结束。系统可通过使

田凯:基于Android平台的天气查询系统的设计与开发

用Context.bindService( )方法,连接到一个Service 上(如果这个Service 还没有运行将启动它)。当连接到一个Service 之后,还可以利用Service 提供的接口与它通信。就媒体播放器来说,还可以进行暂停、重播等操作。

(4)Content Provider

Content Provider是Android 应用程序能够将它们的数据保存到文件、SQL 数据库,甚至是任何有效的设备中。Content Provider 实现了应用数据与其他的应用程序的共享。Content Provider 类实现一组标准的方法,能够让其他应用程序保存或读取此ContentProvider处理的各种类型数据。在Android 中,默认使用SQLite 作为系统数据库,但使用方法略有不同。Android 中每一个应用程序都运行在各自的进程中,当访问其他应用程序的数据时,需要在不同的虚拟机之间传递数据,这样操作起来会有些困难(正常情况下,不能读取其他应用程序的数据库文件)。ContentProvider 正是解决不同的应用包共享数据的工具。

2.5 用户界面

Android系统的界面空间分为定制控件。定制空间是用户独立开发的空间,或者通过继承并修改系统空间后所产生的新空间,能够提供特殊的功能和显示需求。系统控件是Android系统中已经封装好的界面控件,而在代码中动态修改需要更新状态的界面元素。当然,用户也可以将所有的界面元素,无论在程序运行后是否需要修改其内容,都放在代码中进行定义和声明。很明显这不是一种良好的界面设计模式,会给后期界面修改带来不必要的麻烦,是应用程序开发过程中最常见的功能控件。系统控件更有利于进行快速开发,同事能够使Android应用程序的界面保持一定的一致性。

常见的系统控件包括TextView、EditView、Button、ImageButton、CheckButton、Spinner、ListView和Tablehost。

界面布局(layout)是用户界面结构的描述,定义界面中所有的元素、结构和相互关系。一般生命Android程序的界面布局有两种方法,第一种是使用XML文件描述界面的布局,另一种是在程序运行时动态添加或修改界面布局。

Android系统在生命界面布局上提供了很好的灵活性,用户既可以独立使用任何一种声明布局的方式,也可以同时使用两种方式。一般情况下,使用XML文件来描述用户界的基本元素,而在代码中动态修改需要更新状态的界面元素。当然,用户也可以将所有的界面元素,无论在程序运行后是否需要修改其内容,都放在代码中进行定义和声明。很明显这不是一种良好的界面设计模式,会给后期界面修改带来不必要的麻烦,而且界面较多时,程序代码也会显示凌乱不堪。

中原工学院信息商务学院毕业设计(论文)

使用XML文件声明界面布局,能够更多地将程序的表现层和控制层分离,在修改界面时将不再需要更改程序的源代码。

界面布局的种类:

(1) 线性布局:线性布局(LinearLayout)是一种重要的界面布局,也是经常使用的界面布局。在线性布局中,所有子元素都在垂直或水平方向按照顺序在界面上排序。

(2) 框架布局: 框架布局(FrameLayout)是最简单的界面布局,用来存放一个元素的空白控件,且子元素的位置不能够制定的,只能够放置在空白空间的左上角。

(3) 表格布局:(TableLayout)也是一种常用的界面布局,它将屏幕划分为表格,通过制定行和列可以将界面元素添加到表格中。

(4) 相对布局:(RelativeLayout)是一种非常灵活的布局方式,能够通过指定界面元素与其他元素的相对位置关系,确定界面中所有元素的布局为止。

(5) 绝对布局:(AbsoluteLayout)能通过指定界面元素的坐标文职,来确定用户界面的整体布局。

2.6 Fragment

Fragment的主要目的在大屏幕设备上实现灵活的、动态的界面设计。例如,在Android的平板电脑上,因为屏幕有更多的空间来配置更多的组件,并且这些组件之间还会产生一定的数据交互。

Fragment支持这种设计理论,开发人员不需要管理复杂的试图结构变化,而且把这些动态的管理交给Fragment和回退堆栈(back stack)完成,在进行界面设计时,只需要将界面布局按照功能和取于划分为不同的模块,每个模块设计成一个Fragment即可。

Fragment具有和Activity类似的生命周期,但是比Activity支持更多的事件回调函数。Fragment生命周期中回调函数。

2.7 网络编程之使用HttpClient进行Get方式通信

基于Android 操作系统的天气实况预报系统设计的核心是通过调用通信协议SOAP(Simple Object AccessProtocol)的接口,从Web Service 提供商中提取天气预报的数据信息。采用HttpPost来与后台交互,然后对数据进行解析,从中找到需要的数据。如下图所示为提供webservice服务的网站网络拓扑图

田凯:基于Android平台的天气查询系统的设计与开发

图2-1 网络拓扑图

在Android开发中,Android SDK附带了Apache的HttpClient,它是一个完善的客户端。它提供了对HTTP协议的全面支持,可以使用HttpClient的对象来执行HTTP GET和HTTP POST调用。

HTTP工作原理:

(1) 客户端(一般是指浏览器,这里是指自己写的程序)与服务器建立连接

(2) 建立连接后,客户端向服务器发送请求

(3) 服务器接收到请求后,向客户端发送响应信息

(4) 客户端与服务器断开连接

HttpClient的一般使用步骤:

(1) 使用DefaultHttpClient类实例化HttpClient对象

(2) 创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet 或HttpPost对象。

(3) 调用execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse 对象。

(4) 通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

最后记得要在AndroidManifest.xml文件添加网络权限

聚合数据全国天气预报数据接口使用HttpClient进行Get方式通信,通过HttpClient建立网络连接,使用HttpGet方法读取数据,并且通过HttpResponse获取Entity返回值。

中原工学院信息商务学院毕业设计(论文)

第3章开发环境配置

3.1 Android开发框架

下图是Android的体系架构图,自上而下分别为应用层、应用框架、类库和Alvik 运行时环境以及Linux内核。

图3.1 Android的体系架构图

一般来说,我们想从事Android开发,可以从应用开发作为切入点,逐渐熟悉其整个体系,并慢慢往其底层渗透,从而能做到软硬兼备,Android系统开发班的课程设置就充分考虑到了这一点,既涉到应用开发的透彻掌握,又帮助大家在系统开发层面上做好充分的准备。而从学习的路线图上来说,先熟悉Java SE编程,能比较熟练的使用Java语言进行编程,熟悉Java语言语法特点,熟悉Java IO、Java线程、网络编程、XML处理等。另外,因为很多的Android应用在运行时都需要去访问网站服务器,因此,熟悉一种网络编程语言也是必要的。

无论是从开发班的课程设置就充分考虑到了这一点,既涉到应用开发的透彻掌握,又帮助大家在系统开发层面上做好充分的准备。而从学习的路线图上来学习的方便性还是市场占有情况来说使用JSP/Servlet都是不二的选择,另外,在这个阶段也顺便学习一下SQL语法和熟悉一种SQL数据库,以方便后续Android开发中进行SQLite数据库开发。学习完这些课程后,就可以开始进行Android的应用开发的学习,例如Android中的UI组件、基本组件、数据存储、传感器、图形图像处理、多媒体处理、游戏开发等。

Android包含一套C/C++库,Android系统的各式组件都在使用。这些功能通过

相关文档
最新文档