《软件工程毕业设计-android跑步应用开发.doc》由会员分享,可在线阅读,更多相关《软件工程毕业设计-android跑步应用开发.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、河北农业大学本科毕业论文(设计)题 目: Android跑步应用开发 目录1 绪论11.1 研究背景与意义11.2 国内外研究现状11.3 研究内容与目标22 理论技术基础22.1 理论基础22.1.1. 系统内核22.1.2. 后缀简介22.1.3. 硬件抽像层32.1.4. 中介软件42.1.5. 安全权限机制42.1.6. 百度地图定位52.2 技术基础53 系统分析与设计63.1 需求分析63.1.1. 编写目的63.1.2. 术语定义73.2 总体设计73.2.1. 系统功能73.2.2. 软件结构83.2.3. 程序流程图83.3 详细设计93.3.1. 总体界面设计93.3.2.
2、 模块功能设计104 系统实现114.1 主要界面114.2 代码结构134.3 开发过程遇到的问题205 总结21参考文献22附录242摘要现在几乎每个人都有移动设备,而随着科技的进步,移动设备已经不仅仅是通讯工具,也成为了人们手中的玩物,甚至成为一些其他的工具,而各种各样的移动应用出现在市场上,人们对移动应用的需求也渐渐增大。随着人们对健康生活方式的追求,他们对一些健康类应用的需求也越来越大。本论文从学习、研究和探讨的角度,介绍了Android开发的现状以及Android开发未来的发展趋势,然后以本系统为例从需求分析、应用技术、设计架构思想、系统详细模块实现上分别叙述了它的各种技术原理及实
3、现方案,进而简单的阐明了Android开发以及百度地图API使用的相关技术。然后以本系统为例从需求分析、应用技术、设计架构思想、数据库设计、系统详细模块实现上分别叙述了它的各种技术原理及实现方案,进而简单的阐明了开发一个基于Android的健康类应用开发的相关技术。关键字:Android开发、百度地图APIABSTRACTNow almost everyone has a mobile device, and with the progress of science and technology, the mobile device is not just a communication to
4、ol, has also become a plaything in the hands of the people, even as some of the other tools, and a variety of mobile applications appear on the market, people on the move should use demand also gradually increase. In the pursuit of a healthy lifestyle, their demand for some health class application
5、is also more and more big.In this paper, from the study, research and on the point of view, the future development trend of Android development and the development of Android, and then take this system as the example with module from requirement analysis, application technology, design thought, syst
6、em realization principle of various techniques are described and its implementation scheme, and then simply explained Android development and related technology Baidu map using API. And then take this system as the example with module from requirement analysis, application technology, design archite
7、cture, database design, system realization principle of various techniques are described and its implementation scheme, and then simply illustrates the development of a correlation based techniques and health development of Android application.KeyWords:Android Develope 、Baidu Map API21 绪论1.1 研究背景与意义
8、Android曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,并从此踏上了飞速发展的道路。经过这几年的发展,它已经发展成了一个平台、一个生态体系。现在Android在移动领域已经得到了广泛的应用。根据Google于2011年6月份公布的数字,每天激活的Android设备高达50万台,今天,施密特再次更新了这一数据现在,每天被激活的Android设备数量达到了150万份。谷歌安卓系统负责人桑德尔湃柴(Sundar Pichai)2013年09月宣布,采用安卓移动操作系统设备的激活量已经超过10亿台。在全球销售的智能手机中,有四分之三采用安卓操作系统,并且有越来越多
9、的平板电脑采用这个操作系统。 相比于Symbian的日落西山,以及苹果的封闭、Windows Phone的前途未卜,Android无疑代表了当前行业发展的主流趋势:开放平台取代了封闭平台。让参与者均能通过自己的努力而获益。从2008年9月公布1.0版本以来,经过近几年的跨越式发展,现在Android已经发展到了4.4版本。2013年9月4日凌晨,谷歌对外公布了Android新版本Android 4.4KitKat(奇巧巧克力),并且于2013年11月01日正式发布,新的4.4系统更加整合了自家服务,力求防止安卓系统继续碎片化、分散化。目前市场上占主流的并不是4.4版本,当然,相信随着时间的推移
10、,4.4及后续版本会得到越来越多的设备的支持。1.2 国内外研究现状目前国内的Android开发还是主要以应用开发为主,主要分成3类:为企业开发应用、开发通用应用(放到Android Market或者其他App Market销售)以及游戏开发(放到Android Market或者其他App Market销售)。第一类开发者一般身处规模较大的公司,这些公司主要为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。除了根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般处于创业型公司或者是独立开发者,他们的盈利方式主要是2种:为国外公司进行外包开发,或者通过Goog
11、le的移动广告(AdMob)通过广告点击分成。而理论上的通过付费下载的形式来盈利的,现在国内鲜见成功者。第三类开发者,目前和第二类开发者类似。北京时间4月15日晚间消息,移动应用分析公司App Annie今日发布报告称,今年第一季度,谷歌Google Play应用商店在下载量方面依旧主导全球市场。报告称,第一季度Google Play全球应用下载量较App Store高出45%,这主要得益于新兴市场的推动,如俄罗斯、巴西、墨西哥和土耳其,其发展速度令无数人惊叹,而Android产品占中国整体智能手机销量的更是令其他系统无法企及,这些数字意味着庞大的市场,自然能让应用开发商欲罢不能,但Andro
12、id碎片化的多版本问题正愈演愈烈。两相比较间,不少开发商陷入了两难的境地。在Android开发者官方网站上,不少开发者亦吐露出“抓狂”的情绪。由于本质为开源,Android系统发展至今,几乎完全脱离了谷歌的控制,其花费巨大开发的新版本系统往往在手机厂商需要为新品添加噱头的时候才会用上。1.3 研究内容与目标根据如今安卓设备的普及,以及现如今人们越发的重视身体的健康,开始在闲暇的时间开展一些体育活动,一些与健康相关的安卓应用被人们需要,也更显现出它们的实用性。而我开发的则是一款基于安卓的跑步软件。它可以实现利用GPS以及百度地图API实现记录用户跑步路径以及跑步距离的功能。2 理论技术基础2.1
13、 理论基础2.1.1. 系统内核Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。
14、Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android
15、用来辅助Git工作的一个工具。2.1.2. 后缀简介APK是安卓应用的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是D
16、alvik字节码。APK文件结构一个APK文件结构为:1. META-INF (注:Jar文件中常可以看到);2. res (注:存放资源文件的目录) ;3. AndroidManifest.xml (注:程序全局配置文件) ;4. classes.dex (注:Dalvik字节码);5. resources.arsc (注:编译后的二进制资源文件)。总结下我们发现Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别,这样做对于程序的保密性和可靠性不是很高,通过dexdump命令可以反编译,但这样做符合发展规
17、律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。最终我们平时安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。2.1.3. 硬件抽像层Android 的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。H
18、AL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。HAL stub 是一种代理人(Proxy)的概念,Stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 这些操作函数。HAL 里包含了许多的
19、Stub(代理人)。Runtime 只要说明“类型”,即 Module ID,就可以取得操作函数。2.1.4. 中介软件操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(Virtual Machine)。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit,所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。Android采用OpenCORE作为基础多媒体框
20、架。Open CORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。Android 使用skia 为核心图形引擎,搭配OpenGL/ES。skia与Linux Cairo功能相当,但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,Skia 也是Google Chrome 的图形引擎。Andro
21、id的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。Android的中间层多以Java 实现,并且采用特殊的Dalvik 虚拟机(Dalvik Virtual Machine)。Dalvik虚拟机是一种“暂存器型态”(Register Based)的Java虚拟机,变量皆存放于暂存器中,虚拟机的指令相对减少。Dalvik虚拟机可以有多个实例(Instance), 每个Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Jav
22、a字节码(Bytecode),而是运行一种称为.dex格式的文件。2.1.5. 安全权限机制Android本身是一个权限分立的操作系统。在这类操作系统中,每个应用都以唯一的一个系统识别身份运行(Linux用户ID与群组ID)。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用,应用与系统隔离开。系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作,也可以限制每个URI权限对特定数据段的访问。Android安全架构的核心设计思想是,在默认设置下,所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据(联系人或电子邮件),读写
23、其他应用文件,访问网络或阻止设备待机等。安装应用时,在检查程序签名提及的权限,且经过用户确认后,软件包安装器会给予应用权限。从用户角度看,一款Android应用通常会要求如下的权限:拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人的信息、读取日程信的息,写入日程数据、读取电话状态或识别码、精确的(基于GPS)地理位置、模糊的(基于网络获取)地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态,查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。一款应用应该根据自身提供的功能,要求合理的
24、权限。用户也可以分析一款应用所需权限,从而简单判定这款应用是否安全。如一款应用是不带广告的单机版,也没有任何附加的内容需要下载,那么它要求访问网络的权限就比较可疑。2.1.6. 百度地图定位2.1 百度地图定位原理图百度地图Android定位SDK是利用设备当前的GPS信息(GPS定位),基站信息(基站定位)和Wi-Fi信息(Wi-Fi定位)完成定位的。开发者在应用中成功集成百度定位SDK以后,既可以方便的通过定位SDK的接口向百度定位服务请求位置信息。定位SDK会根据设备当前的实际情况(如是否开启GPS,是否连接网络,是否扫描到Wi-Fi信息等)生成定位依据,并根据开发者设置的实际定位策略(
25、包括三种:高精度模式,低功耗模式,仅用设备模式)进行定位。2.2 技术基础本次开发主要用到Android SDK以及百度地图的API,开发工具采用Eclipse导入Android开发包、百度地图API以及百度定位技术的API,如图2.2图 2.2 导入Android开发包而在安卓应用的开发过程中,需要使用的安卓模拟器,而本次开发前期所使用到的则是Android自带模拟器。自带的模拟器主要用于检查控件的功能以及设计是否完善。由于本次开发需要用到GPS以及移动网络的支持,开发中主要功能的测试依赖于移动安卓设备。选用的设备为三星i9500,即三星Galaxy S4。三星Samsung Galaxy
26、S 系列新一代的旗舰Galaxy S 4 它采用了像素密度为 441 ppi (480dpi)的 5 吋 1080p(1,920 x 1,080) Super AMOLED HD 屏幕和 2GB RAM,处理器根据地区不同分为两种版本,国际版为双四核 1.6GHz+ 1.2GHz的 Exynos 处理器,定制版本是四核 1.9GHz 的高通骁龙600处理器或骁龙800处理器,配备有1280万后置摄像头和210万像素的前置摄像头,支持蓝牙4.0技术和NFC近场通讯等功能。上市时预载的系统是 Android4.2.2。使用的设备定位以及对软件支持方面能够非常出色的满足开发要求,测试是开发中不可忽视
27、的重要环节。3 系统分析与设计3.1 需求分析3.1.1. 编写目的现在的人们越来越重视健康,因此出现了许多跑步爱好者。而他们需要一些工具来记录自己跑过的路径和跑步的距离,以此来判断自己的运动程度是否达到自己满意的程度。而现在多数人都拥有Android设备,并且考虑到Android的开源性,Android的开发相对比较实际。所以本次要开发一个基于Android系统的跑步软件。3.1.2. 术语定义v Activity: Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastRec
28、eiver广播接收器)之一。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。v Intent:Intent(意图)主要是解决Android应用的各项组件之间的通讯。Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则
29、根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。v 百度定位SDK: 百度地图Android定位SDK是为Android移动端应用提供的一套简单易用的LBS定位服务接口,专注于为广大开发者提供最好的综合定位服务,通过使用百度定位SDK,开发者可以轻松为应用程序实现智能、精准、高效的定位功能。v 百度地图SDK:百度地图 Android SDK是一套基于Android 2.1及以上版本设备的应用程序接口。您可以使用该套 SDK开发适用于
30、Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。v API:API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。3.2 总体设计3.2.1. 系统功能针对本系统的设计,主要实现两个功能:a. 用户在使用时,可以通过地图随时查看跑步的路径b. 用户在使用时,可以随时查看自己已经跑过的距离通过这两个功能可以让用户做到对自己的运动状况有所掌
31、控,对自己的运动情况心中有数。3.2.2. 软件结构本系统共有一个Activity,在这个Activity中要实现查看地图,查看跑步距离。则要分出地图定位模块,距离计算以及路程记录模块。图 3.1 软件结构Activity地图初始化以及定位计算跑步距离以及绘制路线图3.2.3. 程序流程图出现应用界面选择按钮结束开始记录跑步数据是否查看地图显示地图输出跑步距离是否关闭地图开始退出是是是否退出跑步完成是图3.2 程序流程图当用户进入到界面后,选择开始按钮,则开始计时并且记录跑步的数据,在界面上输出用户跑步的距离;这时候用户可以选择查看地图或者暂停;当查看地图用户选择查看地图后,可以看到自己跑步的
32、路线,可以对地图进行缩放;然后用户可以关闭地图,回到主界面,使地图在后台运行;最后用户可以选择关闭应用程序。3.3 详细设计3.3.1. 总体界面设计a. 主界面时间距离开始退出显示已经运动的时间实际是一个计时器显示已经运动的距离开始按钮触摸后开始计时并且启动定位等功能退出按钮触摸后退出应用图3.3 主界面b. 开始跑步界面时间距离暂停退出显示已经运动的时间实际是一个计时器显示已经运动的距离暂停按钮触摸后暂停计时并且暂停定位等功能退出按钮触摸后退出应用查看地图触摸后跳转到地图界面用以查看跑步路线图3.4 开始跑步界面 c. 地图界面显示地图并且显示在地图上已经绘制好的路线图控制地图的缩放触摸后
33、关闭地图回退到原来的跑步界面关闭地图地图缩放控件图3.5 地图界面3.3.2. 模块功能设计系统分为两个模块:定位模块与绘制地图模块虽然分为两个模块,但是两个模块之间并不是完全没有关联,因为在定位的同时要绘制用户经过的线路。而且记录用户跑步的距离并不能只记录用户的起点和终点,因为百度地图计算的是两点之间的直线距离,只是依据起点和终点来计算将会造成计算出的距离与用户实际跑步的距离不相符合的情况。而这里用到了数学中“微量元素”的思想。记录用户短时间内的起点与终点之间的距离,然后将这些短时间运动的距离相加最终可近似的得到用户跑步的最终距离。这样的方式所得到的距离误差小到可以忽略不计,而且绘制出来的跑
34、步路径也最接近用户真实的跑步路线。a. 定位模块这个模块中需要初始化地图信息以及定位信息,设置定位相关的参数,并且在用户开始跑步后立即启动定位功能。而这个定位相应的用到了百度定位SDK以及百度地图SDK。通过调用百度地图的接口,可以实时获得用户当前的位置,即用户当前位置的经度纬度坐标。在这个模块中,将地图以及定位信息初始化,同时设置按钮的监听,一旦用户开始跑步,立即开启定位功能,在后台每隔很短的一段时间获取用户的经度纬度坐标。b. 绘制地图模块这个模块中要绘制用户跑步的路径,将其在百度地图上标记出来,并且同时统计用户跑步的距离。计算距离的方式上文中已经说明,在此不再赘述。这并不是一个独立的模块
35、,这个模块需要在上一个模块的基础上来操作。而绘制的路线相当于在百度地图上新增加的图层上进行绘制。但是在用户看来只是一个图层。而绘制路线的方式也是用折线来近似表示曲线,在视觉上看来并没有偏差。而绘制路线以及计算距离需要用到百度地图API,对百度地图提供的接口加以更改就可以达到本次开发的目的。4 系统实现4.1 主要界面界面大约有三个主要的界面,分别为主界面,跑步开始界面以及查看地图界面。a. 主界面图4.1 主界面当用户打开应用便进入主界面,在这里用户可以开始跑步,也可以退出应用。b. 开始跑步界面跑步开始便显示用户跑步的距离,时间等信息,详细解说如下图:这里显示用户已跑步时间这里显示用户已跑步
36、距离暂停按钮触摸后暂停计时和定位查看地图按钮触摸后跳到地图界面图4.2 开始跑步界面c. 查看地图查看地图界面,在这里用户可以方便的查看到自己跑步所经过的路径,详细解说见下图:这里用红线标注出用户所经过的路程缩放控件控制地图缩放级别也可以用两个手指同时控制关闭地图回到上一个界面图4.3 查看地图界面4.2 代码结构本次开发有一个Activity,除此之外还有一个用来绘制路线图的类,具体如下:v MapActivity类:继承android.app.Activity,本Activity中需要初始化地图还有定位信息,并且为地图设置监听函数,每隔一秒钟更新一次用户的位置信息,并且更新用户路线还有用户
37、跑步距离等信息。具体介绍如下: 包含两个内部类:a. locationOverlay类:继承com.baidu.mapapi.map.MyLocationOverlay,这个类是用来给地图添加泡泡图层,即用户触摸地图上当前位置点时会弹出一个图层,告知用户这个点为现在所处的位置。b. MyLocationListenner类:实现com.baidu.location.BDLocationListener接口,BDLocationListener接口有2个方法需要实现: onReceiveLocation方法:接收异步返回的定位结果,参数是BDLocation类型参数。 主要代码:/判断是否是第一
38、次定位,第一次则给前一次定位坐标(preLocData)赋初始值,如果不是第一次定位则将上一次定位得到的数据赋值给preLocData用来记录前一次的位置if(isFirstLoc = true) preLocData.latitude = location.getLatitude() ; preLocData.longitude = location.getLongitude() ; else preLocData.latitude = locData.latitude ; preLocData.longitude = locData.longitude ;/获取当前位置信息 locData
39、.latitude = location.getLatitude(); locData.longitude = location.getLongitude();/调用绘制路线函数,在地图上绘制路线图 DrawGraphic(); onReceivePoi方法:接收异步返回的POI查询结果,参数是BDLocation类型参数。 主要函数:a. onCreate方法:OnCreate()不产生窗口,只是在窗口显示前设置窗口的属性如风格、位置等,Create()负责注册并产生窗口,是整个Activity的入口。在这里我们初始化了地图以及定位信息的参数。主要代码: super.onCreate(sav
40、edInstanceState);/调用父类onCreate函数 /初始化地图管理类对象,获取当前的Application,初始化地图 mBMapMan=new BMapManager(getApplication(); mBMapMan.init(null); setContentView(R.layout.activity_map);/设置Activity的布局文件 /将这个activity添加到activity管理列表 ManageActivity.getInstance().add(MapActivity, this); /初始化控件 ch = (Chronometer) findVi
41、ewById(R.id.map_chronometer1) ;/计时器 start = (Button) findViewById(R.id.map_start) ;/开始按钮 stop = (Button) findViewById(R.id.map_stop) ; /暂停按钮 showMap = (Button) findViewById(R.id.map_show) ;/查看地图按钮 closeMap = (Button) findViewById(R.id.map_closemap) ;/关闭地图按钮 ed = (EditText) findViewById(R.id.map_show
42、distance) ;/显示距离文本 distance = 0 ;/初始化距离参数 this.firstTime = true ;/初始化标记是否是第一次定位 /设置按钮Button的可见度 stop.setVisibility(View.GONE); closeMap.setVisibility(View.GONE); showMap.setVisibility(View.GONE); /地图对象赋值 mMapView=(MapView)findViewById(R.id.bmapView); mMapController = mMapView.getController(); mMapVi
43、ew.getController().setZoom(14); mMapView.getController().enableClick(true); mMapView.setBuiltInZoomControls(true); /设置启用内置的缩放控件 MapController mMapController=mMapView.getController(); b. onClick方法:这个是控件的触摸事件函数,当触摸控件时便执行这个函数。这个函数的主题其实是switch结构,用来判断控件是否被触摸,相应的执行操作。主要代码: boolean isStart = true ; switch(
44、v.getId() case R.id.map_show : mMapView.setVisibility(View.VISIBLE) ; start.setVisibility(View.GONE); stop.setVisibility(View.GONE); ch.setVisibility(View.GONE); showMap.setVisibility(View.GONE); ed.setVisibility(View.GONE); closeMap.setVisibility(View.VISIBLE); break; case R.id.map_start : if(isSta
45、rt) /定位初始化 mLocClient = new LocationClient( this ); locData = new LocationData(); preLocData = new LocationData() ; mLocClient.registerLocationListener( myListener ); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);/打开gps option.setCoorType(bd09ll); /设置坐标类型 option.setScanSpan(1000);/设置定位时间间隔 mLocClient.setLocOption(option