`

Android 获取Google Weather API 并通过Xml和JSON解析数据

 
阅读更多

设计如下:通过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
  1. /**
  2. *得到数据
  3. *@paramargs
  4. *@return
  5. */
  6. publicfinalstaticInputStreamgetStream(Stringargs){
  7. InputStreamstream=null;
  8. DefaultHttpClientclient=newDefaultHttpClient();
  9. HttpGetget=newHttpGet(args);
  10. try{
  11. HttpResponseresponse=client.execute(get);
  12. if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
  13. HttpEntityentity=response.getEntity();
  14. stream=entity.getContent();
  15. }
  16. returnstream;
  17. }catch(Exceptione){
  18. e.printStackTrace();
  19. returnstream;
  20. }
  21. }

二、解析天气

·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
  1. /**
  2. *通过解析xml数据得到天气信息
  3. *@paramargs
  4. *@return
  5. */
  6. publicstaticWeatherBeangetCurrentWeather(Stringargs){
  7. Documentdocument=null;
  8. try{
  9. DocumentBuilderbuilder=DocumentBuilderFactory.newInstance().newDocumentBuilder();
  10. document=builder.parse(newInputSource(getStream(args)));
  11. }catch(ParserConfigurationExceptione){
  12. e.printStackTrace();
  13. }catch(FactoryConfigurationErrore){
  14. e.printStackTrace();
  15. }catch(SAXExceptione){
  16. e.printStackTrace();
  17. }catch(IOExceptione){
  18. e.printStackTrace();
  19. }
  20. //当天天气
  21. WeatherBeanweather=newWeatherBean();
  22. NodeListnodeList=document.getElementsByTagName("current_conditions").item(0).getChildNodes();//当前天气
  23. Stringcondition=nodeList.item(0).getAttributes().item(0).getNodeValue();//天气情况
  24. StringtempF=nodeList.item(1).getAttributes().item(0).getNodeValue();//华氏度
  25. StringtempC=nodeList.item(2).getAttributes().item(0).getNodeValue();//摄氏度
  26. Stringhumidity=nodeList.item(3).getAttributes().item(0).getNodeValue();//湿度
  27. StringimgUrl=nodeList.item(4).getAttributes().item(0).getNodeValue();//天气图片
  28. StringwindCondition=nodeList.item(5).getAttributes().item(0).getNodeValue();//风速描述
  29. weather.setCondition(condition);
  30. weather.setTempF(Integer.parseInt(tempF));
  31. weather.setTempC(Integer.parseInt(tempC));
  32. weather.setHumidity(humidity);
  33. //weather.setIcon(reDrawable(imgUrl));//解析图片
  34. weather.setWindCondition(windCondition);
  35. returnweather;
  36. }

三、Google返回的Json数据,用Json解析城市

  1. /**
  2. *通过Android提供的Json方式解析城市信息
  3. *@paramcountryCode
  4. *@return
  5. */
  6. publicstaticList<CityBean>getCityInfos(StringcountryCode){
  7. List<CityBean>cityList=newArrayList<CityBean>();
  8. //
  9. StringBuildersBuilder=newStringBuilder();
  10. BufferedReaderbReader=newBufferedReader(newInputStreamReader(getStream(countryCode)));
  11. try{
  12. for(Strings=bReader.readLine();s!=null;s=bReader.readLine()){
  13. sBuilder.append(s);
  14. }
  15. }catch(IOExceptione){
  16. e.printStackTrace();
  17. }
  18. try{
  19. JSONObjectjsonObject=newJSONObject(sBuilder.toString());
  20. JSONArrayjsonArray=jsonObject.getJSONArray("cities");
  21. for(inti=0;i<jsonArray.length();i++){
  22. CityBeancityBean=newCityBean();
  23. JSONObjectjsonObj=(JSONObject)jsonArray.opt(i);
  24. cityBean.setCityName(jsonObj.getString("name"));
  25. cityBean.setLat(jsonObj.getLong("lat"));
  26. cityBean.setLon(jsonObj.getLong("lon"));
  27. cityList.add(cityBean);
  28. Log.i(TAG,"name="+jsonObj.getString("name")+";lat="+jsonObj.getLong("lat")+";lon="+jsonObj.getLong("lon"));
  29. }
  30. }catch(JSONExceptione){
  31. e.printStackTrace();
  32. }
  33. returncityList;
  34. }

我这里只是通过经纬度查询城市天气预报。也可以通过其他的方式,具体的请看上面那个链接。

Demo下载地址:http://download.csdn.net/source/3339328

分享到:
评论

相关推荐

    android 天气预报 google api 完整源代码

    在Android应用开发中,天气预报是一项常见的功能,它通常依赖于第三方API来获取实时和预测的气象数据。在这个场景中,我们关注的是一个基于Google API的Android天气预报应用的完整源代码。这个应用可能利用了Google...

    谷歌天气并json解析xml

    String args = "http://www.google.com/ig/api?weather=,,,"+latAndLon; Intent intent = new Intent(this, JsonDemoActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable...

    Google Weather android源码项目

    在解析返回的JSON或XML数据时,源码可能包含了使用Gson、Jackson或内置的XmlPullParser进行数据绑定和解析的方法。 接着,数据存储也是一个重要的环节。Android应用常常需要将数据存储在本地,以便离线时也能访问。...

    android-weather.zip_android_android weather_android源码_weather_天气

    2. **天气API集成**:为了获取实时天气数据,应用通常会对接第三方天气API,如OpenWeatherMap、AccuWeather等,需要了解如何请求和解析JSON数据。 3. **UI设计**:源码中的界面设计涉及到Android的布局管理(如...

    android获取天气月报

    - Google提供了多种API服务,其中包括Google Maps Platform的Geocoding API和Weather API,后者可以用于获取实时及预测性天气数据。 - Geocoding API可以将地理位置信息(如地址)转换为经纬度坐标,这对于根据...

    基于android studio通过URL获取API

    在Android开发中,通过URL获取API是常见的数据交互方式,特别是在构建移动应用时,比如获取天气预报、体重信息或地理位置等。Android Studio作为Google官方推荐的Android开发集成环境,提供了强大的工具支持这种网络...

    基于Android的输入城市查询天气情况

    在Android平台上,开发一个能输入城市并查询天气的应用是一个常见的任务,这有助于用户方便地获取实时的气象数据。本文将详细解析如何利用Google Weather API来实现这一功能。 首先,了解`Android`:Android是由...

    安卓Android源码——weather.rar

    开发者需要理解和使用API接口,将JSON或XML数据转化为可处理的对象。 2. **数据解析**:从服务器获取的数据通常是JSON格式,开发者需要了解如何使用`Gson`、`Jackson`或`org.json`等库解析这些数据。解析后的数据...

    android 谷歌天气预报

    在Android平台上开发谷歌天气预报应用涉及多个技术领域和知识点,包括Android SDK...以上就是开发Android谷歌天气预报应用涉及的主要知识点,通过深入理解和实践这些技术,可以创建一个功能完善且用户友好的天气应用。

    Android天气小部件源码

    4. **Google API的应用**:获取天气信息通常需要从网络获取数据,这里可能用到Google的开放API,如Google Weather API(虽然现在已经关闭,但可替换为其他第三方天气API)。API调用通常涉及到网络请求,如HTTP/HTTPS...

    Android 网络定位城市获取天气

    实现“Android网络定位城市获取天气”功能涉及的知识点包括:Android定位服务(如`FusedLocationProviderClient`)、地理编码API、网络请求(如`HttpClient`或`OkHttp`)、数据解析(如JSON或XML)以及UI交互和数据...

    weather_ride5df_android_源码

    2. **天气接口**:"weather-com-cn"是一个提供天气信息的接口,开发者需要通过HTTP请求获取数据,并解析返回的JSON或XML格式的天气信息。这包括但不限于城市名、温度、湿度、风向、风力等。解析后,这些数据会展示在...

    Android_weather-master

    项目可能对接了公开的天气API,如OpenWeatherMap、AccuWeather等,通过HTTP请求获取JSON或XML格式的天气数据。开发者需要解析这些数据,提取出温度、湿度、风速等关键信息,然后将它们适配到UI上显示。 对于添加...

    安卓天气预报android-weather.zip

    【安卓天气预报应用程序开发】 ...通过分析这个“android-weather”项目,我们可以学习到如何构建一个功能齐全的天气应用,从数据获取、解析到界面展示的全过程,这对于安卓开发者来说是宝贵的实战经验。

    android weather

    Android提供了`Gson`库用于JSON解析,`SimpleXML`或`Jackson`库用于XML解析。Retrofit还支持直接将响应转换为对象,简化了数据处理步骤。 3. **SQLite数据库**:为了缓存天气数据,避免频繁的网络请求,开发者通常...

    Android代码-My-Weather

    【Android代码-My-Weather】项目是一个开源的天气应用程序,主要使用了Android技术栈,并结合了第三方服务提供商mob的免费天气API。这个项目的核心目的是提供一个简洁、无广告的天气查询工具,帮助用户轻松获取实时...

    android weatherwidget source code

    通过深入分析这个"android weatherwidget source code"项目,开发者可以学习到如何设计和实现一个功能完善的天气小部件,包括UI设计、数据获取、更新机制以及与服务器的通信等关键技能。同时,这也是一个很好的实战...

    Android获得天气和温度

    在Android平台上获取天气和温度的信息是一项常见的功能,它涉及到网络请求、JSON解析、UI更新等多个技术环节。以下是一些相关的知识点: 1. **网络请求**:Android应用通常使用HTTP或HTTPS协议来获取远程服务器上的...

    WeatherApp:使用openWeather API的Android天气应用程序

    **WeatherApp:使用openWeather ...通过这个项目,你可以学习到如何在Android应用中使用Java进行网络请求、处理API响应、解析JSON数据以及更新UI。这是一个很好的实践项目,对于提升Android和Java开发技能非常有帮助。

    WeatherApp

    通过发送HTTP请求获取JSON或XML格式的天气信息,然后使用Gson或Jackson库解析这些数据,将其转化为可操作的对象模型。这些天气信息可能包括温度、湿度、风速、天气图标等,都会动态显示在界面上。 对于地理位置服务...

Global site tag (gtag.js) - Google Analytics