设计如下:通过JsonDemoActivity输入国家简称,跳转到CityListActivity(用来显示城市列表),点击需要查询城市返回天气信息。在JsonDemoActivity显示天气信息,Utils是解析天气和城市的主要工具类。
知识点:
1、多个Activity之间传递数据(一般Activity之间用来传递的是基本的数据类型,比如说String,int,boolean等),其中有个方法,可以用来传递对象,我就是讲城市和天气信息写成相应的JavaBean,用来传递的;
2、Json数据解析,获取城市;
3、解析Xml数据,获取天气;
4、部分Google API的讲解;
5、解析图片。
(关于google wearher api 的说明在:http://tsov.net/weather-queries-using-the-google-weather-api/)
结构如下:

以下是效果图:
(国家列表)
(城市列表)
(天气情况)
主要代码(代码不做多余解释自己看吧):
一、获取数据
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
-
-
-
-
-
-
publicfinalstaticInputStreamgetStream(Stringargs){
-
InputStreamstream=null;
-
DefaultHttpClientclient=newDefaultHttpClient();
-
HttpGetget=newHttpGet(args);
-
try{
-
HttpResponseresponse=client.execute(get);
-
if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
-
HttpEntityentity=response.getEntity();
-
stream=entity.getContent();
-
}
-
returnstream;
-
}catch(Exceptione){
-
e.printStackTrace();
-
returnstream;
-
}
-
-
}
二、解析天气
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
-
-
-
-
-
-
publicstaticWeatherBeangetCurrentWeather(Stringargs){
-
-
-
Documentdocument=null;
-
try{
-
DocumentBuilderbuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
-
document=builder.parse(newInputSource(getStream(args)));
-
}catch(ParserConfigurationExceptione){
-
e.printStackTrace();
-
}catch(FactoryConfigurationErrore){
-
e.printStackTrace();
-
}catch(SAXExceptione){
-
e.printStackTrace();
-
}catch(IOExceptione){
-
e.printStackTrace();
-
}
-
-
-
WeatherBeanweather=newWeatherBean();
-
-
NodeListnodeList=document.getElementsByTagName("current_conditions").item(0).getChildNodes();
-
-
Stringcondition=nodeList.item(0).getAttributes().item(0).getNodeValue();
-
StringtempF=nodeList.item(1).getAttributes().item(0).getNodeValue();
-
StringtempC=nodeList.item(2).getAttributes().item(0).getNodeValue();
-
Stringhumidity=nodeList.item(3).getAttributes().item(0).getNodeValue();
-
StringimgUrl=nodeList.item(4).getAttributes().item(0).getNodeValue();
-
StringwindCondition=nodeList.item(5).getAttributes().item(0).getNodeValue();
-
-
weather.setCondition(condition);
-
weather.setTempF(Integer.parseInt(tempF));
-
weather.setTempC(Integer.parseInt(tempC));
-
weather.setHumidity(humidity);
-
-
weather.setWindCondition(windCondition);
-
returnweather;
-
-
}
三、Google返回的Json数据,用Json解析城市
-
-
-
-
-
-
publicstaticList<CityBean>getCityInfos(StringcountryCode){
-
List<CityBean>cityList=newArrayList<CityBean>();
-
-
StringBuildersBuilder=newStringBuilder();
-
BufferedReaderbReader=newBufferedReader(newInputStreamReader(getStream(countryCode)));
-
try{
-
for(Strings=bReader.readLine();s!=null;s=bReader.readLine()){
-
sBuilder.append(s);
-
}
-
}catch(IOExceptione){
-
e.printStackTrace();
-
}
-
-
try{
-
JSONObjectjsonObject=newJSONObject(sBuilder.toString());
-
JSONArrayjsonArray=jsonObject.getJSONArray("cities");
-
-
for(inti=0;i<jsonArray.length();i++){
-
CityBeancityBean=newCityBean();
-
JSONObjectjsonObj=(JSONObject)jsonArray.opt(i);
-
cityBean.setCityName(jsonObj.getString("name"));
-
cityBean.setLat(jsonObj.getLong("lat"));
-
cityBean.setLon(jsonObj.getLong("lon"));
-
cityList.add(cityBean);
-
Log.i(TAG,"name="+jsonObj.getString("name")+";lat="+jsonObj.getLong("lat")+";lon="+jsonObj.getLong("lon"));
-
}
-
}catch(JSONExceptione){
-
e.printStackTrace();
-
}
-
-
returncityList;
-
}
我这里只是通过经纬度查询城市天气预报。也可以通过其他的方式,具体的请看上面那个链接。
Demo下载地址:http://download.csdn.net/source/3339328
分享到:
相关推荐
在Android应用开发中,天气预报是一项常见的功能,它通常依赖于第三方API来获取实时和预测的气象数据。在这个场景中,我们关注的是一个基于Google API的Android天气预报应用的完整源代码。这个应用可能利用了Google...
String args = "http://www.google.com/ig/api?weather=,,,"+latAndLon; Intent intent = new Intent(this, JsonDemoActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable...
在解析返回的JSON或XML数据时,源码可能包含了使用Gson、Jackson或内置的XmlPullParser进行数据绑定和解析的方法。 接着,数据存储也是一个重要的环节。Android应用常常需要将数据存储在本地,以便离线时也能访问。...
2. **天气API集成**:为了获取实时天气数据,应用通常会对接第三方天气API,如OpenWeatherMap、AccuWeather等,需要了解如何请求和解析JSON数据。 3. **UI设计**:源码中的界面设计涉及到Android的布局管理(如...
- Google提供了多种API服务,其中包括Google Maps Platform的Geocoding API和Weather API,后者可以用于获取实时及预测性天气数据。 - Geocoding API可以将地理位置信息(如地址)转换为经纬度坐标,这对于根据...
在Android开发中,通过URL获取API是常见的数据交互方式,特别是在构建移动应用时,比如获取天气预报、体重信息或地理位置等。Android Studio作为Google官方推荐的Android开发集成环境,提供了强大的工具支持这种网络...
在Android平台上,开发一个能输入城市并查询天气的应用是一个常见的任务,这有助于用户方便地获取实时的气象数据。本文将详细解析如何利用Google Weather API来实现这一功能。 首先,了解`Android`:Android是由...
开发者需要理解和使用API接口,将JSON或XML数据转化为可处理的对象。 2. **数据解析**:从服务器获取的数据通常是JSON格式,开发者需要了解如何使用`Gson`、`Jackson`或`org.json`等库解析这些数据。解析后的数据...
在Android平台上开发谷歌天气预报应用涉及多个技术领域和知识点,包括Android SDK...以上就是开发Android谷歌天气预报应用涉及的主要知识点,通过深入理解和实践这些技术,可以创建一个功能完善且用户友好的天气应用。
4. **Google API的应用**:获取天气信息通常需要从网络获取数据,这里可能用到Google的开放API,如Google Weather API(虽然现在已经关闭,但可替换为其他第三方天气API)。API调用通常涉及到网络请求,如HTTP/HTTPS...
实现“Android网络定位城市获取天气”功能涉及的知识点包括:Android定位服务(如`FusedLocationProviderClient`)、地理编码API、网络请求(如`HttpClient`或`OkHttp`)、数据解析(如JSON或XML)以及UI交互和数据...
2. **天气接口**:"weather-com-cn"是一个提供天气信息的接口,开发者需要通过HTTP请求获取数据,并解析返回的JSON或XML格式的天气信息。这包括但不限于城市名、温度、湿度、风向、风力等。解析后,这些数据会展示在...
项目可能对接了公开的天气API,如OpenWeatherMap、AccuWeather等,通过HTTP请求获取JSON或XML格式的天气数据。开发者需要解析这些数据,提取出温度、湿度、风速等关键信息,然后将它们适配到UI上显示。 对于添加...
【安卓天气预报应用程序开发】 ...通过分析这个“android-weather”项目,我们可以学习到如何构建一个功能齐全的天气应用,从数据获取、解析到界面展示的全过程,这对于安卓开发者来说是宝贵的实战经验。
Android提供了`Gson`库用于JSON解析,`SimpleXML`或`Jackson`库用于XML解析。Retrofit还支持直接将响应转换为对象,简化了数据处理步骤。 3. **SQLite数据库**:为了缓存天气数据,避免频繁的网络请求,开发者通常...
【Android代码-My-Weather】项目是一个开源的天气应用程序,主要使用了Android技术栈,并结合了第三方服务提供商mob的免费天气API。这个项目的核心目的是提供一个简洁、无广告的天气查询工具,帮助用户轻松获取实时...
通过深入分析这个"android weatherwidget source code"项目,开发者可以学习到如何设计和实现一个功能完善的天气小部件,包括UI设计、数据获取、更新机制以及与服务器的通信等关键技能。同时,这也是一个很好的实战...
在Android平台上获取天气和温度的信息是一项常见的功能,它涉及到网络请求、JSON解析、UI更新等多个技术环节。以下是一些相关的知识点: 1. **网络请求**:Android应用通常使用HTTP或HTTPS协议来获取远程服务器上的...
**WeatherApp:使用openWeather ...通过这个项目,你可以学习到如何在Android应用中使用Java进行网络请求、处理API响应、解析JSON数据以及更新UI。这是一个很好的实践项目,对于提升Android和Java开发技能非常有帮助。
通过发送HTTP请求获取JSON或XML格式的天气信息,然后使用Gson或Jackson库解析这些数据,将其转化为可操作的对象模型。这些天气信息可能包括温度、湿度、风速、天气图标等,都会动态显示在界面上。 对于地理位置服务...