一个项目搞定Android开发, Google天气预报开发之API的分析

原创 2012年03月21日 13:07:51

顾名思义,我们是要利用Google的天气预报的API来开发一个天气预报程序.

Google天气的API为:http://www.google.com/ig/api?hl=zh-cn&weather=Beijing

我们来分析下这个API的相关参数:http表示的是使用Http请求获取数据.www.google.com/ig/api是GoogleAPI的接口.

?后面传递了两个参数,hl=zh-cn,这个参数表示的是国家代码. weather=Beijing,表示的是获取北京的天气信息.

那么,这一整个Url的意识就是,获取到中国北京的天气信息.

我们将这个Url放到浏览器的地址栏里,OK,浏览器收到了一份XML格式的文档.我们来看一下这个文档的格式.


<xml_api_reply version="1">

	<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1"
		row="0" section="0">

		<forecast_information>
			<city data="Beijing, Beijing" />
			<postal_code data="Beijing" />
			<latitude_e6 data="" />
			<longitude_e6 data="" />
			<forecast_date data="2012-03-21" />
			<current_date_time data="2012-03-21 16:00:00 +0000" />
			<unit_system data="SI" />
		</forecast_information>

		<current_conditions>
			<condition data="雨" />
			<temp_f data="41" />
			<temp_c data="5" />
			<humidity data="湿度: 76%" />
			<icon data="/ig/images/weather/cn_heavyrain.gif" />
			<wind_condition data="风向: 东南、风速:2 米/秒" />
		</current_conditions>

		<forecast_conditions>
			<day_of_week data="周三" />
			<low data="3" />
			<high data="13" />
			<icon data="/ig/images/weather/mostly_sunny.gif" />
			<condition data="晴间多云" />
		</forecast_conditions>

		<forecast_conditions>
			<day_of_week data="周四" />
			<low data="1" />
			<high data="11" />
			<icon data="/ig/images/weather/mostly_sunny.gif" />
			<condition data="晴间多云" />
		</forecast_conditions>

		<forecast_conditions>
			<day_of_week data="周五" />
			<low data="0" />
			<high data="11" />
			<icon data="/ig/images/weather/mostly_sunny.gif" />
			<condition data="以晴为主" />
		</forecast_conditions>

		<forecast_conditions>
			<day_of_week data="周六" />
			<low data="1" />
			<high data="13" />
			<icon data="/ig/images/weather/mostly_sunny.gif" />
			<condition data="以晴为主" />
		</forecast_conditions>
	</weather>
</xml_api_reply>

这里面包含了我们需要的天气信息.

    <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1"
        row="0" section="0">

    </weather>
根节点是<weather>  </weather> 这里面包含的信息我们有点看不明白.我们暂时不用去考虑这些.

接下来我们看下根节点下面的几个个节点

		<forecast_information>
			<city data="Beijing, Beijing" />
			<postal_code data="Beijing" />
			<latitude_e6 data="" />
			<longitude_e6 data="" />
			<forecast_date data="2012-03-21" />
			<current_date_time data="2012-03-21 16:00:00 +0000" />
			<unit_system data="SI" />
		</forecast_information>

这个节点包含的是请求城市的一些信息.

节点下边有这几个标签:

标签名称 标签意义 数据类型
city 城市名称 String
postal_code 请求的名称 String
latitude_e60 纬度坐标 float
longitude_e60 经度坐标 float
forecast_data 预报时间 String
current_data_time 当前时间 String
unit_system 单位格式 String


我们在接着看下一个节点

                 <current_conditions>
			<condition data="雨" />
			<temp_f data="41" />
			<temp_c data="5" />
			<humidity data="湿度: 76%" />
			<icon data="/ig/images/weather/cn_heavyrain.gif" />
			<wind_condition data="风向: 东南、风速:2 米/秒" />
		</current_conditions>
这个节点包含的是当前的天气信息.

     节点下边有这几个标签:

标签名称 标签意义 数据类型
condition 天气状况 String
temp_f 华氏温度 float
temp_c 摄氏温度 float
humidity 湿度 String
icon 天气状况的图标 String
wind_condition 风向风力 String

我们再接着看下一个节点:

		<forecast_conditions>
			<day_of_week data="周三" />
			<low data="3" />
			<high data="13" />
			<icon data="/ig/images/weather/mostly_sunny.gif" />
			<condition data="晴间多云" />
		</forecast_conditions>

该节点包含了预报的天气信息,也就是未来几天的天气状况

 该节点下面包含了这样几个标签


标签名称 标签意义 数据类型
day_of_week 星期几 String
low 最低温度 float
high 最高温度 float
icon 天气状况的图标 String
condition 天气状况 String

API的数据分析到此告一段落了.

API的数据分析完成后,接下来我们就要对XML文档进行数据的解析,获取到xml文档中的数据.


而在XML解析之前呢,我们应该创建一个值对象,也就是实体类来存放我们解析出来的数据.

我们准备创建三个实体类来存放不同的数据.

CityInfo.java 存放城市信息.

CurrInfo.java 存放当前天气信息

ForeInfo.java 存放预报信息


CityInfo.java

package com.yongchun.weather.model;

/**
 * 作者:肥鱼 QQ群:104780991 Email:zhaoyongchun2011@gmail.com
 * 关于:一条致力于Android开源事业的鱼,还是肥的.吃得多赚的少还不会暖床,求包养.
 */
public class CityInfo {
	private String city_name;
	private String postal_code;
	private float latitude;
	private float longitude;
	private String forecast_time;
	private String current_time;
	private String unit_syetem;

	public String getCity_name() {
		return city_name;
	}

	public void setCity_name(String city_name) {
		this.city_name = city_name;
	}

	public String getPostal_code() {
		return postal_code;
	}

	public void setPostal_code(String postal_code) {
		this.postal_code = postal_code;
	}

	public float getLatitude() {
		return latitude;
	}

	public void setLatitude(float latitude) {
		this.latitude = latitude;
	}

	public float getLongitude() {
		return longitude;
	}

	public void setLongitude(float longitude) {
		this.longitude = longitude;
	}

	public String getForecast_time() {
		return forecast_time;
	}

	public void setForecast_time(String forecast_time) {
		this.forecast_time = forecast_time;
	}

	public String getCurrent_time() {
		return current_time;
	}

	public void setCurrent_time(String current_time) {
		this.current_time = current_time;
	}

	public String getUnit_syetem() {
		return unit_syetem;
	}

	public void setUnit_syetem(String unit_syetem) {
		this.unit_syetem = unit_syetem;
	}

}

CurrInfo.java

package com.yongchun.weather.model;

/**
 * 作者:肥鱼 QQ群:104780991 Email:zhaoyongchun2011@gmail.com
 * 关于:一条致力于Android开源事业的鱼,还是肥的.吃得多赚的少还不会暖床,求包养.
 */
public class CurrInfo {
	private String condition;
	private float temp_f;
	private float temp_c;
	private String humidity;
	private String icon;
	private String wind_condition;

	public String getCondition() {
		return condition;
	}

	public void setCondition(String condition) {
		this.condition = condition;
	}

	public float getTemp_f() {
		return temp_f;
	}

	public void setTemp_f(float temp_f) {
		this.temp_f = temp_f;
	}

	public float getTemp_c() {
		return temp_c;
	}

	public void setTemp_c(float temp_c) {
		this.temp_c = temp_c;
	}

	public String getHumidity() {
		return humidity;
	}

	public void setHumidity(String humidity) {
		this.humidity = humidity;
	}

	public String getIcon() {
		return icon;
	}

	public void setIcon(String icon) {
		this.icon = icon;
	}

	public String getWind_condition() {
		return wind_condition;
	}

	public void setWind_condition(String wind_condition) {
		this.wind_condition = wind_condition;
	}

}
ForeInfo.java

package com.yongchun.weather.model;

/**
 * 作者:肥鱼 QQ群:104780991 Email:zhaoyongchun2011@gmail.com
 * 关于:一条致力于Android开源事业的鱼,还是肥的.吃得多赚的少还不会暖床,求包养.
 */
public class ForeInfo {

	private String day_of_week;
	private float low;
	private float high;
	private String icon;
	private String condition;

	public String getDay_of_week() {
		return day_of_week;
	}

	public void setDay_of_week(String day_of_week) {
		this.day_of_week = day_of_week;
	}

	public float getLow() {
		return low;
	}

	public void setLow(float low) {
		this.low = low;
	}

	public float getHigh() {
		return high;
	}

	public void setHigh(float high) {
		this.high = high;
	}

	public String getIcon() {
		return icon;
	}

	public void setIcon(String icon) {
		this.icon = icon;
	}

	public String getCondition() {
		return condition;
	}

	public void setCondition(String condition) {
		this.condition = condition;
	}

	// @Override
	// public String toString() {
	// // TODO Auto-generated method stub
	// String forecastInfo = "时间:" + day_of_week + "\n最低温度:"
	// + Float.toString(low) + "\n最高温度:" + Float.toString(high)
	// + "\n图标路径:" + icon + "\n天气状况:" + condition;
	// return super.toString();
	// }

}


Android访问中央气象台的天气预报API得到天气数据

在用Android获取天气预报数据时,大家一定会首先想到Google的天气预报API,其实除了Google的天气预报API,免费的天气预报接口还有http://www.webservicex.net/...
  • kakaxi1o1
  • kakaxi1o1
  • 2013年10月14日 23:41
  • 13875

Android调用天气接口(和风天气)

第一次开通博客,不知写些什么。目前正在做一个Android项目,需要调用天气接口来显示连续几天的天气信息状况,但由于网上一些资料有点杂乱或不全(或许是自己水平不够,别人写的简洁),总之刚开始时无从下手...
  • zengxingyuluo
  • zengxingyuluo
  • 2017年03月06日 14:37
  • 4690

Android获取天气预报的两种方式(国家气象局和中央气象台天气预报API)

在项目中有一个天气预报的需求,在网上找了找大部分人给出的建议是使用webservice方式来获取数据。于是就尝试着做了一下,真是不做不知道,做了就收获了很多。 首先,来说一下通过webservi...
  • aboy123
  • aboy123
  • 2013年07月31日 21:03
  • 27883

基于百度天气API的android天气预报源码

  • 2014年11月11日 18:42
  • 1.84MB
  • 下载

android(体验一个项目天气预报开发)-2

搞好了界面和数据后,就只要写好业务逻辑了,业务逻辑的处理一般在Activity中实现:     实现列表查询是这样搞的 public class ChooseAreaActivity extends...
  • singsongsing
  • singsongsing
  • 2017年04月28日 12:00
  • 268

一个项目搞定Android开发,Google天气预报整体功能的分析.

上一篇中http://blog.csdn.net/amheaven1121/article/details/7377001,我们分析了Google天气的API,分析了XML文档中各个节点的功能. 在...
  • amheaven1121
  • amheaven1121
  • 2012年03月30日 12:01
  • 4421

android中国天气网api获取天气信息并解析

package doge.healthcare.Utils;import android.os.Handler; import android.os.Message; import android.u...
  • qq_32545287
  • qq_32545287
  • 2017年05月20日 17:05
  • 288

android 获取天气预报

《第一行代码》中获取天气的方法已经不行了,天气老是不更新。。。搞了大半天,现在终于搞定了。 一。数据来源      http://wthrcdn.etouch.cn/weather_mini?city...
  • laojiaqi
  • laojiaqi
  • 2015年04月14日 10:37
  • 5363

Android Studio开发一个简单的天气预报APP(一)需求分析

需求分析: 1、可以罗列出省市县; 2、使用百度地图定位自己的城市; 3、显示该城市未来三天的天气数据; 4、可以切换到任意的城市并且查看该城市的天气数据; 5、提供手动更新或者后台自...
  • liujunwei6
  • liujunwei6
  • 2017年12月07日 19:03
  • 326

android应用开发-从设计到实现 3-6 静态原型的天气预报

静态原型的天气预报未来5天的天气预报,可以看成由5个类似的天气模块构成,只要完成一个,其他几个就可以通过复制+修改内容实现改变。首先来明确一下各个组件的尺寸和参数, 整个区域的大小,我设定成360dp...
  • anddlecn
  • anddlecn
  • 2017年03月29日 16:09
  • 2479
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个项目搞定Android开发, Google天气预报开发之API的分析
举报原因:
原因补充:

(最多只允许输入30个字)