博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 天气预报入门
阅读量:5160 次
发布时间:2019-06-13

本文共 2691 字,大约阅读时间需要 8 分钟。

1.Android的天气预报的应用还是挺多的,基于JSON和WebServ的均可。首先我们来介绍基于JSON解析的天气预报的开发

2.这需要寻找到合适的数据源。这里使用的是http://www.weather.com.cn/(中央气象局)的数据信息。可通过m.weather.com.cn/data/101010100.html或者www.weather.com.cn/data/cityinfo/101010100.html。
查看到北京的天气信息
参考
3.接下来就是对JSON数据的解析
```
package com.cater.weather;

import java.io.IOException;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;

import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;

public class WeatherReportActivity extends Activity

{
private final static String url = "http://m.weather.com.cn/data/101010100.html";
private HttpClient httpClient;
private HttpResponse httpResponse;
private HttpGet httpGet;
private EditText editText;
private TextView textView;
private String today;
private String dayofweek;
private String city;
private int ftime;
private String template;

@Override

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText) findViewById(R.id.editText1);
textView = (TextView) findViewById(R.id.textView1);
httpClient = new DefaultHttpClient();
parseString(getRequest(url));
editText.setText(getRequest(url));
textView.setText("城市:" + city + "\n"
+"温度:" + template + "\n"
+"星期:" + dayofweek + "\n"
+"时间:" + ftime + "\n"
+"日期:" + today + "\n");
}
private String getRequest(String uri)
{
httpGet = new HttpGet(uri);
String result = "";
try
{
httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
result = EntityUtils.toString(httpResponse.getEntity());
return result;
}
}
catch (ClientProtocolException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
private String parseString(String str)
{
try
{
JSONObject jsonObject = new JSONObject(str).getJSONObject("weatherinfo");
today = jsonObject.getString("date_y");
dayofweek = jsonObject.getString("week");
city = jsonObject.getString("city");
ftime = jsonObject.getInt("fchh");
template = jsonObject.getString("temp1");
}
catch (JSONException e)
{
e.printStackTrace();
}
return null;
}

}

```
未命名.jpg

 

转载于:https://www.cnblogs.com/weishuai90/archive/2013/03/26/2981738.html

你可能感兴趣的文章
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>
虚拟机长时间不关造成的问题
查看>>
校门外的树2 contest 树状数组练习 T4
查看>>
面试整理:Python基础
查看>>
Python核心编程——多线程threading和队列
查看>>
Program exited with code **** 相关解释
查看>>
植物大战僵尸中文年度版
查看>>
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>