王曉東
摘 要:本文介紹了Android應(yīng)用程序公交小助手的設(shè)計(jì)方法,以及實(shí)現(xiàn)的過程。公交小助手主要有線路查詢、換乘方案查詢和定位附近站點(diǎn)等功能,方便用戶通過手機(jī)了解所在地附近的公交站點(diǎn),更好地進(jìn)行路線規(guī)劃。
關(guān)鍵詞:Android;公交小助手;設(shè)計(jì)
一、系統(tǒng)分析
隨著經(jīng)濟(jì)的快速發(fā)展,使得居民汽車保有量逐年增加,在提高了生活質(zhì)量的同時(shí),也帶來了交通擁堵、環(huán)境污染等問題,因此公交車對(duì)于一個(gè)城市的交通系統(tǒng)仍然是十分必要的。借助公交小助手軟件可以快速查詢所在地附近的公交站點(diǎn),方便出行,還能更好地進(jìn)行路線規(guī)劃。做好系統(tǒng)分析工作,可以為整個(gè)項(xiàng)目開發(fā)奠定一個(gè)良好的基礎(chǔ)。經(jīng)過對(duì)公交線路、站點(diǎn)的細(xì)致了解,以及和乘客進(jìn)行充分的交流和溝通之后,總結(jié)出系統(tǒng)應(yīng)該包含三個(gè)主要的功能模塊:(1)線路查詢。顯示公交線路類型分組項(xiàng)以及每一種類型相關(guān)公交線路的數(shù)量,用戶可以單擊任一項(xiàng),在所選分組展開之后,單擊想要查詢的線路名稱,然后就會(huì)進(jìn)入線路信息界面。也可以單擊查詢按鈕或者當(dāng)前默認(rèn)線路的編輯框,進(jìn)入線路查詢輸入界面。單擊任一站點(diǎn)名稱進(jìn)入站點(diǎn)信息界面,單擊地圖圖標(biāo)就可以在地圖上查看相關(guān)站點(diǎn)和相關(guān)線路信息。(2)換乘方案查詢。用戶可以通過單擊查詢按鈕進(jìn)入輸入界面,然后清除編輯框內(nèi)的默認(rèn)內(nèi)容,在第一個(gè)編輯框內(nèi)輸入換乘查詢的起點(diǎn),在第二個(gè)編輯框內(nèi)輸入換乘查詢的終點(diǎn)。這時(shí)單擊查詢按鈕就可以顯示換乘方案列表,單擊任一方案可以進(jìn)入單個(gè)換乘顯示界面。(3)定位附近站點(diǎn)。用戶可以看到所在地附近1000米范圍內(nèi)的所有站點(diǎn),以及站點(diǎn)與用戶所在地距離的列表。單擊任一站點(diǎn)就可以進(jìn)入站點(diǎn)信息界面,進(jìn)而查詢路過此站點(diǎn)的所有線路。單擊地圖按鈕可以進(jìn)入地圖顯示界面,單擊最下方的顯示框可以進(jìn)行地點(diǎn)重新定位。
二、線路查詢的設(shè)計(jì)
線路查詢界面的搭建包括布局的安排,以及文本框、圖片視圖等控件的屬性設(shè)置。首先聲明界面的總線性布局,其中還包含了一個(gè)線性布局。該線性布局包含一個(gè)文本域控件和一個(gè)按鈕控件,設(shè)置排列方式為垂直排列。定義一個(gè)ExpandableListView控件,設(shè)置它的id、寬度、高度和背景顏色等屬性,該控件用于顯示公交線路類型。在線路查詢界面初始化時(shí),為ExpandableListView設(shè)置展開和折疊事件以及單擊子項(xiàng)目監(jiān)聽事件。單擊公交線路名稱之后,應(yīng)跳轉(zhuǎn)到線路信息界面,并將所需的線路名稱、線路信息傳遞給BusLineActivity類。獲取地圖id,加載百度地圖,初始化地圖zoom值,添加地圖監(jiān)聽,創(chuàng)建POI搜索實(shí)例,為用戶所查線路在地圖上顯示做準(zhǔn)備。通過POI檢索獲得用戶想要查詢的公交線路各個(gè)站點(diǎn)信息,以及首末發(fā)車時(shí)間的實(shí)現(xiàn)方法。相關(guān)代碼如下:
stationStartUid=new ArrayList<String>();
stationEndUid=new ArrayList<String>();
ProvideContent.buslineSName= buslineName;
//設(shè)置ProvideContent類的線路名稱
busStartArray= new ArrayList<String>();
busEndArray= new ArrayList<String>();
mSearch=PoiSearch.newInstance();//POI檢索接口
mSearch.setOnGetPoiSearchResultListener(this);
mBusLineSearch=BusLineSearch.newInstance();//線路檢索接口;
mBusLineSearch.setOnGetBusLineSearchResultListener(this);
…………
三、換乘方案查詢的設(shè)計(jì)
首先獲取起點(diǎn)和終點(diǎn)編輯文本框引用,判斷是否存在相關(guān)信息,然后為編輯文本框設(shè)置內(nèi)容。獲取查詢按鈕引用,并添加監(jiān)聽。建立GetBusLineChange對(duì)象,為其傳遞參數(shù)并發(fā)起查詢。完成后線程會(huì)向handler發(fā)送消息,根據(jù)消息的what值,執(zhí)行相應(yīng)的case。相關(guān)代碼如下:
handler=new Handler;
switch(msg.what){
case Constant.INFO_NEARBYSTATIO:
mDialog.dismiss();//關(guān)閉提示對(duì)話框
initLineChangeData();//執(zhí)行初始化換乘信息方法
break;
…………
四、定位附近站點(diǎn)的設(shè)計(jì)
獲取地圖顯示引用,加載百度地圖,隱藏地圖縮放按鈕,設(shè)置地圖顯示的中心點(diǎn),設(shè)置地圖縮放比,開啟圖層定位,為后續(xù)地圖顯示做準(zhǔn)備。定義一個(gè)addMarker方法,用來定位附近站點(diǎn)地圖界面的核心部分,包括添加Overlay、獲取定位數(shù)據(jù),以及將獲取的數(shù)據(jù)顯示到地圖上等等。相關(guān)代碼如下:
SDKInitializer.initialize(this.getApplication());
setContentView(R.layout.map_near_station);//加載當(dāng)前activity顯示界面
mMapView=(MapView)this.findViewById(R.id.mapNear);
mBaiduMap=mMapView.getMap();//加載地圖
mSetVisibility();//隱藏地圖縮放按鈕
mBaiduMap.setMyLocationEnabled(true);//開啟圖層定位
float mZoomLevel=16.0f;//設(shè)置地圖縮放比
…………
addMarker();
…………
五、結(jié)語
軟件是基于Android系統(tǒng)平臺(tái)的,采用Android Studio集成開發(fā)工具進(jìn)行編程,數(shù)據(jù)庫選用SQLite。經(jīng)過系統(tǒng)測(cè)試,公交小助手軟件實(shí)現(xiàn)了上述主要功能,可以查詢十堰市公交線路情況,顯示換乘方案,并能夠定位附近站點(diǎn)。軟件也有兩點(diǎn)可以改進(jìn)的地方:(1)選擇城市。將系統(tǒng)所需要的資源文件按城市分別建成數(shù)據(jù)庫,然后把城市名稱添加到城市列表中,系統(tǒng)就會(huì)適用于已添加的所有城市了。這樣做不僅可以增強(qiáng)系統(tǒng)的靈活性和通用性,而且還有效地降低了二次應(yīng)用的成本。(2)語音導(dǎo)航。全程進(jìn)行語音播報(bào),及時(shí)提示用戶已進(jìn)入哪條路,接近哪個(gè)小區(qū)等等,提升用戶滿意度。
參考文獻(xiàn):
[1] 吳亞峰. Android應(yīng)用案例開發(fā)大全(第4版)[M].北京:人民郵電出版社, 2018.