android天氣查詢(二)之網絡json數據的獲取

? ? ?前面一篇文章介紹了如何使用ksoap獲取天氣信息,但是使用的網絡資源受到了限制,所以我們這里會采用第二種方法,可以無限制的獲取。http://m.weather.com.cn/data/101010100.html?但是對應的101010100(北京)我們怎么獲取呢,還有就是圖片資源怎么來的呢?http://m.weather.com.cn/img/b1.gif這個是圖片資源,但是每次從網上去還是比較費流量的,我仔細對比了Ksoap中給的gif圖片資源,和中國氣象局的這個圖片都是一一對應的,所以這里我會做成本地圖片。

?

{"weatherinfo":{<!-- 基本信息 -->"city":"北京","city_en":"北京","date_y":"2013年5月14日","date":"","week":"星期一","fchh":"08","cityid":"101010100",<!-- 從今天開始到第六天的每天的天氣情況,這里的溫度是攝氏溫度 -->"temp1":"29℃~23℃","temp2":"26℃~20℃","temp3":"24℃~20℃","temp4":"25℃~20℃","temp5":"24℃~21℃","temp6":"25℃~22℃",<!-- 從今天開始到第六天的每天的天氣情況,這里的溫度是華氏溫度 -->"tempF1":"84.2℉~73.4℉","tempF2":"78.8℉~68℉","tempF3":"75.2℉~68℉","tempF4":"77℉~68℉","tempF5":"75.2℉~69.8℉","tempF6":"77℉~71.6℉",<!-- 天氣描述 -->"weather1":"陣雨轉中雨","weather2":"中雨轉小雨","weather3":"小雨","weather4":"小雨","weather5":"小雨轉陣雨","weather6":"陣雨轉小雨",<!-- 天氣描述圖片序號 -->"img1":"3","img2":"8","img3":"8","img4":"7","img5":"7","img6":"99","img7":"7","img8":"99","img9":"7","img10":"3","img11":"3","img12":"7","img_single":"3",<!-- 圖片名稱 -->"img_title1":"陣雨","img_title2":"中雨","img_title3":"中雨","img_title4":"小雨","img_title5":"小雨","img_title6":"小雨","img_title7":"小雨","img_title8":"小雨","img_title9":"小雨","img_title10":"陣雨","img_title11":"陣雨","img_title12":"小雨","img_title_single":"陣雨",<!-- 風速描述 -->"wind1":"微風","wind2":"微風","wind3":"微風","wind4":"微風","wind5":"微風","wind6":"微風","fx1":"微風","fx2":"微風",<!-- 風速級別描述 -->"fl1":"小于3級","fl2":"小于3級","fl3":"小于3級","fl4":"小于3級","fl5":"小于3級","fl6":"小于3級",<!-- 今天穿衣指數 -->"index":"熱","index_d":"天氣較熱,建議著短裙、短褲、短套裝、T恤等夏季服裝。年老體弱者宜著長袖襯衫和單褲。",<!-- 48小時穿衣指數 -->"index48":"暖","index48_d":"較涼爽,建議著長袖襯衫加單褲等春秋過渡裝。年老體弱者宜著針織長袖襯衫、馬甲和長褲。",<!-- 紫外線及48小時紫外線 -->"index_uv":"弱","index48_uv":"最弱",<!-- 洗車 -->"index_xc":"不宜",<!-- 旅游 -->"index_tr":"適宜",、<!-- 舒適指數 -->"index_co":"較不舒適","st1":"27","st2":"21","st3":"24","st4":"18","st5":"22","st6":"18",<!-- 晨練 -->"index_cl":"較不宜",<!-- 晾曬 -->"index_ls":"不太適宜",<!-- 過敏 -->"index_ag":"不易發"}
}

下面我主要講下程序: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

1.1城市代碼獲取 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? 這里我把下載下來的城市代碼的空行給去掉了,把文件保存為txt格式(UTF-8另存為可以看見)。下載地址:http://download.csdn.net/detail/feiyangxiaomi/6261685程序中的讀取方法為:

?

/**************************************************************************************** 注意在讀入txt的時候是UTF-8,自己看好自己的txt文本格式,在另存為就可以看出來。*/
private Map<String,String> cityCodes;	//根據城市信息索引自己的code
private List<String> citys;				//給城市做數據源	
private void getAssetsContent(){try {String buf;citys = new ArrayList<String>();cityCodes = new HashMap<String, String>();InputStream input = this.getAssets().open("cityCode.txt");BufferedReader br = new BufferedReader(new InputStreamReader(input,"UTF-8"));while((buf = br.readLine())!=null){String[] codeCity = buf.split("=");citys.add(codeCity[1]);cityCodes.put(codeCity[1], codeCity[0]);}} catch (IOException e) {// TODO Auto-generated catch blockLog.i(TAG, e.toString());e.printStackTrace();}
}


在使用的時候直接索引對應的城市即可。文件夾放在assets目錄下,為不受編譯才部分。

?

1.2網絡數據的使用 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

private void refreshUI(JSONObject jsonobject){JSONObject jsonData = jsonobject;try{TextView today_text = (TextView) findViewById(R.id.today);today_text.setText(jsonData.getString("date_y"));TextView city_text = (TextView) findViewById(R.id.city_text);city_text.setText(jsonData.getString("city"));TextView today_weather = (TextView) findViewById(R.id.today_weather);today_weather.setText(jsonData.getString("weather1"));// 取得<string>15℃/21℃</string>中的數據TextView qiweng_text = (TextView) findViewById(R.id.qiweng);qiweng_text.setText(jsonData.getString("temp1"));// 取得<string>今日天氣風速情況TextView shidu_text = (TextView) findViewById(R.id.shidu);shidu_text.setText(jsonData.getString("wind1"));// 取得<string>東北風3-4級</string>中的數據TextView fengli_text = (TextView) findViewById(R.id.fengli);fengli_text.setText(jsonData.getString("fl1"));// 取得<string>舒適指數和紫外線強度TextView kongqi_text = (TextView) findViewById(R.id.kongqi);kongqi_text.setText(jsonData.getString("index_co"));TextView zhiwai_text = (TextView) findViewById(R.id.zhiwai);zhiwai_text.setText(jsonData.getString("index_uv"));// 設置小貼士數據TextView xiaotieshi_text = (TextView) findViewById(R.id.xiaotieshi);xiaotieshi_text.setText("今日小貼士:"+jsonData.getString("index_d"));// 設置當日圖片ImageView image = (ImageView) findViewById(R.id.imageView1);int icon = parseIcon(jsonData.getString("img1")+".gif");image.setImageResource(icon);// 取得第二天的天氣情況TextView tomorrow_date = (TextView) findViewById(R.id.tomorrow_date);tomorrow_date.setText(jsonData.getString("weather2"));TextView tomorrow_qiweng = (TextView) findViewById(R.id.tomorrow_qiweng);tomorrow_qiweng.setText(jsonData.getString("temp2"));TextView tomorrow_tianqi = (TextView) findViewById(R.id.tomorrow_tianqi);tomorrow_tianqi.setText(jsonData.getString("wind2"));ImageView tomorrow_image = (ImageView) findViewById(R.id.tomorrow_image);int icon1 = parseIcon(jsonData.getString("img3")+".gif");tomorrow_image.setImageResource(icon1);// 取得第三天的天氣情況TextView afterday_date = (TextView) findViewById(R.id.afterday_date);afterday_date.setText(jsonData.getString("weather3"));TextView afterday_qiweng = (TextView) findViewById(R.id.afterday_qiweng);afterday_qiweng.setText(jsonData.getString("temp3"));TextView afterday_tianqi = (TextView) findViewById(R.id.afterday_tianqi);afterday_tianqi.setText(jsonData.getString("wind3"));ImageView afterday_image = (ImageView) findViewById(R.id.afterday_image);int icon2 = parseIcon(jsonData.getString("img5")+".gif");afterday_image.setImageResource(icon2);// 取得第四天的天氣情況TextView nextday_date = (TextView) findViewById(R.id.nextday_date);nextday_date.setText(jsonData.getString("weather4"));TextView nextday_qiweng = (TextView) findViewById(R.id.nextday_qiweng);nextday_qiweng.setText(jsonData.getString("temp4"));TextView nextday_tianqi = (TextView) findViewById(R.id.nextday_tianqi);nextday_tianqi.setText(jsonData.getString("wind4"));ImageView nextday_image = (ImageView) findViewById(R.id.nextday_image);int icon3 = parseIcon(jsonData.getString("img7")+".gif");nextday_image.setImageResource(icon3);}catch(Exception e){e.printStackTrace();}}

這里我們直接獲取網絡上的JSON數據,把數據放入對應的位置即可,圖片資源的使用方法不變,還是放在本地drawalbe文件下。

?

1.3圖片資源的使用 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

// 工具方法,該方法負責把返回的天氣圖標字符串,轉換為程序的圖片資源ID。
private int parseIcon(String strIcon)
{if (strIcon == null)return -1;if ("0.gif".equals(strIcon))return R.drawable.a_0;if ("1.gif".equals(strIcon))return R.drawable.a_1;if ("2.gif".equals(strIcon))return R.drawable.a_2;if ("3.gif".equals(strIcon))return R.drawable.a_3;

……

?

這里就不全部貼上了。

1.4最重要的一件事情 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

(1)源碼http://download.csdn.net/detail/feiyangxiaomi/6261805(2)資源(源碼里面有)



?

轉載于:https://www.cnblogs.com/james1207/p/3320080.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277357.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277357.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277357.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

累.....

今天我真的蔫了&#xff0c;好累&#xff0c;腦子也好濁&#xff0c;但是還好&#xff0c;最終達到了預期的目的。我終于把henry的dataGrid實現了&#xff0c;犯了低級錯誤&#xff0c;和好多人討論&#xff0c;但最終還是henry解決的。那一刻&#xff0c;真的好爽&#xff0c;…

001-pro ant design 升級2.0后變更

一、更新點 1、目錄調整 2、本地代理服務器調整 roadhog→umi 配置方式 在這個config/config.js配置 "proxy": { "/api": { "target": "http://jsonplaceholder.typicode.com/", "changeOrigin": true, "pathRewrite&q…

linux cp 時 略過文件,CentOS下執行cp命令式提示略過文件夾

今天在CentOS下復制一個文件夾到另一個文件夾的時候cp ./res /usr 的時候出現了問題&#xff0c;提示我的是&#xff1a;cp略過了文件夾后來我找了一下在網上search了一下CP命令的用法&#xff1a;CP命令該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中&#xff0c;同…

屬性頁中的ON_UPDATE_COMMAND_UI

我前面翻譯了一篇文章簡單的談了一下在對話框處理ON_UPDATE_COMMAND_UI 消息。又在www.codeguru.com上看到在屬性頁中處理ON_UPDATE_COMMAND_UI 消息的方法和在對話框中稍有不同。兩者的處理大體上一樣。只是在屬性頁中還需要一個步驟。需要從CPropertySheet派生類&#xff0c;…

linux基礎命令rpm,rpm常用命令集合1

提要&#xff1a;RPM 是 Red Hat Package Manager 的縮寫&#xff0c;原意是Red Hat 軟件包管理&#xff1b;本文介紹RPM&#xff0c;并結合實例來解說RPM手工安裝、查詢等應用&#xff1b;正文&#xff1a;RPM包管理的用途&#xff1b;1、可以安裝、刪除、升級和管理軟件&…

hibernate詳解

Hibernate原理與應用 主要內容 1、引入 2、安裝配置 3、基本概念和CURD 4、HQL和Criteria 5、關聯映射 6、繼承映射 7、集合映射 8、懶加載 9、緩存 10、事務 11、其他 12、Hibernate不適合的場景 13、與JPA的集成(annotation方式) 14、最佳實踐 1、引入 模型不匹配(阻抗不匹配…

Csharp+Asp.net系列教程(四)

邁克老貓 來自&#xff1a;老貓的理想 本教程參考C#和ASP.NET程序設計教程撰寫&#xff0c;有什么不足之處請大家指出&#xff0c;或在老貓的理想BLOG留言。 這次簡述一下操作符 1.算術操作符 算術操作符包括加()、減(-)、乘(*)、除(/)和求余(%)。加減操作符…

linux 腳本 寫更新,用Shell寫的游戲客戶端更新腳本

#!/bin/sh########################################### 客戶端版本更新系統########################################### CLIENT_INIT_VERSION 客戶端新版本&#xff0c;默認是0# CLIENT_OLD_VERSION 客戶端舊版本(存放在VERSION_FILE指定的文件中)&#xff0c;當沒有時取CL…

Android Studio 環境搭建參考,jdk10javac命令提示不是內部或外部命令

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下載、安裝和環境變量配置 http://yanmin99.com/ android-0基礎從入門到精通 環境變量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TO…

報表引擎 - 數據模型

介紹 本文檔是報表模型的數據模型部分&#xff0c;說明平臺報表中涉及的報表數據相關 術語 名稱 說明 數據源 數據源是與數據存儲的連接。支持數據源適配 數據集 定義報表數據來源的一個二維表 參數 報表往往有參數&#xff0c;例如&#xff0c;日報表&#xff0c;當…

linux 刪舊內核,Ubuntu 刪除舊內核的方法

使用Ubuntu時如果系統里安裝了很多內核&#xff0c;會造成多于的啟動列表。想刪掉一些不用的內核方法如下方法一&#xff1a;首先就是使用如下命令&#xff0c;列出所有安裝的內核&#xff0c;下表中&#xff0c;帶有p_w_picpath的就是內核文件。從中選擇要卸載的包&#xff0c…

L2-014 列車調度(隊列模擬:set)

題意&#xff1a; 兩端分別是一條入口&#xff08;Entrance&#xff09;軌道和一條出口&#xff08;Exit&#xff09;軌道&#xff0c;它們之間有N條平行的軌道。每趟列車從入口可以選擇任意一條軌道進入&#xff0c;最后從出口離開。在圖中有9趟列車&#xff0c;在入口處按照{…

新架設了一個CVS服務器 --by yp

cvs是個代碼管理的好東東&#xff0c;全稱并發版本控制。不知道的上網查一下資料。 我下載了相關的部分資料和軟件&#xff0c;包括架設服務器的軟件和使用服務的客戶端軟件&#xff0c;都是windows平臺下可用的&#xff0c; 其他平臺下的我都沒下載&#xff0c;因為不會用。在…

@hdu - 6372@ sacul

目錄 descriptionsolutionaccepted codedetailsdescription 定義矩陣 \(A_i\) 是一個大小為 \(p^i*p^i\) 的矩陣&#xff0c;其中 \(p\) 是第 \(c\) 個素數&#xff08;c 給定&#xff09;&#xff0c;且 \(A_i[x][y] [C(x, y) \mod p > 0]\)&#xff08;其中 C(x, y) 是組…

實驗室里人越來越少啊!

研二下半學期了。研三的師哥師姐們都忙著找工作&#xff0c;有的已經去工作了。只是偶而來實驗室轉轉。研一的師弟師妹&#xff0c;現在還都有課&#xff0c;實驗室也沒他們的機器&#xff0c;所以幾乎不來實驗室。我們研二的有四個人&#xff0c;兩個北京的。其中一個在外面打…

在一臺機器上搭建多個redis實例

默認Redis程序安裝在/usr/local/redis目錄下&#xff1b; 配置文件&#xff1a;/usr/local/redis/redis.conf&#xff0c;該配置文件中配置的端口為默認端口&#xff1a;6379&#xff1b; Redis的啟動命令路徑&#xff1a;/usr/local/bin/redis-server。 可以指定端口啟動多個R…

2年前 影子

1. 請問您知道 xxxx嗎 ? 麻煩了您? 2. 您在公司待了多長時間了&#xff1f; 3. 您覺得公司怎么樣&#xff1f; 。。。。。。 待續&#xff01; 轉載于:https://www.cnblogs.com/nucdy/p/11151470.html

linux是只讀添加 來覆蓋,Linux之指令 重定向 文件覆蓋和文件追加

CXF支持 SOAP1&period;1 SOAP1&period;2協議SOAP協議分為兩個版本 1.1 1.2 默認支持1.1 實現方式: 1.編寫接口 import javax.jws.WebService; WebService public inte ...USACO Section 2&period;4&colon; Bessie Come Home因為題目給了邊的信息,所以比較…

分層架構web容器的配置安全

轉自&#xff1a;http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以為這是一個偶然配置失誤造成的問題&#xff0c;但最近幾天無聊時測試發現&#xff0c;有此類似問題的站點就有上百個&#xff0c;所以在這里粗糙總結一下&#xff01; 通常我們會碰到這樣…

Jenkins-Gitlab配置方法

1&#xff09;本機首先安裝好git軟件2&#xff09;然后安裝gitlab插件,在可選插件中查找gitlab,點擊直接安裝3&#xff09;然后進入系統管理-系統設置 首先進入Gitlab中復制需要的 token 值在 Profile Settings - Account把復制的值&#xff0c;復制到新增頁面中轉載于:https:…