关于guolin.tech/api/bing_pi…
仅适用于第一行代码的第二版
项目coolweather有一个HttpUtil工具类
package com.coolweather.android.util;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class HttpUtil {
public static void sendOkHttpRequest(String address,okhttp3.Callback callback){
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(address).build();
client.newCall(request).enqueue(callback);
}
}
然后在WeatherActivity类中有一个loadBingPic()方法,通过这个方法获取图片
private void loadBingPic() {
Log.d(TAG, "loadBingPic: ");
//该网址获取JSON见下方图片
String requestBingPic = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1";
/**
*响应失败
*/
HttpUtil.sendOkHttpRequest(requestBingPic, new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
Log.d(TAG, "onFailure: loadBingPic");
e.printStackTrace();
}
/**
*响应成功
*/
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
String bingPic = response.body().string();
try {
//获取的是一个images集合
JSONArray jsonArray = new JSONObject(bingPic).getJSONArray("images");
//遍历找到url字符串
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String url = jsonObject.getString("url");
bingPic = "http://cn.bing.com" + url;
}
} catch (JSONException e) {
e.printStackTrace();
}
/**
* 将图片缓存(下方三行)
*/
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(WeatherActivity.this).edit();
editor.putString("bing_pic", bingPic);
editor.apply();
String finalBingPic = bingPic;
runOnUiThread(new Runnable() {
@Override
public void run() {
//关于Glide用法https://www.jianshu.com/p/4f457a124d67
Glide.with(WeatherActivity.this).load(finalBingPic).into(bingPicImg);
}
});
}
});
}
requestBingPic位置得到的Json数据
这是coolWeather里面的src,因为阿里云上传无法超过200个文件,所以只能分享src文件夹 www.aliyundrive.com/s/yt2iJbw7B…
借鉴与