Android 天气预报简介
基于android系统的天气预报查询系统大学论文

河北农业大学本科毕业论文(设计)题目:基于android系统的天气预报查询系统摘要近几年来随着3G技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。
在Google和Android手机联盟的共同推动下,Android在众多移动应用开发平台中脱颖而出。
Android是一个真正意义上的开源智能手机操作系统,该系统一经推出立即受到全球移动设备厂商和开发者的热捧,手机已被赋予了除通话以外的其它许多功能。
全新的手机软件领域已逐渐聚焦了众多软件开发商的目光,软件开发者和软件用户将共同面临这个振奋人心的新境界。
本设计使用Android设计技术开发了一种运用在Android系统上的手机天气预报软件系统,本系统通过选择城市来获得天气,风向,温度等信息。
基于android的天气预报系统软件可以使用户对于各地的天气情况的实时掌握,极大的方便了用户的出行和行程安排,避免了不必要的麻烦,具有很强的实用性。
关键词:天气预报系统;android开发AbstractIn recent years, with the 3G technology matures and the growing popularity of smart phones, the increasing demand for mobile applications, mobile application development become the most popular technology. Given a friendly boost by Google and Android Handset Alliance, Android stands out in numerous mobile application development platforms. Android is a truly open-source smart phone operating system, which once launched immediately by the global mobile device manufacturers and developers blitz, mobile phones have been given in addition to many other functions outside the phone. The new phone software field has gradually focused the attention of a large number of software developers, software developers and software users will be facing this exciting new realm.This design uses design techniques developed an Android application in the Android system mobile weather software system, the system by selecting the city to get weather, wind direction, temperature and other information. Android based software allows users to weather forecasting system for real-time weather conditions around the master, a great convenience to the user's travel and travel arrangements, to avoid unnecessary trouble, and highly practical.Keywords: Weather forecast system; android development目录1. 需求分析 (1)1.1开发背景 (1)1.2系统研究内容 (1)1.3项目需求分析 (1)2. GOOGLE ANDROID移动平台的相关理论 (1)2.1G OOGLE ANDROID 移动平台的概述 (1)2.1.1 Android系统的特点 (2)2.1.2 Android的功能 (2)2.2G OOGLE ANDROID移动平台开发过程研究 (2)2.3G OOGLE ANDROID移动平台下的应用研究 (3)2.4小结 (3)3. 项目设计 (4)3.1项目总体设计 (4)3.2系统功能界面 (4)3.2.1 欢迎界面 (4)3.2.2 设置所在城市界面 (5)3.2.3 天气显示界面 (6)3.2.4 Widget桌面小部件界面 (7)3.3设计目标 (8)4. 系统设计 (8)4.1开发及运行环境 (8)4.2数据库设计 (8)4.3主要方法及步骤 (8)4.4主要方法及技术 (9)5. 主要模块 (9)5.1项目框架 (9)5.2主要功能实现 (10)5.2.1 导入db_weather.db数据库文件 (10)5.2.2 实现城市列表的创建与过滤 (11)5.2.3 访问网络得到天气信息 (14)5.2.4 Widget窗体小部件的更新 (15)6. 功能测试 (17)结论 (21)参考文献 (22)基于android系统的天气预报查询系统1. 需求分析1.1 开发背景近几年来随着3G技术成熟和智能手机的不断普及,移动应用的需求与日俱增,移动应用开发成为当下最热门的技术之一。
基于Android的手机天气预报系统

基于Android的手机天气预报系统合肥学院2013届毕业论文(设计)论文(设计)题目基于Android的手机天气预报系统院系名称计算机科学与技术系专业(班级)计算机科学与技术2009级本科3班姓名(学号)丁同飞(0904013004)指导教师屠菁系负责人袁暋完成时间2013-06-02基于Android的手机天气预报系统中文摘要天气预报为人们了解天气状况和出行安排带来了方便,但是,大多数天气预报软件都是基于PC端,查询起来并不是很便捷。
而随着智能手机的普及和3G技术的发展,手机端实现天气查询成为了可能,因此,实现手机端的天气预报系统成为了人们迫切需要且切实可行的需求。
本设计使用Android设计技术开发了一种运用在Android系统上的手机天气预报软件系统,本系统通过选择城市来获得天气,风向,温度等信息。
基于手机的天气预报系统软件可以使用户对于各地的天气情况的实时掌握,极大的方便了用户的出行和行程安排,避免了不必要的麻烦,具有很强的实用性。
本论文首先进行了项目的背景介绍,开发的目的及意义,接着进行系统分析(包括需求分析、研究目标和内容),接着分析了Android系统的框架,然后介绍了本系统的用到的技术以及平台的搭建,最后论述了本系统的详细设计(包括功能模块设计、数据库设计等),接着进行了项目的测试用例分析,最后给出了结论以及展望。
关键词:天气预报;Android;linux内核Based on the Android of mobile phone weather forecast systemABSTRACTWeather Forecast for people to understand weather conditions and travel arrangements to bring the convenience, however, most weather forecasts are based on the PC side software, check it is not very convenient. With the popularity of smart phones and 3G technology, mobile client queries become possible to achieve weather, therefore, realize the phone side of weather forecasting system has become an urgent need for people with practical needs.This design uses design techniques developed an Android application in the Android system mobile weather software system, the system by selecting the city to get weather, wind direction, temperature and other information. Phone-based weather forecasting system software allows users around the weather conditions for real-time control, which greatly facilitates the user's travel and travel arrangements, to avoid unnecessary trouble, and highly practical.This paper first introduces the background for the project, the development of purpose and meaning, followed by systems analysis (including needs analysis, research objectives and content), and then analyzes the framework of the Android system, then introduces the technology used in this system as well as platform structures, and finally discusses the detailed design of the system (including functional module design, database design, etc.), followed by analysis of the project's test cases, and finally gives the conclusion and outlook.Keyword: android;the Linux kernel;the weather forecast目录中文摘要 ...................................................................... ABSTRACT (I)目录 .................................................................... I I 第一章绪论 01.1引言 01.2系统开发的背景介绍 01.3系统开发的目的 (1)1.4项目开发的意义 (1)第二章系统分析 (2)2.1研究目标 (2)2.2需求分析 (2)2.3系统研究内容 (3)2.4项目需求分析 (3)第三章系统架构分析 (4)3.1 Android系统的特点 (4)3.2 Android的功能 (4)3.3 Android架构 (5)3.3.1 Linux Kernel (6)3.3.2 Android Runtime (6)3.3.3 Library (7)3.3.4 Application Framework (7)3.3.5 Application (7)3.4系统组件 (8)3.4.1 Activity (8)3.4.2 Service (8)3.4.3 BroadcastReceiver (9)3.4.4 Content Provider (9)第四章系统开发及其相关技术 (10)4.1 Android开发环境介绍 (10)4.2 Android开发平台搭建 (10)4.3 SQlite (11)4.3.1 SQlite简介 (11)4.3.2 SQlite特性 (11)4.3.3 SQlite功能 (12)4.3.4 SQlite类型 (12)第五章系统的设计与实现 (13)5.1技术支持 (13)5.2数据库的设计 (14)5.3主要模块 (16)5.3.1项目功能界面 (16)5.3.2项目框架 (17)5.4主要代码解析 (18)第六章系统测试与运行 (28)6.1系统功能界面 (28)结论 (32)参考文献 (33)致谢 (34)第一章绪论1.1引言手机是已经成为了生活中不可少的通信设备,没有手机有时会让人觉得寸步难行,手机将脱离传统的打电话,发短信等基本功能,而基于智能手机的处理能力和可扩展能力,基于3G网络高速数据传输,越来越多的功能和业务将被开发出来并大规模的应用。
《2024年基于AndroidStudio的天气预报APP设计与实现》范文

《基于AndroidStudio的天气预报APP设计与实现》篇一一、引言随着移动互联网的快速发展,天气预报APP已经成为人们日常生活中不可或缺的一部分。
为了满足用户对天气信息的即时需求,本文将详细介绍基于AndroidStudio的天气预报APP的设计与实现过程。
本APP旨在提供准确、及时的天气信息,同时具备良好的用户体验和交互设计。
二、需求分析1. 功能需求:(1)实时获取并显示当前位置的天气情况。
(2)支持多城市天气查询。
(3)提供未来几天的天气预报。
(4)支持主题皮肤切换,以满足用户个性化需求。
(5)简洁易用的界面设计,便于用户操作。
2. 用户体验需求:(1)启动速度快,响应时间短。
(2)界面美观,布局合理。
(3)操作简单,易于上手。
(4)信息展示清晰,易于理解。
三、设计阶段1. 架构设计:采用MVC(Model-View-Controller)架构模式,将数据、视图和控制逻辑分离,便于后期维护和扩展。
2. 界面设计:采用Android原生控件,结合UI设计原则,设计出简洁、美观的界面。
支持主题皮肤切换,满足用户个性化需求。
3. 数据获取:通过调用第三方天气API接口,获取实时和未来几天的天气数据。
4. 数据库设计:使用SQLite数据库存储用户经常查询的城市信息,以提高查询速度。
四、实现阶段1. 开发环境搭建:安装AndroidStudio开发环境,配置好JDK、AndroidSDK等开发工具。
2. 界面开发:根据UI设计稿,使用Android原生控件开发界面。
实现主题皮肤切换功能。
3. 数据处理与展示:调用第三方天气API接口,获取天气数据。
对数据进行解析和处理,将结果展示在界面上。
4. 数据库操作:使用SQLite数据库存储用户经常查询的城市信息。
提供城市管理功能,方便用户添加、删除和修改城市信息。
5. 功能实现:实现多城市天气查询、未来几天天气预报等功能。
五、测试与优化1. 功能测试:对APP的各个功能进行测试,确保功能正常、无bug。
Android智能手机天气预报系统设计及实现

Android智能手机天气预报系统设计及实现Android智能手机天气预报系统设计及实现随着智能手机的普及和移动互联网的发展,天气预报成为人们生活中必不可少的一部分。
为了提供准确、实时的天气预报信息,我设计并实现了一款Android智能手机天气预报系统。
一、系统需求分析在进行系统设计之前,我们首先要对系统的需求进行分析。
用户希望通过使用这款手机应用程序,获得当前实时的天气情况和未来几天的天气预报。
为了实现这些功能,系统需满足以下几个基本需求:1. 实时更新:系统需要能够获取最新的天气数据,并实时更新天气信息。
2. 界面友好:系统的界面应该简洁、直观,易于使用,用户能够快速理解天气信息。
3. 准确可靠:系统需提供准确、可靠的天气预报信息,避免给用户带来不便。
二、系统设计方案考虑到这些需求,我设计了如下的系统架构:1. 数据来源:系统需要从可靠的天气数据源获取天气数据。
目前,一些广为使用的天气API,如和风天气、心知天气等,提供了丰富的天气数据接口。
系统将通过调用天气数据接口获取天气信息。
2. 数据存储:系统将通过本地数据库(如SQLite)对天气数据进行存储,保证数据的可靠性和持久性。
同时,系统还需要定期清理过期数据,以保持数据库的合理大小。
3. 用户界面设计:系统的用户界面设计应考虑用户体验和操作便捷性。
首页将显示当前的天气情况(如温度、湿度、风力等),并提供未来几天的天气预报。
用户可以滑动屏幕查看更多的天气预报信息。
4. 自动定位:为了提供准确的天气信息,系统将使用手机的GPS功能进行自动定位,获取当前用户所在地的经纬度信息。
5. 后台更新:为了保证系统能够及时更新天气信息,系统将在后台周期性地获取最新的天气数据,并更新到本地数据库。
同时,用户还可以手动刷新天气信息,以获取最新的天气预报。
三、系统实现过程根据系统设计方案,我使用Android Studio进行系统的开发和实现。
具体步骤如下:1. 获取天气数据:通过调用和风天气提供的API接口,我可以获得包括温度、湿度、风向、风力等在内的详细天气数据。
基于Android平台的天气预报系统设计

基于Android平台的天气预报系统设计基于Android平台的天气预报系统设计天气预报是人们日常生活中不可或缺的信息之一,无论是为了出行还是安排活动,对天气情况的了解都有着重大的意义。
为了满足用户对天气预报的需求,本文将基于Android平台设计一款天气预报系统。
一、系统需求分析1. 用户需求用户对天气预报系统的主要需求包括实时天气信息、七天内的天气预报、城市切换等功能,并能够提供准确、可靠的天气数据。
2. 数据需求系统需要从可靠的天气数据源获取相关天气数据,包括温度、湿度、风力、风向等信息,并需要支持多个城市的数据查询。
3. 功能需求系统需要提供以下功能:(1)实时天气信息展示:根据用户选择的城市,显示当前城市的实时天气信息,包括温度、湿度、天气状况等。
(2)天气预报:显示未来七天内的天气预报,包括每天的温度范围、天气状况等。
(3)城市切换:支持用户根据需求切换城市,以获取不同城市的天气预报。
(4)数据更新:系统需要能够自动定时更新天气数据,以保持数据的准确性。
二、系统设计1. 界面设计系统的主要界面包括实时天气信息展示界面和天气预报界面。
实时天气信息展示界面会显示当前城市的温度、湿度、天气状况等信息,以及一张相关的天气图片。
天气预报界面会显示未来七天内的天气情况,包括每天的温度范围、天气状况等。
2. 数据获取与处理系统需要通过网络请求从可靠的天气数据源获取相关天气数据。
获取到的数据可以通过JSON格式进行解析,并存储到系统数据库中,以便后续的展示和查询。
3. 功能实现(1)实时天气信息展示:系统会在主界面上显示当前城市的实时天气信息。
通过定时请求服务器接口,获取最新的天气数据,并更新到界面上。
(2)天气预报:在天气预报界面中,系统会显示未来七天内的天气预报。
利用已储存的数据,将七天内的天气数据一一展示出来,包括日期、温度范围、天气状况等。
(3)城市切换:用户可以通过系统提供的城市切换功能,选择不同的城市。
Android天气预报系统文档

[键入公司名称]实训课程设计天气预报程序xx2011/12/291项目任务概述1.1项目背景随着3G时代的到来,移动互联网成为Internet下一个热点,android可以很好的使用Internet,获取网站上的数据,android天气预报系统就利用这一方式为用户提供服务。
天气预报的主要功能是为用户提供今日以及未来两天的天气预报。
1.2 项目任务本项目实现在 Android移动设备天气预报功能,系统根据用户输入的地址,在Internet上请求获得该地址的天气情况,并发回数据,在系统调用该数据后,将天气实况显示给用户。
2需求分析用户可以使用该系统实现日记的编写,修改和删除,日记内容阅读以及以文本文档形式将日记导入SDcard中。
2.1总体用例图查看当日天气预报查看未来两天天气预报查看地理信息图12.2 天气预报用例图查看当日天气预报2.3天气预报业务流程输入地址选择列表item进入系统进入今日预报页面退出系统图2用户通过点击桌面图标,进入系统。
再通过在文本框中输入的地址,来进入当天天气预报界面。
再点击箭头按钮,页面跳转到未来两天天气预报的界面。
2.4 查看未来两天天气预报用例图2.5 查看未来两天天气预报流程图图22.6 查看地理信息用例图查看未来两天天气预报输入地址选择列表item点击按钮进入系统进入今日预报页面进入明日预报界面退出系统2.7查看地理信息流程图图33 系统设计3.1 天气预报系统UI——登录界面查看地理信息点击MENU 选择MENU 查看地理信息回到系统图43.2天气预报UI——登录界面说明在此界面中,正如大家所见。
含有两个TextView组件,一个ImageView组件,一个AutoCompleteTextView,其字符大小分别是默认的大小。
其中AutoCompleteTextView能够给用户提供选项列表,用户只要单击列表中的一项,此页面就回自动跳转到下一页面。
3.3 天气预报UI——今日天气预报界面图5 图63.4天气预报UI——今日天气预报界面说明此界面中分别含有六个TextView组件,五个ImageView组件,一个ImageButton 组件,一个Menu,在此布局文件中有五个相对布局。
基于Android系统的天气预报APP设计

基于Android系统的天气预报APP设计1.引言近年来,随着智能手机用户数量的迅速增长,手机应用程序(APP)的开发步入了一个快速进步的阶段。
其中,天气预报APP因其好用性和广泛需求而成为了用户下载最多的APP之一。
为了满足用户对天气预报的需求,本文将设计一个基于Android系统的天气预报APP,旨在提供准确、好用、便利的天气预报功能,通过天气数据的得到和展示,援助用户合理打算平时生活和出行活动。
2.功能需求分析天气预报APP的核心功能是提供准确的天气预报信息。
除此之外,依据用户的需求和市场实际状况,我们还可以为APP添加以下功能:(1)实时天气展示:每日天气的展示包括天气预报的动态更新、实时温度、湿度、风向风力等指标的展示,同时可以提供天气现象的图标以及简易的天气状况文字描述。
(2)生活指数推送:依据天气状况,推送用户相关的生活指数,例如穿衣指数、运动指数、空气质量指数等。
(3)城市切换和定位:用户可以通过手动切换城市来得到其他城市的天气预报信息,同时也可以通过定位功能自动得到所在城市的天气预报。
(4)天气趋势猜测:通过历史天气数据的分析和猜测模型的建立,猜测将来数天的天气走势,提供给用户参考。
(5)天气预警信息:当遇到恶劣天气或气象灾难时,准时向用户发送天气预警信息。
(6)多语言支持:支持多国多语言,使宽广用户更加便利地使用APP。
3.系统架构设计(1)用户界面设计:接受简洁、直观的用户界面设计,使用户能够快速上手操作,同时思量到不同尺寸和区分率的Android设备,适配不同屏幕。
(2)数据得到和处理:通过与天气服务提供商合作,从全球范围内得到天气数据,包括天气现象、温度、湿度、风力风向等数据。
同时,对于历史数据的处理和分析,以及对将来天气的猜测,需要建立相应的算法模型。
(3)定位功能:利用手机的GPS功能进行定位,得到用户当前所在的城市信息,为用户提供准确的定位天气预报。
(4)后台服务:需要实现一个稳定的后台服务,负责数据的更新和推送,同时对于天气预警信息的接收和推送也可以通过后台服务实现。
基于Android的天气预报APP的设计与实现

基于Android的天气预报APP的设计与实现基于Android的天气预报APP的设计与实现一、引言如今,移动互联网的飞速发展使得人们获取信息的方式更为便捷。
天气预报是人们日常生活中特别关注的内容之一。
为了满足用户对天气信息实时性、准确性的需求,开发一款基于Android平台的天气预报APP显得尤为重要。
本文将围绕这一主题展开,介绍该APP的设计与实现过程。
二、需求分析为了更好地满足用户的需求,我们首先进行了需求分析。
通过问卷调查以及市场调研,我们发现用户对天气预报APP的需要主要包括以下几个方面:1. 实时更新的天气信息:用户希望能够随时获取最新的天气信息,包括温度、湿度、风力等。
2. 多地区选择:用户希望能够预测不同地区的天气情况,以便进行出行安排。
3. 友好的用户界面:用户界面应该简洁明了,操作方便,具有良好的用户体验。
4. 天气趋势分析:用户希望能够查看未来几天的天气情况,以便合理规划活动。
基于以上需求,我们着手设计和实现这款APP。
三、系统设计在设计阶段,我们首先进行了系统架构的设计。
整个系统分为前端和后端两部分。
1. 前端设计:前端主要负责用户交互和数据展示。
我们采用了Android Studio作为开发工具,使用Java进行编码。
主要包括城市选择、天气信息展示和天气趋势分析等功能。
2. 后端设计:后端主要负责数据的获取和处理。
我们使用了和风天气API作为天气数据的来源,通过其提供的接口获取实时的天气数据。
四、系统实现在系统实现阶段,我们按照系统设计的架构开始编码工作。
1. 城市选择:用户可以通过输入城市名称或定位功能选择所需查询的城市。
通过与和风天气API交互,获取该城市的天气数据。
2. 天气信息展示:将从后端获取到的天气数据进行解析,并在界面上展示出来。
包括当前的温度、湿度、风力等,以及一些天气建议等。
3. 天气趋势分析:通过和风天气API提供的未来几天的天气数据,我们可以将这些数据进行处理,并在界面上以图表等形式呈现出来,帮助用户更加直观地了解未来几天的天气情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android 谷歌天气预报该项目是东方标准广州java培训中心为java技术开发学习人员和android技术开发班的学员共同开发研制的一款生活助手软件《谷歌天气预报》。
项目来自于日常生活中天气预报新闻。
由于人们日益紧凑的生活节奏,对于天气的关注不如以前那么重要,所以为了节省人们的业余时间,直接将天气预报功能搬入了手机软件功能当中,方便人们阅读浏览当地天气情况,并适当做出生活调整。
该项目技术要点为:推送功能+后台服务设计Service+联网功能HTTP+xml解析器XmlPullParser等技术。
一.项目介绍《谷歌天气预报》是一款简单的天气预报定制软件。
界面简洁易懂,方便用户使用。
可以查询几大城市的天气预报情况,主要功能有天气预告、城市温度、湿度、未来几天天气预测等。
该软件使用起来非常方便。
只要输入所查看的城市,软件自动提供当地的天气情况,以供查询。
二.For personal use only in study and research; not for commercial use三.四.功能说明1、进入软件页面2、功能说明1)、【天气】功能:显示当前天气情况。
资料来自于互联网真实天气预报。
2)、【城市】功能:显示当前所在城市。
3)、【温度】功能:显示选择城市天气温度变化。
资料来自互联网真实天气温度预告。
4)、【湿度】功能:显示当地城市湿度5)、【天气预测】功能:预测未来几天的天气状况。
可以预测未来三天以内的天气资料。
6)、【更新日期】功能: 显示当前天气日期。
五.程序设计技术说明本程序主要使用Service服务。
Android开发中,当需要创建在后台运行的程序的时候,就要使用到Service。
Service 可以分为有无限生命和有限生命两种。
特别需要注意的是Service跟Activities是不同的(简单来说可以理解为后台与前台的区别),例如,如果需要使用Service的话,需要调用startService(),从而利用 startService()去调用Service中的OnCreate()和onStart()方法来启动一个后台的Service。
在本程序中除了使用Seivice服务外,还用到了网络xml解析器XmlPullParser。
同时还使用了监听器OnClickListener 来进行监听动作。
程序部分主要代码1:// 更新UI线程handler = new Handler();thread = new Thread() {@Overridepublic void run() {// 未完成ui更改if (!done) {// 加载完成if (WeatherService.finishLoad) {// 今天信息tv_temp.setText("温度: "++ "℃");tv_city.setText("城市: "+ ;tv_weather.setText("天气: "+ WeatherService.weather .getCurrent_condition());tv_humidity.setText(WeatherService.weather.getCurrent_humidity());tv_date.setText("更新日期: "++ " " + ;// 明天信息tv_2ndday.setText(WeatherService.weather.getForecast1_day_of_week());tv_2ndweather.setText(WeatherService.weather.getForecast1_condition());tv_2ndtem.setText(WeatherService.weather.getForecast1_low()+ "~"++ "℃");// 后天信息tv_3rdday.setText(WeatherService.weather.getForecast2_day_of_week());tv_3rdweather.setText(WeatherService.weather.getForecast2_condition());tv_3rdtem.setText(WeatherService.weather.getForecast2_low()+ "~"++ "℃");// 大后天信息tv_4thday.setText(WeatherService.weather.getForecast3_day_of_week());tv_4thweather.setText(WeatherService.weather.getForecast3_condition());tv_4thtem.setText(WeatherService.weather.getForecast3_low()+ "~"++ "℃");// 关闭服务;WeatherService.finishLoad = false;done = true;overtimeCounter = 0;} else {overtimeCounter++;// 超时关闭服务if (overtimeCounter >= 10) {Toast.makeText(WeatherActivity.this, "连接超时,请重新连接",1000).show();// 关闭服务;WeatherService.finishLoad = false;done = true;overtimeCounter = 0;}handler.postDelayed(thread, 500);}}}};}程序部分主要代码2:public class WeatherService extends Service {public static Weather weather;public static String city;public static boolean finishLoad = false;//forecast_conditions标签计数器public int forecastcounter;@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {getWeather(city);}@Overridepublic void onStart(Intent intent, int startId) { }@Overridepublic void onDestroy() {weather = null;}private void getWeather(String city) {weather = null;try {// 定义pull解析器XmlPullParser pullParser =Xml.newPullParser();//统一资源定位器URL url = new URL("/api?hl=zh-cn&weather="+ city);//带缓冲的字符输出流BufferedReader bReader = new BufferedReader(new InputStreamReader(url.openStream(), "GBK"));StringBuilder sb = new StringBuilder();String temp;//写入到StringBuilderwhile ((temp = bReader.readLine()) != null) { sb.append(temp);}bReader.close();//去除xml开头的空格pullParser.setInput(newStringReader(sb.toString().trim()));int eventType = pullParser.getEventType();//判断是否在current_conditions标签内boolean isCurrent = false;// 未读到文件结束标签while (eventType !=XmlPullParser.END_DOCUMENT) {"eventType:" + eventType);switch (eventType) {case XmlPullParser.START_DOCUMENT://初始化天气对象weather = new Weather();break;//开始标签case XmlPullParser.START_TAG:String tagName = pullParser.getName();if (tagName.equals("city")) {//获取城市weather.setCity(pullParser.getAttributeValue(0));} else if(tagName.equals("forecast_date")) {//获取日期weather.setForecast_date(pullParser.getAttributeV alue(0));} else if(tagName.equals("current_conditions")) {//是否在current_conditions标签内isCurrent = true;} else if (isCurrent &&tagName.equals("condition")) {//获取天气weather.setCurrent_condition(pullParser.getAttrib uteValue(0));} else if (isCurrent &&tagName.equals("temp_c")) {//获取温度weather.setCurrent_temp_c(Integer.parseInt(pullPa rser.getAttributeValue(0)));} else if(isCurrent &&tagName.equals("humidity")){//获取湿度weather.setCurrent_humidity(pullParser.getAttribu teValue(0));//}elseif(tagName.equals("forecast_conditions")){forecastcounter++;//第一次进入forecast_conditions}else if(forecastcounter == 1 && tagName.equals("day_of_week")){//今天星期weather.setCurrent_day_of_week(pullParser.getAttr ibuteValue(0));//第二次进入forecast_conditions}else if(forecastcounter == 2 && tagName.equals("day_of_week")){//明天星期weather.setForecast1_day_of_week(pullParser.getAt tributeValue(0));}else if(forecastcounter == 2 && tagName.equals("low")){//明天最低温weather.setForecast1_low(Integer.parseInt(pullPar ser.getAttributeValue(0)));}else if(forecastcounter == 2 && tagName.equals("high")){//明天最高温weather.setForecast1_high(Integer.parseInt(pullPa rser.getAttributeValue(0)));}else if(forecastcounter == 2 && tagName.equals("condition")){//明天天气weather.setForecast1_condition(pullParser.getAttr ibuteValue(0));//第三次进入forecast_conditions}else if(forecastcounter == 3 && tagName.equals("day_of_week")){//后天星期weather.setForecast2_day_of_week(pullParser.getAt tributeValue(0));}else if(forecastcounter == 3 && tagName.equals("low")){//后天最低温weather.setForecast2_low(Integer.parseInt(pullPar ser.getAttributeValue(0)));}else if(forecastcounter == 3 && tagName.equals("high")){//后天最高温weather.setForecast2_high(Integer.parseInt(pullPa rser.getAttributeValue(0)));}else if(forecastcounter == 3 && tagName.equals("condition")){//后天天气weather.setForecast2_condition(pullParser.getAttr ibuteValue(0));//第四次进入forecast_conditions}else if(forecastcounter == 4 && tagName.equals("day_of_week")){//大后天星期weather.setForecast3_day_of_week(pullParser.getAt tributeValue(0));}else if(forecastcounter == 4 && tagName.equals("low")){//大后天最低温weather.setForecast3_low(Integer.parseInt(pullPar ser.getAttributeValue(0)));}else if(forecastcounter == 4 && tagName.equals("high")){//大后天最高温weather.setForecast3_high(Integer.parseInt(pullPa rser.getAttributeValue(0)));}else if(forecastcounter == 4 && tagName.equals("condition")){//大后天天气weather.setForecast3_condition(pullParser.getAttr ibuteValue(0));}break;case XmlPullParser.END_TAG:tagName = pullParser.getName();//读取到current_conditions的结束标签if(tagName.equals("current_conditions")){isCurrent = false;}break;case XmlPullParser.END_DOCUMENT:break;default:break;}eventType = pullParser.next();}finishLoad = true;} catch (MalformedURLException e) { // TODO Auto-generated catch blocke.printStackTrace();} catch (XmlPullParserException e) { // TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}广州东方标准职业教育培训中心网址:电话:地址:广州市天河区五山路华南理工大学科技园金华园C112广州市海珠区新港西路135号中山大学科技综合楼A座1503室仅供个人用于学习、研究;不得用于商业用途。