一个项目搞定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开发,Google天气预报整体功能的分析.

上一篇中http://blog.csdn.net/amheaven1121/article/details/7377001,我们分析了Google天气的API,分析了XML文档中各个节点的功能. 在...

[android开发]天气预报项目的开发之数据接口与网络请求-1

先看界面:  天气首页: actionbar: 设置天气城市页面: 整体界面比较简单, 将就吧....

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

[android开发]天气预报项目的开发之天气工具类-2

这个WeatherUtil做了一些事情: 1.设置天气城市 2.设置通知的显示间隔, 也就是每隔多久推送一次天气信息的通知. 3.获取显示到TextView中的天气数据的文本. 4.天气数据的...

使用jQuery、Yahoo API和HTML5的geolocation来开发一个天气预报web应用

在线演示  本地下载 今 天我们介绍来自tutorialzine的一个HTML5/jQuery/Yahoo API的开发教程,在这篇文章中我们将介绍如何使用HTML5的Geolocati...
  • jjfat
  • jjfat
  • 2012-06-14 16:32
  • 1168

使用jQuery、Yahoo API和HTML5的geolocation来开发一个天气预报web应用

在线演示  本地下载 今天我们介绍来自tutorialzine的一个HTML5/jQuery/Yahoo API的开发教程,在这篇文章中我们将介绍如何使用HTML5的Geolocation,jQ...

【Android应用开发】-(17)获取Google天气预报通过Xml和JSON解析数据

最近在做一个天气预报的Widget,通过google提供的api可以查询全世界的天气情况,这篇文章主要讲述如何通过Android的JSON获取城市的经纬度,程序很简单。稍后我将demo供来此博客的朋友...

Android开发点滴(七) 改进版天气预报

根据《第一行代码》第十四章进行改进的天气预报app

基于Android开发的天气预报app(源码下载)

基于AndroidStudio环境开发的天气app。系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows10系统下进行开发。主要实现了:1、定位城市天气显示;2、城市...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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