Android 和風天氣SDK獲取天氣


在編寫app的時候遇到了記錄天氣的情況,所以將使用和風天氣的過程記錄下來。

一、導入和風天氣的jar包以及依賴

jar包的下載鏈接https://dev.heweather.com/docs/sdk/android,下下來之后導入即可,不在贅述,同時需要在項目的build.gradle文件中添加依賴,根據官網的介紹,加入如下兩項依賴

implementation 'com.squareup.okhttp3:okhttp:3.3.0'
implementation 'com.google.code.gson:gson:2.6.2'

在AndroidManifest.xml文件中添加權限,其中,網絡權限是不可缺少的

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

二、申請username和key

進入和風官網,注冊賬號,進入控制台,新建應用

然后再應用中添加key,輸入key的名稱和你的包名就可以得到一個username和key

記錄下你的uername和key,在編寫代碼的時候會用到

三、通過api獲取天氣

核心代碼如下:我將返回的結果顯示在一個textview當中。

1、使用HeConfig.init(String username, String key)進行初始化,我直接寫在了onCreate當中。

2、HeConfig.switchToFreeServerNode();轉換服務器節點,這是一個需要特別注意的地方,開始我在使用的時候各項內容都配置好了,但請求數據的時候訪問被拒絕,后來查閱文檔才發現官方給的下邊這段話,所以要想使用免費的服務就要轉換服務器節點。

  • 默認使用中國付費節點服務域名 HeConfig.switchToCNBusinessServerNode();
  • 個人開發者、企業開發者、普通用戶等所有使用免費數據的用戶需要切換到免費服務域名HeConfig.switchToFreeServerNode();

3、 通過getWeatherNow以及OnResultWeatherNowBeanListener這個監聽器來監聽返回的數據,第一個參數是當前的activity,第二個參數是城市編碼(官網可以找到),此sdk比較好用的一個地方,官方的sdk中已經給我們提供了一個bean,在onSuccess方法中可以進行數據的解析,我在這就直接將沒有處理的json顯示到textview當中了,實際里邊做了處理,只不過用System.out輸出了一下,主要是對它返回的json結構的處理,

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cameraimage); tview = findViewById(R.id.textView); HeConfig.init("your username", "your key"); HeConfig.switchToFreeServerNode(); HeWeather.getWeatherNow(MainActivity.this, "CN101120301", new HeWeather.OnResultWeatherNowBeanListener() { @Override public void onError(Throwable e) { System.out.println(e.toString()); //Log.i(TAG, "onError: ", e); } @Override public void onSuccess(List<Now> dataObject) { System.out.println("-----------"); System.out.println(new Gson().toJson(dataObject)); try { JSONArray wdata = new JSONArray(new Gson().toJson(dataObject)); JSONObject jobj = wdata.getJSONObject(0).getJSONObject("now"); System.out.println(jobj.getString("cond_txt")); System.out.println(jobj.getString("wind_dir")); System.out.println(jobj.getString("tmp")); } catch (JSONException e) { e.printStackTrace(); } tview.setText(new Gson().toJson(dataObject)); //Log.i(TAG, " Weather Now onSuccess: " + new Gson().toJson(dataObject)); } }); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM