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

这是第一次在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";
    @Override
    protected 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() {
            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "Weather Now onError: ", e);
            }

            @Override
            public 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();

这时重新编译运行软件可以发现,
在这里插入图片描述
控制台输出了此时获取到的天气情况。

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

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金三亲

用现在的金钱换取未来的金钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值