版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十章
GPS位置服務(wù)與地圖編程
倚動(dòng)軟件工廠實(shí)驗(yàn)室
主要內(nèi)容支持位置服務(wù)的核心API位置服務(wù)(Location-BasedServices,LBS),又稱定位服務(wù)或基于位置的服務(wù),融合了GPS定位、移動(dòng)通信、導(dǎo)航等多種技術(shù),提供了與空間位置相關(guān)的綜合應(yīng)用服務(wù)。Android為支持位置服務(wù),提供了android.location包,該包中包含了與位置信息密切相關(guān)的類和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。LocationManager(定位管理者)類是訪問android系統(tǒng)位置服務(wù)的入口,所有定位相關(guān)的服務(wù)、對(duì)象都將由該類的對(duì)象來產(chǎn)生。和其他服務(wù)一樣,程序不能直接創(chuàng)建LocationManager對(duì)象,而是通過Context的getSystemService()方法來獲取。LocationManagerlocMg=getSystemService(Context.LOCATION_SERVICE)
;支持位置服務(wù)的核心API一旦得到了LocationManager對(duì)象,即可調(diào)用LocationManager類的方法獲取定位相關(guān)的服務(wù)和對(duì)象,例如獲取最佳定位提供者、實(shí)現(xiàn)臨近警報(bào)功能等,該類的常用方法如下:
publicStringgetBestProvider(Criteriacriteria,boolean
enabledOnly):根據(jù)指定條件返回最優(yōu)的LocationProvider;criteria表示過濾條件,enabledOnly表示是否要求處于啟用狀態(tài);
publicLocationgetLastKnownLocation(Stringprovider):根據(jù)LocationProvider獲取最近一次已知的Location,provider表示提供上次位置的LocationProvider名稱;
publicLocationProvider
getProvider(Stringname):根據(jù)名稱返回LocationProvider;
publicList<String>getProviders(boolean
enabledOnly):獲取所有可用的LocationProvider;
publicvoidrequestLocationUpdates(Stringprovider,longminTime,floatminDistance,PendingIntentintent):通過指定的LocationProvider周期性地獲取定位信息,并通過intent啟動(dòng)相應(yīng)的組件,進(jìn)行事件處理,provider表示LocationProvider的名稱,mimTime表示每次更新的時(shí)間間隔,單位為毫秒,minDistance表示更新的最近位置,單位為米,intent每次更新時(shí)啟動(dòng)的組件;支持位置服務(wù)的核心APILocationProvider(定位提供者)類是對(duì)定位組件的抽象表示,用來提供定位信息,能夠周期性的報(bào)告設(shè)備的地理位置,Android中支持多種LocationProvider,它們以不同的技術(shù)提供設(shè)備的當(dāng)前位置,區(qū)別在于定位的精度、速度和成本等方面。常用的LocationProvider主要有以下兩種。
network:由LocationManager.NETWORK_PROVIDER常量表示,代表通過網(wǎng)絡(luò)獲取定位信息的LocationProvider對(duì)象;
gps:由LocationManager.GPS_PROVIDER常量表示,代表通過GPS獲取定位信息的LocationProvider對(duì)象。GPS相對(duì)來說精度更高,但它只能在戶外工作,很費(fèi)電,并且不能像用戶期望的那樣立即就能返回位置信息,而網(wǎng)絡(luò)位置提供器使用手機(jī)發(fā)射塔或Wi-Fi信號(hào)來判斷用戶位置,在室內(nèi)室外都能工作、響應(yīng)速度快,并且更加省電。支持位置服務(wù)的核心APILocationProvider類的常用方法如下:
int
getAccuracy():返回該LocationProvider的精度;
StringgetName():返回該LocationProvider的名稱;
boolean
hasMonetaryCost():返回該LocationProvider是收費(fèi)的還是免費(fèi)的;
boolean
supportsAltitude():判斷該LocationProvider是否支持高度信息;
boolean
supportsBearing():判斷該LocationProvider是否支持方向信息;
boolean
supportsSpeed():判斷該LocationProvider是否支持速度信息;Location類就是代表位置信息的抽象類,通過Location可獲取定位信息的精度、高度、方向、緯度、經(jīng)度、速度以及該位置的LocationProvider等信息。支持位置服務(wù)的核心APILocationListener接口用于監(jiān)聽定位信息的監(jiān)聽器,必須在定位管理器中注冊(cè)該對(duì)象,這樣在位置發(fā)生變化的時(shí)候就會(huì)觸發(fā)相應(yīng)的方法進(jìn)行事件處理,該監(jiān)聽器包含的方法如下:
publicabstractvoidonLocationChanged(Locationlocation):位置發(fā)生改變時(shí)回調(diào)該方法;
publicabstractvoidonProviderDisabled(Stringprovider):Provider禁用時(shí)回調(diào)該方法;
publicabstractvoidonProviderEnabled(Stringprovider):Provider啟用時(shí)回調(diào)該方法;
publicabstractvoidonStatusChanged(Stringprovider,intstatus,Bundleextras):當(dāng)Provider狀態(tài)發(fā)生變化時(shí)回調(diào)該方法;簡單位置服務(wù)應(yīng)用
獲取位置信息的通用步驟為:①獲取系統(tǒng)的LocationManager對(duì)象;②使用Locationmanager,通過指定LocationProvider來獲取定位信息,定位信息由Location來對(duì)象來表示;③從Location對(duì)象中獲取定位信息;案例:獲取位置信息
【示例代碼:codes\10\LocationService】
使用Google地圖的準(zhǔn)備工作
Android系統(tǒng)默認(rèn)并不支持調(diào)用GoogleMap,為了正常調(diào)用GoogleMap服務(wù),需要先進(jìn)行如下準(zhǔn)備工作。1、獲取GoogleMapAPIKey為了在應(yīng)用程序中調(diào)用GoogleMap,必須先獲取GoogleMapAPI的Key,步驟如下:1)單擊Eclipse的“Window”菜單,然后選擇Preferences菜單項(xiàng),彈出如圖所示對(duì)話框;使用Google地圖的準(zhǔn)備工作2)展開左邊Android節(jié)點(diǎn),選中Build子節(jié)點(diǎn),即可在對(duì)話框中看到默認(rèn)調(diào)試的keystore的存儲(chǔ)位置,在此為D:\androiddeveloper\AVD\.android\debug.keystore,默認(rèn)為你的模擬器文件的存儲(chǔ)目錄下。接下來根據(jù)keystore來生成GoogleAPI的Key;3)使用JDK提供的keytool工具為Androidkeystore生成認(rèn)證指紋,啟動(dòng)命令行窗口輸入如下命令。keytool–list–keystore
<Androidkeystore的存儲(chǔ)位置>,在此為:keytool–list–keystoreD:\androiddeveloper\AVD\.android\debug.keystore使用Google地圖的準(zhǔn)備工作注意:如果運(yùn)行keytool工具時(shí),提示”找不到該命令”,則說明還未在PATH環(huán)境變量中添加java安裝目錄下的bin路徑,該路徑下包含keytool.exe工具。如果keystore存儲(chǔ)路徑中包含空格時(shí),也會(huì)提示錯(cuò)誤,無法生成認(rèn)證指紋,此時(shí)需修改AVD的存儲(chǔ)路徑,做法是在環(huán)境變量中,添加Android_SDK_Home變量,變量值為電腦上的任意路徑,不包含空格。設(shè)置完成后,需重啟Eclipse。
4)記住上面生成的認(rèn)證指紋,登錄
/maps/documentation/android/maps-api-signup站點(diǎn),界面如圖所示;使用Google地圖的準(zhǔn)備工作
5)在界面的文本框中輸入keytool工具生成的認(rèn)證指紋,單擊GenerateAPIKey按鈕,系統(tǒng)顯示如圖(左)所示的頁面。
6)在頁面中輸入自己的Google賬戶,如果還沒有Google賬戶,可以先注冊(cè)一個(gè),如果已經(jīng)有了Google賬號(hào),輸入Google賬戶和密碼,登錄后如圖(右)所示。使用Google地圖的準(zhǔn)備工作2、創(chuàng)建支持GoogleMapAPI的AVD
AndroidSDK默認(rèn)并不支持GoogleMap,為了得到支持GoogleMap的SDK,必須為AndroidSDK添加相應(yīng)的插件。啟動(dòng)Android的SDKManager.exe工具,顯示如圖(左)所示的窗口,勾選GoogleAPI前面的復(fù)選框,然后單擊Installpackage按鈕。安裝完畢后,需要?jiǎng)?chuàng)建一個(gè)支持GoogleMap的模擬器,單擊Eclipse中的模擬器管理界面,新建一個(gè)模擬器,如圖(右)所示。根據(jù)位置信息在地圖上定位
Google地圖核心API介紹
為了使開發(fā)者更容易在應(yīng)用程序中添加強(qiáng)大的地圖功能,Google提供了操作地圖的API,存放在com.google.android.maps下。包括地圖的顯示、縮放、定位、標(biāo)記等,核心API如下:
MapView:用于顯示地圖的View組件。它派生自ViewGroup,它必須和MapActivity配合使用,而且只能被MapActivity創(chuàng)建,這是因?yàn)镸apView需要通過后臺(tái)的線程來連接網(wǎng)絡(luò)或文件系統(tǒng),這些線程要由MapActivity來管理。當(dāng)MapView獲取的焦點(diǎn)時(shí),它將捕捉按鍵和觸摸手勢(shì),自動(dòng)地平移和縮放地圖,還可以在地圖上繪制許多Overlay類型標(biāo)記。
MapActivity:該類是用于顯示地圖的Activity類,是一個(gè)抽象類,任何想要顯示MapView的Activity都需要派生自MapActivity,并且在onCreate()中,都要?jiǎng)?chuàng)建一個(gè)MapView實(shí)例。
MapController:用于控制地圖的移動(dòng)、縮放等的工具類。根據(jù)位置信息在地圖上定位
Overlay:是一個(gè)可顯示在地圖之上的可繪制的對(duì)象,常用于繪制標(biāo)記。如果需要在地圖上標(biāo)注一些圖標(biāo)文字等信息,就需要使用Overlay,首先要將地圖上的經(jīng)度和緯度轉(zhuǎn)換
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 真心話一百道題目及答案
- 多元共治理論視域下我國城市社區(qū)生活垃圾分類治理路徑研究-基于江蘇省H市的調(diào)查
- 復(fù)合材料固化工藝優(yōu)化-第1篇
- 2025年海南省公需課學(xué)習(xí)-生態(tài)環(huán)境公益訴訟制度研究406
- 2025年質(zhì)量月質(zhì)量知識(shí)競賽試題集及答案(共50題)
- 2025年?duì)I養(yǎng)健康顧問知識(shí)競賽題庫及答案(共100題)
- 期末培優(yōu)驗(yàn)收卷(試卷)2025-2026學(xué)年六年級(jí)語文上冊(cè)(統(tǒng)編版)
- 南昌初三考試真題及答案
- 酒店住宿安全試題及答案
- 農(nóng)村建房承建合同范本
- 野性的呼喚讀書分享
- 極簡化改造實(shí)施規(guī)范
- 達(dá)托霉素完整版本
- 科研方法論智慧樹知到期末考試答案章節(jié)答案2024年南開大學(xué)
- DBJ51-T 139-2020 四川省玻璃幕墻工程技術(shù)標(biāo)準(zhǔn)
- 一帶一路教學(xué)課件教學(xué)講義
- 工廠蟲害控制分析總結(jié)報(bào)告
- 回顧性中醫(yī)醫(yī)術(shù)實(shí)踐資料(醫(yī)案)表
- 延期交房起訴狀
- 廣東省消防安全重點(diǎn)單位消防檔案
- 高考日語形式名詞わけ、べき、はず辨析課件
評(píng)論
0/150
提交評(píng)論