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));
            }
        });

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章