999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Android系統下基于JSON的天氣預報應用的實現

2016-03-25 06:13:25熊傳玉徐尤華
微型電腦應用 2016年1期

熊傳玉,徐尤華

?

Android系統下基于JSON的天氣預報應用的實現

熊傳玉,徐尤華

摘 要:在眾多基于Android平臺的天氣預報的APP中,目前多采用XML來進行數據交換,圖片等各項素材都需要從服務提供商的網站上下載,這樣會占用較多流量,并且開發難度也較大。采用JSON數據替代XML數據來進行數據交換,將運行程序所需一些資源文件放置于應用之中,運行時只需下載核心數據,這樣有效地降低了訪問流量,并且提高了處理速度。關鍵詞:Android;XML;JSON;天氣預報;app

0 引言

目前,利用手機app獲取天氣預報信息正在成為主流的天氣信息獲取方式。所以越來越多的開發人員致力于開發簡單、美觀且實用的手機天氣預報app。但是大多數已經開發出來的手機天氣預報app都是通過XML來進行數據交換,手機app發出請求,服務器以XML的形式封裝好相應數據后返回給app[1-2]。

由于XML文件格式復雜,所以在傳輸過程中占較多的帶寬??蛻舳瞬煌瑸g覽器之間解析XML的方式不一致,也導致開發人員需要重復編寫很多代碼,使得服務器端和客戶端代碼變得異常復雜且不易維護,服務器端和客戶端都需要花費大量資源和時間來解析XML,致使網絡成本增加。

JSON數據的出現,很好地解決了這些問題。JSON數據格式比較簡單,易于讀寫,占用帶寬小,服務器端和客戶端的解析較為方便,大大簡化了服務器端和客戶端的代碼開發量, 使得系統易于維護。采用JSON格式進行數據交換。這種設計模式大大減少了傳輸的數據量,降低了數據解析難度,實現瀏覽器的兼容性和響應的快速性,提高了app的效率[3-5]。

1 Android操作系統

Android是基于Linux操作系統的一款開源操作系統,在智能手機和平板電腦等移動設備上有著廣泛的使用。Android操作系統由谷歌和開放手機聯盟領導及開發,2007年11月谷歌與多家硬件制造商、軟件開發商及電信運營商組建開放手機聯盟共同研發改良Android系統[6]。

2011年Android在第一季度全球市場份額超越塞班系統,居全球第一。2013年第四季度,全球市場份額達78.1%。2014年第一季度Android平臺已占所有移動廣告流量來源的42.8%[7]。

2 資源的獲取與儲存

天氣預報所需數據要從天氣預報服務提供商網站上獲取,獲取這些資源分為收費和免費兩種,文中相關資源及數據通過中國天氣網免費接口獲取。

2.1 天氣信息

中國天氣網提供了兩大免費接口供開發者使用,獲取時要提供所在城市的ID號,如果不知道ID號可以訪問如下接口:http://61.4.185.48:81/g/。以下為韶關市內訪問后獲取到的數據(101280201即為韶關市ID):

Var ip="61.146.193.118";

Var id=101280201;

if(typeof(id_callback)!="undefined")

{id_callback();}

要獲取實況數據,可以訪問接口http://www.weather.com.cn/data/sk/城市id.html(韶關:http://www.weather.com.cn/data/sk/101280201.html)。通過該接口可以獲取到天氣實況信息,但數據內容較少,以下為韶關市當前天氣實況數據:

{“weatherinfo”:{“city”:“韶關”,“cityid”:“101280201”,“temp”:“23”,“WD”:“南風”,“WS”:“3 級”,“SD”:“78%”,“WSE”:“3”,“time”:“10:30”,“isRadar”:“1”,“Radar”:“JC_RADAR_AZ9751_JB”,“njd”:“暫無實況”,“qy”:“998”}}

要獲取到更為詳細的信息,可以訪問接口http://m.weather.com.cn/atad/101280201.html。通過該接口獲取到的數據非常全面,可以解析出查詢日期開始6天內的數據,能夠很好的滿足應用開發需求,以下為韶關市6天內天氣詳細數據:

{“weatherinfo”:{“city”:“韶關”,“city_en”:“shaoguan”,“date_y”:“2015年4月9日”,“date”:“”,“week”:“星期四”,“fchh”:“11”,“cityid”:“101280201”,“temp1”:“14℃~10℃”,“temp2”:“13℃~10℃”?!皌emp3”:“13℃~10℃”,“temp4”:“20℃~11℃”。“temp5”:“22℃~12℃”,“temp6”:“24℃~11℃”,“tempF1”:“57.2℉~50℉”,“tempF2”:“55.4℉~50℉”,“tempF3”:“55.4℉~50℉”,“tempF4”:“68℉~51.8℉”,“tempF5”:“71.6℉~53.6℉”,“tempF6”:“75.2℉~51.8℉”,“weather1”:“小雨”,“weather2”:“小到中雨”,“weather3”:“中雨”,“weather4”:“多云轉晴”,“weather5”:“晴”,“weather6”:“晴轉多云”,“img1”:“7”,“img2”:“99”,“img3”:“21”,“img4”:“99”,“img5”:“8”,“img6”:“99”,“img7”:“1”,“img8”:“0”,“img9”:“0”,“mg10”:“99”,“img11”:“0”,“img12”:“1”,“img_single”:“7”,“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”:“建議著厚外套加毛衣等服裝。年老體弱者宜著大衣、呢外套加羊毛衫。”,“index48_uv”:“”,“index_xc”:“不宜”,“index_tr”:“適宜”,“index_co”:“舒適”,“st1”:“12”,“st2”:“8”,“st3”:“11”,“st4”:“8”,“st5”:“11”,“st6”:“8”,“index_cl”:“較不宜”,“index_ls”:“不宜”,“index_ag”:“不易發”}}

中國天氣網會分時段更新天氣預報數據,詳細數據在早晨8點,中午11點,下午18點都會有更新,為了節省流量,將數據以共享優先數據的形式存儲到應用之中,當用戶在某個時段反復查看天氣情況時只在第一次下載數據,其他時間直接從共享優先數據中讀取。

2.2 圖片資源

應用中所需圖標可以自己繪制,也可以從網絡上獲取。中國天氣網預報天氣時各種圖標通過如下地址獲得:http://www.weather.com.cn/static/html/legend.shtml,部分白天天氣圖標如圖1所示:

圖1 白天天氣圖標示例

為了節省流量,將這些圖標統一下載下來(共81K),開發時放入到應用之中,需要圖片時從應用之中獲取,能夠避免反復下載這些圖片。

2.3 城市ID

如果應用要做到能查詢所有城市的天氣情況,每次都通過相應接口獲取城市ID號就會很麻煩,因此將所有城市ID號獲得后(網上能得到JSON版城市ID數據),存入到android內置的SQLite數據庫中。數據庫創建完成后,作為資源文件存放在應用的assets文件夾中。保存好后的數據庫部分截圖,給出了省會與城市的對應關系,以及城市的ID號,如圖2所示:

圖2 城市ID與省會對應關系數據庫截圖

3 數據的解析

3.1 解析方式分析

XML和JSON是目前流行的兩種數據交換格式。

XML允許使用自定義格式來標記、交換和處理數據,有助于在服務器之間傳輸結構化數據,在實際應用中通常會使用DOM API處理XML數據,DOM在不同的瀏覽器中實現的方式會有一些差異,增加了編程難度,XML中使用了很多起始/結束標記來標記特定數據,提高了數據的可讀性,但降低了數據的解析速度與傳輸效率[8]。

JSON是一個輕量級的數據交換格式,通過具有嵌套數據元素的結構,數據格式比較簡單,易于讀寫,格式都是壓縮的,占用帶寬小,用鍵值對來定義對象,各種編程語言都提供了豐富的解析手段。 而且JSON格式能夠直接為服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發量。

具體比較如圖3所示:

圖3 實況信息采用XML和JSON存儲對比

圖3給出了相同天氣實況信息分別采用兩種方式存儲后的截圖,采用XML格式存儲文件大小為300字節,而采用JSON格式存儲文件大小僅為197字節,在傳輸同等價值信息的情況下,JSON數據封裝的體積小,能有效的提高傳輸效率。

3.2 天氣預報詳細數據解析

鑒于JSON的優勢,獲取到JSON格式的天氣預報詳細數據后,對該數據進行解析,以獲取到天氣相關的各項指數。

Android下JSON數據的解析常見的有三種方式:(1)使用android.util包下的JsonReader類;(2)使用org.json包下的JSONTokener類及其他幾個輔助類;(3)使用谷歌開發的Gson工具類。由此也可看出android對JSON的解析提供了多種途徑,對采用JSON格式交換數據是相當認可的。

JSON數據簡單來說包含對象和數組兩種,通過這兩種結構可以表示各種復雜的結構。下面給出org.json包下提供的相關類解析JSON數據的基本方法:

JSONObject類對應于一個JSON對象,通過get和put方法從對象中讀取鍵值和向對象中寫入鍵值。

JSONStringer類為JSON文本構建類,可以幫助快速便捷的創建JSON文本串。

JSONArray類代表一組有序的數值,通過get和put方法讀取和寫入值。

JSONTokener類則用于從一個字符串生成一個JSON解析類的對象,可以從該對象中分離出JSON對象和數組。

4 面設計與功能實現

整個應用分成兩個部分:城市的設置和天氣信息查看。為了給用戶更多空間用于瀏覽信息,其他功能采用菜單完成,用戶觸摸菜單項進入相應界面,城市設置采用對話框來完成,界面簡潔,使用方便。

4.1 城市設置

由于數據庫中城市眾多,在選擇城市時給出一個Spinner控件,加載所有的省份數據,先讓用戶選擇對應的省份,得到省份后自動對城市進行篩選,用另一個Spinner控件加載篩選后的結果,當用戶選擇城市后,將城市名轉換為城市ID號,然后到服務器上讀取對應城市的天氣預報詳細數據,界面參照圖如圖4所示:

圖4 城市設置界面

數據加載核心代碼如下:

provinceAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,db.getAllProvince());

provinceAdapter.setDropDownViewResource(android.R. layout.simple_spinner_dropdown_item);

province.setAdapter(provinceAdapter);

4.2 應用主界面

獲取到天氣預報詳細數據后,對數據進行解析,將解析后的數據在界面上用ImageView和TextView控件顯示出來,界面參照如圖5所示:

圖5 應用主界面

天氣預報詳細數據獲取核心代碼如下:

URL url = new

URL("http://m.weather.com.cn/atad/"+cityId+".html");

BufferedReader reader=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));

String weatherStr=reader.readLine();

數據解析核心代碼如下:

JSONTokener weatherT=new JSONTokener(weatherStr);

JSONObject json=(JSONObject) weatherT.nextValue();

json=json.getJSONObject("weatherinfo");

weather=new Weather();//Weather為天氣數據封裝類

weather.setCity(json.getString("city"));

weather.setCityId(json.getString("cityid"));

weather.setDate_y(json.getString("date_y"));

weather.setDate(json.getString("date"));

weather.setFchh(json.getString("fchh"));

……

5 總結

Android系統全球市場份額逐步提高,移動終端app開發前景廣闊,綜合現有天氣預報app的優缺點,將所需資源文件預置到應用之中,采用JSON格式進行數據交換,判斷用戶查看時間決定加載或者下載數據,有效降低了數據流量、提高了應用處理速度、降低了開發難度。應用界面上只顯示了部分天氣數據,可在該應用基礎上進行擴展,提供給用戶更多個性化服務。

參考文獻

[1] 閆娜,閆蕾.基于Android的個性天氣預報系統的設計與軟件實現[J].計算機光盤軟件與應用,2012,7:155.

[2] 蘇亞光.Android手機平臺下Google天氣預報客戶端的開發[J].電腦編程技巧與維護,2012,3:60.

[3] 雷映喜.XML與JSON在WEB中對數據封裝解析的對比[J].價值工程,2013,9:210.

[4] 龔成瑩.基于JSON的Android移動終端與PHP及MySQL數據通信[J].工業儀表與自動化裝置,2013,1: 63.

[5] 權重民.利用JSON實現Android高效、安全訪問遠程數據庫的一種方式[J].韶關學院學報.2011,12:16.

[6] 扶松柏,于秀青.Android開發從入門到精通[M].北京:北京希望電子出版社,2012,7:4.

[7] 李華明.Android游戲編程之從零開始[M].北京:清華大學出版社,2014,7:1.

[8] 屈展.JSON在AJAX數據交換中的應用研究[J].西安石油大學學報,2011,26:96.

Realization of Weather Forecast App Based on JSON in Android

Xiong Chuanyu, Xu Youhua
(Department of Computers, Guangdong Songshan Vocational College, Shaoguan 512126, China)

Abstract:Among these Apps for weather forecast based on Android platform, most of them use XML to exchange data, which needs to download pictures and other materials from the websites of service providers. It results in occupying more website traffic and more difficulties in development. It adopts JSON to do data exchange instead of XML, and some source files needed for program running are put into the Apps so that only core data need to be downloaded when it is running. Thus, it reduces the visit traffic and improves the processing speed.

Key words:Android; XML; JSON; Weather Forecast; App

(收稿日期:2014.04.22)

作者簡介:熊傳玉(1979-),女,漢族,湖北荊州人,廣東松山職業技術學院,計算機系,講師,碩士,研究方向:web開發,韶關,512126徐尤華(1977-),男,漢族,湖北荊門人,廣東松山職業技術學院,計算機系,講師,碩士,研究方向:信息系統項目開發與管理,韶關,512126

基金項目:廣東省教育廳資助項目 (粵教高函[2012]54號-A12)

文章編號:1007-757X(2016)01-0008-03

中圖分類號:TP391

文獻標志碼:A

主站蜘蛛池模板: 91破解版在线亚洲| 免费国产无遮挡又黄又爽| 国产精品久线在线观看| 91青青草视频| 国产91精品调教在线播放| 亚洲国产成熟视频在线多多| 在线精品自拍| 91精品伊人久久大香线蕉| 亚洲国产天堂久久综合226114| 亚洲精品无码抽插日韩| 色窝窝免费一区二区三区 | 日本成人不卡视频| 91黄色在线观看| 亚洲日韩日本中文在线| 国产理论最新国产精品视频| 国产成人欧美| 五月激情综合网| 国产黄色免费看| 国产伦片中文免费观看| 国产精品无码AV中文| 成人福利在线看| 亚洲综合色区在线播放2019| 国产精品男人的天堂| 依依成人精品无v国产| a天堂视频在线| 中文字幕一区二区人妻电影| 欧美中文字幕第一页线路一| 色悠久久综合| 成人在线综合| 黄色国产在线| 国产综合日韩另类一区二区| 国产人碰人摸人爱免费视频| 美女视频黄频a免费高清不卡| 日韩国产高清无码| 成人无码一区二区三区视频在线观看| 在线看片中文字幕| 精品国产中文一级毛片在线看| 四虎永久免费地址在线网站| 国产精品欧美在线观看| 波多野结衣无码AV在线| 久久人体视频| 国产理论精品| 无码专区在线观看| 亚洲欧美自拍视频| 在线无码av一区二区三区| 亚洲天堂网视频| 欧美高清三区| jizz在线免费播放| 91精品啪在线观看国产91九色| 日韩无码黄色网站| 国产精品自在线拍国产电影 | 97国产成人无码精品久久久| 午夜精品国产自在| 欧美成人a∨视频免费观看| 亚洲欧美激情小说另类| 色婷婷成人| 欧美日韩激情在线| 欧美亚洲日韩中文| 日本伊人色综合网| 亚洲伊人天堂| 91精品伊人久久大香线蕉| 久久婷婷六月| 亚洲成人网在线播放| 亚洲 成人国产| 啪啪国产视频| 国产精品蜜芽在线观看| 亚洲欧美在线精品一区二区| 找国产毛片看| 91福利片| 久久精品国产精品一区二区| 亚洲无码高清视频在线观看| 视频国产精品丝袜第一页| 40岁成熟女人牲交片免费| 九九九国产| 亚洲国产成人精品无码区性色| 欧美激情一区二区三区成人| 99精品在线看| 在线观看视频一区二区| 一个色综合久久| 沈阳少妇高潮在线| 国产午夜人做人免费视频中文| 欧美日韩国产精品综合|