天天看點

Android使用和風天氣接口擷取天氣資料在APP中展示天氣

 公司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次,而不是一個整數。。。