这是第一次在CSDN上发表文章,也是一次小小的尝试。主要原因是安卓课程的作业需要用到天气接口,CSDN这个平台上的很多大神都是采用和风天气控制台提供的接口来制作软件;于是,我在4月28号注册了和风天气的账号,并且新建了一个应用,然后复制粘贴了各路代码,下载了无数个Demo项目…结果就是出不来天气信息,十分无奈。等到4月30号,我查看了和风天气的SDK开发文档,才发现了问题所在!因为和风天气在4月29号更新了,版本号为3.0,而更新前的版本号为2.4。这是导致新版开发文档描述的方法与旧版不匹配的原因!经过一天的尝试,于今日终于查询出天气信息,故记录如下,以便今后查阅!

配置步骤


根据和风天气 Android SDK 使用文档,需要先下载.jar文件,地址如下:
https://dev.heweather.com/docs/sdk/android
将下载得到的库(sdk_HeWeather_Public_Android_V3.0.jar),复制到
Project-app-libs目录下,库添加完毕。


打开项目Android Manifest,为手机添加网络权限,权限列表如下:

必选一项
允许连接网络 android.permission.INTERNET

可选两项
访问设备状态 android.permission.READ_PHONE_STATE
访问WIFI状态 android.permission.ACCESS_WIFI_STATE

如果不传递城市参数,此权限为必选,否则无法使用对应的方法
访问网络定位 android.permission.ACCESS_COARSE_LOCATION
访问GPS定位 android.permission.ACCESS_FINE_LOCATION

建议全部添加,新手开发避免出错。


打开build.gradle(app)文件,添加库依赖代码:

dependencies {

compile 'com.squareup.okhttp3:okhttp:3.9.0'
compile 'com.google.code.gson:gson:2.6.2'

}

打开proguard-rules.pro文件,在最后添加如下代码:

# 排除okhttp-dontwarn com.squareup.**-dontwarn okio.**-keep public class org.codehaus.* { *; }-keep public class java.nio.* { *; }# 排除HeWeather-dontwarn interfaces.heweather.com.interfacesmodule.**-keep class interfaces.heweather.com.interfacesmodule.** { *;}

上述配置操作完成后,便可以开始最主要的代码编写了。

代码编写

根据和风天气提供的开发文档,可以复制编写代码如下:

public class MainActivity extends AppCompatActivity {private static final String TAG="MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);HeConfig.init("你的Username", "你的Key");setContentView(R.layout.activity_main);HeWeather.getWeatherNow(MainActivity.this, "CN101010100", Lang.CHINESE_SIMPLIFIED , Unit.METRIC , new HeWeather.OnResultWeatherNowBeanListener() {@Overridepublic void onError(Throwable e) {Log.i(TAG, "Weather Now onError: ", e);}@Overridepublic void onSuccess(Now dataObject) {Log.i(TAG, " Weather Now onSuccess: " + new Gson().toJson(dataObject));//先判断返回的status是否正确,当status正确时获取数据,//若status不正确,可查看status对应的Code值找到原因if ( Code.OK.getCode().equalsIgnoreCase(dataObject.getStatus()) ){//此时返回数据NowBase now = dataObject.getNow();} else {//在此查看返回数据失败的原因String status = dataObject.getStatus();Code code = Code.toEnum(status);Log.i(TAG, "failed code: " + code);}}});}
}

这时手机需要连接到wifi或者移动网络,然后运行代码,会发现监视器输出如下

这里表示软件已经可以去到和风天气的后台读取数据了,可是查阅控制台数据统计却发现,并没有访问记录,这是为什么呢?原因其实已经写得很明白了,就是获取不到相关的权限“permission denied”,那么权限在哪里呢?

和风天气的SDK文档中有这么一段话,

也就是说,它默认把“我”当做了付费开发者,也就是所编写运行的软件,默认访问到了付费的节点服务域名。明白这一个关系之后,重新编写代码,在

 HeConfig.init("你的Username", "你的Key");

代码后面加上

HeConfig.switchToFreeServerNode();

这时重新编译运行软件可以发现,

控制台输出了此时获取到的天气情况。

总结,和风天气新版本的库更新了天气信息的获取方法,其次,在获取天气信息之前,需要了解开发者的身份(是否付费)并初始化开发环境。

安卓-控制台-和风天气,和风天气3.0使用方法相关推荐

  1. android屏幕亮度权限,安卓支持将屏幕亮度设为0的方法。

    前言,本文通过修改framework代码实现,单纯在app上是无法做到的,此外本文修改的是安卓9.0源码. 1.安卓app中通过代码修改屏幕亮度的方法. 可能需要的权限: 设置屏幕亮度: /** * ...

  2. 如何一步一步地获取和风天气的天气数据

    如何获取和风天气的天气数据 天气服务对比结果 注册帐号 创建密钥 获取数据 城市查询 数据解析 天气服务对比结果 目前提供天气数据的服务有很多,对比了很多家,还是觉着和风天气的比较好.个人觉着有以下几 ...

  3. 高德天气 php,天气查询-API文档-开发指南-Web服务 API | 高德地图API

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

  4. 毕业设计 : 基于stm32的微信天气机器人 - 天气检测 环境监测 微信机器人

    0 简介 Hi,大家好,这里是三文工作室,今天向大家介绍一个 单片机项目 基于stm32的微信天气机器人 - 天气检测 环境监测 微信机器人 大家可用于 课程设计 或 毕业设计 print(" ...

  5. Android之基于小米天气的天气源库

    大概去年的这个时候,有跟大家分享简洁天气这个应用.该应用一开始使用的是中国天气网的数据,但是,由于需要重复多次请求服务器获取信息才能满足我们的需求,因此,后来我偷偷的将天气源更换成"知趣天气 ...

  6. html菜鸟教程 动态天气,Blinker 天气时钟8266 12864LCD屏(针对新版库v0.3.4接口更新)...

    本帖最后由 tnn0220 于 2020-6-29 15:37 编辑 https://www.arduino.cn/forum.php ... B%E5%A4%A9%E6%B0%94 { if((mi ...

  7. 中国天气网天气API参数详细解释说明

    经常大家要使用到天气的API,但是,中国天气网天气api返回的JSON参数太多,那么给出中国天气网天气API参数详细解释说明,可以供给参考: view source print? 01 { 02    ...

  8. php获取天气组件,php获取中国天气,中国天气插件说明,根据IP获取天气情况

    PHP » 编程开发 » php获取中国天气,中国天气插件说明,根据IP获取天气情况 php获取中国天气,中国天气插件说明,根据IP获取天气情况 今天客户端需要获取天气情况,于是查询了一下! 看一下要 ...

  9. python爬取中国天气网天气图标

    python爬取中国天气网天气图标 准备工作 天气预报图例网址:http://www.weather.com.cn/static/html/legend.shtml 安装requests:pip in ...

  10. python爬虫获取中国天气网天气数据 requests BeautifulSoup re

    python获取中国天气网天气数据:http://www.weather.com.cn/textFC/henan.shtml main.py # -*- coding: utf-8 -*- impor ...

最新文章

  1. sp_MSforeachtable使用方法
  2. [RHEL5企业级Linux服务攻略]--第2季 Samba服务全攻略答疑贴
  3. 【代码笔记】iOS-浮动的云
  4. 网络通信-2(TCP通信、ServerSocket、Socket)
  5. Secondary NameNode:它究竟有什么作用?(转自:http://blog.csdn.net/xh16319/article/details/31375197)
  6. oracle 查询时间跨度一年,关于时间跨度比较的OVERLAPS函数
  7. ajax preview,In jQuery, using ajaxSend to preview the url built
  8. CPU不支持非地址对齐访问的原因
  9. redis的IM的聊天工具
  10. SpringBoot之可视化api
  11. 深层理解-栈平衡原理
  12. linux+h264+cpu编码,Linux下使用MPV+SMPlayer播放HEVC H265编码视频
  13. 班长投票小程序的java代码
  14. 关于Intel显卡控制面板导致快捷键失灵的解决方法
  15. android 重启自身app
  16. 关于网站推广 网站营销 建议
  17. php ThinkPHP文章上一篇、下一篇解决方案
  18. ReentrantLock 到底锁定了哪个对象了?
  19. 【LinuxUnix--exec 与 fock 系统调用】
  20. vue 字典配置_vue 字典

热门文章

  1. Ubuntu16.04安装运行go-ipfs
  2. 如何VUE写桌面应用(electron)
  3. 开机黑屏显示html,电脑开机黑屏只显示光标怎么办?来看看几种原因分析及解决方法!...
  4. 【安装Oracle 12.2.0.1补丁】Oracle Database SAP Bundle Patch 12.2.0.1.220118 - 202202
  5. openwrt校园网自动登录且断网重连
  6. hazy的leetcode刷题笔记(二)
  7. linux误删文件后恢复
  8. android短信过滤关键词,iOS 11的垃圾短信按关键词过滤功能使用介绍
  9. 以“掌上东航”为例,论混合开发在企业级项目中的实践
  10. w ndows无法完成格式化,windows 无法完成格式化2种解决方案