Android使用和风天气接口获取天气数据在APP中展示天气

时间:2024-03-14 19:22:55

 公司APP项目需要能能够显示当前天气,网上找了很多天气数据接口,总结下来要么收费,要么用起来不友好,最后还是用了郭霖推荐的和风天气接口


这里记录一下自己的使用过程


首先注册和风天气个人开发者,认证时间1-3天,我基本几个小时就收到了认证成功的邮件。认证开发者后可以获得中国和海外城市的7天预报、逐3小时预报、实况天气、空气质量和生活指数,对比了一下其它家,和风真是算良心接口了,虽然我只需要实况天气这一个数据~~~~


先看文档:https://www.heweather.com/documents/api/s6/weather-now 本来以为要做不少解析工作,不过竟然发现提供了现成的android sdk https://www.heweather.com/documents/sdk/android


按照官方给出的方法集成,但是无法获取到数据,经过询问客服发现需要更新sdk到1.2.2版本才能支持免费用户(穷逼很无语),在此mark一下,免费或者个人开发者务必使用1.2.2版本及以上才行


下面贴一下使用的简单过程

首先当然是引入jar包,打开上文第二个链接点击下载,然后将jar包导入到工程libs中


Android使用和风天气接口获取天气数据在APP中展示天气



配置Android Manifest 添加权限,(Android 6.0以上记得动态添加权限 !!)
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />


然后按照文档所说在项目的build.gradle中添加依赖


implementation 'com.squareup.okhttp3:okhttp:3.3.0'
implementation 'com.google.code.gson:gson:2.6.2'
然后在代码中配置自己注册到的key和userId
我写在了activity的onCreate()里
HeConfig.init("注册到的userId","注册到的key");

然后就可以调用接口啦~(我需要的是实况天气所以自然调getWeatherNow这个接口咯)传的参数可以自行决定,location参数如果不传的话会调用手机自带的GPS定位,在onSuccess()方法里有直接封装好的bean(简直良心啊!!!),直接获取到需要的数据就可以进行各种操作了~

HeWeather.getWeatherNow(MainActivity.this, "CN101010100", new HeWeather.OnResultWeatherNowBeanListener() {
    @Override
    public void onError(Throwable e) {
        Log.i(TAG, "onError: ", e);
    }

    @Override
    public void onSuccess(List<Now> dataObject) {
        Log.i(TAG, " Weather Now onSuccess: " + new Gson().toJson(dataObject));
    }
});

这个就是拿到数据后进行的展现了~

Android使用和风天气接口获取天气数据在APP中展示天气



最后吐槽一下,不知道为啥个人开发者每天访问量14959次,而不是一个整数。。。