Android(安卓)实现简单当前时间点的天气情况(和风天气接口)
16lz
2021-01-26
今天闲来无事,通过和风天气接口实现了一个简单的获取当前时间点的天气情况,话不多说,直接给大家展示代码,功能是挺简单的,
1、获取数据的实体类:
package wxc.com.weatheer;import java.util.List;/** * Created by 宝 on 2017/9/16. */public class WeatherBean { /** * basic : {"city":"西青","cnty":"中国","id":"CN101030500","lat":"39.13944626","lon":"117.01224518","update":{"loc":"2017-09-16 07:46","utc":"2017-09-15 23:46"}} * now : {"cond":{"code":"101","txt":"多云"},"fl":"24","hum":"72","pcpn":"0","pres":"1014","tmp":"23","vis":"10","wind":{"deg":"172","dir":"南风","sc":"微风","spd":"7"}} * status : ok */ private List HeWeather5; public List getHeWeather5() { return HeWeather5; } public void setHeWeather5(List HeWeather5) { this.HeWeather5 = HeWeather5; } public static class HeWeather5Bean { /** * city : 西青 * cnty : 中国 * id : CN101030500 * lat : 39.13944626 * lon : 117.01224518 * update : {"loc":"2017-09-16 07:46","utc":"2017-09-15 23:46"} */ private BasicBean basic; /** * cond : {"code":"101","txt":"多云"} * fl : 24 * hum : 72 * pcpn : 0 * pres : 1014 * tmp : 23 * vis : 10 * wind : {"deg":"172","dir":"南风","sc":"微风","spd":"7"} */ private NowBean now; private String status; public BasicBean getBasic() { return basic; } public void setBasic(BasicBean basic) { this.basic = basic; } public NowBean getNow() { return now; } public void setNow(NowBean now) { this.now = now; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public static class BasicBean { private String city; private String cnty; private String id; private String lat; private String lon; /** * loc : 2017-09-16 07:46 * utc : 2017-09-15 23:46 */ private UpdateBean update; public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCnty() { return cnty; } public void setCnty(String cnty) { this.cnty = cnty; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getLat() { return lat; } public void setLat(String lat) { this.lat = lat; } public String getLon() { return lon; } public void setLon(String lon) { this.lon = lon; } public UpdateBean getUpdate() { return update; } public void setUpdate(UpdateBean update) { this.update = update; } public static class UpdateBean { private String loc; private String utc; public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } public String getUtc() { return utc; } public void setUtc(String utc) { this.utc = utc; } } } public static class NowBean { /** * code : 101 * txt : 多云 */ private CondBean cond; private String fl; private String hum; private String pcpn; private String pres; private String tmp; private String vis; /** * deg : 172 * dir : 南风 * sc : 微风 * spd : 7 */ private WindBean wind; public CondBean getCond() { return cond; } public void setCond(CondBean cond) { this.cond = cond; } public String getFl() { return fl; } public void setFl(String fl) { this.fl = fl; } public String getHum() { return hum; } public void setHum(String hum) { this.hum = hum; } public String getPcpn() { return pcpn; } public void setPcpn(String pcpn) { this.pcpn = pcpn; } public String getPres() { return pres; } public void setPres(String pres) { this.pres = pres; } public String getTmp() { return tmp; } public void setTmp(String tmp) { this.tmp = tmp; } public String getVis() { return vis; } public void setVis(String vis) { this.vis = vis; } public WindBean getWind() { return wind; } public void setWind(WindBean wind) { this.wind = wind; } public static class CondBean { private String code; private String txt; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getTxt() { return txt; } public void setTxt(String txt) { this.txt = txt; } } public static class WindBean { private String deg; private String dir; private String sc; private String spd; public String getDeg() { return deg; } public void setDeg(String deg) { this.deg = deg; } public String getDir() { return dir; } public void setDir(String dir) { this.dir = dir; } public String getSc() { return sc; } public void setSc(String sc) { this.sc = sc; } public String getSpd() { return spd; } public void setSpd(String spd) { this.spd = spd; } } } }}
2、下面是主要代码
和风的接口,有免费的和收费的,这里使用的是免费的
private String url = "https://free-api.heweather.com/v5/now?city=CN101030500&key=XXXXXX";
下面通过解析数据获取信息
try { // /创建okHttpClient对象 OkHttpClient mOkHttpClient = new OkHttpClient(); //创建一个Request final Request request = new Request.Builder() .url(url) .build(); //new call Call call = mOkHttpClient.newCall(request); //请求加入调度 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gosn = new Gson(); w = new ArrayList(); WeatherBean bean =gosn.fromJson(string,WeatherBean.class); w.add(bean); runOnUiThread(new Runnable() { @Override public void run() { String citi = w.get(0).getHeWeather5().get(0).getBasic().getCity(); String cn = w.get(0).getHeWeather5().get(0).getBasic().getCnty(); String updateTime = w.get(0).getHeWeather5().get(0).getBasic().getUpdate().getLoc(); String text = w.get(0).getHeWeather5().get(0).getNow().getCond().getTxt(); String tep = w.get(0).getHeWeather5().get(0).getNow().getTmp(); t1.setText(citi); t2.setText(cn); t3.setText(updateTime); t4.setText(text); t5.setText(tep); } }); } });} catch (Exception e) { e.printStackTrace();}
这样就实现了一个简单的展示当前天气的功能,根据自己的需求,要想多长时间更新一次就可以了,值得注意的是,免费的接口每天请求的数量是有限制的,
源代码下载:http://download.csdn.net/download/chen_xiaobao/10043393