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

顾名思义,我们是要利用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格式的文档.我们来看一下这个文档的格式.




	

		
			
			
			
			
			
			
			
		

		
			
			
			
			
			
			
		

		
			
			
			
			
			
		

		
			
			
			
			
			
		

		
			
			
			
			
			
		

		
			
			
			
			
			
		
	

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

    

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

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

		
			
			
			
			
			
			
			
		

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

节点下边有这几个标签:

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


我们在接着看下一个节点

                 
			
			
			
			
			
			
		
这个节点包含的是当前的天气信息.

     节点下边有这几个标签:

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

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

		
			
			
			
			
			
		

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

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


标签名称 标签意义 数据类型
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:[email protected]
 * 关于:一条致力于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:[email protected]
 * 关于:一条致力于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:[email protected]
 * 关于:一条致力于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之路)