为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Android平台的气象服务系统

2013-03-28 42页 doc 6MB 15阅读

用户头像

is_087216

暂无简介

举报
Android平台的气象服务系统 毕业设计(论文) 题 目 基于Android平台的气象服务系统的设计与实现 英文题目Design and Implementation of the meteorological service system based on the Android platform 学生姓名 马龙 学 号 08114112 指导教师 何月顺 职称 教授 专 业 网络工程 ...
Android平台的气象服务系统
毕业(论文) 题 目 基于Android平台的气象服务系统的设计与实现 英文题目Design and Implementation of the meteorological service system based on the Android platform 学生姓名 马龙 学 号 08114112 指导教师 何月顺 职称 教授 专 业 网络工程 二零一二年五月 摘 要 随着智能手机的快速普及,智能手机用户希望能够随时随地查询互联网所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网以及互联网访问Web网站并处理各种各样的业务。因此,本文就在分析讨论Android手机软件开发技术原理的基础上,详细介绍了在Android 嵌入式平台下实现Google 天气预报客户端的开发,主要包括Google天气预报xml文档的获取与解析、天气预报信息在Android 平台下的呈现等方面技术的介绍。 Android平台的气象服务系统基于Eclipse的开发环境,依托Google气象数据获得实时天气信息,利用SAX解析器对获得的Google Weather API进行解析获得数据,将天气情况显示在界面上,同时显示今后四天的天气情况,查询范围概括了目前绝大多数城市,同时有着美观、大方的界面,方便的操作与良好的视觉感。但Android 碎片化的问题导致本程序在一些机型上面运行效果不好,或者不能够运行,程序运行环境需要Android2.3.3版本才能完美运行成功。 关键语:android; Google 天气预报; 碎片化 ABSTRACT With the rapid proliferation of smart phones, smart phone users want to be able to query the services provided by the Internet anytime, anywhere, and an efficient way to expand the functionality of the application system to the mobile terminal, so that the phone through the mobile network and Internet access to the Web siteand handle a variety of businesses. Therefore, this paper, based on the analysis and discussion of the Android mobile phone software development technical principles, detailed in the Android embedded platform Google Weather client development, including the acquisition and parsing of Google Weather xml document, the weather forecast information in presentation technology introduced in the Android platform. Meteorological service system of the Android platform, Eclipse-based development environment, relying on Google meteorological data to obtain real-time weather information, using the SAX parser to parse the access to Google Weather API to obtain data, and display the weather conditions at the interface also shows the next four days weather conditions, the scope of the query summarizes the present, most of the city, at the same time have a beautiful, elegant interface, easy operation and good visual sense. Android fragmentation problem caused the program in some models run effect is not good, or not be able to run the environment for running programs Android2.3.3 perfect version to run successfully. Key words: the android; Google weather forecast; fragmentation 目 录 I摘 要 IIABSTRACT 1绪 论 10.1研究内容 10.2 选题的目的及意义 10.3研究现状、发展趋势和问题 31 系统分析 31.1 研究目标 31.2 需求分析 31.3 性能分析 42 系统开发环境及相关技术 42.1 Android开发环境介绍 42.2 Android开发平台搭建 52.3  Android关键技术研究 62.3.1 Activity 62.3.2 Service 72.3.3 Broadcast Receiver 72.3.4 Content Provider 93 系统详细设计 93.1 用户界面设计 93.2 程序模块设计 103.3 数据流在程序中的传输过程 124 程序开发 124.1 文件结构与用途 144.2 工具类的简单介绍 144.2.1 Current_conditions类及相似类的介绍 144.2.2 TestPinYin4j类的介绍 144.2.3 HttpDownLoader类的介绍 154.2.4 MyHandler类的介绍 154.3 用户界面 154.3.1 布局文件的介绍 174.3.2 欢迎界面welcome 174.3.3 设置页面MainWeaherActivity 204.3.4 显示页面ShowWeatherActivity 245 系统测试 245.1 启动Android虚拟机 245.2启动App Widget应用程序 255.3欢迎界面 265.4默认显示界面 275.5点击更改城市按钮进入设置页面 285.6查询让你以城市天气情况 305.7查询List列内的天气情况 326 33致 谢 34参考文献 35附录一 绪 论 0.1研究内容 Android平台的气象服务系统是基于Android手机平台,运用Java语言,从Google上获取天气预报信息,开发出针对使用Android平台的手机天气预报系统。熟悉Android平台的开发软件的流程,程序能够通过互联网获取xml文件,解析获取的xml文件得到有用信息,并将信息呈现在手机上。 0.2 选题的目的及意义 基于Android平台的气象服务系统的开发可以进一步扩大气象信息的覆盖面,让广大公众能够在第一时间方便且快捷地获取最新的气象预报(预警)信息,以便提前预防,把气象灾害造成的损失降到最低。同时也可以强化气象公共服务的职能,完善公共服务体系、改善公共服务手段、增加公共服务产品、提高公共服务质量,更好地发挥了气象事业对经济社会发展的现实性作用。 这款手机天气预报系统给人们提供方便快捷的近期天气信息,是人们日常生活中必不可少的生活信息。系统界面简单明了,操作简单,用户体验感觉很好,能够帮助用户迅速知道当前天气情况,节约查询时间。 0.3研究现状、发展趋势和问题 2011年8月15日,谷歌宣布以125亿美元收购摩托罗拉移动,引发了业内专家对于谷歌收购摩托罗拉移动真实意图的猜测,也让业内人士更进一步认识到,“跨终端操作系统正成为移动互联网产业发展制高点”。 相比于Symbian的日落西山,以及苹果的封闭、Windows Phone的前途未卜,Android无疑代表了当前行业发展的主流趋势:开放平台取代了封闭平台。安卓操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择。从市场份额占有方面来看,Android的表现非常令人欣喜,飙升到47.3%位居第一,达到历史空前水平。近两年,Android系统在国内的发展主要在于针对Android系统的二次开发上,目前以Android系统源码为基础,再深度定制改版而成的操作系统主要有创新工场投资的点心公司开发的点心操作系统、中国移动的Ophone、联想的乐Phone、阿里云手机操作系统及雷军的小米科技开发的MIUI。 谷歌Android平台快速发展也导致了一系列问题的出现,其中最困扰开发者的是Android 碎片化的问题,这也是本程序面临的问题。100个Android手机制造商拿到Android内核之后,可以制造出100种搭载不同硬件平台、界面的Android手机,虽然是基于Android的,但实际上,已经不再是原来的Android了,经过各种改造之后,已经变成100个“独立”的Android ,这就是碎片化。系统和硬件有一定的一致性,这才能确保软件的兼容性,个人和团体开发的第三方软件也有一定的规范,以确保软件和设备完全兼容。从开发者的角度来看,就要为Android各个版本、各种手机型号、各种显示屏大小甚至各种定制化安卓ROM分别设计一款应用程序。或者需要兼容各个不同版本的Android,间接加大了软件开发的难度(主要难度是让软件在更多的设备上运行)。图0-1显示了目前正在使用的 3997 款不同的型号的Android版本。 图0-1 目前不同型号的Android系统 1 系统分析 1.1 研究目标 (1) 了解Android应用程序的设计和开发过程; (2) 使用多种组件进行Android 平台气象服务系统的开发。 本软件是基于Eclipse的开发环境,依托Google气象数据获得实时天气信息,开发出了针对Android平台的手机天气预报系统。 1.2 需求分析 手机发展到今天已成为广大群众们日常是用的通讯工具,手机具备的功能也日趋完善,其中天气预报是最常见的一项功能,本设计可以在手机上实现天气情况的实时报告和天气预报功能,满足人们生活的需要。 本设计是一个App Widget应用程序,启动程序后显示南昌当前天气情况和未来的天气清况,点击更换城市可以进行城市的设置,程序通过图片和文字显示当前和未来的天气状况,包括温度、湿度、风向和雨雪情况等。每次退出程序会保存用户最后查询的城市,在SD卡的文件夹下,下次启动会查询上次记录的城市,人性化设计。这些天气数据是通过后台服务的Android HttpURLConnection跟Web服务器通信获取的,从Google上获取Google天气预报xml文档,解析后将天气信息显示在界面上。 从上面的描述中可以基本了解软件的功能需求: (1) 启动App Widget应用程序; (2) 欢迎界面。 (3) 默认显示界面:通过文字图片动画显示南昌的天气情况,包括城市当前天气、温度、风向、风速、湿度;同时显示今后四天的天气情况。 (4) 设置界面:设置想要查询的城市,有一些国内主要城市可选择。 (5) 查询结果:点击查询后返回显示界面,显示目标城市的天气情况,无网络或者查询城市不存在时提示用户。 1.3 性能分析 本软件操作简单,应用方便,程序响应速度快、安全性高、信息处理速度快。但需要较好的网络支持,在无网络情况下不能够查询。目前只支持Android2.3.3版本,在Android4.0以上版本中联网失败。 2 系统开发环境及相关技术 2.1 Android开发环境介绍 Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的Java SDK(其中包括JRE:Java Runtime Environment)。此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的Android SDK。同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。 简言之,需要以下软件,才能搭建Android开发环境,从而进行Android应用程序的开发。 (1) Java SDK (2) Eclipse (3) Android SDK (4) ADT 2.2 Android开发平台搭建 Android开发平台搭建步骤: ①首先到http://www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载Java EE 集成版本,可以为平台的搭建省下不少工作。接着再去http://java.sun.com/javase/downloads/index.jsp 站点下载SDK后安装,下载http://dl.google.com/android/android-sdk-windows-1.5_r1.zip,Android SDK1.5后解压。第一步下载工序就结束了。 ②双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help-> Install New Software-> 选项卡上的Available Software,点击右侧的“Add”输入http://dl-ssl.google.com/android/eclipse/后确定,然后在“Work with”下拉菜单中选择刚才输入的网址。过一会就会出现一个Developer Tools选项,勾上以后点击Next以后Eclipse会自动网上查找Android 开发工具插件,然后找到Android DDMS和Android Development Tools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。 ③重启后选择Eclipse菜单中的Windows-> Preferences 在左侧的Android项目中SDK Location中填入Android SDK解压后的目录,然后点击Apply。 ④在Windows7的系统变量中的path变量中添加一个值,该值指向解压后的Android SDK目录下的tools文件夹。如图2-1所示: 图2-1 环境变量的配置 2.3  Android关键技术研究 Android平台是基于java语言开发的,其中android主要是四大组建构成的,Activity、Service、Broadcast Receiver、Content Provider。图2-2显示了Android系统的框架结构。 图2-2 Android系统的框架结构 2.3.1 Activity Activity就是一个用户界面,比如打电话程序,实现一个打电话的Activity,通讯录也是一个Activity,通话记录也是一个Activity等等,这些Activity都是独立的,但组合在一起就是一个完整功能的应用程序了。 2.3.2 Service 从字面上意思就是服务的意思,其实就是Activity的后面服务,他们在很多地方都相辅相成的,封装有一个完整的功能逻辑实现,Service就是为Activity在后面服务的,作为Activity的坚实后盾。Service在后台为Activity提供所需要的功能。Android中的服务其实与windows中的服务类似,它执行长时间运行的操作,或运程进程执行工作。服务不提供用户界面。 Android中的服务,和我们通常说的Windows服务,Web的后台服务又有一些相近,它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。用运行模式来看,Activity是跳,从一个跳到一个,这有点像模态对话框,给一个输入,然后不管不顾的让它运行,离开时返回输出。而Service不是这样的,Service主要是等着上层连接上它,然后产生一段持久的通信。 但和一般的Service还是有所不同,Android的Service和所有四大组件一样,其进程模型都是可以配置的,调用方和发布方都可以有权利来选择是把这个组件运行在同一个进程下,还是不同的进程下。它凸显了Android的运行特点。 Android中用来做数据序列化的类是Parcel,封装了序列化的细节,向外提供了足够对象化的访问接口,Android号称实现非常的高效。 Service从实现角度看,最特别的就是RPC的实现了,其他内容,都会接近于Activity的一些实现。 2.3.3 Broadcast Receiver 从字面意思是广播接收者,其实和我们生活中得广播意思相近,在发生什么事情的时候,会以广播的形式告知我们。广播又分为普通广播和有序广播。普通广播是异步的,理论上是同时收到的。你不能对他做任何操作,不能终止。有序广播,在接收到广播时可以加入自己的操作,传递给下一个接收者,也可以终止广播。Android系统中最常见的广播电池电量低得时候,收到短信的时候,USB连接的时候等等。 内容提供者主要用于应用程序的数据共享设置,你可以把数据存储在文件系统中,或者SQLite数据库上,网络,或者其他的持久性存储位置。你可以访问这些数据或者修改,其他应用程序也可以访问或者修改。 在Android中,充分考虑了广泛的这类需求,于是就有了Broadcast Receiver这样的一个组件。每个Broadcast Receiver都可以接收一种或若干种Intent作为触发事件,当发生这样事件的时候,系统会负责唤醒或传递消息到该Broadcast Receiver,任其处置。在此之前和这以后,Broadcast Receiver是否在运行都变得不重要了。 当Broadcast Receiver接收到相关的消息,它们通常做一些简单的处理,然后转化称为一条Notification,一次振铃,一次震动,抑或是启动一个 Activity进行进一步的交互和处理。所以,虽然Broadcast整个逻辑不复杂,却是足够有用和好用,它统一了Android的事件广播模型,让很多平台都相形见绌了。 2.3.4 Content Provider 应用程序可以通过Content Provider 来访问其他应用程序的一些私有数据,这是Android提供的一种标准的共享机制。共享的数据可以存在于很多方面,比如在系统中、数据库中或者在其他的一些程序里。Content Provider可以扩展自己的Content Provider类,通过实现自己的类的接口来控制其他数据的存储。然后程序不会直接调用ContentProvider中的,而是通过任何一个能与Contentprovider通讯。 任何时候当Android系统收到一个需要某个组件进行处理的请求的时候,Android会确保处理此请求的组件的宿主进程是否已经在运行,如果没有,则立即启动这个进程,当请求的组件的宿主进程已经在运行,它会继续查看请求的组件是否可以使用,如果不能立即使用,它会创建一个请求的组件的实例来响应请求。 Content Provider,内容提供者主要用于应用程序的数据共享设置,你可以把数据存储在文件系统中,或者SQLite数据库上,网络,或者其他的持久性存储位置。你可以访问这些数据或者修改,其他应用程序也可以访问或者修改。 在各大组件中,Service和Content Provider都是那种需要持续访问的。Service如果是一个耗时的场景,往往会提供异步访问的接口,而Content Provider不论效率如何,都提供的是约定的同步访问接口。因为Content Provider仅是提供数据访问的,它不能确信具体的使用场景如何,会怎样使用它的数据;而相比之下,Service包含的逻辑更复杂更完整,可以抉择大部分时候使用某接口的场景,从而确定最贴切的接口是同步还是异步,简化了上层调用的逻辑。 3 系统详细设计 3.1 用户界面设计 根据需求分析可以知道,应用程序应包含两个主要的用户界面,这里需要进一步分析每个用户界面中应该包括哪些显示内容。 在“设置页面”中,需要对要显示天气预报的城市进行设置。在“显示页面”中,显示当前的天气状况,包括城市名称、温度、湿度、风向、雨雪情况和获取数据时间等信息,还要显示未来四天的天气情况。 根据对用户界面显示内容的分析,绘制出用户界面的草图,如图3-1所示。 图3-1 用户界面草图 3.2 程序模块设计 从功能需求上分析可以看出,整个应用程序应划分为4个模块,分别是程序启动、默认显示界面、设置界面和后台服务,各模块之间的关系如图3-2所示。 图3-2 程序模块结构图 从模块结构图中不难看出,整个应用程序的核心在于界面和后台,两个界面分别按照图4-1来设计完成,但android碎片化的干扰下不可能符合每个手机型号,本设计采用480x800的格式,在用于其它手机型号是可适当修改。 3.3 数据流在程序中的传输过程 应用程序启动后,首先显示界面的Activity被激活,经过判断后认为是第一次启动程序,然后通过后台服务的Android HttpURLConnection跟Web服务器通信获取Google的天气数据,这时候设定查询的城市默认为南昌,得到的xml 文档暂时写入到一个字符串中存储在手机内存中,然后构建SAXParser对得到的xml文档进行解析,得到相应的数据并存储到工具类中,通过界面Activity的调用显示在相应的控件中,模块结构如图3-3所示。 图3-3 显示界面运行结构图 显示界面中有更改城市按钮,点击后进入设置界面可以输入想要查询的城市,支持中文输入,同时有一些国内主要城市供选择,方便用户更加快捷的查询。点击查询按钮后通过后台服务的Android HttpURLConnection跟Web服务器通信判断输入的城市是否存在,若存在则激活显示界面,若不存在返回设置界面重新输入。模块结构如图3-4所示 图3-4 设置界面运行结构图 在完成用户界面设计和模块设计后,至此程序设计阶段基本完成。 4 程序开发 4.1 文件结构与用途 在程序开发阶段,首先确定“Android平台气象服务系统”的工程名为EcitWeather,据程序模块设计的内容,建立EcitWeather工程。EcitWeather工程源代码的结构如图4-1所示。 图4-1 EcitWeather工程的源代码文件 为了使源代码文件的结构更加清晰,EcitWeather工程设置了多个命名空间,分别用来保存用户界面、后台服务以及工具实体的源代码文件,源代码文件的名称以及说明如表4-1所示。 表4-1 EcitWeather工程的文件用途说明 包 名 称 文 件 名 说 明 com.ecit.until Current_conditions.java com.ecit.until HttpDownLoader.java Google天气预报xml文档和天气图片的获取 com.ecit.until My_City.java 存放查询的城市、当前时间、发布时间等数据 com.ecit.until MyDate.java String转Date工具类 com.ecit.until MyHandler.java 使用SAX解析Google天气预报xml文档 com.ecit.until TestPinYin4j.java 汉字转全拼工具类 com.ecit.until Weather.java 存放未来天气数据 com.ecit.until Welcome.java 欢迎界面的Activity com.ecit.weather MainWeaherActivity.java 设置界面的Activity com.ecit.weather ShowWeatherActivity.java 显示界面的Activity Android的资源文件保存在/res的子目录中。其中/res/drawable/目录中保存的是默认图标文件,/res/raw目录中保存的是背景和图标文件,/res/values目录中保存的是用来自定义字符串的文件,/res/layouyt目录中保存的是xml格式的布局文件。所有在程序开发阶段可以被调用的资源都保存在这些目录中,具体每个资源文件的用途可以参考表4-2: 表4-2 资源文件名称与用途 资源目录 文 件 说 明 drawable-hdpi ic_launcher.png 这三个文件夹里是默认的APP图标。 drawable-ldpi ic_launcher.png drawable-mdpi ic_launcher.png layout main.xml “设置界面”的布局 result.xml “显示界面”的布局 shape.xml 自定义按钮的设定 user.xml List列表中Textview的设定 Raw android.png 提示小图标 b.png 报字图 haungyuan.png 显示界面背景图 q.png 气字图 rain.png 雨天提示图标 snow.png 雪天提示图标 sun.png 晴天提示图标 t.png 天字图 tianqi.png 设置界面小图标 weather.png APP图标 y.png 预字图 yu.png 欢迎界面背景图 wu.png 雾天图标 values string.xml 自定义子字符串属性文件 4.2 工具类的简单介绍 com.ecit.until包里面存放着工程所用到的工具类,用于获取和解析Google天气预报xml 文档、信息数据的存储,从Google提供的Web Service中获取的天气数据的方法有三种1.邮政编码法,2.经纬度坐标作法,3.城市名称法。这里选用比较常用的第三种方法,好处是得到的信息简单明了,坏处是有些城市不在查询范围,数据的获取地址是:“http://www.google.com/ig/api?hl=zh-cn&weather=城市名”, 其中城市名只识别拼音和英文,因此还要用到拼音转换类。 4.2.1 Current_conditions类及相似类的介绍 Current_conditions类用于存放当前天气情况的信息,主要包括天气情况currentCondition,华氏温度currentFTemperature,摄氏温度currentCTemperature,湿度currentHumidity ,风况currentWind ,天气图标currentIcon。 My_City类用于存放当前查询城市的时间的信息,主要包括查询城市city,和当前时间date以及发布日期currentTime。 MyDate类主要用于得到后三天的日期,由于解析XML文档只能获得当前日期,要想获得后三天天气日期需要对得到的当天天气日期进行增减。 Weather类主要用于存放前后四天主要的天气情况将以表格的形式显示在界面上,方便用户查看主要包括星期week,低温low,高温high,天气图标icon,天气情况condition。 4.2.2 TestPinYin4j类的介绍 由于从Google只能识别拼音和英文不能识别汉语,所以要用到拼音转换类,在项目中加载pinyin4j-2.5.0.jar包, TestPinYin4j类要用到jar包中的方法,通过TestPinYin4j类判断字符串是汉字,如果是,转换为拼音,如果不是则保留。 4.2.3 HttpDownLoader类的介绍 HttpDownLoader类包括了获取Google天气预报XML文档、天气图片的获取和图片大小的三个方法,通过HttpURLConnection跟Web服务器通信获取所需的文件。 4.2.4 MyHandler类的介绍 MyHandler继承DefaultHandler类,DefaultHandler类实现ContentHandler接口,该接口封装了一些对事件处理的方法用来解析XML,获取数据,当XML解析器开始解析XML输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的字符数据等事件。当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法来响应该事件。解析完成后将得到的数据存储到Current_conditions类、My_City类、MyDate类和Weather类中。 至此,工具类介绍完毕,最后还需要在AndroidManifest.xml文件中添加上网许可和储存卡写入读取许可。 4.3 用户界面 在用户界面设计上,采用了AppWidget框架结构,提供直观的交互操作。三个用户界面风格简约、操作简便,用户体验将非常好。 4.3.1 布局文件的介绍 main.xml是设置界面的布局,采用LinearLayout 的布局,自定义背景图片,大小采用480x800格式,MainWeaherActivity类中用到了这个布局。主要是显示设置界面的布局情况核心代码如下:
/
本文档为【Android平台的气象服务系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索