android天气查询(一)websevice之ksoap2软件包的使用
对于用到天气信息,首先我想:
第一:数据不可能是我测得的,必须是网上的信息。
第二:网上的信息分为好多种,具体哪种比较好一点,这里我总结了两种。
第三:数据JSON怎么解析。
第四:如何提出数据与显示。
完成了上述步骤,那么我们就完成了基本是天气信息获取。
1.数据信息源
数据信息源直接关乎着你要实现的功能,没有数据功能是不可能实现的,当然自己测量也是不现实的,参考一些网上信息,同时自己也写了两个demo。
2.网上数据源第一种分析
第一种,webService来获取国家气象局提供的天气服务:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx
我们可以点击getWeather,来获取一下天气信息,同时也了解一下他的排布格式。
点击之后,出现如下界面,同时网页上也会有对应的SOAP1.1和SOAP1.2协议:
查看对应北京的天气信息,这里我就不粘了,点击调用即可。好的下面我们了解一下这种天气信息获取的方式。
此项服务是由,上海思集信息科技有限公司提供:
是一种有局限性的数据,连续获取是行不通的,获取过多也是行不通的,接下来说一下这个的实现方法:
2.1 程序代码的实现
(1)引入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar软件包,这样我们就不用自己去解析SOAP1.1协议了,封装类已经提供了解释方法。
(2)编写与封装ksoap2对应的代码,这里我们粘贴就好,一般不需要我们去改动。源码中的WebServiceUtil就是。这里我就不贴了。
(3)编写对应的获取程序并显示
protected void refresh(String city_str)
{
SoapObject detail = WebServiceUtil.getWeatherByCity(city_str); try
{
// 取得<string>10月13日 中雨转小雨</string>中的数据
String date = detail.getProperty(7).toString();
// 将"10月13日 中雨转小雨"拆分成两个数组
String[] date_array = date.split(" ");
TextView today_text = (TextView) findViewById(R.id.today);
today_text.setText(date_array[0]); // 取得<string>江苏 无锡</string>中的数据
TextView city_text = (TextView) findViewById(R.id.city_text);
city_text.setText(detail.getProperty(1).toString()); TextView today_weather = (TextView) findViewById(R.id.today_weather);
today_weather.setText(date_array[1]); // 取得<string>15℃/21℃</string>中的数据
TextView qiweng_text = (TextView) findViewById(R.id.qiweng);
qiweng_text.setText(detail.getProperty(8).toString()); // 取得<string>今日天气实况:气温:20℃;风向/风力:东南风
// 2级;湿度:79%</string>中的数据,并通过":"拆分成数组
TextView shidu_text = (TextView) findViewById(R.id.shidu);
String date1 = detail.getProperty(4).toString();
shidu_text.setText(date1.split(":")[4]); // 取得<string>东北风3-4级</string>中的数据
TextView fengli_text = (TextView) findViewById(R.id.fengli);
fengli_text.setText(detail.getProperty(9).toString()); // 取得<string>空气质量:良;紫外线强度:最弱</string>中的数据,并通过";"拆分,再通过":"拆分,拆分两次,取得我们需要的数据
String date2 = detail.getProperty(5).toString();
String[] date2_array = date2.split(";");
TextView kongqi_text = (TextView) findViewById(R.id.kongqi);
kongqi_text.setText(date2_array[0].split(":")[1]); TextView zhiwai_text = (TextView) findViewById(R.id.zhiwai);
zhiwai_text.setText(date2_array[1].split(":")[1]); // 设置小贴士数据
// <string>穿衣指数:较凉爽,建议着长袖衬衫加单裤等春秋过渡装。年老体弱者宜着针织长袖衬衫、马甲和长裤。感冒指数:虽然温度适宜但风力较大,仍较易发生感冒,体质较弱的朋友请注意适当防护。
//运动指数:阴天,较适宜开展各种户内外运动。洗车指数:较不宜洗车,路面少量积水,如果执意擦洗汽车,要做好溅上泥水的心理准备。晾晒指数:天气阴沉,不利于水分的迅速蒸发,不太适宜晾晒。若需要晾晒,请尽量选择通风的地点。
//旅游指数:阴天,风稍大,但温度适宜,总体来说还是好天气。这样的天气很适宜旅游,您可以尽情享受大自然的风光。路况指数:阴天,路面比较干燥,路况较好。舒适度指数:温度适宜,风力不大,您在这样的天气条件下,会感到比较清爽和舒适。
//空气污染指数:气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。紫外线指数:属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。</string>
String[] xiaotieshi = detail.getProperty(6).toString().split("\n");
TextView xiaotieshi_text = (TextView) findViewById(R.id.xiaotieshi);
xiaotieshi_text.setText(xiaotieshi[0]); // 设置当日图片
ImageView image = (ImageView) findViewById(R.id.imageView1);
int icon = parseIcon(detail.getProperty(10).toString());
image.setImageResource(icon); // 取得第二天的天气情况
String[] date_str = detail.getProperty(12).toString().split(" ");
TextView tomorrow_date = (TextView) findViewById(R.id.tomorrow_date);
tomorrow_date.setText(date_str[0]); TextView tomorrow_qiweng = (TextView) findViewById(R.id.tomorrow_qiweng);
tomorrow_qiweng.setText(detail.getProperty(13).toString()); TextView tomorrow_tianqi = (TextView) findViewById(R.id.tomorrow_tianqi);
tomorrow_tianqi.setText(date_str[1]); ImageView tomorrow_image = (ImageView) findViewById(R.id.tomorrow_image);
int icon1 = parseIcon(detail.getProperty(15).toString());
tomorrow_image.setImageResource(icon1); // 取得第三天的天气情况
String[] date_str1 = detail.getProperty(17).toString().split(" ");
TextView afterday_date = (TextView) findViewById(R.id.afterday_date);
afterday_date.setText(date_str1[0]); TextView afterday_qiweng = (TextView) findViewById(R.id.afterday_qiweng);
afterday_qiweng.setText(detail.getProperty(18).toString()); TextView afterday_tianqi = (TextView) findViewById(R.id.afterday_tianqi);
afterday_tianqi.setText(date_str1[1]); ImageView afterday_image = (ImageView) findViewById(R.id.afterday_image);
int icon2 = parseIcon(detail.getProperty(20).toString());
afterday_image.setImageResource(icon2); // 取得第四天的天气情况
String[] date_str3 = detail.getProperty(22).toString().split(" ");
TextView nextday_date = (TextView) findViewById(R.id.nextday_date);
nextday_date.setText(date_str3[0]); TextView nextday_qiweng = (TextView) findViewById(R.id.nextday_qiweng);
nextday_qiweng.setText(detail.getProperty(23).toString()); TextView nextday_tianqi = (TextView) findViewById(R.id.nextday_tianqi);
nextday_tianqi.setText(date_str3[1]); ImageView nextday_image = (ImageView) findViewById(R.id.nextday_image);
int icon3 = parseIcon(detail.getProperty(25).toString());
nextday_image.setImageResource(icon3); } catch (Exception e)
{
showTast(detail.getProperty(0).toString().split("。")[0]);
} }
这里我只贴了代码的小部分,这里我提三点:(1)源码http://download.csdn.net/detail/feiyangxiaomi/6245231(2)资源图片来源,见源码(3)detail.getProperty(7)其中数字7的来源,参考下图。
 
第二种无限制的访问见下一篇。
android天气查询(一)websevice之ksoap2软件包的使用的更多相关文章
- android天气查询(二)之网络json数据的获取
		
前面一篇文章介绍了如何使用ksoap获取天气信息,但是使用的网络资源受到了限制,所以我们这里会采用第二种方法,可以无限制的获取.http://m.weather.com.cn/data/1010101 ...
 - Android解析中国天气接口JSon数据,应用于天气查询!
		
android解析Json数据是比较常见的一种操作.也是客户端和服务器进行数据交互的桥梁.下面就来看一看在android中解析JSon数据的方法吧. 首先要想获得Json数据,就必须访问相关的网络接口 ...
 - Android 身份证号码查询、手机号码查询、天气查询
		
1.基本信息 身份证号码查询:http://apistore.baidu.com/apiworks/servicedetail/113.html 手机号码:http://apistore.baidu. ...
 - 制作一个功能丰富的Android天气App
		
简易天气是一个基于和风天气数据采用MD设计的Android天气App.目前的版本采用传统的MVC模式构建.通过丰富多彩的页面为用户提供日常所需的天气资讯. 项目说明 项目放在github上面 地址是: ...
 - H5天气查询demo(二)
		
最近刚好有空,学长帮忙让做个毕设,于是我提到了那个基于H5地理位置实现天气查询的方法,学长听了也觉得不错,于是就这个主题,扩展了一下,做了一个航班管理查询系统,为上次博客中提到的利用H5 api中的经 ...
 - C#调用天气查询服务
		
先引入天气查询服务 1.有点引用导入服务引用 //实例化 web引用名.WeatherWebService cn = new web引用名.WeatherWebService() ...
 - 【转】根据中国气象局提供的API接口实现天气查询
		
本文转载自 老三 的 三叶草 中国气象局提供了三个天气查询的API接口: [1]http://www.weather.com.cn/data/sk/101190101.html [2]http://w ...
 - 天气查询SDK
		
简介: 这是一个用于查询天气的SDK,在很多时候,尤其是对接多而小功能公众账号的时候,天气查询比较使用,此SDK就是这样的用途,使用的是中国天气网的API,已经集成了网上最靠谱的方式来实现,包括里面的 ...
 - 根据中国气象局提供的API接口实现天气查询
		
中国气象局提供了三个天气查询的API接口: [1]http://www.weather.com.cn/data/sk/101190101.html [2]http://www.weather.com. ...
 
随机推荐
- Asp.net 获取服务器指定文件夹目录文件,并提供下载
			
string dirPath = HttpContext.Current.Server.MapPath("uploads/"); if (Directory.Exists(dirP ...
 - Asp.Net MVC 控制器
			
原文链接:http://www.asp.net/learn/mvc/ 这篇教程探索了ASP.NET MVC控制器(controller).控制器动作(controller action)和动作结果(a ...
 - BZOJ 3261: 最大异或和( 可持久化trie )
			
搞成前缀和然后就可以很方便地用可持久化trie维护了.时间复杂度O((N+M)*25) -------------------------------------------------------- ...
 - poj 3228 Gold Transportation  二分+网络流
			
题目链接 给出n个城市, 每个城市有一个仓库, 仓库有容量限制, 同时每个城市也有一些货物, 货物必须放到仓库中. 城市之间有路相连, 每条路有长度. 因为有些城市的货物量大于仓库的容量, 所以要运到 ...
 - Python学习笔记 (1) :python简介、工具、编码及基础运算
			
学习背景: 精通一门编程语言并编写出自己喜欢的程序是我多年的梦想,一定要找时间实现.此时想起了高中时的我对编程的兴趣十分浓厚,父母给自己购买了学习机插卡式的,只能敲basic代码,同时学校有386计算 ...
 - Linux菜鸟之路[4]-cal,date,bc,echo $LANG,man
			
由于前四天一直在看鸟哥的linux书本的计算机的一些基础知识,今天才接触基本的命令,从今天起每天记录一下自己的linux学习过程. cal:日历 cal: cal 2015:列出2015年所有日历 c ...
 - VC++中的类的内存分布(上)(通过强制转换,观察地址,以及地址里的值来判断)
			
0.序 目前正在学习C++中,对于C++的类及其类的实现原理也挺感兴趣.于是打算通过观察类在内存中的分布更好地理解类的实现.因为其实类的分布是由编译器决定的,而本次试验使用的编译器为VS2015 RC ...
 - 再探Delphi2010 Class的构造和析构顺序
			
发了上一篇博客.盒子上有朋友认为Class的构造和析构延迟加载.是在Unit的初始化后调用的Class的构造.在Unit的反初始化前调用的Class的析构函数. 为了证明一下我又做了个试验 unit ...
 - 预处理指令中#Pragma
			
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的 ...
 - Sencha Touch 2 结合HTML5的本地存储创建数据库实现增、删、改、查
			
大家好!我是范范.本人刚接触ST2到现在刚刚两个月,6月1号接的项目,那时才知道有Sencha Touch2这个东西,到现在两个月了期间的幸酸就不说了.今天说说在项目中用到的HTML5的本地存储.可能 ...