欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

android天气预报 调用googleAPI,androidgoogleapi

来源: 开发者 投稿于  被查看 37811 次 评论:40

android天气预报 调用googleAPI,androidgoogleapi


这是一个简单的预报,后面将会慢慢完善....
访问google 天气 API不能太频繁...要不会被把IP锁住...

1.android 天气预报

package com.activity;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import com.adapter.WeatherAdapter;
import com.model.Weather;
import com.test.R;
import com.utils.DomParseWeather;
import com.utils.WeatherXml;

public class WeatherActivity extends Activity {
	
	Activity context = this;
	
	private EditText city;
	
	private Button button;
	
	private ListView listView;
	
	private Drawable[] images;
	
	private String[] dates;
	
	private String[] temperatures;
	
	private String[] conditions;
	
	private double[] low;
	
	private double[] high;
	
	private WeatherAdapter adapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.weather_activity);
		
		initView();
		
        button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {
				initData();
				
				adapter = new WeatherAdapter(context, 
						images, dates, temperatures, conditions);
				
				listView.setAdapter(adapter);
			}
		});
		
	}

	private void initView() {
		city = (EditText) findViewById(R.id.city);
		button = (Button) findViewById(R.id.button);
		listView = (ListView) findViewById(R.id.list);
	}
	
	private void initData() {
		String xmlStr = WeatherXml.getWeatherXml(city.getText().toString());
		Log.i("TAG", xmlStr);
		List<Weather> ws = DomParseWeather.getWeatherFromXml(xmlStr);
		
		images = new Drawable[ws.size()];
		dates = new String[ws.size()];
		temperatures = new String[ws.size()];
		conditions = new String[ws.size()];
		low = new double[ws.size()];
		high = new double[ws.size()];
		
		Weather w = null;

		for (int i = 0; i < ws.size(); i++) {
			w = ws.get(i);
			
			images[i] = loadImage(w.getImageUrl());
			dates[i] = w.getDay_of_week();
			conditions[i] = w.getCondition();
			low[i] = Integer.parseInt(w.getLow_temperature());
			high[i] = Integer.parseInt(w.getHigh_temperature());
			
		}
		
		dataShift();
		
	}
	
	private Drawable loadImage(String imageUrl) {
		try {
			return Drawable.createFromStream(
					(InputStream) new URL("http://www.google.com" + 
			            imageUrl).getContent(), "image");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return null;
	} 
	
	private void dataShift() {
		
		for (int i = 0; i < dates.length; i++) {
			if ("Mon".equals(dates[i])) {
				dates[i] = "星期一";
				
			} else if ("Tue".equals(dates[i])) {
				dates[i] = "星期二";
			
			} else if ("Wed".equals(dates[i])) {
				dates[i] = "星期三";
			
			} else if ("Thu".equals(dates[i])) {
				dates[i] = "星期四";
			
			} else if ("Fri".equals(dates[i])) {
				dates[i] = "星期五";
			
			} else if ("Sat".equals(dates[i])) {
				dates[i] = "星期六";
			
			} else if ("Sun".equals(dates[i])) {
				dates[i] = "星期日";
			}
		}
		
		for (int i = 0; i < conditions.length; i++) {
			
			if ("Chance of Rain".equals(conditions[i])) {
				conditions[i] = "有雨";
			
			} else if ("Clear".equals(conditions[i])) {
				conditions[i] = "晴";
			
			} else if ("Partly Sunny".equals(conditions[i])) {
				conditions[i] = "多云间晴";
			
			} else if ("Mostly Sunny".equals(conditions[i])) {
				conditions[i] = "晴间多云";
			}
		}
		
		for (int i = 0; i < temperatures.length; i++) {
			Log.i("TAG", low[i] + ")))))))");
			
			low[i] = 5d/9d*(low[i]-32);
			Log.i("TAG", low[i] + "----------");
			high[i] = 5d/9d*(high[i]-32);
			Log.i("TAG", high[i] + "----------****");
			temperatures[i] = String.valueOf(low[i]).substring(0, 2) 
					+ "-" + String.valueOf(high[i]).substring(0, 2);
		}
	}
	
	

}

2.[文件] WeatherForecast.zip~104KB 下载(1965)

3.[图片] 未命名.jpg

用户评论