版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第十章
GPS位置服務(wù)與地圖編程
倚動(dòng)軟件工廠實(shí)驗(yàn)室
主要內(nèi)容支持位置服務(wù)的核心API位置服務(wù)(Location-BasedServices,LBS),又稱(chēng)定位服務(wù)或基于位置的服務(wù),融合了GPS定位、移動(dòng)通信、導(dǎo)航等多種技術(shù),提供了與空間位置相關(guān)的綜合應(yīng)用服務(wù)。Android為支持位置服務(wù),提供了android.location包,該包中包含了與位置信息密切相關(guān)的類(lèi)和接口,主要有:LocationManager、LocationProvider、Location、LocationListener。LocationManager(定位管理者)類(lèi)是訪問(wèn)android系統(tǒng)位置服務(wù)的入口,所有定位相關(guān)的服務(wù)、對(duì)象都將由該類(lèi)的對(duì)象來(lái)產(chǎn)生。和其他服務(wù)一樣,程序不能直接創(chuàng)建LocationManager對(duì)象,而是通過(guò)Context的getSystemService()方法來(lái)獲取。LocationManagerlocMg=getSystemService(Context.LOCATION_SERVICE)
;支持位置服務(wù)的核心API一旦得到了LocationManager對(duì)象,即可調(diào)用LocationManager類(lèi)的方法獲取定位相關(guān)的服務(wù)和對(duì)象,例如獲取最佳定位提供者、實(shí)現(xiàn)臨近警報(bào)功能等,該類(lèi)的常用方法如下:
publicStringgetBestProvider(Criteriacriteria,boolean
enabledOnly):根據(jù)指定條件返回最優(yōu)的LocationProvider;criteria表示過(guò)濾條件,enabledOnly表示是否要求處于啟用狀態(tài);
publicLocationgetLastKnownLocation(Stringprovider):根據(jù)LocationProvider獲取最近一次已知的Location,provider表示提供上次位置的LocationProvider名稱(chēng);
publicLocationProvider
getProvider(Stringname):根據(jù)名稱(chēng)返回LocationProvider;
publicList<String>getProviders(boolean
enabledOnly):獲取所有可用的LocationProvider;
publicvoidrequestLocationUpdates(Stringprovider,longminTime,floatminDistance,PendingIntentintent):通過(guò)指定的LocationProvider周期性地獲取定位信息,并通過(guò)intent啟動(dòng)相應(yīng)的組件,進(jìn)行事件處理,provider表示LocationProvider的名稱(chēng),mimTime表示每次更新的時(shí)間間隔,單位為毫秒,minDistance表示更新的最近位置,單位為米,intent每次更新時(shí)啟動(dòng)的組件;支持位置服務(wù)的核心APILocationProvider(定位提供者)類(lèi)是對(duì)定位組件的抽象表示,用來(lái)提供定位信息,能夠周期性的報(bào)告設(shè)備的地理位置,Android中支持多種LocationProvider,它們以不同的技術(shù)提供設(shè)備的當(dāng)前位置,區(qū)別在于定位的精度、速度和成本等方面。常用的LocationProvider主要有以下兩種。
network:由LocationManager.NETWORK_PROVIDER常量表示,代表通過(guò)網(wǎng)絡(luò)獲取定位信息的LocationProvider對(duì)象;
gps:由LocationManager.GPS_PROVIDER常量表示,代表通過(guò)GPS獲取定位信息的LocationProvider對(duì)象。GPS相對(duì)來(lái)說(shuō)精度更高,但它只能在戶外工作,很費(fèi)電,并且不能像用戶期望的那樣立即就能返回位置信息,而網(wǎng)絡(luò)位置提供器使用手機(jī)發(fā)射塔或Wi-Fi信號(hào)來(lái)判斷用戶位置,在室內(nèi)室外都能工作、響應(yīng)速度快,并且更加省電。支持位置服務(wù)的核心APILocationProvider類(lèi)的常用方法如下:
int
getAccuracy():返回該LocationProvider的精度;
StringgetName():返回該LocationProvider的名稱(chēng);
boolean
hasMonetaryCost():返回該LocationProvider是收費(fèi)的還是免費(fèi)的;
boolean
supportsAltitude():判斷該LocationProvider是否支持高度信息;
boolean
supportsBearing():判斷該LocationProvider是否支持方向信息;
boolean
supportsSpeed():判斷該LocationProvider是否支持速度信息;Location類(lèi)就是代表位置信息的抽象類(lèi),通過(guò)Location可獲取定位信息的精度、高度、方向、緯度、經(jīng)度、速度以及該位置的LocationProvider等信息。支持位置服務(wù)的核心APILocationListener接口用于監(jiān)聽(tīng)定位信息的監(jiān)聽(tīng)器,必須在定位管理器中注冊(cè)該對(duì)象,這樣在位置發(fā)生變化的時(shí)候就會(huì)觸發(fā)相應(yīng)的方法進(jìn)行事件處理,該監(jiān)聽(tīng)器包含的方法如下:
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)該方法;簡(jiǎn)單位置服務(wù)應(yīng)用
獲取位置信息的通用步驟為:①獲取系統(tǒng)的LocationManager對(duì)象;②使用Locationmanager,通過(guò)指定LocationProvider來(lái)獲取定位信息,定位信息由Location來(lái)對(duì)象來(lái)表示;③從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)展開(kāi)左邊Android節(jié)點(diǎn),選中Build子節(jié)點(diǎn),即可在對(duì)話框中看到默認(rèn)調(diào)試的keystore的存儲(chǔ)位置,在此為D:\androiddeveloper\AVD\.android\debug.keystore,默認(rèn)為你的模擬器文件的存儲(chǔ)目錄下。接下來(lái)根據(jù)keystore來(lái)生成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í),提示”找不到該命令”,則說(shuō)明還未在PATH環(huán)境變量中添加java安裝目錄下的bin路徑,該路徑下包含keytool.exe工具。如果keystore存儲(chǔ)路徑中包含空格時(shí),也會(huì)提示錯(cuò)誤,無(wú)法生成認(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)顯示如圖(左)所示的頁(yè)面。
6)在頁(yè)面中輸入自己的Google賬戶,如果還沒(méi)有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介紹
為了使開(kāi)發(fā)者更容易在應(yīng)用程序中添加強(qiáng)大的地圖功能,Google提供了操作地圖的API,存放在com.google.android.maps下。包括地圖的顯示、縮放、定位、標(biāo)記等,核心API如下:
MapView:用于顯示地圖的View組件。它派生自ViewGroup,它必須和MapActivity配合使用,而且只能被MapActivity創(chuàng)建,這是因?yàn)镸apView需要通過(guò)后臺(tái)的線程來(lái)連接網(wǎng)絡(luò)或文件系統(tǒng),這些線程要由MapActivity來(lái)管理。當(dāng)MapView獲取的焦點(diǎn)時(shí),它將捕捉按鍵和觸摸手勢(shì),自動(dòng)地平移和縮放地圖,還可以在地圖上繪制許多Overlay類(lèi)型標(biāo)記。
MapActivity:該類(lèi)是用于顯示地圖的Activity類(lèi),是一個(gè)抽象類(lèi),任何想要顯示MapView的Activity都需要派生自MapActivity,并且在onCreate()中,都要?jiǎng)?chuàng)建一個(gè)MapView實(shí)例。
MapController:用于控制地圖的移動(dòng)、縮放等的工具類(lèi)。根據(jù)位置信息在地圖上定位
Overlay:是一個(gè)可顯示在地圖之上的可繪制的對(duì)象,常用于繪制標(biāo)記。如果需要在地圖上標(biāo)注一些圖標(biāo)文字等信息,就需要使用Overlay,首先要將地圖上的經(jīng)度和緯度轉(zhuǎn)換
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版六年級(jí)語(yǔ)文上冊(cè)第18課《古詩(shī)三首》精美課件
- 2024年石家莊駕駛員客運(yùn)從業(yè)資格證模擬考試題
- 2024年雙鴨山從業(yè)資格證模擬考試題庫(kù)
- 2024年臨夏駕校考試客運(yùn)從業(yè)資格證考試題庫(kù)
- 浙江省七彩陽(yáng)光聯(lián)盟2022-2023學(xué)年高二11月期中生物試題(原卷版)
- 2024年工廠研發(fā)與技術(shù)轉(zhuǎn)讓合同
- 計(jì)算機(jī)等級(jí)考試一級(jí)計(jì)算機(jī)基礎(chǔ)及WPS Office應(yīng)用試題與參考答案(2025年)
- 三年級(jí)上冊(cè)數(shù)學(xué)四邊形的認(rèn)識(shí)說(shuō)課稿范文
- 京劇批評(píng)研究的回顧、新變與不足
- 感謝信,給我?guī)?lái)工作機(jī)會(huì)
- 中國(guó) 美國(guó) 日本水洗標(biāo)志對(duì)比
- 新產(chǎn)品試制流程管理辦法
- 通用橫版企業(yè)報(bào)價(jià)單模板
- 潛油泵及潛油泵加油機(jī)講義
- 物業(yè)服務(wù)公司各崗位規(guī)范用語(yǔ)
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- 航海學(xué)天文定位第四篇第6章天文定位
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 物理電學(xué)暗箱專(zhuān)題30道
- 裝修公司員工勞動(dòng)合同
- 江西上饒鉛山汽車(chē)駕駛科目三考試線路
評(píng)論
0/150
提交評(píng)論