編輯:關於Android編程
本文實例講述了Android編程實現獲取新浪天氣預報數據的方法。分享給大家供大家參考,具體如下:
新浪天氣預報地址:
http://php.weather.sina.com.cn/xml.php?city=武漢&password=DJOYnieT8234jlsK&day=0
其中,city後的城市可用java.net.URLEncoder.encode(“武漢”,” gb2312”);也可以直接寫”武漢”,但不能用”wuhan”。Password固定
Day為0表示當天天氣,1表示第二天的天氣,2表示第三天的天氣,以此類推,最大為4。
工具類:
1、定義成員
/** 新浪天氣網址 */ public final String SINA_URL = "http://php.weather.sina.com.cn/xml.php"; /** 新浪天氣XML調用密碼 */ public final String PASSWORD = "DJOYnieT8234jlsK"; /** 城市 */ public String city; /** 白天天氣 */ public String status1; /** 夜晚天氣 */ public String status2; /** 白天天氣 拼音 */ public String figure1; /** 夜晚天氣拼音 */ public String figure2; /** 白天風向 */ public String direction1; /** 夜晚風向 */ public String direction2; /** 白天風級 */ public String power1; /** 夜晚風級 */ public String power2; /** 白天溫度 */ public String temperature1; /** 夜晚溫度 */ public String temperature2; /** 體感溫度 */ public String tgd; /** 紫外線指數 */ public String zwx_l; /** 紫外線說明 */ public String zwx_s; /** 體感度指數 */ public String ssd_l; /** 體感度說明 */ public String ssd_s; /** 空調指數 */ public String ktk_l; /** 空調說明 */ public String ktk_s; /** 洗車指數 */ public String xcz_l; /** 洗車說明 */ public String xcz_s; /** 穿衣指數 */ public String chy_l; /** 穿衣說明 */ public String chy_shuoming; /** 污染物擴散條件 */ public String pollution_l; /** 污染物擴散條件說明 */ public String pollution_s; /** 感冒指數 */ public String gm_l; /** 感冒說明 */ public String gm_s; /** 運動指數 */ public String yd_l; /** 運動說明 */ public String yd_s;
2、獲取天氣數據
/**
* 更新天氣
*
* @param city
* 城市名
* @param day
* 0表示當天天氣,1表示第二天的天氣,2表示第三天的天氣,以此類推,最大為4
*/
public void UpdateWeatherInfo(String city, String day) {
if (city.equals("")) {
isLoaded = false;
return;
}
String html = null;
try {
html = doGet(SINA_URL + "?city="
+ java.net.URLEncoder.encode(city, "gb2312") + "&password="
+ PASSWORD + "&day=" + day);
Document doc = Jsoup.parse(html);
if (doc.body().getElementsByTag("Profiles").size() == 0) {
isLoaded = false;
return;
}
if (doc.body().getElementsByTag("Profiles").get(0).getElementsByTag("Weather").size() == 0) {
isLoaded = false;
return;
}
Element element = doc.body().getElementsByTag("Profiles").get(0)
.getElementsByTag("Weather").get(0);
this.city = element.getElementsByTag("city").text();
status1 = element.getElementsByTag("status1").text();
status2 = element.getElementsByTag("status2").text();
figure1 = element.getElementsByTag("figure1").text();
figure2 = element.getElementsByTag("figure2").text();
direction1 = element.getElementsByTag("direction1").text();
direction2 = element.getElementsByTag("direction2").text();
power1 = element.getElementsByTag("power1").text();
power2 = element.getElementsByTag("power2").text();
temperature1 = element.getElementsByTag("temperature1").text();
temperature2 = element.getElementsByTag("temperature2").text();
tgd = element.getElementsByTag("tgd").text();
zwx_l = element.getElementsByTag("zwx_l").text();
zwx_s = element.getElementsByTag("zwx_s").text();
ssd_l = element.getElementsByTag("ssd_l").text();
ssd_s = element.getElementsByTag("ssd_s").text();
ktk_l = element.getElementsByTag("ktk_l").text();
ktk_s = element.getElementsByTag("ktk_s").text();
xcz_l = element.getElementsByTag("xcz_l").text();
xcz_s = element.getElementsByTag("xcz_s").text();
chy_l = element.getElementsByTag("chy_l").text();
chy_shuoming = element.getElementsByTag("chy_shuoming").text();
pollution_l = element.getElementsByTag("pollution_l").text();
pollution_s = element.getElementsByTag("pollution_s").text();
gm_l = element.getElementsByTag("gm_l").text();
gm_s = element.getElementsByTag("gm_s").text();
yd_l = element.getElementsByTag("yd_l").text();
yd_s = element.getElementsByTag("yd_s").text();
isLoaded = true;
} catch (UnsupportedEncodingException e) {
isLoaded = false;
}
}
3、訪問網絡
public static final String ENCODE = "utf-8";
public static String doGet(String url) {
try {
HttpGet httpGet = new HttpGet(url);
HttpClient hc = new DefaultHttpClient();
HttpResponse ht = hc.execute(httpGet);
if (ht.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity he = ht.getEntity();
InputStream is = he.getContent();
BufferedReader br = new BufferedReader(
new InputStreamReader(is));
String response = "";
String readLine = null;
while ((readLine = br.readLine()) != null) {
response = response + readLine;
}
is.close();
br.close();
return response;
} else {
return "error";
}
} catch (Exception e) {
return "error";
}
}
4、關於jsoup可參考:
http://baike.baidu.com/view/4066913.htm
希望本文所述對大家Android程序設計有所幫助。
Android 逆向學習詳解及實例
斷斷續續的總算的把android開發和逆向的這兩本書看完了,雖然沒有ja
完美解決Android使用Zxing掃描二維碼改成豎屏後,後面的預覽畫面出現了拉伸,扭曲的情況
完美解決解決Android使用Zxing掃描二維碼改成豎屏後,後面的預覽畫面出現了拉伸,扭曲的情況第一步:找到com.zxing.camera包下的CameraConf
Android圖片處理神器BitmapFun源碼分析
作為一名Android開發人員,相信大家對圖片OOM的問題已經耳熟能詳了,關於圖片緩存和解決OOM的開源項目也是相當的多,被大家熟知的就是Un
Android 實現全屏和無標題欄的顯示
在Android實現沒有標題欄的方法有兩種:在代碼中添加requestWindowFeature(Window.FEATURE_NO_TITLE); 在清單文件Andro