对于用到天气信息,首先我想:

第一:数据不可能是我测得的,必须是网上的信息。

第二:网上的信息分为好多种,具体哪种比较好一点,这里我总结了两种。

第三:数据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软件包的使用相关推荐

  1. “Rimon天气”Android天气查询软件项目总结

    "Rimon天气"是我在自学Android软件开发一段时间后,以郭霖写的<第一行代码>书中的天气查询软件"酷欧天气"为参考,改写的天气查询app.与 ...

  2. android天气查询(二)之网络json数据的获取

    前面一篇文章介绍了如何使用ksoap获取天气信息,但是使用的网络资源受到了限制,所以我们这里会采用第二种方法,可以无限制的获取.http://m.weather.com.cn/data/1010101 ...

  3. Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog

    Android MVVM框架搭建(八)高德地图定位.天气查询.BottomSheetDialog 前言 正文 一.集成SDK 二.基础配置 ① 权限配置 ② 配置Key 三.显示地图 ① MapFra ...

  4. 历史天气查询 Android 版本 JAVA

    古老版本:历史温度记录 精细版本:历史天气查询 现在已经可以在豌豆荚应用上搜索到,有用到的朋友可以试试看,提提建议,能下的就装一下然后再卸了,怎么滴一个软件下载量不能为0吧. 功能简单: 1,输入地区 ...

  5. Android利用高德天气查询API实现天气查询功能

      主要功能: 登录.注册(需要有Web端):这个很好写,我使用SpringBoot搭建的Web端,配置好Mybatis,编写Dao层.Service层和Controller层就基本完成了. 首页显示 ...

  6. android高德天气api接口,天气查询-API文档-开发指南-Web服务 API | 高德地图API

    产品介绍 天气查询是一个简单的HTTP接口,根据用户输入的adcode,查询目标区域当前/未来的天气情况. 使用API前您需先申请Key,若无高德地图API账号需要先申请账号. 适用场景 需要使用相关 ...

  7. Android制作天气预报软件 —— 天气查询

    天气查询功能包括信息显示和地区选择两个版块,二者均通过调用极速数据的相关接口进行实现.其中,信息显示界面作为软件首页,默认先显示系统设置的地区天气情况,用户可通过地区选择的界面进行修改信息.对于天气信 ...

  8. Android 身份证号码查询、手机号码查询、天气查询

    1.基本信息 身份证号码查询: http://apistore.baidu.com/apiworks/servicedetail/113.html 手机号码: http://apistore.baid ...

  9. Flutter实战(一)写一个天气查询的APP

    先上效果图: 代码github地址:github.com/koudle/GDG_- 1.创建工程 在Android Studio中,File -> New ->New Flutter Pr ...

最新文章

  1. Merge into 详细介绍
  2. 蓝桥杯第五届决赛真题大全解(java版本)
  3. 5个须警惕的数据库设计错误
  4. shiro如何保证session不失效_请问在不加锁的情况下如何保证线程安全?
  5. php这么把pdf转为world,php pdf如何转word
  6. ABBYY最新版本OCR文字图像识别软件v16
  7. 步进电机驱动器脉冲频率确定 步进电机驱动器
  8. FindBugs错误描述
  9. 微信小程序报错:47001 - data format error hint
  10. layabox 位移动画旋转动画
  11. 系统指定的路径不存在,怎么办
  12. git:info: detecting host provider for ‘https://gitee.com/‘...
  13. IDEA Maven下载依赖时报错: ERROR - #org.jetbrains.idea.maven - Cannot reconnect.
  14. 螃蟹WiFi驱动中的Band Steering功能
  15. android 动画 最顶层_【尼康影像学院】使用SnapBridge连接照相机与智能手机(Android安卓系统)...
  16. 沐阳Git笔记03文件重命名
  17. el-table 怎么合并相同单元格
  18. c#开发wps插件(3)部署
  19. 客户网站中经常用到的英文
  20. 软考高级-信息系统管理师之项目管理基础(最新版)

热门文章

  1. ubuntu创建wifi热点plasma-nm
  2. 架构设计:生产者/消费者模式 第3页:队列缓冲区
  3. 第一次打开Lightroom时的基本设置
  4. [置顶] CopyU!v2插件合集 [2013年7月18日更新]
  5. JFinal的ActiveRecord用法 @JFinal
  6. 思科快速转发机制(CEF-Cisco Express Forwarding)
  7. [转载]-如何向妻子解释OOD
  8. python基本字符_Python基本字符串,基础,之
  9. aws创建html网页,AWS: 在AWS上创建一个网站,综合运用(Lambda + Api Gateway + Dynamodb + S3)...
  10. php-fpm linux 权限,nginx/php-fpm及网站目录的权限设置