嚴(yán)衛(wèi)鵬(湖南工業(yè)大學(xué) 計(jì)算與通信學(xué)院 網(wǎng)絡(luò)工程,湖南 株洲 412000)
?
基于Android系統(tǒng)開發(fā)天氣預(yù)報(bào)APP的實(shí)現(xiàn)
嚴(yán)衛(wèi)鵬
(湖南工業(yè)大學(xué) 計(jì)算與通信學(xué)院 網(wǎng)絡(luò)工程,湖南 株洲412000)
摘要:隨著智能手機(jī)的迅速普及,人們?cè)谏钪蝎@取信息的一個(gè)主要來源就是智能手機(jī)應(yīng)用。本項(xiàng)目主要是對(duì)天氣查詢管理的設(shè)計(jì)與實(shí)現(xiàn),此項(xiàng)目采用了Android 開源系統(tǒng)技術(shù),它主要是通過文字與圖片的形式,來比較直觀地顯示出城市當(dāng)天和未來幾天的天氣信息,在數(shù)據(jù)交換上使用了JSON格式,降低了流量使用量并且提升了速度,方便人們的生活,有一定的實(shí)用性。
關(guān)鍵詞:Android;天氣預(yù)報(bào);軟件開發(fā);APP
目前,利用手機(jī)app 獲取天氣預(yù)報(bào)信息正在成為主流的天氣信息獲取方式。所以越來越多的開發(fā)人員致力于開發(fā)簡(jiǎn)單、美觀且實(shí)用的手機(jī)天氣預(yù)報(bào)app[1]。
JSON是一種輕量級(jí)的數(shù)據(jù)交換格式。JSON 數(shù)據(jù)格式比較簡(jiǎn)單,易于讀寫,占用帶寬小,服務(wù)器端和客戶端的解析較為方便,大大簡(jiǎn)化了服務(wù)器端和客戶端的代碼開發(fā)量, 使得系統(tǒng)易于維護(hù)[2-4]。
該應(yīng)用程序設(shè)計(jì)目的是實(shí)現(xiàn)基于Android系統(tǒng)開發(fā)天氣預(yù)報(bào)APP,實(shí)現(xiàn)將各種天氣查詢服務(wù)功能集成起來的信息系統(tǒng),既可以節(jié)省時(shí)間,又可以實(shí)現(xiàn)個(gè)性化的服務(wù),幫助用戶可以隨時(shí)隨地查詢天氣信息及天氣變化情況,讓生活更加舒適和方便。
1.啟動(dòng)程序后可以通過自動(dòng)定位或手動(dòng)定位城市,或者根據(jù)上一次選擇的城市來進(jìn)行城市天氣信息的查詢;2.天氣信息通過Service從聚合數(shù)據(jù)網(wǎng)進(jìn)行獲取相關(guān)的JSON數(shù)據(jù)得到,還可以按一定的時(shí)間間隔來自動(dòng)刷新獲取最新的天氣信息;3.切換城市可以進(jìn)入城市選擇界面快捷選擇相關(guān)的城市或者搜索城市;4.應(yīng)用可以后臺(tái)按一定時(shí)間間隔來自動(dòng)刷新天氣信息;5.使用AppWidget實(shí)現(xiàn)在手機(jī)桌面上顯示指定城市的當(dāng)前天氣信息;6.使用Notification實(shí)現(xiàn)天氣預(yù)警通知;7.可以對(duì)城市進(jìn)行本地管理,可以手動(dòng)添加常用的城市名稱,或者刪除它;8.可以將當(dāng)前城市的天氣信息以界面圖片的形式進(jìn)行分享。
基于Android系統(tǒng)的天氣預(yù)報(bào)系統(tǒng)的主要是從網(wǎng)絡(luò)獲取JSON數(shù)據(jù)并通過JSON解析信息文本獲取城市名稱,以及城市的天氣信息并顯示在界面上,并對(duì)關(guān)注的城市進(jìn)行管理。
(一)用戶界面UI的實(shí)現(xiàn)。用戶界面上的設(shè)計(jì)主要分為兩大塊:
首先是主界面,主界面用來顯示城市名以及該城市的天氣信息,分為當(dāng)前城市名及天氣信息區(qū)域,還有定位當(dāng)前城市模塊、分享當(dāng)前界面模塊以及使用Android 5.0之后自帶的SwipeRefreshLayout(下拉刷新)模塊和DrawerLayout側(cè)滑模塊。
然后是城市列表界面,城市列表界面主要分為熱門城市模塊、城市列表模塊、以及輸入名字查詢城市模塊。
(二)定位當(dāng)前位置所在的城市。根據(jù)我們這個(gè)應(yīng)用程序的需求在這里我們選擇network進(jìn)行定位,因?yàn)槲覀冎恍枰ㄎ划?dāng)前所在的城市即可。network定位快,只要數(shù)據(jù)連接成功,一般都可以成功定位,所以此刻使用network進(jìn)行定位是最好的選擇。
(三)在UI上顯示當(dāng)前城市的天氣信息。當(dāng)我們獲取到城市名稱后,就可以直接利用聚合數(shù)據(jù)SDK提供的API方法通過service進(jìn)行網(wǎng)絡(luò)訪問來獲取JSON格式的天氣信息數(shù)據(jù),對(duì)獲取的數(shù)據(jù)進(jìn)行JSON解析并在主界面顯示相關(guān)的天氣信息。
(四)在獲取城市列表數(shù)據(jù)及解析。有熱門城市模塊和城市列表模塊。熱門城市是xml文件中已經(jīng)寫好的。但城市列表模塊是通過網(wǎng)絡(luò)請(qǐng)求得到支持查詢的城市列表JSON數(shù)據(jù)并對(duì)其進(jìn)行JSON解析,將所有城市名稱返回到List中,最后對(duì)GridView添加適配器顯示城市列表。也可以手動(dòng)輸入城市名稱或者城市名稱所包含的字符進(jìn)行城市搜索。
(五)天氣界面的分享。在主界面可以以圖片的形式將當(dāng)前城市的天氣信息進(jìn)行分享。這里使用的是一個(gè)第三方集成的ShareSDK,使用它極大的增加了我們開發(fā)的效率。注意,使用ShareSDK需要在官網(wǎng)上申請(qǐng)一個(gè)開發(fā)者使用的APPKey,并且要按照官網(wǎng)給的使用文檔進(jìn)行一些相關(guān)的配置才可以正確使用。
(六)桌面小工具AppWidget。AppWidget是一個(gè)可以在手機(jī)桌面上顯示的小工具界面。實(shí)現(xiàn)使用AppWidget在手機(jī)桌面上顯示相關(guān)的天氣信息的步驟如下:
1.配置AppWidget的屬性。
2.創(chuàng)建AppWidget的xml布局文件。
3.實(shí)現(xiàn)AppWidgetProvider。
4.處理AppWidget的后臺(tái)任務(wù)。在AndroidManifest文件中注冊(cè)AppWidget與相關(guān)的服務(wù)。
(七)天氣的預(yù)警通知。實(shí)現(xiàn)發(fā)送天氣通知的步驟是這樣的,首先要使用getSystemService()這個(gè)方法可以獲取系統(tǒng)的NotificationManager服務(wù);其次創(chuàng)建一個(gè)Notification對(duì)象,設(shè)置其相關(guān)的屬性,并為它設(shè)置事件信息;最后再通過NotificationManager類的norify()方法來發(fā)送相應(yīng)的通知即可完成。
Android由于其開放性與市場(chǎng)占有率,受到開發(fā)者的十分喜歡。本系統(tǒng)綜合現(xiàn)在有的天氣預(yù)報(bào)APP的優(yōu)缺點(diǎn),將一些資源文件內(nèi)置于應(yīng)用之中,并且在數(shù)據(jù)交換上采用JSON格式進(jìn)行數(shù)據(jù)的交換,減少了流量的使用,提高了響應(yīng)速度。在分享功能上使用當(dāng)前很受歡迎的ShareSDK極大地減少了代碼量,優(yōu)化了應(yīng)用程序的處理速度。
本文提供的基于Android系統(tǒng)開發(fā)天氣預(yù)報(bào)APP方案具有高效,實(shí)用性,并已在多臺(tái)真機(jī)上進(jìn)行調(diào)試和運(yùn)行,為讀者在 Android平臺(tái)下作應(yīng)用程序開發(fā)提供一種參考。
參考文獻(xiàn):
[1]熊傳玉,徐尤華. Android系統(tǒng)下基于JSON的天氣預(yù)報(bào)應(yīng)用的實(shí)現(xiàn)[J].微型電腦應(yīng)用,2016,01.
[2]雷映喜.XML與JSON在WEB中對(duì)數(shù)據(jù)封裝解析的對(duì) 比[J].價(jià)值工程,2013,9:210.
[3]龔成瑩.基于 JSON 的 Android 移動(dòng)終端與 PHP 及 MySQL 數(shù)據(jù)通信[J].工業(yè)儀表與自動(dòng)化裝置,2013,1: 63.
[4]權(quán)重民.利用 JSON 實(shí)現(xiàn) Android 高效、安全訪問遠(yuǎn)程 數(shù)據(jù)庫的一種方式[J].韶關(guān)學(xué)院學(xué)報(bào).2011,12:16.同.
中圖分類號(hào):G31
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1671-864X(2016)06-0292-01
作者簡(jiǎn)介:嚴(yán)衛(wèi)鵬,男(1994-09)。民族:漢族。籍貫:湖南婁底。學(xué)歷:本科。研究方向:軟件開發(fā)。