王健文
(延邊大學(xué) 吉林 延邊 133000)
?
基于Android的城市空氣質(zhì)量查詢APP設(shè)計與功能實現(xiàn)
王健文
(延邊大學(xué) 吉林 延邊 133000)
隨著智能終端設(shè)備的發(fā)展,硬件的革新、運(yùn)營商的大力推廣、資本的注入以及PC互聯(lián)時代崛起的大互聯(lián)網(wǎng)公司移動業(yè)務(wù)的推進(jìn),移動互聯(lián)網(wǎng)迎來爆發(fā)式的發(fā)展,移動互聯(lián)網(wǎng)不僅帶來了創(chuàng)新的商業(yè)模式同時也極大的改變了人們的生活方式及生活品質(zhì),通過移動終端,人們可以享受到移動搜索、地圖導(dǎo)航、酒店機(jī)票預(yù)訂等便捷的服務(wù)。
根據(jù)2014年數(shù)據(jù),當(dāng)前移動終端市場Android和IOS市場占有率份額超96%,其中Android市場占有率超83%。Android發(fā)展迅速,在性能上和UI上不斷優(yōu)化,用戶體驗也不斷提高,提供地理信息類服務(wù)的應(yīng)用日漸增多。本文以空氣質(zhì)量APP為例來介紹基于Android的地理信息服務(wù)應(yīng)用設(shè)計開發(fā)的流程。
本文首先介紹了移動互聯(lián)的概念及當(dāng)前Android市場的背景現(xiàn)狀,然后詳細(xì)介紹了所用到的開發(fā)環(huán)境及相關(guān)技術(shù),按照軟件開發(fā)的主要流程,依次對需求分析、功能設(shè)計、功能實現(xiàn)做了詳細(xì)描述,最后對論文做了總結(jié),總結(jié)了工作過程中的問題及經(jīng)驗并對Android的發(fā)展做了展望。
地理信息;安卓;定位;空氣質(zhì)量
隨著社會信息化的推進(jìn),網(wǎng)絡(luò)的普及率越來越高,網(wǎng)絡(luò)通訊速率也越來越高,PC互聯(lián)網(wǎng)無疑改變了人們的生活方式,人們通過的PC網(wǎng)絡(luò)分享信息、辦公、網(wǎng)上購物、通訊等,極大方便了人們的生產(chǎn)生活。移動+互聯(lián)網(wǎng)產(chǎn)生移動互聯(lián)網(wǎng)的概念,但移動互聯(lián)網(wǎng)不是移動和互聯(lián)網(wǎng)簡單的加法而是乘法,是移動和互聯(lián)網(wǎng)融合而成的。截至2015年2月,移動電話用戶總數(shù)達(dá)到12.9億戶,截止2015年底4G的覆蓋率也達(dá)到了85%以上,5G業(yè)務(wù)也已投入商運(yùn),移動互聯(lián)網(wǎng)已成為互聯(lián)網(wǎng)業(yè)務(wù)創(chuàng)新和發(fā)展的新趨勢,龐大的移動通信用戶群也為移動互聯(lián)的發(fā)展奠定了良好基礎(chǔ)。
移動互聯(lián)網(wǎng)相對于互聯(lián)網(wǎng)而言是新鮮的事物,移動互聯(lián)網(wǎng)的定義有廣義和狹義之分。廣義的移動互聯(lián)網(wǎng)是指用戶可以使用手機(jī)、筆記本等移動終端通過協(xié)議接入互聯(lián)網(wǎng),狹義的移動互聯(lián)網(wǎng)則是指用戶使用手機(jī)終端通過無線通信的方式訪問采用WAP的網(wǎng)站。而在這個移動互聯(lián)網(wǎng)蓬勃發(fā)展的時代,移動終端正一步步成為用戶獲取信息的主要方式,以智能電話為代表的移動終端不僅攜帶方便而且鑒于當(dāng)前越來越優(yōu)質(zhì)的網(wǎng)絡(luò)通訊服務(wù),我們應(yīng)該以移動終端為切入點為用戶提供更好的服務(wù),本文使用Google提供的API及地理信息相關(guān)的服務(wù)及定位方面的技術(shù)設(shè)計開發(fā)一款空氣質(zhì)量信息獲取的APP,展現(xiàn)Android端地理信息服務(wù)類APP設(shè)計開發(fā)的完整流程,讓人們體會到前端技術(shù)以及地理信息技術(shù)的發(fā)展?fàn)顩r及給廣大用戶帶來的便捷。
GPS定位技術(shù)的發(fā)展和在線Map的廣泛運(yùn)用為地理信息服務(wù)系統(tǒng)的開發(fā)提供了良好的技術(shù)支持,本文基于當(dāng)前熱門的移動設(shè)備平臺Android和地理信息服務(wù)以空氣質(zhì)量APP為例,按照軟件開發(fā)流程使用Java編程語言、一些框架、算法以及地理信息及定位方面的知識展示APP的設(shè)計開發(fā)流程,實現(xiàn)符合需求的功能同時讓人們感受到地理信息服務(wù)產(chǎn)品帶給人們生活的便捷。包括各類概念以及設(shè)計實現(xiàn)的細(xì)節(jié)在對應(yīng)章節(jié)都做了闡述,通過整個過程得出編碼設(shè)計方面的成果及地理服務(wù)服務(wù)類產(chǎn)品的優(yōu)勢。
(一)Android系統(tǒng)簡介
Android中文俗稱安卓或安致,是一個基于Linux內(nèi)核的開放移動操作系統(tǒng),由Google成立的Open Handset Alliance(OHA,開放手持設(shè)備聯(lián)盟)持續(xù)領(lǐng)導(dǎo)與開發(fā),主要設(shè)計用于觸屏移動設(shè)備如智能手機(jī)和平板電腦。
(二)Android Software Development Kit
軟件開發(fā)工具包(外語首字母縮寫:SDK、外語全稱:Software Development Kit)一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件時的開發(fā)工具的集合。
Android SDK是Google提供給Android開發(fā)者的開發(fā)工具包,用來開發(fā)移動終端、可穿戴設(shè)備、TV等應(yīng)用的工具,包括編譯構(gòu)建工具及個版本系統(tǒng)對應(yīng)的平臺工具等。
(三)Android使用的語言
Android使用的編程語言是Java,Java是一種計算機(jī)編程語言,擁有跨平臺、面向?qū)ο蟆⒎盒途幊痰奶匦?,廣泛應(yīng)用于企業(yè)級Web應(yīng)用開發(fā)和移動應(yīng)用開發(fā)。
(四)百度地圖SDK
百度地圖Android SDK是一套基于Android2.1及以上版本設(shè)備的應(yīng)用程序接口。您可以使用該套SDK開發(fā)適用于Android系統(tǒng)移動設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,您可以輕松訪問百度地圖服務(wù)和數(shù)據(jù),定位SDK就是為移動端提供的LBS接口。
(五)關(guān)于AndroidStudio
Android Studio是一個基于JetBrains IntelliJ IDEA為Android平臺開發(fā)程序的集成開發(fā)環(huán)境,可跨平臺運(yùn)行,2013年5月16日在GoogleI/O上發(fā)布,可供開發(fā)者免費(fèi)使用。
(一)客戶端功能需求分析
1.搜索
通過菜單欄的搜索按鈕進(jìn)入選擇更多城市頁面,展示熱門城市及所有城市列表,可以滑動選擇,按照首字母排序,可以使用側(cè)邊字母快速索引快速選擇城市。通過此功能用戶可以方便查找全國各地城市,并能通過城市名查詢到對應(yīng)的空氣質(zhì)量信息及其在地圖上的位置。
2.定位
移動互聯(lián)網(wǎng)的快速發(fā)展給人們的生活帶來諸多方便,LBS類的服務(wù)類應(yīng)用國內(nèi)百度地圖和高德地圖兩家獨(dú)大。APP有定位需求的話可以直接集成百度地圖或高德地圖的定位sdk即可快速實現(xiàn)。實現(xiàn)的原理大致相同,android定位一般有四種方法,這四種方式分別是:GPS定位,WIFI定準(zhǔn),基站定位,AGPS定位。
Android GPS:需要GPS硬件模塊的支持,通過衛(wèi)星來實現(xiàn)定位,定位需要的時間長,比較耗電,需要在室外等開闊的環(huán)境中,定位精確度高。
Android基站定位:因為基站的位置是固定的所以將設(shè)備周圍的基站的信息包括位置信號強(qiáng)度等發(fā)送到服務(wù)器,服務(wù)器就可以計算出設(shè)備所在的大體位置,誤差一般在幾十米到幾百米內(nèi)。
Android Wifi定位:WiFi定位是需要網(wǎng)絡(luò)連接的,根據(jù)WIFIMAC,就是將周圍WiFi熱點的信息上傳到服務(wù)器,服務(wù)器進(jìn)行處理就可以返回經(jīng)緯度坐標(biāo)。
AGPS定位:一種結(jié)合了網(wǎng)絡(luò)基站信息和GPS信息對移動臺進(jìn)行定位的技術(shù),需要增加GPS接收機(jī)模塊,并改造手機(jī)天線,同時要在移動網(wǎng)絡(luò)上加建位置服務(wù)器、差分GPS基準(zhǔn)站等設(shè)備。優(yōu)勢是定位精度高,而且首次捕獲GPS信號的時間短,只需要幾秒。
3.空氣質(zhì)量指數(shù)
空氣質(zhì)量指數(shù)(AQI)是定量描述空氣質(zhì)量狀況的非線性無量綱指數(shù)。其數(shù)值越大、級別和類別越高,說明空氣污染狀況越嚴(yán)重,對人體的健康危害也就越大。
空氣質(zhì)量指數(shù)對人們的生產(chǎn)生活有一定的指導(dǎo)意義,人們一般能接觸到數(shù)據(jù)為環(huán)保中心公布的數(shù)據(jù)和美國大使館公布的數(shù)據(jù),當(dāng)空氣質(zhì)量發(fā)生較大變化時,例如多日霧霾來風(fēng),美國大使館的監(jiān)測值就會低很多,而北京環(huán)境監(jiān)測中心的值卻沒有太大的變化,因為環(huán)境檢測中心使用的是過去24小時的平均值,所以是不能一概而論的。
本應(yīng)用中用戶可以獲取到城市對應(yīng)的空氣質(zhì)量AQI指數(shù),及pm2.5、pm10、CO等空氣質(zhì)量詳細(xì)信息。
4.空氣質(zhì)量地圖
通過地圖可以清晰的展示出全國各城市的空氣質(zhì)量指數(shù)信息,用戶可以方便的將空間位置信息與空氣質(zhì)量信息聯(lián)系起來,還可以方便的進(jìn)行數(shù)據(jù)的比較,讓用戶對全國的空氣質(zhì)量的分布情況有快速的了解。
5.側(cè)滑菜單
移動終端設(shè)備因為屏幕尺寸的限制,展示給用戶的空間比較小,所以把菜單及頁面切換按鈕放到側(cè)滑菜單里,用戶可以方便的打開關(guān)閉及頁面切換。
(二)客戶端其他需求分析
項目全局異??刂啤m椖咳之惓?刂瓶梢苑乐筧pp在運(yùn)行時因為某個運(yùn)行時異常導(dǎo)致整個進(jìn)程崩潰而且可以收集異常信息,方便開發(fā)人員分析并修復(fù)bug。
(一)項目開發(fā)的軟硬平臺
表1 軟硬件平臺信息表
(二)App的設(shè)計
1.項目框架設(shè)計
線程池就是使用池來管理線程對象,使用時直接去拿,節(jié)省了創(chuàng)建線程對象的時間,提高運(yùn)行效率。
合理利用線程池能夠帶來三個好處:
第一,重用線程對象降低資源消耗。
第二,使用任務(wù)隊列,提高響應(yīng)速度。
第三,線程是消耗資源的,使用線程池可以方便靈活的對線程進(jìn)行管理。
2.UI框架搭建
項目主界面使用Activity即MainActivity,頁面內(nèi)容使用fragment來填充,使用DrawerLayout實現(xiàn)側(cè)滑菜單,菜單也使用fragment來填充,菜單項切換,即切換主頁面為不同的fragment,地圖界面為fragment+viewpager+slidinglayout+fragment,搜索界面為使用activity,頂部使用Toolbar實現(xiàn)標(biāo)題欄。
(三)UI的設(shè)計
1.View生成
Android有三種方式可以用來生成用戶界面,xml文件中定、java代碼中動態(tài)生成、通過用戶界面接口生成。Xml文件中定義是最簡單的也是最常用的,MVC模式中講求業(yè)務(wù)邏輯與UI的低耦合,所以通過xml文件生成UI更易于維護(hù)。
Android中以View類來描述界面的控件,View包括兩大實現(xiàn)類,第一種是普通的VIew,如:TextView、EditText等,第二種是ViewGroup,即盛放普通View及其他ViewGroup的容器,如:LinearLayout、RelativeLayout等。在xml文件中按照節(jié)點的層級關(guān)系及位置關(guān)系來書寫處相應(yīng)的界面即可。
2.Android布局
Android有5大布局,分別是RelativeLayout、LinearLayout、FrameLayout、AbsoluteLayout、TableLayout。不過前3種布局才是最常用的布局,AbsoluteLayout已經(jīng)被Google廢除,TableLayout可以被GridView替代,因此也很少用。
相對布局RelativeLayout允許子元素指定它們相對于其父元素或兄弟元素的位置,這是實際布局中最常用的布局方式之一。
線性布局LinearLayout是根據(jù)水平Horizontal或者垂直Vertical方向排列的布局,其最大的特點是可以給子控件按照權(quán)重分配空間。
幀布局FrameLayout中的子視圖總是被繪制到相對于屏幕的左上角上,添加的View對象以層疊方式展現(xiàn)后添加的顯示在上面。
(四)App的功能實現(xiàn)
在實現(xiàn)App功能時,按模塊進(jìn)行開發(fā)編碼,相應(yīng)的不同的模塊分別列舉相應(yīng)的核心代碼。
側(cè)滑菜單使用DrawerFragment封裝,然后將其添加到DrawerLayout,left布局節(jié)點下,側(cè)滑菜單主要是在展示區(qū)域有限的移動設(shè)備上展示更多的內(nèi)容,用戶可以方便的喚出和隱藏,本APP中的側(cè)滑菜單包含了內(nèi)容切換的功能及常規(guī)的設(shè)置等。
空氣質(zhì)量指數(shù)功能主要是展示空氣質(zhì)量詳細(xì)信息,界面可以上下滑動,默認(rèn)展示北上廣深四個城市的空氣質(zhì)量數(shù),包括aqi、so2、co、等物質(zhì)的實時監(jiān)測值及24小時的平均值等。
空氣質(zhì)量地圖模塊中,用戶可以左右滑動切換不同不同物質(zhì)的監(jiān)測值,不同城市的數(shù)值按照其地理位置在地圖上顯示出來,用戶還可以使用手勢對地圖進(jìn)行放大縮小及移動操作。此過程中要使用BaiduMap的地理編碼服務(wù),地理編碼提供了一種坐標(biāo)轉(zhuǎn)換的方式,即將地理位置信息轉(zhuǎn)換成用于地理信息系統(tǒng)的地理坐標(biāo)。在地理信息系統(tǒng)中,若要知道把數(shù)據(jù)顯示在何處,就要在數(shù)據(jù)中包含定位需要的X和Y坐標(biāo)。將地理空間坐標(biāo)賦予給這些數(shù)據(jù)的技術(shù)就是地理編碼技術(shù)。
本文的主要思想是論述在Android操作系統(tǒng)上進(jìn)行應(yīng)用軟件的開發(fā),以空氣質(zhì)量客戶端的開發(fā)為實例詳細(xì)講述了平臺下設(shè)計開發(fā)手機(jī)應(yīng)用軟件的全過程。java是面向?qū)ο蟮恼Z言,所也在寫代碼時也要遵循面向?qū)ο蟮脑瓌t,在書寫業(yè)務(wù)邏輯部分的時候盡量把具有不同功能的代碼抽取到單獨(dú)的方法中,這樣才遵循單一責(zé)任原則,而且有利于提高代碼的可讀性,把通用的部分提取到基類中,在基類中還可以對所有實現(xiàn)類進(jìn)行統(tǒng)一的管理,非常方便,把一些工具方法提取為工具類配以清晰的注釋,這樣在使用的時候很方便。而且對于項目中使用的第三方庫也要做一層封裝,這樣在更換庫的時候并不會影響現(xiàn)有代碼,activity與fragment通信最好使用接口回調(diào),這也是google官方推薦的做法,期間也遇到一些問題,比如說fragment多層嵌套會出現(xiàn)異常,項目返回再次進(jìn)入空白的情況等,但再仔細(xì)調(diào)試研究后也都解決了,寫代碼時要保持清晰的思路和耐心。同時也體會到地理信息技術(shù)在移動終端應(yīng)用的完美實踐,隨著智能終端的發(fā)展,地理信息技術(shù)可以在發(fā)展出新的模式。
[1]解攀科.基于Android的移動學(xué)習(xí)系統(tǒng)設(shè)計與實現(xiàn)[J].2011(05)
[2]蓋索林著.Android開發(fā)入門指南(第二版)[M].2010
[3]馬寧.嵌入式移動開發(fā).程序員,2007(12)
[4]萬瑪寧,關(guān)永,韓相軍.嵌入式數(shù)據(jù)庫典型技術(shù)SQLite和BerkeleyDB的研究[M].微計箅機(jī)信息,2006
[5]差沙.開Android開發(fā)手機(jī)應(yīng)用[M].程序員,2008(1)
[6]Jerri Ledford, Prasanna Amirthalingam. Pro Android[M]. Apress, 1 edition, 2008
[7]曹敬,高曝.JAVA與C/C++的結(jié)合[J].計算機(jī)與現(xiàn)代化,2005(1)
[8]曲桂婷.基于Android移動式地理信息終端的開發(fā)研究[J].2012(6)
[9]荼鳳婭.基于Android的手機(jī)搜索定位應(yīng)用開發(fā)[J].2010(5)
[10]劉平.Android手機(jī)訪問服務(wù)器的一種數(shù)據(jù)交換方法.電子設(shè)計工程.2010,18(9):96-102
[11]杜華.GIS中電子地圖坐標(biāo)系的轉(zhuǎn)換研究與實現(xiàn).貴州大學(xué)碩士學(xué)位論文.2007:77-82
[12]巫細(xì)波,胡偉平.Google Maps運(yùn)行機(jī)制以及應(yīng)用研究.華南師范大學(xué)學(xué)報.2009,11(2):106-110
王健文,男,研究生在讀,延邊大學(xué),研究方向:GIS開發(fā)與生態(tài)系統(tǒng)服務(wù)。