亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android天氣預報之基于HttpGet對象解析天氣數據的方法

2020-04-11 11:45:20
字體:
來源:轉載
供稿:網友

本文實例所述為Android天氣預報之解析天氣數據的代碼,可實現獲取HttpGet對象讀取天氣網站天氣數據,并從數據中解析出天氣數據,比如溫度、溫度、風力、風向、未來幾天天氣趨勢、當天天氣狀況、空氣污染指數等信息,還包括了調用對應的圖片或天氣動畫文件,對于開發android天氣預報程序的可以參考本文實例。

具體功能代碼如下:

import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import java.util.Locale;import net.tsz.afinal.FinalHttp;import net.tsz.afinal.http.AjaxCallBack;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.util.EntityUtils;import org.json.JSONException;import org.json.JSONObject;import org.lmw.weather.MyApp;import org.lmw.weather.entity.WeatherEntity;import android.app.Activity;import android.os.Handler;import android.os.Message;/** * 解析天氣數據 * @author Dave */public class WeatherData { private Activity activity; private FinalHttp fh; public static String def_weather_key="def_weather"; public WeatherData(Activity activity) { this.activity = activity; fh = new FinalHttp(); fh.configTimeout(1000 * 3); } public void getData(final String cityId,final Handler hd) { StringBuffer sb_url = new StringBuffer(); sb_url.append("http://0.qnweather.duapp.com/weather.php?uri="); sb_url.append("http://m.weather.com.cn/data/"); sb_url.append(cityId); sb_url.append(".html"); final Message msg=new Message(); fh.get(sb_url.toString(), new AjaxCallBack() {  @Override  public void onSuccess(Object t) {  super.onSuccess(t);  MySharedPreferences.writeMessage(activity, "def_weather",t.toString());  msg.what=0;  msg.obj=parseJson(t.toString());  hd.sendMessage(msg);  }  @Override  public void onFailure(Throwable t, int errorNo, String strMsg) {  super.onFailure(t, errorNo, strMsg);  System.out.println("-------errorNo---------"+errorNo);  msg.what=-1;  msg.arg1=errorNo;  msg.obj=MySharedPreferences.readMessage(activity, def_weather_key, "");  hd.sendMessage(msg);  } }); } private String connServerForResult(String strUrl) { // 獲取HttpGet對象 HttpGet httpRequest = new HttpGet(strUrl); String strResult = ""; try {  // HttpClient對象  HttpClient httpClient = new DefaultHttpClient();  // 獲得HttpResponse對象  HttpResponse httpResponse = httpClient.execute(httpRequest);  if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  // 取得返回的數據  strResult = EntityUtils.toString(httpResponse.getEntity());  } } catch (ClientProtocolException e) {  e.printStackTrace(); } catch (IOException e) {  e.printStackTrace(); } catch (Exception e) {  e.printStackTrace(); } System.out.println("rresult" + strResult); return strResult; // 返回結果 } // 數據解析 private WeatherEntity parseJson(String strResult) { WeatherEntity weather = null; try {  JSONObject jsonObj = new JSONObject(strResult.replace("℃", "°"))   .getJSONObject("weatherinfo");  weather = new WeatherEntity();  int ftime = jsonObj.getInt("fchh"); // 更新時間(整點)【更新時間確定temp屬于哪天】  int temp = 0; // 偏移  if (ftime >= 18 || ftime < 8) {  weather.setNight(true);  temp = 1;  }  MyApp.week = jsonObj.getString("week");// 今天星期幾  weather.setCity(jsonObj.getString("city")); // 城市  weather.setComfortable(jsonObj.getString("index")); // 舒適度  weather.setRefreshDate(getDate()); // 更新日期  weather.setRefreshTime(getTime()); // 更新時間  weather.setRefreshWeek(getWeek()); // 更新星期  weather.setPicIndex(jsonObj.getInt("img1")); // 當天天氣圖片編號  List<Integer> topPic = new ArrayList<Integer>(); // 最高溫時的圖片編號  if (temp == 1) {  topPic.add(getSavePic(activity));  } else {  topPic.add(getJsonPic(jsonObj, "img", 1 + temp));  savePic(activity, topPic.get(0));  }  topPic.add(getJsonPic(jsonObj, "img", 3 - temp));  topPic.add(getJsonPic(jsonObj, "img", 5 - temp));  topPic.add(getJsonPic(jsonObj, "img", 7 - temp));  weather.setTopPic(topPic);  List<Integer> lowPic = new ArrayList<Integer>(); // 最低溫時的圖片編號  lowPic.add(getJsonPic(jsonObj, "img", 2 - temp));  lowPic.add(getJsonPic(jsonObj, "img", 4 - temp));  lowPic.add(getJsonPic(jsonObj, "img", 6 - temp));  lowPic.add(getJsonPic(jsonObj, "img", 8 - temp));  weather.setLowPic(lowPic);  // ---------------------------以上為獲取圖片編號,暫且不管----------------------------------------------------------------------  List<String> tempList = new ArrayList<String>(); // 未來五天溫度(第一個是今天)  tempList.add(jsonObj.getString("temp1"));  tempList.add(jsonObj.getString("temp2"));  tempList.add(jsonObj.getString("temp3"));  tempList.add(jsonObj.getString("temp4"));  tempList.add(jsonObj.getString("temp5"));  tempList.add(jsonObj.getString("temp6"));  MyApp.tempList.clear();  MyApp.tempList = tempList;  List<String> weatherList = new ArrayList<String>();// 未來五天天氣(第一個是今天)  weatherList.add(jsonObj.getString("weather1"));  weatherList.add(jsonObj.getString("weather2"));  weatherList.add(jsonObj.getString("weather3"));  weatherList.add(jsonObj.getString("weather4"));  weatherList.add(jsonObj.getString("weather5"));  weatherList.add(jsonObj.getString("weather6"));  MyApp.weatherList.clear();  MyApp.weatherList = weatherList;  List<String> tempListMax = new ArrayList<String>(); // 未來五天最高溫度集合(有°符號)  if (temp == 1) {  tempListMax.add(getSaveTemperature(activity));  } else {  tempListMax   .add(getTemperatureMaxAndMin(tempList.get(0))[0 + temp]);  saveTemperature(activity, tempListMax.get(0));  }  tempListMax   .add(getTemperatureMaxAndMin(tempList.get(1 - temp))[0 + temp]);  tempListMax   .add(getTemperatureMaxAndMin(tempList.get(2 - temp))[0 + temp]);  tempListMax   .add(getTemperatureMaxAndMin(tempList.get(3 - temp))[0 + temp]);  weather.setTemperatureMax(tempListMax);  weather.setTodayTemperature(getTemperatureMaxAndMin(tempList.get(0))[0]); // 當天溫度(實時)  weather.setTodayWeather(jsonObj.getString("img_title1")); // 當天天氣描述(實時)  List<String> tempListMin = new ArrayList<String>(); // 未來四天最低溫度集合(有°符號)  tempListMin.add(getTemperatureMaxAndMin(tempList.get(0))[1 - temp]);  tempListMin.add(getTemperatureMaxAndMin(tempList.get(1))[1 - temp]);  tempListMin.add(getTemperatureMaxAndMin(tempList.get(2))[1 - temp]);  tempListMin.add(getTemperatureMaxAndMin(tempList.get(3))[1 - temp]);  weather.setTemperatureMin(tempListMin);  weather.setTomorrowTemperature(tempList.get(1)); // 明天溫度(包括最高溫和最低溫)  if (temp == 1) {  weatherList.add(getSaveWeather(activity));  } else {  weatherList.add(jsonObj.getString("weather" + 1));  saveWeather(activity, weatherList.get(0));  }  weatherList.add(jsonObj.getString("weather" + (2 - temp)));  weatherList.add(jsonObj.getString("weather" + (3 - temp)));  weatherList.add(jsonObj.getString("weather" + (4 - temp)));  weather.setWeather(weatherList);  weather.setTomorrowWeather(weatherList.get(1));  List<String> windList = new ArrayList<String>(); // 未來四天風力  windList.add(jsonObj.getString("wind1"));  windList.add(jsonObj.getString("wind2"));  windList.add(jsonObj.getString("wind3"));  windList.add(jsonObj.getString("wind4"));  weather.setWind(windList);  weather.setMaxlist(transplate(tempListMax)); // 未來四天最高溫度集合(無°符號)  weather.setMinlist(transplate(tempListMin)); // 未來四天最低溫度集合(無°符號) } catch (JSONException e) {  e.printStackTrace(); } return weather; } // 獲取更新日期 并轉換為(X月X日 周X) private String getDate() { SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 EEE", Locale.CHINA); String date = sdf.format(new java.util.Date()); System.out.println(date); return date; } // 獲取更新時間 并轉換為 (小時:分鐘 更新) private String getTime() { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.CHINA); String time = sdf.format(new java.util.Date()) + " " + "更新"; System.out.println(time); return time; } private String getWeek() { return null; } // 獲取最高溫度和最低溫度,有°符號 private String[] getTemperatureMaxAndMin(String str) { return str.split("~"); } // 去除最高溫度和最低溫度里的°符號 private List<Integer> transplate(List<String> strList) { List<Integer> intList = new ArrayList<Integer>(); for (String temp : strList) {  intList.add(Integer.valueOf(temp.split("°")[0])); } return intList; } // 獲取圖片編號 例如"img" + "1" private int getJsonPic(JSONObject jsonObj, String str, int index)  throws JSONException { int result = jsonObj.getInt(str + index); if (result == 99 && index > 1) {  index--;  result = jsonObj.getInt(str + index); } return result; } private void saveTemperature(Activity activity, String value) { // MySharedPreferences mp = new MySharedPreferences(activity); // mp.writeMessage("temperature", value); } // 保存的溫度 private String getSaveTemperature(Activity activity) { return MySharedPreferences.readMessage(activity,"temperature", "100"); } private void saveWeather(Activity activity, String value) { // MySharedPreferences mp = new MySharedPreferences(activity); // mp.writeMessage("weather", value); } // 保存的天氣 private String getSaveWeather(Activity activity) { return MySharedPreferences.readMessage(activity,"weather", ""); } private void savePic(Activity activity, int value) { // MySharedPreferences mp = new MySharedPreferences(activity); // mp.writeMessage("pic", value); } // 保存的天氣圖片編號 private int getSavePic(Activity activity) { return MySharedPreferences.readMessage(activity,"pic", 99); }}

希望本文實例對大家Android天氣預報程序的開發能夠起到一定的幫助作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区三区高清在线观看| 欧美精品video| 51ⅴ精品国产91久久久久久| 欧美日韩第一页| 91成人免费观看网站| 在线看片第一页欧美| 97香蕉超级碰碰久久免费的优势| 粉嫩老牛aⅴ一区二区三区| 亚洲国产精品成人精品| 欧美国产日韩二区| 九九热视频这里只有精品| 国产免费一区二区三区香蕉精| 亚洲无av在线中文字幕| 久久视频免费在线播放| 日韩在线www| 亚洲精品视频久久| 欧美最顶级的aⅴ艳星| 91欧美视频网站| 亚洲2020天天堂在线观看| 日韩欧美在线中文字幕| 久久免费视频在线观看| 亚洲视频axxx| 国产午夜精品麻豆| 国产精品久久久久91| 国产日韩欧美中文| 欧美在线亚洲在线| 欧美成人免费va影院高清| 欧美午夜激情在线| 欧美另类在线观看| 日韩av在线最新| 91亚洲国产精品| 亚洲福利在线看| 欧美理论电影在线播放| 国产成人在线视频| 国产精品久久久久久一区二区| 夜夜狂射影院欧美极品| 亚洲女人被黑人巨大进入al| 成人伊人精品色xxxx视频| 亚洲图片欧洲图片av| 91久久中文字幕| 亚洲视频网站在线观看| 亚洲自拍偷拍视频| 日本免费在线精品| 亚洲欧美激情四射在线日| 欧美性xxxxhd| 亚洲精品乱码久久久久久按摩观| 欧美一级视频在线观看| 欧美成人手机在线| 97免费中文视频在线观看| 亚洲欧美日韩视频一区| 国产不卡av在线| 中文字幕日本精品| 日韩成人高清在线| 欧美精品一本久久男人的天堂| 亚洲人午夜色婷婷| 欧美日韩国产精品一区| 欧美视频免费在线观看| 成人精品在线视频| 国产精品成人av在线| 在线日韩日本国产亚洲| 性夜试看影院91社区| 全亚洲最色的网站在线观看| 亚洲精品中文字幕女同| 亚洲精品欧美日韩专区| 国产视频精品免费播放| 26uuu亚洲国产精品| 国产偷国产偷亚洲清高网站| 成人妇女淫片aaaa视频| 欧美国产日韩视频| 日韩精品小视频| 亚洲欧美日本伦理| 国产成人福利夜色影视| 国产成人在线亚洲欧美| 欧美日韩国产精品一区二区不卡中文| 黑人巨大精品欧美一区免费视频| 亚洲少妇中文在线| 97人洗澡人人免费公开视频碰碰碰| 亚洲欧美色图片| 热re91久久精品国99热蜜臀| 欧美成人精品在线| 国产日韩欧美一二三区| 欧美日本高清视频| 欧美自拍大量在线观看| 欧美大尺度激情区在线播放| 久久精品视频导航| 亚洲欧洲在线观看| 清纯唯美日韩制服另类| 精品久久久久久中文字幕一区奶水| 亚洲精品在线观看www| 欧美激情亚洲综合一区| 欧美最猛性xxxxx(亚洲精品)| 国产精品主播视频| 668精品在线视频| 国产精品电影一区| 国产成人免费av| 九九久久久久99精品| 97热精品视频官网| 国产乱肥老妇国产一区二| 一区二区在线免费视频| 国产精品入口免费视频一| 久久久成人的性感天堂| 国产一区二区在线免费| 久久资源免费视频| 国产午夜精品视频免费不卡69堂| 亚洲午夜av久久乱码| 国产精品99久久久久久久久久久久| 亚洲精品永久免费精品| 国产精品高清在线观看| 国产欧美日韩最新| 自拍视频国产精品| 欧美理论片在线观看| 亚洲激情视频网站| 国产美女久久久| 国产精品色婷婷视频| 性欧美xxxx视频在线观看| 国自在线精品视频| 久久99久久99精品中文字幕| 亚洲欧洲一区二区三区在线观看| 91精品视频免费| 中文字幕一区二区三区电影| 一区二区三区四区在线观看视频| 国产伊人精品在线| 永久免费毛片在线播放不卡| 久久久久久久97| 国产在线精品成人一区二区三区| 欧美性猛交xxxx乱大交极品| 97久久精品视频| 岛国av一区二区在线在线观看| 成人伊人精品色xxxx视频| 久久91精品国产91久久久| 亚洲第一av在线| 91成人天堂久久成人| 午夜精品一区二区三区av| 亚洲欧美日韩第一区| 国产精品日韩欧美综合| 91精品啪在线观看麻豆免费| 日韩亚洲在线观看| 日韩欧美高清视频| 欧美中文字幕第一页| 欧美xxxx18性欧美| 久久精品国产视频| 欧美日韩电影在线观看| 欧美性猛交xxxx偷拍洗澡| 91精品视频在线免费观看| 中文字幕欧美精品日韩中文字幕| 欧美日韩一区二区在线| 欧美另类高清videos| 亚洲国产精品专区久久| 国产精品jizz在线观看麻豆| 国产最新精品视频| 国产亚洲精品久久| www.99久久热国产日韩欧美.com| 自拍偷拍免费精品| 97久久国产精品| 国产a级全部精品| 欧美裸体xxxx极品少妇软件| 成人a级免费视频| 欧美黑人xxxx| 亚洲欧美日韩视频一区| 精品美女永久免费视频| 91精品一区二区| 日韩高清av在线| 欧美国产在线电影| 欧美一级片一区|