亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android系統(tǒng)下基于JSON的天氣預(yù)報(bào)應(yīng)用的實(shí)現(xiàn)

        2016-03-25 06:13:25熊傳玉徐尤華
        微型電腦應(yīng)用 2016年1期
        關(guān)鍵詞:天氣預(yù)報(bào)

        熊傳玉,徐尤華

        ?

        Android系統(tǒng)下基于JSON的天氣預(yù)報(bào)應(yīng)用的實(shí)現(xiàn)

        熊傳玉,徐尤華

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

        0 引言

        目前,利用手機(jī)app獲取天氣預(yù)報(bào)信息正在成為主流的天氣信息獲取方式。所以越來越多的開發(fā)人員致力于開發(fā)簡(jiǎn)單、美觀且實(shí)用的手機(jī)天氣預(yù)報(bào)app。但是大多數(shù)已經(jīng)開發(fā)出來的手機(jī)天氣預(yù)報(bào)app都是通過XML來進(jìn)行數(shù)據(jù)交換,手機(jī)app發(fā)出請(qǐng)求,服務(wù)器以XML的形式封裝好相應(yīng)數(shù)據(jù)后返回給app[1-2]。

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

        JSON數(shù)據(jù)的出現(xiàn),很好地解決了這些問題。JSON數(shù)據(jù)格式比較簡(jiǎn)單,易于讀寫,占用帶寬小,服務(wù)器端和客戶端的解析較為方便,大大簡(jiǎn)化了服務(wù)器端和客戶端的代碼開發(fā)量, 使得系統(tǒng)易于維護(hù)。采用JSON格式進(jìn)行數(shù)據(jù)交換。這種設(shè)計(jì)模式大大減少了傳輸?shù)臄?shù)據(jù)量,降低了數(shù)據(jù)解析難度,實(shí)現(xiàn)瀏覽器的兼容性和響應(yīng)的快速性,提高了app的效率[3-5]。

        1 Android操作系統(tǒng)

        Android是基于Linux操作系統(tǒng)的一款開源操作系統(tǒng),在智能手機(jī)和平板電腦等移動(dòng)設(shè)備上有著廣泛的使用。Android操作系統(tǒng)由谷歌和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā),2007年11月谷歌與多家硬件制造商、軟件開發(fā)商及電信運(yùn)營(yíng)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)[6]。

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

        2 資源的獲取與儲(chǔ)存

        天氣預(yù)報(bào)所需數(shù)據(jù)要從天氣預(yù)報(bào)服務(wù)提供商網(wǎng)站上獲取,獲取這些資源分為收費(fèi)和免費(fèi)兩種,文中相關(guān)資源及數(shù)據(jù)通過中國(guó)天氣網(wǎng)免費(fèi)接口獲取。

        2.1 天氣信息

        中國(guó)天氣網(wǎng)提供了兩大免費(fèi)接口供開發(fā)者使用,獲取時(shí)要提供所在城市的ID號(hào),如果不知道ID號(hào)可以訪問如下接口:http://61.4.185.48:81/g/。以下為韶關(guān)市內(nèi)訪問后獲取到的數(shù)據(jù)(101280201即為韶關(guān)市ID):

        Var ip="61.146.193.118";

        Var id=101280201;

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

        {id_callback();}

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

        {“weatherinfo”:{“city”:“韶關(guān)”,“cityid”:“101280201”,“temp”:“23”,“WD”:“南風(fēng)”,“WS”:“3 級(jí)”,“SD”:“78%”,“WSE”:“3”,“time”:“10:30”,“isRadar”:“1”,“Radar”:“JC_RADAR_AZ9751_JB”,“njd”:“暫無實(shí)況”,“qy”:“998”}}

        要獲取到更為詳細(xì)的信息,可以訪問接口http://m.weather.com.cn/atad/101280201.html。通過該接口獲取到的數(shù)據(jù)非常全面,可以解析出查詢?nèi)掌陂_始6天內(nèi)的數(shù)據(jù),能夠很好的滿足應(yīng)用開發(fā)需求,以下為韶關(guān)市6天內(nèi)天氣詳細(xì)數(shù)據(jù):

        {“weatherinfo”:{“city”:“韶關(guān)”,“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℃”?!皌emp5”:“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”:“多云轉(zhuǎn)晴”,“weather5”:“晴”,“weather6”:“晴轉(zhuǎn)多云”,“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”:“微風(fēng)”,“wind2”:“微風(fēng)”,“wind3”:“微風(fēng)”,“wind4”:“微風(fēng)”,“wind5”:“微風(fēng)”,“wind6”:“微風(fēng)”,“fx1”:“微風(fēng)”,“fx2”:“微風(fēng)”,“fl1”:“小于3級(jí)”,“fl2”:“小于3級(jí)”,“fl3”:“小于3級(jí)”,“fl4”:“小于3級(jí)”,“fl5”:“小于3級(jí)”,“fl6”:“小于3級(jí)”,“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”:“不易發(fā)”}}

        中國(guó)天氣網(wǎng)會(huì)分時(shí)段更新天氣預(yù)報(bào)數(shù)據(jù),詳細(xì)數(shù)據(jù)在早晨8點(diǎn),中午11點(diǎn),下午18點(diǎn)都會(huì)有更新,為了節(jié)省流量,將數(shù)據(jù)以共享優(yōu)先數(shù)據(jù)的形式存儲(chǔ)到應(yīng)用之中,當(dāng)用戶在某個(gè)時(shí)段反復(fù)查看天氣情況時(shí)只在第一次下載數(shù)據(jù),其他時(shí)間直接從共享優(yōu)先數(shù)據(jù)中讀取。

        2.2 圖片資源

        應(yīng)用中所需圖標(biāo)可以自己繪制,也可以從網(wǎng)絡(luò)上獲取。中國(guó)天氣網(wǎng)預(yù)報(bào)天氣時(shí)各種圖標(biāo)通過如下地址獲得:http://www.weather.com.cn/static/html/legend.shtml,部分白天天氣圖標(biāo)如圖1所示:

        圖1 白天天氣圖標(biāo)示例

        為了節(jié)省流量,將這些圖標(biāo)統(tǒng)一下載下來(共81K),開發(fā)時(shí)放入到應(yīng)用之中,需要圖片時(shí)從應(yīng)用之中獲取,能夠避免反復(fù)下載這些圖片。

        2.3 城市ID

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

        圖2 城市ID與省會(huì)對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)截圖

        3 數(shù)據(jù)的解析

        3.1 解析方式分析

        XML和JSON是目前流行的兩種數(shù)據(jù)交換格式。

        XML允許使用自定義格式來標(biāo)記、交換和處理數(shù)據(jù),有助于在服務(wù)器之間傳輸結(jié)構(gòu)化數(shù)據(jù),在實(shí)際應(yīng)用中通常會(huì)使用DOM API處理XML數(shù)據(jù),DOM在不同的瀏覽器中實(shí)現(xiàn)的方式會(huì)有一些差異,增加了編程難度,XML中使用了很多起始/結(jié)束標(biāo)記來標(biāo)記特定數(shù)據(jù),提高了數(shù)據(jù)的可讀性,但降低了數(shù)據(jù)的解析速度與傳輸效率[8]。

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

        具體比較如圖3所示:

        圖3 實(shí)況信息采用XML和JSON存儲(chǔ)對(duì)比

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

        3.2 天氣預(yù)報(bào)詳細(xì)數(shù)據(jù)解析

        鑒于JSON的優(yōu)勢(shì),獲取到JSON格式的天氣預(yù)報(bào)詳細(xì)數(shù)據(jù)后,對(duì)該數(shù)據(jù)進(jìn)行解析,以獲取到天氣相關(guān)的各項(xiàng)指數(shù)。

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

        JSON數(shù)據(jù)簡(jiǎn)單來說包含對(duì)象和數(shù)組兩種,通過這兩種結(jié)構(gòu)可以表示各種復(fù)雜的結(jié)構(gòu)。下面給出org.json包下提供的相關(guān)類解析JSON數(shù)據(jù)的基本方法:

        JSONObject類對(duì)應(yīng)于一個(gè)JSON對(duì)象,通過get和put方法從對(duì)象中讀取鍵值和向?qū)ο笾袑懭腈I值。

        JSONStringer類為JSON文本構(gòu)建類,可以幫助快速便捷的創(chuàng)建JSON文本串。

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

        JSONTokener類則用于從一個(gè)字符串生成一個(gè)JSON解析類的對(duì)象,可以從該對(duì)象中分離出JSON對(duì)象和數(shù)組。

        4 面設(shè)計(jì)與功能實(shí)現(xiàn)

        整個(gè)應(yīng)用分成兩個(gè)部分:城市的設(shè)置和天氣信息查看。為了給用戶更多空間用于瀏覽信息,其他功能采用菜單完成,用戶觸摸菜單項(xiàng)進(jìn)入相應(yīng)界面,城市設(shè)置采用對(duì)話框來完成,界面簡(jiǎn)潔,使用方便。

        4.1 城市設(shè)置

        由于數(shù)據(jù)庫(kù)中城市眾多,在選擇城市時(shí)給出一個(gè)Spinner控件,加載所有的省份數(shù)據(jù),先讓用戶選擇對(duì)應(yīng)的省份,得到省份后自動(dòng)對(duì)城市進(jìn)行篩選,用另一個(gè)Spinner控件加載篩選后的結(jié)果,當(dāng)用戶選擇城市后,將城市名轉(zhuǎn)換為城市ID號(hào),然后到服務(wù)器上讀取對(duì)應(yīng)城市的天氣預(yù)報(bào)詳細(xì)數(shù)據(jù),界面參照?qǐng)D如圖4所示:

        圖4 城市設(shè)置界面

        數(shù)據(jù)加載核心代碼如下:

        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 應(yīng)用主界面

        獲取到天氣預(yù)報(bào)詳細(xì)數(shù)據(jù)后,對(duì)數(shù)據(jù)進(jìn)行解析,將解析后的數(shù)據(jù)在界面上用ImageView和TextView控件顯示出來,界面參照如圖5所示:

        圖5 應(yīng)用主界面

        天氣預(yù)報(bào)詳細(xì)數(shù)據(jù)獲取核心代碼如下:

        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();

        數(shù)據(jù)解析核心代碼如下:

        JSONTokener weatherT=new JSONTokener(weatherStr);

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

        json=json.getJSONObject("weatherinfo");

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

        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 總結(jié)

        Android系統(tǒng)全球市場(chǎng)份額逐步提高,移動(dòng)終端app開發(fā)前景廣闊,綜合現(xiàn)有天氣預(yù)報(bào)app的優(yōu)缺點(diǎn),將所需資源文件預(yù)置到應(yīng)用之中,采用JSON格式進(jìn)行數(shù)據(jù)交換,判斷用戶查看時(shí)間決定加載或者下載數(shù)據(jù),有效降低了數(shù)據(jù)流量、提高了應(yīng)用處理速度、降低了開發(fā)難度。應(yīng)用界面上只顯示了部分天氣數(shù)據(jù),可在該應(yīng)用基礎(chǔ)上進(jìn)行擴(kuò)展,提供給用戶更多個(gè)性化服務(wù)。

        參考文獻(xiàn)

        [1] 閆娜,閆蕾.基于Android的個(gè)性天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與軟件實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012,7:155.

        [2] 蘇亞光.Android手機(jī)平臺(tái)下Google天氣預(yù)報(bào)客戶端的開發(fā)[J].電腦編程技巧與維護(hù),2012,3:60.

        [3] 雷映喜.XML與JSON在WEB中對(duì)數(shù)據(jù)封裝解析的對(duì)比[J].價(jià)值工程,2013,9:210.

        [4] 龔成瑩.基于JSON的Android移動(dòng)終端與PHP及MySQL數(shù)據(jù)通信[J].工業(yè)儀表與自動(dòng)化裝置,2013,1: 63.

        [5] 權(quán)重民.利用JSON實(shí)現(xiàn)Android高效、安全訪問遠(yuǎn)程數(shù)據(jù)庫(kù)的一種方式[J].韶關(guān)學(xué)院學(xué)報(bào).2011,12:16.

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

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

        [8] 屈展.JSON在AJAX數(shù)據(jù)交換中的應(yīng)用研究[J].西安石油大學(xué)學(xué)報(bào),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)

        作者簡(jiǎn)介:熊傳玉(1979-),女,漢族,湖北荊州人,廣東松山職業(yè)技術(shù)學(xué)院,計(jì)算機(jī)系,講師,碩士,研究方向:web開發(fā),韶關(guān),512126徐尤華(1977-),男,漢族,湖北荊門人,廣東松山職業(yè)技術(shù)學(xué)院,計(jì)算機(jī)系,講師,碩士,研究方向:信息系統(tǒng)項(xiàng)目開發(fā)與管理,韶關(guān),512126

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

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

        中圖分類號(hào):TP391

        文獻(xiàn)標(biāo)志碼:A

        猜你喜歡
        天氣預(yù)報(bào)
        天氣預(yù)報(bào)員
        天氣預(yù)報(bào)的前世今生
        中期天氣預(yù)報(bào)
        小小天氣預(yù)報(bào)員
        国产人妻精品一区二区三区不卡| 亚洲成人一区二区三区不卡| 精品人妻一区二区三区久久| 久久久精品国产sm调教网站| 在线观看91精品国产免费免费| 中文字幕高清无码不卡在线| 视频女同久久久一区二区| 成品人视频ww入口| 久久久久99精品成人片试看| 婷婷五月亚洲综合图区| 久久99国产精品尤物| 久热香蕉av在线爽青青| 一区二区三区在线观看视频| 国产精品18久久久白浆| 成人免费看片又大又黄| 欧美国产日本精品一区二区三区| 日韩av中文字幕少妇精品| 日韩欧美中文字幕公布| 男人扒开女人下面狂躁小视频 | 久久久久无码精品国产app| 午夜性刺激免费视频| 一区二区三区在线观看视频免费 | 亚洲乱码无人区卡1卡2卡3| 国产精品美女久久久久 | 亚洲色www成人永久网址| 久久久精品人妻一区亚美研究所| 美女极度色诱视频国产免费| 高清不卡日本v二区在线| 亚洲成av人的天堂在线观看| 日本欧美小视频| 草莓视频在线观看无码免费| 亚洲本色精品一区二区久久| 国产国产裸模裸模私拍视频| 国产91成人精品亚洲精品| 丰满人妻一区二区三区精品高清| 成人性生交大全免费看| 亚洲国产天堂久久综合网| 99国产小视频| 亚洲精品视频一区二区三区四区| 熟女中文字幕一区二区三区 | 亚洲国产高清精品在线|