




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PagePage 2 212.1GPS應(yīng)用開(kāi)發(fā)使用位置服務(wù))12.2Google地圖應(yīng)用PagePage 3 3GPS概述支持GPS的核心API獲取LocationProvider獲取定位信息臨近警告PagePage 4 4位置服務(wù)Location-Based Services,LBS),又稱定位服務(wù)或基于位置的服務(wù),融合了GPS定位、移動(dòng)通信、導(dǎo)航等多種技術(shù),提供了與空間位置相關(guān)的綜合應(yīng)用服務(wù)2019年7月,DoCoMo發(fā)布了第一款具有三角定位功能的手持設(shè)備2019年12月,KDDI發(fā)布第一款具有GPS功能的手機(jī)基于位置的服務(wù)發(fā)展迅速,已涉及到商務(wù)、醫(yī)療、工作和生活的各個(gè)方面,為用戶提供定位
2、、追蹤和敏感區(qū)域警告等一系列服務(wù)PagePage 5 5GPS定位服務(wù)由三部分組成,即由GPS衛(wèi)星組成的空間部分,若干地面站組成的控制部分和普通用戶手中的接收機(jī)這三部分。最早是20世紀(jì)70年代由美國(guó)陸海空三軍聯(lián)合研制的新一代空間衛(wèi)星導(dǎo)航定位系統(tǒng)。經(jīng)過(guò)20余年的研究實(shí)驗(yàn),耗資300億美元,到1994年3月,全球覆蓋率高達(dá)98%的24顆GPS衛(wèi)星星座己布設(shè)完成。北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國(guó)自行研制開(kāi)發(fā)的區(qū)域性有源三維衛(wèi)星定位與通信系統(tǒng)CNSS),是除美國(guó)的全球定位系統(tǒng)GPS)、俄羅斯的GLONASS之后第三個(gè)成熟的衛(wèi)星導(dǎo)航系統(tǒng)??稍谌蚍秶鷥?nèi)全天候、全天時(shí)為各類用戶提供高精度、高可靠的定位、導(dǎo)航、授時(shí)服
3、務(wù),并兼具短報(bào)文通信能力。第八顆和第九顆北斗衛(wèi)星于2019年被長(zhǎng)征三號(hào)甲運(yùn)載火箭送入太空預(yù)定轉(zhuǎn)移軌道。2019年12月,北斗衛(wèi)星導(dǎo)航系統(tǒng)新聞發(fā)言人冉承其表示,北斗衛(wèi)星導(dǎo)航系統(tǒng)將在2020年形成全球覆蓋能力。目前全世界有4套衛(wèi)星導(dǎo)航系統(tǒng):中國(guó)北斗、美國(guó)GPS、俄羅斯“格洛納斯”、歐洲“伽利略”。PagePage 6 6Android平臺(tái)支持提供位置服務(wù)的API,在開(kāi)發(fā)過(guò)程中主要用到LocationManager和LocationProviders對(duì)象LocationManager可以用來(lái)獲取當(dāng)前的位置,追蹤設(shè)備的移動(dòng)路線,或設(shè)定敏感區(qū)域,在進(jìn)入或離開(kāi)敏感區(qū)域時(shí)設(shè)備會(huì)發(fā)出特定警報(bào)LocationP
4、roviders是能夠提供定位功能的組件集合,集合中的每種組件以不同的技術(shù)提供設(shè)備的當(dāng)前位置,區(qū)別在于定位的精度、速度和成本等方面PagePage 7 7LocationManagerLocationProviderLocationPagePage 8 8提供位置服務(wù),首先需要獲得LocationManager對(duì)象 獲取LocationManager可以通過(guò)調(diào)用android.app.Activity.getSystemService()函數(shù)實(shí)現(xiàn)代碼第1行的Context.LOCATION_SERVICE指明獲取的服務(wù)是位置服務(wù)代碼第2行的getSystemService()函數(shù),可以根據(jù)服務(wù)
5、名稱獲取Android提供的系統(tǒng)級(jí)服務(wù)PagePage 9 9在獲取到LocationManager后,還需要指定LocationManager的定位方法,然后才能夠調(diào)用LocationManagergetLastKnowLocation()方法獲取當(dāng)前位置LocationManager支持的定位方法有兩種GPS定位:可以提供更加精確的位置信息,但定位速度和質(zhì)量受到衛(wèi)星數(shù)量和環(huán)境情況的影響網(wǎng)絡(luò)定位:提供的位置信息精度差,但速度較GPS定位快PagePage 1010LocationManager支持定位方法在指定LocationManager的定位方法后,則可以調(diào)用getLastKnowLoc
6、ation()方法獲取當(dāng)前的位置信息PagePage 1111以使用GPS定位為例,獲取位置信息的代碼如下代碼第2行返回的Location對(duì)象中,包含了可以確定位置的信息,如經(jīng)度、緯度和速度等通過(guò)調(diào)用Location中的getLatitude()和getLonggitude()方法可以分別獲取位置信息中的緯度和經(jīng)度,示例代碼如下PagePage 1212LocationManager提供了一種便捷、高效的位置監(jiān)視方法requestLocationUpdates(),可以根據(jù)位置的距離變化和時(shí)間間隔設(shè)定產(chǎn)生位置改變事件的條件,這樣可以避免因微小的距離變化而產(chǎn)生大量的位置改變事件LocationM
7、anager中設(shè)定監(jiān)聽(tīng)位置變化的代碼如下第1個(gè)參數(shù)是定位的方法,GPS定位或網(wǎng)絡(luò)定位第2個(gè)參數(shù)是產(chǎn)生位置改變事件的時(shí)間間隔,單位為微秒第3個(gè)參數(shù)是距離條件,單位是米第4個(gè)參數(shù)是回調(diào)函數(shù),在滿足條件后的位置改變事件的處理函數(shù)PagePage 1313代碼將產(chǎn)生位置改變事件的條件設(shè)定為距離改變10米,時(shí)間間隔為2秒 實(shí)現(xiàn)locationListener的代碼如下PagePage 1414第2行代碼onLocationChanged()在設(shè)備的位置改變時(shí)被調(diào)用第4行的onProviderDisabled()在用戶禁用具有定位功能的硬件時(shí)被調(diào)用第6行的onProviderEnabled()在用戶啟用具
8、有定位功能的硬件時(shí)被調(diào)用第8行的onStatusChanged()在提供定位功能的硬件的狀態(tài)改變時(shí)被調(diào)用,如從不可獲取位置信息狀態(tài)到可以獲取位置信息的狀態(tài),反之亦然PagePage 1515為了使GPS定位功能生效,還需要在AndroidManifest.xml文件中加入用戶許可 實(shí)現(xiàn)代碼如下PagePage 1616LocationManger、LoactionProvider、Loation常用方法見(jiàn)相關(guān)文檔(幫助文檔,android.location.*)PagePage 1717獲取所有可用LocationProvider getAllProviders()例子:AllProvider
9、rsTestPagePage 1818通過(guò)名稱獲得指定LocationProvider例如獲得基于GPS的LocationProviderLocationProvider lp=lm.getProvider(LocationManager.GPS_PROVIDER)PagePage 1919根據(jù)Criteria獲得LocationProvider,通過(guò)以下常用方法設(shè)置條件:setAccuracy(int accuracy):設(shè)置對(duì)LocationProvider的精度要求setAltitudeRequired(boolean altitudeR):設(shè)置要求LocationProvider的能提
10、供高度信息setBearingRequired(boolean beanR):設(shè)置要求LocationProvider能提供的方向信息setCostAllowed(boolean costA):設(shè)置要求LocationProvider是否免費(fèi)setPowerRequirement(int level):設(shè)置要求LocationProvider的耗電量setSpeedRequired(boolean speedR):設(shè)置要求LocationProvider能提供速度信息例子:FreeProvidersTestPagePage 2020通過(guò)模擬器發(fā)送GPS信息首先打開(kāi)DDMS中的模擬器控制,在Lo
11、cation Controls中的Longitude和Latitude部分輸入設(shè)備當(dāng)前的經(jīng)度和緯度,然后點(diǎn)擊Send按鈕,就將虛擬的位置信息發(fā)送到Android模擬器中PagePage 2121獲取定位數(shù)據(jù)項(xiàng)目實(shí)例:LocationTestPagePage 2222當(dāng)用戶手機(jī)不斷臨近指定固定點(diǎn)時(shí),當(dāng)與該固定點(diǎn)的距離小于指定范圍時(shí),系統(tǒng)可以觸發(fā)相應(yīng)的處理。LocationManager中提供了addProximity(double latitude,double longitude,float radius,long expiration,PengdingIntent intent) 項(xiàng)目實(shí)例:
12、ProximityTestPagePage 232312.1GPS應(yīng)用開(kāi)發(fā)使用位置服務(wù))12.2Google地圖應(yīng)用PagePage 2424申請(qǐng)地圖密鑰Map API Key) 使用地圖 GPS導(dǎo)航 根據(jù)地址定位PagePage 2525地圖密鑰的作用首先向Google申請(qǐng)一組經(jīng)過(guò)驗(yàn)證的“地圖密鑰”(Map API Key),然后使用MapViewcom.google.android.maps.MapView就可以將Google地圖嵌入到Android應(yīng)用程序中,才能正常使用Google的地圖服務(wù)“地圖密鑰是訪問(wèn)Google地圖數(shù)據(jù)的密鑰,無(wú)論是模擬器還是在真實(shí)設(shè)備中需要使用這個(gè)密鑰Page
13、Page 2626地圖密鑰的步驟注冊(cè)“地圖密鑰的第一步是申請(qǐng)一個(gè)Google賬戶,也就是Gmail電子郵箱,申請(qǐng)地址是httpsgoogle/accounts/Login找到保存Debug證書的keystore的保存位置,并獲取證書的MD5散列值keystore是一個(gè)密碼保護(hù)的文件,用來(lái)存儲(chǔ)Android提供的用于調(diào)試的證書,獲取MD5散列值的主要目的是為下一步申請(qǐng)“地圖密鑰做準(zhǔn)備PagePage 2727地圖密鑰的步驟獲取證書的保存地址:首先打開(kāi)Eclipse,通過(guò)Window Preferences打開(kāi)配置窗體,在Android Build欄中的Default PagePage 2828地
14、圖密鑰的步驟為了獲取Debug證書MD5散列值的,需要打開(kāi)命令行工具CMD,然后切換到keystore的目錄,輸入如下命令如果提示無(wú)法找到keytool,可以將/bin的路徑添加到系統(tǒng)的PATH變量中PagePage 2929地圖密鑰的步驟在提示輸入keystore密碼時(shí),輸入缺省密碼android,MD5散列將顯示在最下方。本人的MD5散列值為AD:4A:D9:73:0B:0D:62:B6:1B:D9:9D:ED:9C:05:A3:25PagePage 3030地圖密鑰的步驟申請(qǐng)“地圖密鑰的最后一步是打開(kāi)申請(qǐng)頁(yè)面,輸入MD5散列值。申請(qǐng)頁(yè)面的地址是code.google/intl/zh-CN
15、/android/add-ons/google-apis/maps-api-signup.htmlPagePage 3131地圖密鑰的步驟PagePage 3232地圖密鑰的步驟輸入MD5散列值后,點(diǎn)擊Generate API Key按鈕,將提示用戶輸入Google賬戶,正確輸入Google賬戶后,獲得密鑰:0r2Ub0iJ9oPMfnv-HxXxYvZ6_7vmKW-Z9BpZbeAPagePage 3333地圖密鑰的步驟例:若獲取的“地圖密鑰是:0r2Ub0iJ9oPMfnv-HxXxYvZ6_7vmKW-Z9BpZbeA,在以后使用到MapView的時(shí)候都需要輸入這個(gè)密鑰每位開(kāi)發(fā)者都需要
16、根據(jù)自己的Debug證書的MD5散列值,到Google網(wǎng)站上申請(qǐng)一個(gè)用于調(diào)試程序的“地圖密鑰”,而不能直接使用別人申請(qǐng)的密鑰PagePage 3434三個(gè)主要APIMapView的地圖的顯示控件,可以設(shè)置不同的顯示模式,例如衛(wèi)星模式或地圖模式MapController則是MapView的控制器,可以控制MapView的顯示中心和縮放級(jí)別等功能GeoPoint是對(duì)緯度、經(jīng)度的封裝。需要指出的是,當(dāng)程序創(chuàng)建GeoPoint對(duì)象時(shí),需要把經(jīng)度和緯度乘以10的6次方。PagePage 3535MapView提供如下方法:MapController getController():獲取該MapView關(guān)
17、聯(lián)的MapControllerGeopoint getMapCenter():獲取該MapView所顯示的中心int getMaxZoomLevel():獲取該MapView所支持的最大的放大級(jí)別List getOverlays():獲取該MapView上顯示的全部OverlayProjection getProjection():獲取屏幕像素坐標(biāo)與經(jīng)緯度坐標(biāo)之間的投影關(guān)系int getZoomLevel():獲取該屏幕當(dāng)前的縮放級(jí)別setSatellite(boolean on):設(shè)置是否顯示衛(wèi)星地圖setTraffic(boolean on):設(shè)置是否顯示交通情況PagePage 3636
18、MapController提供了 animateTo(GePoint pint)方法 ,該方法控制地圖定位到指定的地理位置。PagePage 3737使用Overlay通過(guò)在MapView上添加覆蓋層,可以在指定的位置加添加注解、繪制圖像或處理進(jìn)行鼠標(biāo)事件等Google地圖上可以加入多個(gè)覆蓋層,所有覆蓋層均都在地圖圖層之上,每個(gè)覆蓋層均可以對(duì)用戶的點(diǎn)擊事件做出響應(yīng)創(chuàng)建覆蓋層繼承Overlay類的子類,并通過(guò)重載draw()方法為指定位置添加注解PagePage 3838項(xiàng)目實(shí)例演示: 根據(jù)用戶輸入的經(jīng)緯度在地圖上定位LocationMapPagePage 3939項(xiàng)目實(shí)例代碼分析創(chuàng)建andro
19、id項(xiàng)目時(shí),在select Build Target步驟中需要選擇Google APIsPagePage 4040項(xiàng)目實(shí)例代碼分析MapView,同ImageView 一樣,在布局文件中定義好,并輸入密鑰PagePage 4141項(xiàng)目實(shí)例代碼分析Activity繼承MapActivity代碼中定位的步驟:獲取MapView對(duì)應(yīng)的MapController對(duì)象根據(jù)程序獲取的經(jīng)度、緯度創(chuàng)建Geopoint對(duì)象調(diào)用MapView所關(guān)聯(lián)的MapController對(duì)象的animateTo(GeoPoint point)方法定位到指定位置當(dāng)程序把地圖定位到指定位置后,需要輸出一些說(shuō)明信息,則需要通過(guò)在指
20、定位置上繪制一個(gè)Overlay對(duì)象,用于標(biāo)識(shí)該位置點(diǎn)。程序中添加的對(duì)象為PosOverLay實(shí)例,該P(yáng)osOverLay繼承了Overlay,并在指定位置繪制一個(gè)簡(jiǎn)單定位圖片。PagePage 4242項(xiàng)目實(shí)例代碼分析通過(guò)Overlay在Google Map的指定位置繪制圖片需要如下三步:獲取MapView上屏幕坐標(biāo)與經(jīng)緯度坐標(biāo)之間的關(guān)系調(diào)用Projection的toPixels方法把經(jīng)緯度坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo)調(diào)用Canvas的drawBitmap方法在屏幕的指定位置繪制圖片PagePage 4343項(xiàng)目實(shí)例代碼分析程序需要使用Google map API,在AndroidMainifest.xml文件的 元素中添加如下子元素使用Google Map時(shí),所有數(shù)據(jù)來(lái)自網(wǎng)絡(luò),因此該程序應(yīng)該具有訪問(wèn)網(wǎng)絡(luò)的權(quán)限。PagePage 4444將前面介紹的GPS定位與Google M
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 行業(yè)協(xié)會(huì)會(huì)員委員會(huì)職責(zé)
- 出租車公司春節(jié)服務(wù)安排通知范文
- 金融服務(wù)項(xiàng)目工期控制的應(yīng)對(duì)措施
- 餐飲業(yè)服務(wù)員招聘登記表模板范文
- 校園內(nèi)傳染病防控宣傳措施
- 教科版小學(xué)科學(xué)素養(yǎng)提升計(jì)劃
- 一年級(jí)跨學(xué)科音樂(lè)教學(xué)計(jì)劃
- 中小學(xué)創(chuàng)客教育活動(dòng)計(jì)劃
- 婦產(chǎn)科營(yíng)養(yǎng)指導(dǎo)工作計(jì)劃
- 特殊教育學(xué)生心理輔導(dǎo)與復(fù)學(xué)流程
- SZDB-Z 173-2016 物業(yè)綠化養(yǎng)護(hù)管理規(guī)范
- 報(bào)價(jià)單模板完
- 初中數(shù)學(xué)北師大七年級(jí)下冊(cè)(2023年新編)綜合與實(shí)踐綜合與實(shí)踐-設(shè)計(jì)自己的運(yùn)算程序 王穎
- 風(fēng)電場(chǎng)工程勘察設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
- 可燃?xì)怏w報(bào)警系統(tǒng)安裝記錄
- 項(xiàng)目管理人員安全教育課件
- 伸臂式焊接變位機(jī)設(shè)計(jì)總體設(shè)計(jì)和旋轉(zhuǎn)減速器設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 生產(chǎn)作業(yè)流程圖
- 血細(xì)胞儀白細(xì)胞五分類法原理和散點(diǎn)圖特征
- 山東省醫(yī)院目錄
- 電子匯劃業(yè)務(wù)收費(fèi)憑證
評(píng)論
0/150
提交評(píng)論