基于Android的移動(dòng)空間信息服務(wù)研究_第1頁(yè)
基于Android的移動(dòng)空間信息服務(wù)研究_第2頁(yè)
基于Android的移動(dòng)空間信息服務(wù)研究_第3頁(yè)
基于Android的移動(dòng)空間信息服務(wù)研究_第4頁(yè)
基于Android的移動(dòng)空間信息服務(wù)研究_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于 Android 的移動(dòng)空間信息服務(wù)研究摘要:簡(jiǎn)要介紹了移動(dòng)空間信息服務(wù)的需求產(chǎn)生,介紹了 Android 平臺(tái)的 體系結(jié)構(gòu), 分析了該平臺(tái)的地圖接口, 針對(duì)移動(dòng)平臺(tái)資源的有限性, 改進(jìn)了傳統(tǒng) 公交矩陣換乘算法, 采用集合的數(shù)學(xué)方法, 提出了一種基于公交路線(xiàn)起終點(diǎn)線(xiàn)路 信息的公交查詢(xún)算法。以大連市公交信息查詢(xún)?yōu)槔?,基?Android 設(shè)計(jì)并開(kāi)發(fā) 了一個(gè)城市公交查詢(xún)信息系統(tǒng),驗(yàn)證了其可行性。 關(guān)鍵詞: Android ;移動(dòng)空間信息服務(wù);公交查詢(xún)1. 引言位置是人們理解和駕馭世界的基礎(chǔ) 1 ,人們?cè)诳旃?jié)奏的經(jīng)濟(jì)生活中,迫切想知 道當(dāng)時(shí)所處的環(huán)境信息, 比如“我在哪?”、 “到環(huán)球金融中心最

2、短的路線(xiàn)是什 么?”、“我附近有沒(méi)有 ATM”等等??臻g信息技術(shù)、移動(dòng)通信、 Internet 和 移動(dòng)終端的快速發(fā)展使人們?cè)竿膶?shí)現(xiàn)成為可能。 應(yīng)運(yùn)而生的移動(dòng)空間信息服務(wù) (M-GIS , Mobile Geospatial Information Service)是上述技術(shù)的有機(jī)集成,它將 Internet 上的海量信息和地理信息系統(tǒng) (GIS,Geographic InformationSystem) 的強(qiáng)大應(yīng)用服務(wù)功能擴(kuò)展到移動(dòng)終端上, 為移動(dòng)用戶(hù)基于位 置的信息交換、信息獲取、信息共享和信息發(fā)布提供了便捷、 經(jīng)濟(jì)的技術(shù)途徑 2 。 隨著移動(dòng)終端計(jì)算能力與存儲(chǔ)能力的日益增強(qiáng)以及移動(dòng)通信

3、技術(shù)與互聯(lián)網(wǎng)技術(shù) 的飛速發(fā)展,基于移動(dòng)終端的 M-GIS 所占的比重越來(lái)越大,在 M-GIS 中扮演著 愈來(lái)愈重要的角色 5 ,尤其是當(dāng) Android 開(kāi)發(fā)平臺(tái)出現(xiàn)后,基于移動(dòng)終端的 M-GIS 開(kāi)發(fā)門(mén)檻出現(xiàn)了劃時(shí)代意義上的降低。 Android 平臺(tái)是由 Google 與開(kāi)放 手機(jī)聯(lián)盟合作開(kāi)發(fā)的一個(gè)開(kāi)放性的移動(dòng)開(kāi)發(fā)平臺(tái),它采用 Linux 內(nèi)核,獨(dú)特的 Dalvik 虛擬機(jī),集成特有的地圖模塊、 快捷的 XML 布局方案、 輕量級(jí)的 SQLite 數(shù)據(jù)庫(kù)、高效的 2D、3D 繪圖方案以及多媒體技術(shù)等等,它具有強(qiáng)大的網(wǎng)絡(luò)訪問(wèn) 功能,集成 3G 網(wǎng)絡(luò)與 WiFi 、藍(lán)牙等無(wú)線(xiàn)網(wǎng)絡(luò)技術(shù), 并且可

4、以對(duì)開(kāi)發(fā)者之間的功 能模塊進(jìn)行無(wú)縫繼承與共享, 高效的功能模塊重用讓開(kāi)發(fā)的周期更短, 開(kāi)發(fā)難度 更低,結(jié)合日益完善的移動(dòng)定位技術(shù), 移動(dòng)用戶(hù)的 M-GIS體驗(yàn)愈來(lái)愈好。 Android 是一個(gè)真正意義上的開(kāi)放性移動(dòng)設(shè)備綜合平臺(tái),基于 Android 進(jìn)行移動(dòng)空間信 息服務(wù)開(kāi)發(fā),可以很容易地利用 Google Maps 地圖資源以及開(kāi)放的 API 接口, 可以說(shuō),基于 Android 的移動(dòng)空間信息服務(wù),是移動(dòng)終端 M-GIS 開(kāi)發(fā)道路上的 一個(gè)里程碑。2 Android 地圖接口簡(jiǎn)介Android 是由 Google 與開(kāi)放手機(jī)聯(lián)盟合作開(kāi)發(fā)的一個(gè)開(kāi)放、 自由的移動(dòng)終端平 臺(tái),它由操作系統(tǒng)、中間

5、件、應(yīng)用軟件三部分組成。該平臺(tái)備有完善的程序開(kāi)發(fā) 環(huán)境,包括模擬器、除錯(cuò)工具、程序執(zhí)行所耗用存儲(chǔ)器、性能評(píng)價(jià)等功能,另外 還有一個(gè)可用于 Eclipse IDE 的外掛程序。開(kāi)放手機(jī)聯(lián)盟由包括中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)和 T-Mobile 在內(nèi)的 30 多家通信技術(shù)和無(wú)線(xiàn)應(yīng)用的領(lǐng)軍企 業(yè)組成,旨在建立一個(gè)標(biāo)準(zhǔn)化、開(kāi)放式的移動(dòng)電話(huà)軟件平臺(tái) 4 ,在移動(dòng)產(chǎn)業(yè)內(nèi) 形成一個(gè)開(kāi)放式的生態(tài)系統(tǒng),來(lái)最大限度地滿(mǎn)足移動(dòng)用戶(hù)對(duì)移動(dòng)空間信息服務(wù) (簡(jiǎn)稱(chēng) M-GIS)的需求。與其它開(kāi)發(fā)平臺(tái)不同的是, 200MHZ的 處理器配置便可 滿(mǎn)足系統(tǒng)開(kāi)發(fā)要求,采用嵌入式的 Linux 操作系統(tǒng),主要負(fù)責(zé)實(shí)現(xiàn)安全、存儲(chǔ) 器

6、管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧、驅(qū)動(dòng)程序模型等系統(tǒng)功能; 應(yīng)用軟件方面, Android 提供瀏覽器、Email 、短信、日歷、地圖、通訊錄等幾種較常用的應(yīng)用軟件; Android 中間件是構(gòu)成 Android 的核心部分,它分為底層的庫(kù)和運(yùn)行時(shí)環(huán)境,以及上層 的應(yīng)用程序框架,中間件可以算作是連接操作系統(tǒng)與應(yīng)用程序的紐帶. 在中間件的底層庫(kù)與運(yùn)行時(shí)環(huán)境中,底層庫(kù)包含了輕量級(jí)數(shù)據(jù)庫(kù) SQLite 、System C 函數(shù) 庫(kù)、媒體框架、外觀管理員 (Surface Manager)、WebKit、SGL、SSL、3D 函數(shù)庫(kù)、 FreeType 等等。 Android 平臺(tái)使用 Java 語(yǔ)言編碼,卻

7、使用自有的 Android Runtime 來(lái)執(zhí)行,該 Runtime 內(nèi)有兩個(gè)重要元件: Core Libraries( 核心函數(shù)庫(kù) ) 與 Dalvik Virtual Machine(Dalvik虛擬機(jī)器 ) 。核心函數(shù)庫(kù)里包含了絕大多數(shù) Java 程序語(yǔ)言所需要調(diào)用的函數(shù),每個(gè) Android 程序都以各自進(jìn)程來(lái)執(zhí)行,并且都以自屬的 Dalvik 虛擬機(jī)器來(lái)同時(shí)執(zhí)行,各個(gè) 程序的執(zhí)行效率卻絲毫不會(huì)受到影響。 應(yīng)用程序框架包含了 10 個(gè)主要的軟件元 件,如 LocationManager(位置管理員) 、Activity Manager(活動(dòng)管理員 ) 、Window Manager(

8、視窗管理員 ) 、Resource Manager(資源管理員 ) 、XMPPS ervices 等等, 便于用戶(hù)開(kāi)發(fā)不同類(lèi)型的應(yīng)用程序, 這種框架,在移動(dòng)終端應(yīng)用程序開(kāi)發(fā)歷史上 是獨(dú)有的。在應(yīng)用程序執(zhí)行過(guò)程中, Android 使用 Intent 類(lèi)與 IntentFilter 來(lái)完成窗口 之間的切換。一個(gè) Intent 描述了應(yīng)用程序想做的 Activity (活動(dòng)),而 IntentFilter 則描 述了一個(gè)活動(dòng)所能處理的所有 Intent 。在不同窗口之間切換是通過(guò)解析 Intent 完成的。平臺(tái)采用 XML 布局與視圖定制聯(lián)合起來(lái),做到“ First Look”, 將界 面設(shè)計(jì)與應(yīng)

9、用程序邏輯分離。Android 平臺(tái)內(nèi)置了地圖服務(wù)模塊,借助 3G 網(wǎng)絡(luò)等無(wú)線(xiàn)網(wǎng)絡(luò)的高速傳輸條件, 開(kāi)發(fā)者只需簡(jiǎn)單的幾行 Java 代碼即可將 Google Maps 的地圖資源顯示在移動(dòng)終 端上,有限的幾行代碼即可實(shí)現(xiàn)縮放、瀏覽、衛(wèi)星圖 / 地圖切換等等,同時(shí),該 平臺(tái)也支持其他數(shù)據(jù)提供商的數(shù)據(jù)資源。平臺(tái)提供了兩個(gè)基于位置服務(wù)的地圖 API 開(kāi)發(fā)包 :android.location 以及 com.google.android.maps. 通過(guò)對(duì)這兩個(gè) 地圖 API 開(kāi)發(fā)包內(nèi)與位置服務(wù)相關(guān)的類(lèi)的使用,配合設(shè)備本身的具備的定位定 向等相關(guān)模塊,可以很好地實(shí)現(xiàn)對(duì)用戶(hù)移動(dòng)空間信息服務(wù)應(yīng)用程序開(kāi)發(fā)。

10、2.1 Location 接口Android 的定位接口 (android.location )包含幾個(gè)與位置服務(wù)相關(guān)的類(lèi), 并且 提供 LocationManager 服務(wù), 這個(gè)服務(wù)提供定位與定向 API,當(dāng)然, 前提是設(shè)備 具備這種基本的功能模塊,比如說(shuō),設(shè)備內(nèi)置了 GPS 接收機(jī)模塊等等。 LocationManager 服務(wù)不會(huì)被直接用來(lái)獲取用戶(hù)位置信息,它會(huì)通過(guò) getSystemService(Context.LOCATION_SERVICE)來(lái)獲得一個(gè)指向它的 Handle, 實(shí)現(xiàn)對(duì)它的有效應(yīng)用。一旦應(yīng)用程序擁有了一個(gè)指向 LocationManager 的 Handle,那么

11、它將會(huì)擁有以下三種功能:1) 查詢(xún) LocationManager 所掌握的全部 LocationProviders 的最終位置信息 列表; 2) 注冊(cè)或者注銷(xiāo)當(dāng)前位置從一個(gè) LocationProvider 提供的實(shí)時(shí)位置更 新; 3) 當(dāng)移動(dòng)終端在一個(gè)給定的位置半徑范圍以?xún)?nèi)的話(huà),激活一個(gè)給定的 intent ,從而實(shí)現(xiàn)用戶(hù)所需的空間信息功能。需要說(shuō)明的是, 開(kāi)發(fā)階段不能使用 Network、GPS 等獲取的真正的實(shí)時(shí)位置數(shù)據(jù)。 為此,平臺(tái)提供了模擬數(shù)據(jù)開(kāi)發(fā)的功能模塊, 開(kāi)發(fā)者可以使用 DDMS或 者 geo 命 令行導(dǎo)入模擬數(shù)據(jù)到模擬器中。 通過(guò) DDMS 工具,可以設(shè)定一個(gè)經(jīng)緯度來(lái)更新當(dāng)

12、 前位置、使用 GPX 文件來(lái)進(jìn)行路徑回放操作、使用 KML 文件來(lái)進(jìn)行回放的多個(gè) 獨(dú)立地標(biāo)標(biāo)注等等;使用 geo 命令行時(shí),通過(guò) geo fix 來(lái)設(shè)定一個(gè)地理位置, 它可以設(shè)定一個(gè)包含經(jīng)緯度,高程可選的地理位置,比如, geo fix -121.45356 46.51119 4392 ,通過(guò) geo nmea 來(lái)設(shè)定一個(gè) NMEA 0183 語(yǔ)句,這個(gè)命令接受一 個(gè)單獨(dú)的 NMEA語(yǔ) 句,這個(gè)語(yǔ)句的類(lèi)型或是 $GPGGA( fix data) ,或是 $GPRMC (transit data).比如, geo nmea$GPRMC,081836,A,3751.65,S,14507.36,E

13、,000.0,360.0,130998,011.3,E*62DDM S 與 geo 操作均可以把模擬位置數(shù)據(jù)送入模擬器,對(duì)應(yīng)用程序開(kāi)發(fā)者來(lái)說(shuō),是 一個(gè)很好的位置信息服務(wù)開(kāi)發(fā)輔助工具。2.2 maps 接口Android 的地圖接口( com.google.android.maps )包含了一系列與地圖開(kāi)發(fā)功 能相關(guān)的類(lèi), 這些類(lèi)提供了渲染、 控制以及繪制覆蓋層等功能, 開(kāi)發(fā)者可以很容 易地進(jìn)行基于 Google Maps地圖服務(wù)的開(kāi)發(fā)。這些類(lèi)中,最重要的要數(shù) MapView 這個(gè)類(lèi)了,只需在你的布局中加入一個(gè) MapView,屏幕上就繪出一個(gè)基本的 Google Map。開(kāi)發(fā)平臺(tái)把一切與 Ma

14、p 相關(guān)的 Activity 功能抽象為 MapActivity , 要出現(xiàn)顯示 Google Map 的效果,在你執(zhí)行 MapView 的 Activity 中需要繼承 MapActivity 這個(gè)接口。Google Maps 服務(wù)要求開(kāi)發(fā)者獲取一個(gè)使用 MapView 的 API Key,以便在使用應(yīng) 用程序時(shí)能加載地圖數(shù)據(jù),這個(gè) API Key 的獲取過(guò)程也很簡(jiǎn)單。創(chuàng)建了一個(gè) MapView 后,用戶(hù)需要獲得對(duì)它的控制,那么將會(huì)用到 getController() 來(lái)獲取 MapController ,以便進(jìn)行控制或者激活這個(gè) MapView,同時(shí)通過(guò) ItemizedOverlay 以

15、及 OverLay 在 Map 上繪制 overlays 以及其他信息。這不 是 Android 庫(kù)內(nèi)的一個(gè)標(biāo)準(zhǔn)包,因此,在使用它時(shí),開(kāi)發(fā)者需要在 AndroidManifest file里加上下面一行作為 的子元素。3. 公交查詢(xún)算法 傳統(tǒng)的公交查詢(xún)算法往往是把所有的公交站點(diǎn)與站點(diǎn)間線(xiàn)段抽象成一個(gè)無(wú)向連 通圖內(nèi)的站點(diǎn)集合與線(xiàn)段集合, 形成一個(gè)公交網(wǎng)絡(luò), 然后利用圖論理論, 對(duì)換乘 進(jìn)行網(wǎng)絡(luò)分析, 建立換乘矩陣, 得到換乘方案。 這種算法的優(yōu)點(diǎn)是把公交網(wǎng)絡(luò)上 的任意兩點(diǎn)之間的換乘關(guān)系存儲(chǔ)在矩陣當(dāng)中, 換乘方案可以很快捷的生成, 缺點(diǎn) 是數(shù)據(jù)量很大,計(jì)算過(guò)程很繁瑣; 本文所采取的算法對(duì)傳統(tǒng)的公交

16、查詢(xún)算法做了 一定程度上的改進(jìn), 采用集合的數(shù)學(xué)方法來(lái)鎖定目標(biāo)數(shù)據(jù), 生成換乘方案, 依據(jù) 城市的公交網(wǎng)絡(luò)狀況,本文只考慮最多一次換乘情況。假設(shè)起點(diǎn) S 經(jīng)過(guò)線(xiàn)路集合為 LS=Li, 終點(diǎn) E 經(jīng)過(guò)線(xiàn)路集合為 LE=Lj ,其中 i 和 j 分別表示經(jīng)過(guò)的線(xiàn)路序號(hào), 取 L=LS LE,若 L 非空,則起點(diǎn) S 與終點(diǎn) E 之 間存在直達(dá)路線(xiàn), L內(nèi)元素為起終點(diǎn)經(jīng)過(guò)路線(xiàn),取 L 內(nèi)任一路線(xiàn)上 SE 段為目 標(biāo)路徑;若 L 為空,則不存在直達(dá)路線(xiàn),建立集合 P、 K,分別用來(lái)表示 LS 與 LE 所經(jīng)過(guò)的所有站點(diǎn)集合, 取集合 M=PK,若集合 M 為空,則該兩點(diǎn)之間不連 通,那么一次換乘無(wú)法連

17、通兩個(gè)站點(diǎn),若 M 不為空,則取 Mi(i=1,2,3 r) 為 中轉(zhuǎn)點(diǎn),其中 r 為集合 M 內(nèi)元素個(gè)數(shù),那么起點(diǎn) S 到中轉(zhuǎn)點(diǎn) Mi 必定共同經(jīng)過(guò) 某條線(xiàn)路,取該線(xiàn)路上 S Mi 一段為 mi,作為整個(gè)路徑的一部分,同理,截取 中轉(zhuǎn)點(diǎn) Mi 到終點(diǎn) E 所經(jīng)過(guò)線(xiàn)路 Mi E 一段 ni 作為路徑另一部分, 這樣,完整 路徑就由 mi+ni 形成。圖 3-1 表示了整個(gè)算法的執(zhí)行流程。4. 系統(tǒng)實(shí)例 本系統(tǒng)開(kāi)發(fā)平臺(tái)搭建在 JDK 1.6.4 ,Eclipse 3.3(Europa) 下, SDK 采用最新發(fā) 布的 Android1.0 版本, ADT 0.8.0 。采用 C/S 系統(tǒng)架構(gòu)模式

18、,服務(wù)器端調(diào)用 Google Maps 地圖資源,客戶(hù)端實(shí)現(xiàn)城市公交信息存儲(chǔ)與查詢(xún)以及地圖操作的基 本功能。4.1 數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)采用 XML 語(yǔ)言與 Java 語(yǔ)言結(jié)合的方式進(jìn)行界面布局, 客戶(hù)端地圖顯示需要 一個(gè)有效的地圖 API Key ,并添加一定許可,通過(guò) setSatellite( )、addZoomControls( ) 等方法進(jìn)行地圖模式切換與縮放按鈕動(dòng)態(tài)顯示, 并進(jìn)行必要 的 LayOut 參數(shù)設(shè)置。利用 Android 平臺(tái)自帶的輕量級(jí) SQLite 數(shù)據(jù)庫(kù)在本地存儲(chǔ)公交信息數(shù)據(jù), 通過(guò) android.database.sqlite.SQLiteDatabase 這個(gè)類(lèi),

19、對(duì)數(shù)據(jù)庫(kù)進(jìn)行常用的訪問(wèn) 與更新操作。該例中,建立一個(gè)包含線(xiàn)路表 line 、結(jié)點(diǎn)表 node 的 Bus.db 數(shù)據(jù) 庫(kù),并設(shè)計(jì)數(shù)據(jù)字典如表 4-1 與表 4-2 。為簡(jiǎn)化操作難度,本實(shí)例應(yīng)用 sqliteman 數(shù)據(jù)庫(kù)軟件對(duì)數(shù)據(jù)進(jìn)行錄入,并通過(guò) DDMS把 數(shù)據(jù)庫(kù)文件 push 到模擬器中,運(yùn) 行良好。4.2 公交信息查詢(xún)功能實(shí)現(xiàn) 該系統(tǒng)共涉及到五個(gè)類(lèi),其中 BusFinder 類(lèi)與 DataBaseWork 類(lèi)分別繼承于 MapActivity 與 ListActivity ,DrawPathOverLay 類(lèi)繼承于 OverLay,在信息查 詢(xún)功能模塊下,本文新建了兩個(gè)類(lèi): ProjectInfo 類(lèi)與 Line 類(lèi)。 BusFinder 類(lèi) 負(fù)責(zé)界面的布局與地圖的顯示, 以及公交路徑繪制功能的調(diào)用; DataBaseWork 類(lèi) 主要負(fù)責(zé)數(shù)據(jù)庫(kù)的設(shè)計(jì)與信息查

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論