android天气预报源代码解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通过google接口在Android中实现天气预报效果

Android可以通过google实现获取指定经纬度位置或者某一个城市的天气信息。如果是根据经纬度查询天气信息,需要对精度为进行转换,例如lat值为31.174165,需要过滤掉小数点,变为31174165传到接口中,维度也一样处理,处理后传

给/ig/api?weather=,,,31174165,121433841既可以获取数据。这里要注意一个问题,如果大家获取的经纬度序列很长,直接去掉小数点,有时候也无法获取天气信息,例如40.478224838152528,124.97828006744385,去掉小数点后,传到参数位置,无法获取值,需要大家将经纬度按下面方式转换一下,只取小数点后6位就可以了。int latI = (int) (lat * 1E6);

int lonI = (int) (lon * 1E6);

下面的例子演示了根据输入城市,获取该城市的天气预报,Weather.java的61行,是根据经纬度获取天气信息。

工程结构:

Weather.java类

package com.AndroidWeather;

import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils;

import org.w3c.dom.Document;

import org.w3c.dom.NodeList;

import org.xml.sax.InputSource;

import android.app.Activity;

import android.graphics.Bitmap;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.TextView;

public class Weather extends Activity {

public EditText ETplace;

public TextView TvPlace;

public Button query;

public TextView placeName;

public ImageView imView;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(yout.main1);

ETplace = (EditText) findViewById(R.id.place);

query = (Button) findViewById(R.id.query);

imView = (ImageView) findViewById(R.id.myImageView);

placeName = (TextView) findViewById(Place);

query.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v) {

try {

TvPlace = (TextView)

findViewById(Place);

// String place =

ETplace.getText().toString();

String place =

CntoSpell.getFullSpell(ETplace.getText().toString());

placeName.setText(place);

String weather = "";

// String url =

"/ig/api?&weather="

// + place;

String url =

"/ig/api?weather=,,,31174165,121433841";

DefaultHttpClient client = new DefaultHttpClient();

HttpUriRequest req = new HttpGet(url);

HttpResponse resp = client.execute(req);

// String strResult =

//

EntityUtils.toString(resp.getEntity());

// Log.i("weather->", strResult);

// 一华氏度等于9/5摄氏度数值+32

HttpEntity ent = resp.getEntity();

InputStream stream = ent.getContent();

DocumentBuilder b = DocumentBuilderFactory.newInstance()

.newDocumentBuilder();

Document d = b.parse(new

InputSource(stream));

NodeList n =

d.getElementsByTagName("forecast_conditions");

// 获得图片url 当天的。

String imgUrl = "";

imgUrl +=

n.item(0).getChildNodes().item(3).getAttributes()

.item(0).getNodeValue();

imView.setImageBitmap(Utils.returnBitMap(imgUrl));

// 今后4天预报

相关文档
最新文档