《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Android系統的避難場所查詢軟件開發
基于Android系統的避難場所查詢軟件開發
來源:電子技術應用2014年第3期
趙士達, 張 楠, 楊 爽
(天津市地震局, 天津300201)
摘要: 介紹了一種基于Android操作系統的應急避難場所查詢軟件。應急避難場所的位置信息存儲在百度云端,軟件通過云檢索獲得相應的信息。軟件將檢索到的信息以列表和地圖的形式展現出來,并提供條件篩選、周邊檢索和定位等功能。通過Android SDK模擬器仿真和手機終端測試,驗證了該軟件的各項功能全部達到預期目標。
中圖分類號: TP393
文獻標識碼: A
文章編號: 0258-7998(2014)03-0133-04
Development of emergency shelters query software based on Android
Zhao Shida, Zhang Nan, Yang Shuang
Tianjin Seismological Bureau, Tianjin 300201, China
Abstract: Introducing a query software that based on Android. The location information of emergency shelter was stored in Baidu Cloud. The software get the information by Cloud research. The researched information was displayed in list form a map form. The software has screening, periphery searching, positioning function. The software has passed the test and each function has achieved the expected target.
Key words : Android; emergency shelter; Cloud storage; Cloud search; Baidu map API; Baidu positioning

    近年來,全球地震災害多發,給人類造成巨大損失。應急避難場所是應對突發公共事件的一項災民安置措施,是現代化大城市用于民眾躲避地震、火災、爆炸、洪水、疫情等重大突發公共事件的安全避難場所[1]。應急避難場所具有應急避難指揮中心、獨立供電系統、應急直升機停機坪、應急消防措施、應急避難疏散區、應急供水等11種應急避險功能,形成了一個集通信、電力、物流、人流、信息流等為一體的完整網絡。
    隨著移動通信技術的快速發展和Android智能終端的迅速普及,人們對信息的獲取有了更高的要求[2]。開發一款基于Android系統的應急避難場所的軟件顯得非常必要。Android系統是谷歌公司推出的一套智能開源手機平臺,由操作系統、中間件、用戶友好界面和應用軟件組成[3]。
 應急避難場所查詢涉及到每個避難場所的位置信息,而百度LBS云服務可以解決這一問題。LBS云是百度地圖針對LBS開發者推出的平臺級服務,結合已有的地圖API和SDK服務,通過開放服務端存儲和計算能力,提供海量位置數據存儲、檢索及展示一體化解決方案[4]。
    本文針對Android系統,使用百度地圖Android SDK、定位API和LBS云服務開發了一款可以篩選、定位、地圖顯示和周邊檢索的應急避難場所查詢軟件。
1 總體設計方案
1.1 Android開發介紹

    Android是以Linux為核心的開放源碼操作系統,可以運行在手機、平板電腦、GPS、播發器等各種手持終端上[5-6]。
    Android主流的開發環境是Java,開發平臺是Eclipse(一種基于Java的開源、可擴展平臺)。Eclipse安裝安卓開發工具ADT(Android Development Tools)后即可直接使用Android的軟件開發工具包SDK(Software Development Kit)。同時SDK還提供可視化的模擬器,以及Dalvik虛擬機調試監控服務(DDMS)工具,用于實時查看軟件運行情況及本件管理、截屏等操作[7-8]。本文的軟件就在以上基礎上開發調試,并最終在手機終端上通過測試。
1.2 百度地圖Android SDK簡介
    百度地圖Android SDK是一套基于Android 2.1(v1.3.5及以前版本支持Android 1.5以上系統)及以上版本設備的應用程序接口,可適用于Android系統移動設備的地圖應用。通過調用地圖SDK接口,可以輕松訪問百度地圖服務和數據,構建功能豐富、交互性強的地圖類應用程序。
1.3 百度定位 SDK簡介
    LBS(Location Based Service)是互聯網時代的熱點,在本地搜索、定向廣告、社交網絡等眾多領域得到了廣泛應用。其核心基礎就是定位能力,為各類應用提供位置信息。百度移動定位API是一個提供基礎定位API的第三方平臺,為各類應用提供定位能力,提升用戶體驗。目前百度定位SDK支持Android平臺的免費使用。
1.4 百度LBS云簡介
    LBS云是百度地圖針對LBS開發者推出的平臺級服務,結合已有的地圖API和SDK服務,通過開放服務端存儲和計算能力,提供海量位置數據存儲、檢索、展示一體化解決方案。LBS云包括云存儲云檢索兩個部分。
    LBS云有三個基本概念,分別是位置數據表(geotable)、自定義擴展列(column)和位置數據(poi)。位置數據表是百度LBS云提供給開發者自定義存儲位置數據的集合,類似于常見數據庫的一個表,不僅支持點線面結構還支持用戶自定義結構。自定義擴展列是開發者在創建的位置數據表基礎上根據自己的應用場景自定義擴展的列,類似于常見數據表的一個列。位置數據即為開發者在定義好屬性和擴展列的位置數據表中帶有位置屬性的業務數據記錄,類似于常見數據表下的一條記錄。
1.5 避難場所查詢軟件設計方案
    首先需要將所有的避難場所位置及相關信息存儲到百度LBS云中,軟件查詢避難場所的過程其實就是對已存儲信息的云端進行檢索的過程。云檢索必須在有網絡的條件下進行,所以當沒有無線網絡時需要打開手機自身的移動網絡。如圖1所示,當檢測到可用網絡后要劃分網絡類型,因為不同網絡的接口設置不同。通過百度定位API對終端用戶當前所在位置進行定位。通過云檢索將云端的避難場所信息調出并計算避難場所與當前位置的距離。軟件有兩種工作模式:一種是篩選模式,另一種是附近模式。在篩選模式下可以按照行政區、避難場所分類和關鍵字檢索對避難場所進行查找;在附近模式可以按照距離查找當前位置周邊的避難場所。

2 軟件設計
    系統分為2個數據包(package),一個是com.bd.lbs.yj用來完成軟件的主體功能;另一個是com,bd.lbs.api用來完成百度定位、云檢索和百度地圖顯示等功能。這2個數據包共包括了7個程序模塊,如圖2所示。

2.1 ContentModel模塊設計
    ContentModel類用來定義列表內容,包括避難場所的名稱、地址、類型、避難場所與當前設備的距離、圖片外連接地址、專題頁地址、經度和緯度。此外該類還定義了獲取這些信息的成員函數。
2.2 LBSListActivity模塊設計
    LBSListActivity類繼承了ListActivity類并實現了對OnScrollListener的接口。實現了列表顯示,同時還監控焦點是否為列表最后一行。本文的列表頁為單頁10條列表,當頁面翻滾到最后一行時點擊“讀取更多”按鈕,即可再打開10條列表。
    要在列表底部添加“讀取更多”按鈕并顯示讀取的進度就要在重寫父類Activity時添加“讀取更多(loadMoreView)”按鈕和進度條(progressBar)的layout設置。
    本設計需要在列表中顯示每個避難場所的照片,這些照片被保存在網絡相冊中,系統解析網絡照片地址并將照片轉換為Bit圖片顯示。這個過程通過getBitmapFromUrl函數來完成。該函數首先建立與網絡相冊的連接,接收來自相冊的數據流并將全部數據流保存在緩存中,最后將緩存中的數據重新編碼成比特圖片。
2.3 DApplication模塊設計
    Android中的Application類是為了需要保存全局變量而設計的基本類,該類在package創建時就存在。程序中的DApplication類是從Application類繼承下來的,用于保存本設計的全局變量。
    本設計中的百度地圖SDK使用ak驗證和網絡類型的劃分也是在DApplication類中完成的。網絡類型主要分為中國移動CMWAP、中國聯通UNIWAP、中國電信CTWAP和3G網絡3GWAP。
2.4 MainActivity模塊設計
    MainActivity類主要完成可用網絡的檢測、篩選/附近模式的切換,地圖/列表模式的切換和篩選按鈕功能的實現。
    篩選/附近模式的切換通過ToggleButton按鈕實現,地圖/列表模式的切換通過getTabHost函數來完成,各種篩選條件通過設置Spinner控件來完成。
2.5 LBSLocation模塊設計
 LBSLocation類主要完成終端的定位功能。編寫這個類需要用到百度定位API,所以在該文件前添加如下程序來導入百度程序包:
    import com.baidu.location.BDLocation;
    import com.baidu.location.BDLocationListener;
    import com.baidu.location.LocationClient;
    import com.baidu.location.LocationClientOption;
    首先要在啟動定位函數中配置定位信息,將定位經緯度設置為百度經緯度。然后編寫定位監聽函數并實現對百度定位監聽函數的接口。在定位監聽函數中實現定位并計算當前位置與每個避難場所的距離。
2.6 LBSCloudSearch模塊設計
    LBSCloudSearch類通過http post方式訪問百度云,利用百度云檢索API查找百度云存儲數據,返回JSON數據供移動應用顯示。
    云檢索前需要做好兩項準備工作:(1)根據劃分的網絡類型進行網絡接口配置; (2)設置百度云的databox及對應ak的校驗。
2.7 LBSMapActivity模塊設計
     LBSMapActivity類主要用于實現百度地圖的顯示功能。編寫這個類需要用到百度定位API,所以在該文件前添加以下程序來導入百度程序包:
 import com.baidu.mapapi.BMapManager;
 import com.baidu.mapapi.MKGeneralListener;
 import com.baidu.mapapi.map.ItemizedOverlay;
 import com.baidu.mapapi.map.LocationData;
   import com.baidu.mapapi.map.MKEvent;
   import com.baidu.mapapi.map.MapController;
   import com.baidu.mapapi.map.MapView;
   import com.baidu.mapapi.map.MyLocationOverlay;
   import com.baidu.mapapi.map.OverlayItem;
   import com.baidu.mapapi.map.PopupClickListener;
   import com.baidu.mapapi.map.PopupOverlay;
    程序中使用initMapView()函數來完成初始化地圖,包括設置地圖中心坐標、地圖縮放參數和地圖控制控件等。使用addAllMarker()和removeAllMarker()兩個函數,實現在地圖中添加避難場所位置麻點和刪除這些麻點。
    在LBSMapActivity類中定義了MyGeneralListener和OverlayIcon兩個類,分別用于監控網絡和定義麻點樣式。
3 軟件測試
3.1 云存儲

 


   百度云存儲接口支持單個geotable億級數據及數百GB大小的存儲,每天支持百萬量級讀寫,每秒支持萬量級讀寫,完全滿足本設計的需求。在進行軟件測試前,通過批量上傳的方式將應急避難場所的信息存到百度云端。除了百度云自帶的字段外還需要自定義擴展字段image、type和shelterurl。其中image為string類型,用來存儲展示在終端的避難場所圖片地址;type為double類型,用來區分避難場所類型;shelterurl為string類型,用來存儲避難場所專輯頁面地址。
3.2 手機測試
    軟件通過Android SDK模擬器仿真后進入到手機實物測試,本次測試所用的手機為華為G520。手機測試步驟為:
    (1)檢測在無網絡情況下程序是否退出;
    (2)在無線WiFi網絡下,打開程序在列表模式下瀏覽避難場所列表,檢查列表中的避難場所能否與百度云端存儲的數據對應;
    (3)檢查列表中的內容和圖片是否與設計一致,列表中的定位以及距離計算是否準確;
    (4)按照行政區和避難場所分類逐一進行篩選測試,檢測篩選是否有誤;
    (5)切換到周邊模式進行周邊檢索,檢查周邊檢索是否準確;
    (6)將列表模式切換到地圖模式,檢查地圖上麻點能否與列表對應;
    (7)將WiFi網絡換成GSM網絡,重復步驟(2)~步驟(6)進行檢測。
   經過上述測試,應急避難場所查詢軟件所有功能工作正常,達到了預期目標。圖3、圖4為篩選模式和附近模式下列表/地圖的測試照片。

    本文設計了一個基于Android操作系統的應急避難場所查詢方案,實現了對應急避難場所的查詢、篩選和地圖展示等功能。本設計的創新點是使用了百度LBS云技術,將避難場所的位置信息存儲到百度云端,并通過云檢索獲取信息。與傳統方式相比省去了架設服務器保存信息和維護信息的開銷。同時使用百度地圖API和定位API,將定位所得到的百度經緯度和避難場所的經緯度顯示在百度地圖上。手機測試結果表明,本設計完成了預期的全部功能。
參考文獻
[1] 趙士達,張楠,楊爽. 地震時人口疏散模型研究[J]. 軟件導刊,2013(5):6-8.
[2] 馬志強.基于Android平臺即時通信系統的設計與實現[D].北京:北京交通大學, 2009.
[3] 李寧. Android應用開發實戰[M].北京:機械工業出版社, 2012.
[4] 豆瑞星.百度成立LBS事業部[J].互聯網周刊, 2012,11(21):56-57.
[5] 鄭云卿,黃琦.基于Android平臺的軟件自動化監控工具的設計開發[J].計算機應用與軟件,2013,30(2):235-238.
[6] 彭璇,吳肖. Google Map API在網絡地圖服務中的應用[J].  測繪信息與工程,2010,35(1):25-27.
[7] BURNETTE E. Hello, Android: introducing google’s mobile development platform[M]. American Pragmatic Bookshelf,  2009.
[8] 江燕良.基于Android智能終端的遠程控制系統[J].電子技術應用,2012,38(8):129-132.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品高清在线 | 女人野外小树林一级毛片 | 欧美一级视频免费观看 | 日韩无砖专区体验区 | 欧美日韩精品国产一区在线 | 欧美激情精品久久久久久久九九九 | 国内xxxx乱子另类 | 九草在线免费观看 | fc2ppv在线观看 | 午夜影院黄色 | 黄网站在线播放视频免费观看 | 一区二区三区视频在线观看 | 深夜一级毛片 | 日韩欧美中文字幕一区二区三区 | 亚洲男女视频 | 在线播放亚洲视频 | 亚洲图片视频在线观看 | 91精品欧美一区二区综合在线 | 久久久久久久久国产 | 欧美在线视频 一区二区 | 国产亚洲精品成人婷婷久久小说 | 成人午夜大片免费7777 | 亚洲天堂久久久 | 99久久精品免费看国产 | 99在线视频观看 | 性欧美欧美巨大69 | 深爱五月开心网亚洲综合 | 亚洲精品国产一区二区三区在 | 亚洲欧美94色 | 亚洲男人的天堂在线 | 精品九九久久 | 久久久国产一区二区三区 | 久草视频精品在线 | 精品国产免费一区二区三区五区 | 国产欧美一区二区三区沐欲 | 国产啪精品视频网免费 | 亚洲人成免费 | 国产成人91高清精品免费 | 久久亚洲精品成人综合 | 国产日韩欧美在线一二三四 | 日本一区二区三区国产 |