地圖開發(fā)安卓地圖應(yīng)用程序_第1頁
地圖開發(fā)安卓地圖應(yīng)用程序_第2頁
地圖開發(fā)安卓地圖應(yīng)用程序_第3頁
地圖開發(fā)安卓地圖應(yīng)用程序_第4頁
地圖開發(fā)安卓地圖應(yīng)用程序_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

基于嵌入式安卓系統(tǒng)的手機(jī)地圖設(shè)計(jì)青島科技大學(xué)本科畢業(yè)設(shè)計(jì)(論文)PAGE26PAGE251緒論隨著安卓智能手機(jī)的發(fā)展及普及,千變?nèi)f化的安卓應(yīng)用程序如雨后春筍般涌現(xiàn)出來,安卓應(yīng)用程序正在悄無聲息的改變著人們的生活方式。應(yīng)用程序的安全可靠、方便快捷,越來越受到重視。安卓手機(jī)走進(jìn)了人們的生活,成為人們獲取資訊的主要設(shè)備。1.1研究背景及意義隨著社會(huì)的快速發(fā)展,人們的出行更加頻繁,地圖的需求日漸旺盛,而紙質(zhì)地圖不能滿足人們的要求。安卓手機(jī)地圖應(yīng)用安裝到手機(jī),可以隨時(shí)隨地查看以及搜索,而且數(shù)據(jù)全面,更新快,可以放大縮小查看,應(yīng)用程序可以定位使用者的位置,迅速快捷的查看周邊。安卓市場上的地圖以及導(dǎo)航軟件種類繁多,大多繁雜且運(yùn)行不暢,這就需要一款以地圖為主、搜索為輔,記錄信息地理信息,畫面簡潔的地圖軟件。本設(shè)計(jì)將滿足這一需求,為安卓手機(jī)用戶提供一款占存小、運(yùn)行流暢的簡潔地圖應(yīng)用程序。1.2可行性分析Android是一種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要使用于便攜設(shè)備。它由谷歌公司和開放手持設(shè)備聯(lián)盟開發(fā)和領(lǐng)導(dǎo)。除了開放手持設(shè)備聯(lián)盟之外,Android還擁有許多由全球各地開發(fā)者組成的開源社區(qū)來專門負(fù)責(zé)開發(fā)Android應(yīng)用程序和第三方Android操作系統(tǒng)來延長和擴(kuò)展Android的功能和性能。2011年8月,Android操作系統(tǒng)在全球智能手機(jī)操作系統(tǒng)的市場份額已達(dá)48%,成為全球第一大智能手機(jī)操作系統(tǒng),躍居全球最受歡迎的智能手機(jī)平臺。本設(shè)計(jì)使用了安卓系統(tǒng),且有開發(fā)手機(jī)聯(lián)盟參考例程參考,有百度地圖API可供調(diào)用。百度地圖API是為開發(fā)者免費(fèi)提供的一套基于百度地圖服務(wù)的應(yīng)用接口,包括JavaScriptAPI、Web服務(wù)API、AndroidSDK、iOSSDK、定位SDK、車聯(lián)網(wǎng)API、LBS云等多種開發(fā)工具與服務(wù),提供基本地圖展現(xiàn)、搜索、定位、逆/地理編碼、路線規(guī)劃、LBS云存儲與檢索等功能,適用于PC端、移動(dòng)端、服務(wù)器等多種設(shè)備,多種操作系統(tǒng)下的地圖應(yīng)用開發(fā)。需要用到的GPS,一般手機(jī)都配有。許多手機(jī)企業(yè)表示,GPS功能將于2008年成為手機(jī)的標(biāo)準(zhǔn)配置。據(jù)預(yù)測,2005年-2009年,手機(jī)GPS解決方案年復(fù)合增長率將達(dá)到86%。隨著成本的降低和技術(shù)的進(jìn)步,許多終端廠商和手機(jī)設(shè)計(jì)企業(yè)正在推出相應(yīng)的方案和產(chǎn)品,手機(jī)GPS芯片和解決方案呈現(xiàn)出軟硬方案之爭,功耗和接收靈敏度也不斷改善。本設(shè)計(jì)所需的開發(fā)軟件和實(shí)現(xiàn)的硬件都是觸手可及,所以完成此設(shè)計(jì)完全可行。1.3本文內(nèi)容及組織本文先概述了設(shè)計(jì)實(shí)現(xiàn)所用到的相關(guān)技術(shù),分析了技術(shù)的原理及應(yīng)用。進(jìn)而講述了設(shè)計(jì)的總體規(guī)劃,實(shí)現(xiàn)設(shè)計(jì)所用到的軟件安裝及配置及相關(guān)硬件的要求。詳細(xì)介紹設(shè)計(jì)的實(shí)現(xiàn)過程,一步步展示個(gè)個(gè)功能的原理及實(shí)現(xiàn)。最后進(jìn)入應(yīng)用的調(diào)試,記錄了開發(fā)中出現(xiàn)的錯(cuò)誤以及解決辦法。2相關(guān)技術(shù)分析本章對本設(shè)計(jì)涉及到的相關(guān)技術(shù)如嵌入式Android系統(tǒng)、GPS、百度地圖API做相關(guān)介紹。2.1嵌入式Android系統(tǒng)2.1.1系統(tǒng)介紹Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。圖1-1安卓的圖標(biāo)Fig.1-1TheLogoftheAndroid2012年7月美國科技博客網(wǎng)站BusinessInsider評選出二十一世紀(jì)十款最重要電子產(chǎn)品,Android操作系統(tǒng)和iPhone等榜上有名。2.1.2發(fā)展歷程2003年10月,AndyRubin等人創(chuàng)建Android公司,并組建Android團(tuán)隊(duì)。2007年11月5日,谷歌公司正式向外界展示了這款名為Android的操作系統(tǒng),并且在這天谷歌宣布建立一個(gè)全球性的聯(lián)盟組織,該組織由34家手機(jī)制造商、軟件開發(fā)商、電信運(yùn)營商以及芯片制造商共同組成,并與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組成開放手持設(shè)備聯(lián)盟(OpenHandsetAlliance)來共同研發(fā)改良Android系統(tǒng),這一聯(lián)盟將支持谷歌發(fā)布的手機(jī)操作系統(tǒng)以及應(yīng)用軟件,Google以Apache免費(fèi)開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。2008年,在GoogleI/O大會(huì)上,谷歌提出了AndroidHAL架構(gòu)圖,在同年8月18號,Android獲得了美國聯(lián)邦通信委員會(huì)(FCC)的批準(zhǔn),在2008年9月,谷歌正式發(fā)布了Android1.0系統(tǒng),這也是Android系統(tǒng)最早的版本。2011年8月2日,Android手機(jī)已占據(jù)全球智能機(jī)市場48%的份額,并在亞太地區(qū)市場占據(jù)統(tǒng)治地位,終結(jié)了Symbian(塞班系統(tǒng))的霸主地位,躍居全球第一。2012年1月6日,谷歌AndroidMarket已有10萬開發(fā)者推出超過40萬活躍的應(yīng)用,大多數(shù)的應(yīng)用程序?yàn)槊赓M(fèi)。AndroidMarket應(yīng)用程序商店目錄在新年首周周末突破40萬基準(zhǔn),距離突破30萬應(yīng)用僅4個(gè)月。在2011年早些時(shí)候,AndroidMarket從20萬增加到30萬應(yīng)用也花了四個(gè)月。2.1.3發(fā)行版本2008年9月發(fā)布的Android第一版,即Android1.1。2010年5月20日發(fā)布了Android2.2/2.2.1。主要的更新如下:整體性能大幅度的提升;3G網(wǎng)絡(luò)共享功能;Flash的支持;App2sd功能;全新的軟件商店;更多的Web應(yīng)用API接口的開發(fā)。此版本也成為了開發(fā)調(diào)試程序的基礎(chǔ)版本。2013年9月4日凌晨,谷歌對外公布了Android新版本Android4.4KitKat(奇巧巧克力),并且于2013年11月01日正式發(fā)布,新的4.4系統(tǒng)更加整合了自家服務(wù),力求防止安卓系統(tǒng)繼續(xù)碎片化、分散化。2.1.4系統(tǒng)構(gòu)架Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)?!?】圖2-1系統(tǒng)構(gòu)架Fig.2-1SystematicFramework從架構(gòu)圖看,Android分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫層和Linux內(nèi)核層。應(yīng)用程序Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有的應(yīng)用程序都是使用JAVA語言編寫的。應(yīng)用程序框架開發(fā)人員也可以完全訪問核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過得遵循框架的安全性)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以方便的替換程序組件。隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng),其中包括;豐富而又可擴(kuò)展的視圖(Views),可以用來構(gòu)建應(yīng)用程序,它包括列表(Lists),網(wǎng)格(Grids),文本框(Textboxes),按鈕(Buttons),甚至可嵌入的web瀏覽器。內(nèi)容提供器(ContentProviders)使得應(yīng)用程序可以訪問另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫),或者共享它們自己的數(shù)據(jù)資源管理器(ResourceManager)提供非代碼資源的訪問,如本地字符串,圖形,和布局文件(Layoutfiles)。通知管理器(NotificationManager)使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息?;顒?dòng)管理器(ActivityManager)用來管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。系統(tǒng)運(yùn)行庫Android包含一些C/C++庫,這些庫能被Android系統(tǒng)中不同的組件使用。它們通過Android應(yīng)用程序框架為開發(fā)者提供服務(wù)。以下是一些核心庫:*系統(tǒng)C庫-一個(gè)從BSD繼承來的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫Libc),它是專門為基于Embeddedlinux的設(shè)備定制的。*媒體庫-基于PacketVideoOpenCORE;該庫支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。*SurfaceManager-對顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供了2D和3D圖層的無縫融合。*LibWebCore-一個(gè)最新的web瀏覽器引擎用,支持Android瀏覽器和一個(gè)可嵌入的web視圖。2.1.5系統(tǒng)結(jié)構(gòu)1、系統(tǒng)內(nèi)核Android是運(yùn)行于Linuxkernel之上,但并不是GNU/Linux。因?yàn)樵谝话鉍NU/Linux里支持的功能,Android大都沒有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android為了達(dá)到商業(yè)應(yīng)用,必須移除被GNUGPL授權(quán)證所約束的部份,例如Android將驅(qū)動(dòng)程序移到Userspace,使得Linuxdriver與Linuxkernel徹底分開。Bionic/Libc/Kernel/并非標(biāo)準(zhǔn)的Kernelheaderfiles。Android的Kernelheader是利用工具由LinuxKernelheader所產(chǎn)生的,這樣做是為了保留常數(shù)、數(shù)據(jù)結(jié)構(gòu)與宏。Android的Linuxkernel控制包括安全(Security),存儲器管理(MemoryManagement),程序管理(ProcessManagement),網(wǎng)絡(luò)堆棧(NetworkStack),驅(qū)動(dòng)程序模型(DriverModel)等。下載Android源碼之前,先要安裝其構(gòu)建工具Repo來初始化源碼。Repo是Android用來輔助Git工作的一個(gè)工具。2、后綴簡介APK是安卓應(yīng)用的后綴,是AndroidPackage的縮寫,即Android安裝包(apk)。APK是類似SymbianSis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機(jī)中執(zhí)行即可安裝。apk文件和sis一樣,把a(bǔ)ndroidsdk編譯的工程打包成一個(gè)安裝程序文件,格式為apk。APK文件其實(shí)是zip格式,但后綴名被修改為apk,通過UnZip解壓后,可以看到Dex文件,Dex是DalvikVMexecutes的全稱,即AndroidDalvik執(zhí)行程序,并非JavaME的字節(jié)碼而是Dalvik字節(jié)碼。3、APK文件結(jié)構(gòu)一個(gè)APK文件結(jié)構(gòu)為:1.META-INF\(注:Jar文件中??梢钥吹剑?;2.res\(注:存放資源文件的目錄);3.AndroidManifest.xml(注:程序全局配置文件);4.classes.dex(注:Dalvik字節(jié)碼);5.resources.arsc(注:編譯后的二進(jìn)制資源文件)。總結(jié)下我們發(fā)現(xiàn)Android在運(yùn)行一個(gè)程序時(shí)首先需要UnZip,然后類似Symbian那樣直接執(zhí)行安裝,和WindowsMobile中的PE文件有區(qū)別,這樣做對于程序的保密性和可靠性不是很高,通過dexdump命令可以反編譯,但這樣做符合發(fā)展規(guī)律,微軟的WindowsGadgets或者說WPF也采用了這種構(gòu)架方式。在Android平臺中dalvikvm的執(zhí)行文件被打包為apk格式,最終運(yùn)行時(shí)加載器會(huì)解壓然后獲取編譯后androidmanifest.xml文件中的permission分支相關(guān)的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會(huì)發(fā)現(xiàn)執(zhí)行是不受限制的。最終我們平時(shí)安裝的文件可能不是這個(gè)文件夾,而在androidrom中系統(tǒng)的apk文件默認(rèn)會(huì)放入這個(gè)文件夾,它們擁有著root權(quán)限。4、硬件抽像層Android的HAL(硬件抽像層)是能以封閉源碼形式提供硬件驅(qū)動(dòng)模塊。HAL的目的是為了把Androidframework與Linuxkernel隔開,讓Android不至過度依賴Linuxkernel,以達(dá)成Kernelindependent的概念,也讓Androidframework的開發(fā)能在不考量驅(qū)動(dòng)程序?qū)崿F(xiàn)的前提下進(jìn)行發(fā)展。HALstub是一種代理人(Proxy)的概念,Stub是以*.so檔的形式存在。Stub向HAL“提供”操作函數(shù)(Operations),并由Androidruntime向HAL取得Stub的Operations,再Callback這些操作函數(shù)。HAL里包含了許多的Stub(代理人)。Runtime只要說明“類型”,即ModuleID,就可以取得操作函數(shù)。5、中介軟件操作系統(tǒng)與應(yīng)用程序的溝通橋梁,應(yīng)用分為兩層:函數(shù)層(Library)和虛擬機(jī)(VirtualMachine)。Bionic是Android改良libc的版本。Android同時(shí)包含了Webkit,所謂的Webkit就是AppleSafari瀏覽器背后的引擎。Surfaceflinger是就2D或3D的內(nèi)容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自制的BionicLibc。Android采用OpenCORE作為基礎(chǔ)多媒體框架。OpenCORE可分7大塊:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemCompatibilityLibrary(OSCL)、Common、OpenMAX。Android使用skia為核心圖形引擎,搭配OpenGL/ES。skia與LinuxCairo功能相當(dāng),但相較于LinuxCairo,skia功能還只是雛形的。2005年Skia公司被Google收購,2007年初,SkiaGL源碼被公開,Skia也是GoogleChrome的圖形引擎。Android的多媒體數(shù)據(jù)庫采用SQLite數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫又分為共用數(shù)據(jù)庫及私用數(shù)據(jù)庫。用戶可通過ContentResolver類(Column)取得共用數(shù)據(jù)庫。Android的中間層多以Java實(shí)現(xiàn),并且采用特殊的Dalvik虛擬機(jī)(DalvikVirtualMachine)。Dalvik虛擬機(jī)是一種“暫存器型態(tài)”(RegisterBased)的Java虛擬機(jī),變量皆存放于暫存器中,虛擬機(jī)的指令相對減少。Dalvik虛擬機(jī)可以有多個(gè)實(shí)例(Instance),每個(gè)Android應(yīng)用程序都用一個(gè)自屬的Dalvik虛擬機(jī)來運(yùn)行,讓系統(tǒng)在運(yùn)行程序時(shí)可達(dá)到優(yōu)化。Dalvik虛擬機(jī)并非運(yùn)行Java字節(jié)碼(Bytecode),而是運(yùn)行一種稱為.dex格式的文件。6、安全權(quán)限機(jī)制Android本身是一個(gè)權(quán)限分立的操作系統(tǒng)。在這類操作系統(tǒng)中,每個(gè)應(yīng)用都以唯一的一個(gè)系統(tǒng)識別身份運(yùn)行(Linux用戶ID與群組ID)。系統(tǒng)的各部分也分別使用各自獨(dú)立的識別方式。Linux就是這樣將應(yīng)用與應(yīng)用,應(yīng)用與系統(tǒng)隔離開。系統(tǒng)更多的安全功能通過權(quán)限機(jī)制提供。權(quán)限可以限制某個(gè)特定進(jìn)程的特定操作,也可以限制每個(gè)URI權(quán)限對特定數(shù)據(jù)段的訪問。Android安全架構(gòu)的核心設(shè)計(jì)思想是,在默認(rèn)設(shè)置下,所有應(yīng)用都沒有權(quán)限對其他應(yīng)用、系統(tǒng)或用戶進(jìn)行較大影響的操作。這其中包括讀寫用戶隱私數(shù)據(jù)(聯(lián)系人或電子郵件),讀寫其他應(yīng)用文件,訪問網(wǎng)絡(luò)或阻止設(shè)備待機(jī)等。安裝應(yīng)用時(shí),在檢查程序簽名提及的權(quán)限,且經(jīng)過用戶確認(rèn)后,軟件包安裝器會(huì)給予應(yīng)用權(quán)限。從用戶角度看,一款A(yù)ndroid應(yīng)用通常會(huì)要求如下的權(quán)限:撥打電話、發(fā)送短信或彩信、修改/刪除SD卡上的內(nèi)容、讀取聯(lián)系人的信息、讀取日程信的息,寫入日程數(shù)據(jù)、讀取電話狀態(tài)或識別碼、精確的(基于GPS)地理位置、模糊的(基于網(wǎng)絡(luò)獲?。┑乩砦恢谩?chuàng)建藍(lán)牙連接、對互聯(lián)網(wǎng)的完全訪問、查看網(wǎng)絡(luò)狀態(tài),查看WiFi狀態(tài)、避免手機(jī)待機(jī)、修改系統(tǒng)全局設(shè)置、讀取同步設(shè)定、開機(jī)自啟動(dòng)、重啟其他應(yīng)用、終止運(yùn)行中的應(yīng)用、設(shè)定偏好應(yīng)用、震動(dòng)控制、拍攝圖片等。一款應(yīng)用應(yīng)該根據(jù)自身提供的功能,要求合理的權(quán)限。用戶也可以分析一款應(yīng)用所需權(quán)限,從而簡單判定這款應(yīng)用是否安全。如一款應(yīng)用是不帶廣告的單機(jī)版,也沒有任何附加的內(nèi)容需要下載,那么它要求訪問網(wǎng)絡(luò)的權(quán)限就比較可疑。2.1.6應(yīng)用組件Android開發(fā)四大組件分別是:活動(dòng)(Activity):用于表現(xiàn)功能。服務(wù)(Service):后臺運(yùn)行服務(wù),不提供界面呈現(xiàn)。廣播接收器(BroadcastReceiver):用于接收廣播。內(nèi)容提供商(ContentProvider):支持在多個(gè)應(yīng)用中存儲和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫?!?】1、活動(dòng)Android中,Activity是所有程序的根本,所有程序的流程都運(yùn)行在Activity之中,Activity可以算是開發(fā)者遇到的最頻繁,也是Android當(dāng)中最基本的模塊之一。在Android的程序當(dāng)中,Activity一般代表手機(jī)屏幕的一屏。如果把手機(jī)比作一個(gè)瀏覽器,那么Activity就相當(dāng)于一個(gè)網(wǎng)頁。在Activity當(dāng)中可以添加一些Button、Checkbox等控件??梢钥吹紸ctivity概念和網(wǎng)頁的概念相當(dāng)類似。一般一個(gè)Android應(yīng)用是由多個(gè)Activity組成的。這多個(gè)Activity之間可以進(jìn)行相互跳轉(zhuǎn),例如,按下一個(gè)Button按鈕后,可能會(huì)跳轉(zhuǎn)到其他的Activity。和網(wǎng)頁跳轉(zhuǎn)稍微有些不一樣的是,Activity之間的跳轉(zhuǎn)有可能返回值,例如,從ActivityA跳轉(zhuǎn)到ActivityB,那么當(dāng)ActivityB運(yùn)行結(jié)束的時(shí)候,有可能會(huì)給ActivityA一個(gè)返回值。這樣做在很多時(shí)候是相當(dāng)方便的。當(dāng)打開一個(gè)新的屏幕時(shí),之前一個(gè)屏幕會(huì)被置為暫停狀態(tài),并且壓入歷史堆棧中。用戶可以通過回退操作返回到以前打開過的屏幕。可以選擇性的移除一些沒有必要保留的屏幕,因?yàn)锳ndroid會(huì)把每個(gè)應(yīng)用的開始到當(dāng)前的每個(gè)屏幕保存在堆棧中。2、服務(wù)Service是android系統(tǒng)中的一種組件,它跟Activity的級別差不多,但是他不能自己運(yùn)行,只能后臺運(yùn)行,并且可以和其他組件進(jìn)行交互。Service是沒有界面的長生命周期的代碼。Service是一種程序,它可以運(yùn)行很長時(shí)間,但是它卻沒有用戶界面。這么說有點(diǎn)枯燥,來看個(gè)例子。打開一個(gè)音樂播放器的程序,這個(gè)時(shí)候若想上網(wǎng)了,那么,打開Android瀏覽器,這個(gè)時(shí)候雖然已經(jīng)進(jìn)入了瀏覽器這個(gè)程序,但是,歌曲播放并沒有停止,而是在后臺繼續(xù)一首接著一首的播放。其實(shí)這個(gè)播放就是由播放音樂的Service進(jìn)行控制。當(dāng)然這個(gè)播放音樂的Service也可以停止,例如,當(dāng)播放列表里邊的歌曲都結(jié)束,或者用戶按下了停止音樂播放的快捷鍵等。Service可以在和多場合的應(yīng)用中使用,比如播放多媒體的時(shí)候用戶啟動(dòng)了其他Activity這個(gè)時(shí)候程序要在后臺繼續(xù)播放,比如檢測SD卡上文件的變化,再或者在后臺記錄地理信息位置的改變等等,總之服務(wù)嘛,總是藏在后頭的。開啟Service有兩種方式:(1)Context.startService():Service會(huì)經(jīng)歷onCreate->onStart(如果Service還沒有運(yùn)行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運(yùn)行,則只調(diào)用onStart(),所以一個(gè)Service的onStart方法可能會(huì)重復(fù)調(diào)用多次);StopService的時(shí)候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用StopService的話,Service會(huì)一直在后臺運(yùn)行。該Service的調(diào)用者再啟動(dòng)起來后可以通過stopService關(guān)閉Service。注意,多次調(diào)用Context.startservice()不會(huì)嵌套(即使會(huì)有相應(yīng)的onStart()方法被調(diào)用),所以無論同一個(gè)服務(wù)被啟動(dòng)了多少次,一旦調(diào)用Context.stopService()或者StopSelf(),他都會(huì)被停止。補(bǔ)充說明:傳遞給StartService(0的Intent對象會(huì)傳遞給onStart()方法。調(diào)用順序?yàn)椋簅nCreate-->onStart(可多次調(diào)用)-->onDestroy。(2)Context.bindService():Service會(huì)經(jīng)歷onCreate()-->onBind(),onBind將返回給客戶端一個(gè)IBind接口實(shí)例,IBind允許客戶端回調(diào)服務(wù)的方法,比如得到Service運(yùn)行的狀態(tài)或其他操作。這個(gè)時(shí)候把調(diào)用者(Context,例如Activity)會(huì)和Service綁定在一起,Context退出了,Srevice就會(huì)調(diào)用onUnbind-->onDestroyed相應(yīng)退出,所謂綁定在一起就共存亡了。3、廣播接收器在Android中,Broadcast是一種廣泛運(yùn)用的在應(yīng)用程序之間傳輸信息的機(jī)制。而BroadcastReceiver是對發(fā)送出來的Broadcast進(jìn)行過濾接受并響應(yīng)的一類組件。可以使用BroadcastReceiver來讓應(yīng)用對一個(gè)外部的事件做出響應(yīng)。這是非常有意思的,例如,當(dāng)電話呼入這個(gè)外部事件到來的時(shí)候,可以利用BroadcastReceiver進(jìn)行處理。例如,當(dāng)下載一個(gè)程序成功完成的時(shí)候,仍然可以利用BroadcastReceiver進(jìn)行處理。BroadcastReceiver不能生成UI,也就是說對于用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager來通知用戶這些事情發(fā)生了。BroadcastReceiver既可以在AndroidManifest.xml中注冊,也可以在運(yùn)行時(shí)的代碼中使用Context.registerReceiver()進(jìn)行注冊。只要是注冊了,當(dāng)事件來臨的時(shí)候,即使程序沒有啟動(dòng),系統(tǒng)也在需要的時(shí)候啟動(dòng)程序。各種應(yīng)用還可以通過使用Context.sendBroadcast()將它們自己的IntentBroadcasts廣播給其他應(yīng)用程序。4、內(nèi)容提供ContentProvider是Android提供的第三方應(yīng)用數(shù)據(jù)的訪問方案。在Android[11]中,對數(shù)據(jù)的保護(hù)是很嚴(yán)密的,除了放在SD卡中的數(shù)據(jù),一個(gè)應(yīng)用所持有的數(shù)據(jù)庫、文件等內(nèi)容,都是不允許其他直接訪問的。Andorid當(dāng)然不會(huì)真的把每個(gè)應(yīng)用都做成一座孤島,它為所有應(yīng)用都準(zhǔn)備了一扇窗,這就是ContentProvider。應(yīng)用想對外提供的數(shù)據(jù),可以通過派生ContentProvider類,封裝成一枚ContentProvider,每個(gè)ContentProvider都用一個(gè)uri作為獨(dú)立的標(biāo)識,形如:content://com.xxxxx。所有東西看著像REST的樣子,但實(shí)際上,它比REST更為靈活。和REST類似,uri也可以有兩種類型,一種是帶id的,另一種是列表的,但實(shí)現(xiàn)者不需要按照這個(gè)模式來做,給id的uri也可以返回列表類型的數(shù)據(jù),只要調(diào)用者明白,就無妨,不用苛求所謂的REST。2.17平臺優(yōu)勢1、開放性在優(yōu)勢方面,Android平臺首先就是其開發(fā)性,開發(fā)的平臺允許任何移動(dòng)終端廠商加入到Android聯(lián)盟中來。顯著的開放性可以使其擁有更多的開發(fā)者,隨著用戶和應(yīng)用的日益豐富,一個(gè)嶄新的平臺也將很快走向成熟。開發(fā)性對于Android的發(fā)展而言,有利于積累人氣,這里的人氣包括消費(fèi)者和廠商,而對于消費(fèi)者來講,最大的受益正是豐富的軟件資源。開放的平臺也會(huì)帶來更大競爭,如此一來,消費(fèi)者將可以用更低的價(jià)位購得心儀的手機(jī)。2、不受束縛在過去很長的一段時(shí)間,特別是在歐美地區(qū),手機(jī)應(yīng)用往往受到運(yùn)營商制約,使用什么功能接入什么網(wǎng)絡(luò),幾乎都受到運(yùn)營商的控制。自從2007年iPhone上市后,用戶可以更加方便地連接網(wǎng)絡(luò),運(yùn)營商的制約減少。隨著EDGE、HSDPA這些2G至3G移動(dòng)網(wǎng)絡(luò)的逐步過渡和提升,手機(jī)隨意接入網(wǎng)絡(luò)已不是運(yùn)營商口中的笑談。3、豐富的硬件這一點(diǎn)還是與Android平臺的開放性相關(guān),由于Android的開放性,眾多的廠商會(huì)推出千奇百怪,功能特色各具的多種產(chǎn)品。功能上的差異和特色,卻不會(huì)影響到數(shù)據(jù)同步、甚至軟件的兼容,如同從諾基亞Symbian風(fēng)格手機(jī)一下改用蘋果iPhone,同時(shí)還可將Symbian中優(yōu)秀的軟件帶到iPhone上使用、聯(lián)系人等資料更是可以方便地轉(zhuǎn)移。4、方便開發(fā)Android平臺提供給第三方開發(fā)商一個(gè)十分寬泛、自由的環(huán)境,不會(huì)受到各種條條框框的阻擾,可想而知,會(huì)有多少新穎別致的軟件會(huì)誕生。但也有其兩面性,血腥、暴力、情色方面的程序和游戲如何控制正是留給Android難題之一。5、Google應(yīng)用在互聯(lián)網(wǎng)的Google已經(jīng)走過10年度歷史,從搜索巨人到全面的互聯(lián)網(wǎng)滲透,Google服務(wù)如地圖、郵件、搜索等已經(jīng)成為連接用戶和互聯(lián)網(wǎng)的重要紐帶,而Android平臺手機(jī)將無縫結(jié)合這些優(yōu)秀的Google服務(wù)。2.2GPS2.2.1概述利用GPS定位衛(wèi)星,在全球范圍內(nèi)實(shí)時(shí)進(jìn)行定位、導(dǎo)航的系統(tǒng),稱為全球衛(wèi)星定位系統(tǒng),簡稱GPS。GPS是英文GlobalPositioningSystem(全球定位系統(tǒng))的簡稱。GPS起始于1958年美國軍方的一個(gè)項(xiàng)目,1964年投入使用。20世紀(jì)70年代,美國陸??杖娐?lián)合研制了新一代衛(wèi)星定位系統(tǒng)GPS。主要目的是為陸??杖箢I(lǐng)域提供實(shí)時(shí)、全天候和全球性的導(dǎo)航服務(wù),并用于情報(bào)收集、核爆監(jiān)測和應(yīng)急通訊等一些軍事目的,經(jīng)過20余年的研究實(shí)驗(yàn),耗資300億美元,到1994年,全球覆蓋率高達(dá)98%的24顆GPS衛(wèi)星星座己布設(shè)完成。在機(jī)械領(lǐng)域GPS則有另外一種含義:產(chǎn)品幾何技術(shù)規(guī)范(GeometricalProductSpecifications)-簡稱GPS,另外一種解釋為G/s(GBpers)。GPS可以提供車輛定位、防盜、反劫、行駛路線監(jiān)控及呼叫指揮等功能。要實(shí)現(xiàn)以上所有功能必須具備GPS終端、傳輸網(wǎng)絡(luò)和監(jiān)控平臺三個(gè)要素。2.2.2工作原理GPS導(dǎo)航系統(tǒng)的基本原理是測量出已知位置的衛(wèi)星到用戶接收機(jī)之間的距離,然后綜合多顆衛(wèi)星的數(shù)據(jù)就可知道接收機(jī)的具體位置。要達(dá)到這一目的,衛(wèi)星的位置可以根據(jù)星載時(shí)鐘所記錄的時(shí)間在衛(wèi)星星歷中查出。而用戶到衛(wèi)星的距離則通過記錄衛(wèi)星信號傳播到用戶所經(jīng)歷的時(shí)間,再將其乘以光速得到(由于大氣層電離層的干擾,這一距離并不是用戶與衛(wèi)星之間的真實(shí)距離,而是偽距(PR):當(dāng)GPS衛(wèi)星正常工作時(shí),會(huì)不斷地用1和0二進(jìn)制碼元組成的偽隨機(jī)碼(簡稱偽碼)發(fā)射導(dǎo)航電文。GPS系統(tǒng)使用的偽碼一共有兩種,分別是民用的C/A碼和軍用的P(Y)碼。C/A碼頻率1.023MHz,重復(fù)周期一毫秒,碼間距1微秒,相當(dāng)于300m;P碼頻率10.23MHz,重復(fù)周期266.4天,碼間距0.1微秒,相當(dāng)于30m。而Y碼是在P碼的基礎(chǔ)上形成的,保密性能更佳。導(dǎo)航電文包括衛(wèi)星星歷、工作狀況、時(shí)鐘改正、電離層時(shí)延修正、大氣折射修正等信息。它是從衛(wèi)星信號中解調(diào)制出來,以50b/s調(diào)制在載頻上發(fā)射的。導(dǎo)航電文每個(gè)主幀中包含5個(gè)子幀每幀長6s。前三幀各10個(gè)字碼;每三十秒重復(fù)一次,每小時(shí)更新一次。后兩幀共15000b。導(dǎo)航電文中的內(nèi)容主要有遙測碼、轉(zhuǎn)換碼、第1、2、3數(shù)據(jù)塊,其中最重要的則為星歷數(shù)據(jù)。當(dāng)用戶接受到導(dǎo)航電文時(shí),提取出衛(wèi)星時(shí)間并將其與自己的時(shí)鐘做對比便可得知衛(wèi)星與用戶的距離,再利用導(dǎo)航電文中的衛(wèi)星星歷數(shù)據(jù)推算出衛(wèi)星發(fā)射電文時(shí)所處位置,用戶在WGS-84大地坐標(biāo)系中的位置速度等信息便可得知??梢奊PS導(dǎo)航系統(tǒng)衛(wèi)星部分的作用就是不斷地發(fā)射導(dǎo)航電文。然而,由于用戶接受機(jī)使用的時(shí)鐘與衛(wèi)星星載時(shí)鐘不可能總是同步,所以除了用戶的三維坐標(biāo)x、y、z外,還要引進(jìn)一個(gè)Δt即衛(wèi)星與接收機(jī)之間的時(shí)間差作為未知數(shù),然后用4個(gè)方程將這4個(gè)未知數(shù)解出來。所以如果想知道接收機(jī)所處的位置,至少要能接收到4個(gè)衛(wèi)星的信號。GPS接收機(jī)可接收到可用于授時(shí)的準(zhǔn)確至納秒級的時(shí)間信息;用于預(yù)報(bào)未來幾個(gè)月內(nèi)衛(wèi)星所處概略位置的預(yù)報(bào)星歷;用于計(jì)算定位時(shí)所需衛(wèi)星坐標(biāo)的廣播星歷,精度為幾米至幾十米(各個(gè)衛(wèi)星不同,隨時(shí)變化);以及GPS系統(tǒng)信息,如衛(wèi)星狀況等。GPS接收機(jī)對碼的量測就可得到衛(wèi)星到接收機(jī)的距離,由于含有接收機(jī)衛(wèi)星鐘的誤差及大氣傳播誤差,故稱為偽距。對CA碼測得的偽距稱為CA碼偽距,精度約為20米左右,對P碼測得的偽距稱為P碼偽距,精度約為2米左右。GPS接收機(jī)對收到的衛(wèi)星信號,進(jìn)行解碼或采用其它技術(shù),將調(diào)制在載波上的信息去掉后,就可以恢復(fù)載波。嚴(yán)格而言,載波相位應(yīng)被稱為載波拍頻相位,它是收到的受多普勒頻移影響的衛(wèi)星信號載波相位與接收機(jī)本機(jī)振蕩產(chǎn)生信號相位之差。一般在接收機(jī)鐘確定的歷元時(shí)刻量測,保持對衛(wèi)星信號的跟蹤,就可記錄下相位的變化值,但開始觀測時(shí)的接收機(jī)和衛(wèi)星振蕩器的相位初值是不知道的,起始?xì)v元的相位整數(shù)也是不知道的,即整周模糊度,只能在數(shù)據(jù)處理中作為參數(shù)解算。相位觀測值的精度高至毫米,但前提是解出整周模糊度,因此只有在相對定位、并有一段連續(xù)觀測值時(shí)才能使用相位觀測值,而要達(dá)到優(yōu)于米級的定位精度也只能采用相位觀測值。按定位方式,GPS定位分為單點(diǎn)定位和相對定位(差分定位)。單點(diǎn)定位就是根據(jù)一臺接收機(jī)的觀測數(shù)據(jù)來確定接收機(jī)位置的方式,它只能采用偽距觀測量,可用于車船等的概略導(dǎo)航定位。相對定位(差分定位)是根據(jù)兩臺以上接收機(jī)的觀測數(shù)據(jù)來確定觀測點(diǎn)之間的相對位置的方法,它既可采用偽距觀測量也可采用相位觀測量,大地測量或工程測量均應(yīng)采用相位觀測值進(jìn)行相對定位。在GPS觀測量中包含了衛(wèi)星和接收機(jī)的鐘差、大氣傳播延遲、多路徑效應(yīng)等誤差,在定位計(jì)算時(shí)還要受到衛(wèi)星廣播星歷誤差的影響,在進(jìn)行相對定位時(shí)大部分公共誤差被抵消或削弱,因此定位精度將大大提高,雙頻接收機(jī)可以根據(jù)兩個(gè)頻率的觀測量抵消大氣中電離層誤差的主要部分,在精度要求高,接收機(jī)間距離較遠(yuǎn)時(shí)(大氣有明顯差別),應(yīng)選用雙頻接收機(jī)。2.2.3定位原理GPS定位的基本原理是根據(jù)高速運(yùn)動(dòng)的衛(wèi)星瞬間位置作為已知的起算數(shù)據(jù),采用空間距離后方交會(huì)的方法,確定待測點(diǎn)的位置。如圖所示,假設(shè)t時(shí)刻在地面待測點(diǎn)上安置GPS接收機(jī),可以測定GPS信號到達(dá)接收機(jī)的時(shí)間△t,再加上接收機(jī)所接收到的衛(wèi)星星歷等其它數(shù)據(jù)可以確定以下四個(gè)方程式。圖2-2GPS定位原理Fig.2-2GPSPositioningPrinciple2.2.4定位精度28顆衛(wèi)星(其中4顆備用)早已升空,分布在6條交點(diǎn)互隔60度的軌道面上,距離地面約20000千米。已經(jīng)實(shí)現(xiàn)單機(jī)導(dǎo)航精度約為10米,綜合定位的話,精度可達(dá)厘米級和毫米級。但民用領(lǐng)域開放的精度約為10米。數(shù)據(jù)表示:一般從GPS得到的數(shù)據(jù)是經(jīng)緯度。經(jīng)緯度有多種表示方法。1.)ddd.ddddd,度.度的十進(jìn)制小數(shù)部分(5位)2.)ddd.mm.mmm,度.分.分的十進(jìn)制小數(shù)部分(3位)3.)ddd.mm.ss,度.分.秒2.2.5數(shù)據(jù)GPS模塊SiRFStarIII接受每二輸出位置的數(shù)據(jù),通常$GPRMC精簡數(shù)據(jù)格式的數(shù)據(jù),包括緯度,經(jīng)度的目的,速度(結(jié)),運(yùn)動(dòng)方向角,年,月,時(shí),分,秒,毫秒,定位數(shù)據(jù)是有效的或無效的,和其他重要信息。語句格式如下:$GPRMC,,,,,,,,,,,,*,HH只需要知道位置信息,所以在閱讀唯一的,可以實(shí)際應(yīng)用。<1>:當(dāng)?shù)貢r(shí)間代表UTC。格式“當(dāng)每分鐘,小時(shí),分鐘和秒2。<2>:工作代表國家?!薄帮@示可用的數(shù)據(jù),“V”表示接受警報(bào),沒有可用的數(shù)據(jù)。<3>:代表緯度數(shù)據(jù)。“子級的格式。分分分。”<4>:緯度半球?yàn)榇淼摹癗”或“S”。<5>:代表經(jīng)度數(shù)據(jù)。格式和LD現(xiàn)狀;度分鐘。sub-sub-sub-sub.”<6>:代表經(jīng)度半球,為“E”或“軟件讀取經(jīng)緯度數(shù)據(jù),目前的位置停止分析,確定用戶的當(dāng)前位置在該地區(qū)建立和平。的方法是基于用戶的設(shè)置確定中心的緯度和經(jīng)度和緯度和經(jīng)度計(jì)算出活動(dòng)維持當(dāng)前的對象可以超過和平活動(dòng)預(yù)定半徑。結(jié)果的基礎(chǔ)上的歧視,設(shè)置相應(yīng)的標(biāo)志。2.2.6主要功能導(dǎo)航,測量,授時(shí)。2.2.7組成部分空間部分GPS的空間部分是由24顆衛(wèi)星組成(21顆工作衛(wèi)星;3顆備用衛(wèi)星),它位于距地表20200km的上空,運(yùn)行周期為12h。衛(wèi)星均勻分布在6個(gè)軌道面上(每個(gè)軌道面4顆),軌道傾角為55°。衛(wèi)星的分布使得在全球任何地方、任何時(shí)間都可觀測到4顆以上的衛(wèi)星,并能在衛(wèi)星中預(yù)存導(dǎo)航信息,GPS的衛(wèi)星因?yàn)榇髿饽Σ恋葐栴},隨著時(shí)間的推移,導(dǎo)航精度會(huì)逐漸降低。地面控制系統(tǒng)地面控制系統(tǒng)由監(jiān)測站(MonitorStation)、主控制站(MasterMonitorStation)、地面天線(GroundAntenna)所組成,主控制站位于美國科羅拉多州春田市(Colorado.Springfield)。地面控制站負(fù)責(zé)收集由衛(wèi)星傳回之訊息,并計(jì)算衛(wèi)星星歷、相對距離,大氣校正等數(shù)據(jù)。用戶設(shè)備部分用戶設(shè)備部分即GPS信號接收機(jī)。其主要功能是能夠捕獲到按一定衛(wèi)星截止角所選擇的待測衛(wèi)星,并跟蹤這些衛(wèi)星的運(yùn)行。當(dāng)接收機(jī)捕獲到跟蹤的衛(wèi)星信號后,就可測量出接收天線至衛(wèi)星的偽距離和距離的變化率,解調(diào)出衛(wèi)星軌道參數(shù)等數(shù)據(jù)。根據(jù)這些數(shù)據(jù),接收機(jī)中的微處理計(jì)算機(jī)就可按定位解算方法進(jìn)行定位計(jì)算,計(jì)算出用戶所在地理位置的經(jīng)緯度、高度、速度、時(shí)間等信息。接收機(jī)硬件和機(jī)內(nèi)軟件以及GPS數(shù)據(jù)的后處理軟件包構(gòu)成完整的GPS用戶設(shè)備。GPS接收機(jī)的結(jié)構(gòu)分為天線單元和接收單元兩部分。接收機(jī)一般采用機(jī)內(nèi)和機(jī)外兩種直流電源。設(shè)置機(jī)內(nèi)電源的目的在于更換外電源時(shí)不中斷連續(xù)觀測。在用機(jī)外電源時(shí)機(jī)內(nèi)電池自動(dòng)充電。關(guān)機(jī)后機(jī)內(nèi)電池為RAM存儲器供電,以防止數(shù)據(jù)丟失。各種類型的接受機(jī)體積越來越小,重量越來越輕,便于野外觀測使用。其次則為使用者接收器,現(xiàn)有單頻與雙頻兩種,但由于價(jià)格因素,一般使用者所購買的多為單頻接收器。2.2.8主要模塊GPS模塊系統(tǒng)采用第三代高線式GPS模塊接受SiRFStarⅢGPS模塊SiRF靈活性。該芯片是小于10米的定位精度,能夠同時(shí)追蹤20個(gè)衛(wèi)星信道。其內(nèi)部的可充電電池,可以保持星歷數(shù)據(jù),快速定位。對于數(shù)據(jù)的輸出電平的串行數(shù)據(jù)格式,通信速度。波特率4800,每名GPS數(shù)據(jù)輸出。該模塊采用MMCXGPS天線接口,為6線連接器,數(shù)據(jù)線接口電纜輸出,使用簡單,一般情況下只需要使用三個(gè)輸出線,第一連接3.5~5.5V的直流供電,第五腳是電源,腳的第二行是GPS測量輸出的是TTL電平信號,串行端口,高大于2.4V,低小于400mV,輸出驅(qū)動(dòng)器的啟動(dòng),直接與單片機(jī)的接口。如果只使用默認(rèn)設(shè)置,單片機(jī)讀取數(shù)據(jù)只能從模塊可以?!?】2.3百度地圖API百度地圖JavaScriptAPI是一套由JavaScript語言編寫的應(yīng)用程序接口,它能夠幫助開發(fā)者在應(yīng)用中構(gòu)建功能豐富、交互性強(qiáng)的地圖應(yīng)用程序。百度移動(dòng)版地圖SDK,分為Android版與Symbian版,為移動(dòng)設(shè)備地圖應(yīng)用開發(fā)提供基本地圖、本地搜索、路線規(guī)劃、定位等服務(wù)。若用戶使用該套SDK,也需要先申請key?!?】百度地圖定位SDK,與百度移動(dòng)版地圖SDK相比,是以更小的體積提供給開發(fā)者,幫助開發(fā)者完成位置信息獲取與應(yīng)用開發(fā)的工具。百度地圖目前提供Android和Symbian版本,且開發(fā)者是不需要申請key就可使用。百度地圖作為本地地圖服務(wù)器提供者,具有其他諸如谷歌地圖、高德地圖無法比擬的優(yōu)點(diǎn)。從信息量上講,百度地圖更注重用戶活動(dòng)區(qū)域,城市地理信息更詳細(xì),周邊的建筑以及商家更新快,資料較新。它支持用戶、商家以及建筑的用戶標(biāo)注,這使得用戶常用的地址信息可以更新及查找。高德等導(dǎo)航地圖提供者更注重路線的準(zhǔn)確性,以及偏遠(yuǎn)地區(qū)的路線,信息量較少?!?】3總體設(shè)計(jì)本章主要介紹系統(tǒng)設(shè)計(jì)方案,本應(yīng)用分為地圖顯示、地圖定位、查詢地址信息及保存地址信息、查看位置四部分部分,下面分別介紹每一部分的設(shè)計(jì)方案。3.1地圖顯示通過調(diào)用百度地圖API,連接百度地圖服務(wù)器,實(shí)現(xiàn)地圖的顯示。添加地圖縮放控件,實(shí)現(xiàn)地圖的放大或縮小查看。添加衛(wèi)星圖顯示功能,可以查看衛(wèi)星拍攝的鳥瞰地圖。3.2地圖定位獲得GPS使用權(quán)限以及網(wǎng)絡(luò)的使用權(quán)限,獲得經(jīng)度與緯度信息,實(shí)現(xiàn)設(shè)備的定位,并顯示到地圖。3.3地址信息顯示及保存將獲得的地址詳細(xì)信息以文本形式展現(xiàn),并可以保存到SD卡。3.4查看位置此部分實(shí)現(xiàn)經(jīng)緯度的輸入,提供給用戶經(jīng)緯度輸入的控件,將用戶所輸入的經(jīng)緯度信息顯示到地圖。4詳細(xì)設(shè)計(jì)4.1搭建Android開發(fā)環(huán)境4.1.1Android開發(fā)環(huán)境要求WindowsXP以上操作系統(tǒng),本設(shè)計(jì)采用Windows7(64位)。4.1.2安裝JDK打開JDK安裝包,根據(jù)提示安裝。安裝完成后,設(shè)置環(huán)境變量。【4】安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java-version查看JDK的版本信息4.1.3安裝Eclipse下載包文件,解壓即可,無需安裝。4.1.4安裝AndroidSDK在Android

Developers下載android-sdk_r05-windows.zi。運(yùn)行SDK

Setup.exe,檢查更新。

在用戶變量中新建PATH值為:Android

SDK中的tools絕對路徑。重新啟動(dòng)計(jì)算機(jī)。重啟計(jì)算機(jī)以后,進(jìn)入cmd命令窗口,輸入Android-h檢查SDK是不是安裝成功。

4.1.5安裝ADT插件首先在Android官方網(wǎng)站下載ADT,將壓縮包解壓。將解壓后的features包和plugins包中的內(nèi)容分別復(fù)制到Eclipse對應(yīng)的features和plugins文件夾中。重新啟動(dòng)Eclipse,選擇“Windows->Preference”菜單命令,在彈出的Preferences對話框右邊多了“Android”項(xiàng)。單擊Android項(xiàng),在對話框右邊的“SDKLocation”文本框中,設(shè)置AndroidSDK的安裝路徑。4.1.6創(chuàng)建模擬器AVD為使Android應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)建AVD。4.2新建工程新建安卓工程,本設(shè)計(jì)參數(shù)新建如下:命名為:ABCMap,建設(shè)目標(biāo)為:Android2.2,并新建Activity,命名為map,最小SDK版本為8。4.3申請百度地圖Key4.3.1簡介為了給用戶提供更安全的服務(wù),AndroidSDK自v2.1.3版本開始采用了全新的Key驗(yàn)證體系。新Key機(jī)制:每個(gè)Key僅且唯一對于1個(gè)應(yīng)用驗(yàn)證有效,即對該Key配置環(huán)節(jié)中使用的包名匹配的應(yīng)用有效。因此,多個(gè)應(yīng)用【包括多個(gè)包名】需申請多個(gè)Key,或者對1個(gè)Key進(jìn)行多次配置。用戶在使用SDK之前需要獲取百度地圖移動(dòng)版的開發(fā)密鑰,Key的申請地址為:/apiconsole/key。說明:在新key機(jī)制下,若需要在同一個(gè)工程中同時(shí)使用AndroidSDK、Android導(dǎo)航SDK和Android定位SDK可以共用同一個(gè)key。4.3.2申請步驟1登錄百度賬號登錄錄百度賬號,訪問API控制臺頁面。2登陸API控制臺登錄會(huì)跳轉(zhuǎn)到API控制臺服務(wù)3創(chuàng)建應(yīng)用點(diǎn)擊"創(chuàng)建應(yīng)用",系統(tǒng)將為您彈出創(chuàng)建AK頁面,輸入應(yīng)用名稱,將應(yīng)用類型改為:“formobile”4配置應(yīng)用在應(yīng)用類型選為“formobile”后,需要配置應(yīng)用的安全碼5獲取安全碼輸入“安全碼”。安全碼的組成規(guī)則為:Android簽名證書的sha1值+“;”+packagename(即:數(shù)字簽名+分號+包名)注意:中間的分號為英文狀態(tài)下的分號!5.1獲取sha1值運(yùn)行進(jìn)入控制臺,定位到.android文件夾下,輸入cd.android,輸入keytool-list-v-keystoredebug.keystore,會(huì)得到三種指紋證書,選取SHA1類型的證書(密鑰口令是android)5.2獲取包名包名是Android應(yīng)用程序本身在AndroidManifest.xml中定義的名稱6成功創(chuàng)建KEY在輸入安全碼后,點(diǎn)擊“確定”完成應(yīng)用的配置工作,將會(huì)得到一個(gè)創(chuàng)建的Key。4.4功能實(shí)現(xiàn)4.4.1工程配置在工程里新建libs文件夾,將開發(fā)包里的baidumapapi_v2_4_1.jar拷貝到libs根目錄下,將libBaiduMapSDK_v2_4_1.so拷貝到libs\armeabi目錄下(需要自己添加)。在工程屬性->JavaBuildPath->Libraries中選擇“AddExternalJARs”,選定baidumapapi_v2_4_1.jar,確定后返回。通過以上兩步操作后,就可以正常使用百度地圖SDK提供的全部功能了。4.4.2顯示地圖創(chuàng)建并配置工程(具體方法參見工程配置部分的介紹);在Manifest中添加使用權(quán)限、Android版本支持和對應(yīng)的開發(fā)密鑰;在布局xml文件中添加地圖控件,布局文件保存為activity_main.xml;創(chuàng)建地圖Activity,并import相關(guān)類;初始化地圖Activity、使用Key:在MyMapActivity中定義成員變量:BMapManagermBMapMan=null

溫馨提示

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

評論

0/150

提交評論