1基于Android平台的手机地图设计文档文档名称:基于Android平台的手机地图软件设计文档项目名称:基于Android平台的手机地图软件专业:2011级软件工程组长:李瑶小组成员:李瑶、杨宇威、张道辉2目录第1章安卓平台与开发环境1.1安卓平台简介1.2安卓平台框架第2章百度地图的APIKey申请和使用2.1百度地图API申请和使用简介2.2百度地图SDK简介第3章手机地图各个模块功能的设计与实现3.1基于Android手机地图的整体设计(用例描述,类图)3.2接口设计3.2数据库设计3.3手机地图具体应用功能的设计3.3.1用户登陆3.3.2用户注册3.3.3位置查询3.3.4路线查询3.3.5天气查询3第1章安卓平台与开发环境1.1Android平台简介Android主要有如下特性:1.应用程序框架支持组件的重用与替换。这样我们可以把系统中不喜欢的应用程序删除,安装我们喜欢的应用程序。2.Dalvik虚拟机专门为移动设备进行了优化。Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快很多。3.内部集成浏览器基于开源的WebKit引擎。有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台“小电脑”,可以在网上随意遨游。4.优化的图形库包括2D和3D图形库,3D图形库基于OpenGLES1.0。强大的图形库给游戏开发带来福音。在3G最为重要的的应用莫过于手机上网和手机游戏。5.SQLite用作结构化的数据存储。6.多媒体支持包括常见的音频、视频和静态印象文件格式如MPEG4、H.264、MP3、AAC、AMR、JGP、PNG、GIF。7.GSM电话(依赖于硬件)。8.蓝牙(Bluetooth)、EDGE、3G、WiFi(依赖于硬件)。9.照相机、GPS、指南针和加速度计(依赖于硬件)。10.丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成的开发环境插件。Google提供了Android开发包SDK,其中包含了大量的类库和开发工具,并且针对Eclipse的可视化开发插件ADT。41.2Android平台框架5从上图我们可以看出,Android操作系统的体系结构可分为4层,由上到下依次是应用程序、应用程序框架、核心类库和Linux内核,其中第三层还包括Android运行时的环境。下面分别来讲解各个部分。1.程序应用Android连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。2.应用程序框架开发者完全可以访问核心应用程序所使用的API框架。该应用程序框架架构用来简化组件软件的重用,任何一个应用程序都可以发布它的功能块并且任何其他的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。以下所有的应用程序都由一系列的服务和系统组成,包括:1)一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网络(grids)、文本框(textboxes)、按钮(buttons),甚至是一个可嵌入的Web浏览器。2)内容管理器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。3)一个资源管理器(ResourceManager)提供非代码资源的访问,如本地字符串、图形和分层文件(layoutfiles)。4)一个通知管理器(NotificationManager)使得应用程序可以在状态栏中显示客户通知信息。5)一个活动类管理器(ActivityManager)用来管理应用程序生命周期并提供常用的导航回退功能。3.Android程序库Android包括一个被Android系统中各种不同组件所使用的C/C++集库。该库通过Android应用程序框架为开发者提供服务。以下是一些主要的核心库:1)系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于EmbeddedLinux的设备定制。2)媒体库:基于PacketVideoOpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.264、MP3、AAC、JPG、PNG。63)SurfaceManager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。4)LibWebCore:一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。5)SGL:一个内置的2D图形引擎。6)3Dlibraries:基于OpenGLES1.0APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。7)FreeType:位图(bitmap)和向量(vector)字体显示。8)SQLite:一个对于所以应用程序可用、功能强劲的轻型关系型数据库引擎。4.Android运行库Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效地运行多个VMs实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都是经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。5.Linux内核Android的核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的硬件抽象层。第2章百度地图的APIKey申请和使用2.1百度地图API申请和使用简介百度地图API是一套基于安卓1.5及以上设备的应用程序接口,通过该接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图API不仅包含构建地图的基本接口,还提供了诸如地图定位、本地搜索、路线规划等数据服务,你可以根据自己的需要进行选择。用户在使用API之前需要获取百度地图APIKey,该key与你的百度账户相关联,您必须先有百度账户,才能获得APIkey,并且,该KEY与您引用API的程序名称有关,KEY的申请具体流程如下图:7然后获得已申请的API密匙,如图所示:为了能使用百度地图应用,首先将API包括的两个文件baidumapapi.jar和libBMapApiEngine.so拷贝到工程根目及lib\armeabi目录下,并在工程属性-JavaBuildPath-Libraries中选择“AddJARs”,选定baidumapapijar,确定后返回,这样就可以在程序中使用API了。2.2百度地图SDK简介百度地图AndroidSDK是一套基于Android2.1(v1.3.5及以前版本支持android1.5以上系统)及以上版本设备的应用程序接口,您可以通过该接口实现丰富的LBS功能:8☆地图展示:包括2D图、卫星图、3D图地图展示;☆地图操作:提供平移、缩放、双指手势操作、底图旋转等地图相关操作;☆地图搜索:提供根据关键字进行范围检索、城市检索和周边检索。且支持LBS云检索用户自有数据;☆详情查询:提供餐饮类的POI的详细信息查看(Place详情);☆线路规划:提供公交、驾车和步行三种类型,多种方案(最快捷、少换乘、少步行)的线路规划;☆地理编码:提供地址信息与坐标之间的相互转换;☆位置标注:提供一个或多个POI位置标注,且支持用户自定义图标;☆实时路况:提供城市实时交通路况信息图;☆离线地图:提供离线地图功能,可节省用户流量;☆定位:采用GPS、WIFI、基站、IP混合定位模式,请使用Android定位SDK获取定位信息,使用地图SDK定位图层进行位置展示。第3章手机地图各个模块功能的设计与实现3.1基于Android手机地图的整体设计功能框图基于安卓手机地图应用包括的功能模块用户地图应用用户登录用户注册位置搜索路线搜索天气查询关于公交步行地图9基于Android平台手机地图软件开发主要包括以下六个模块:1、用户登录模块,用户需要使用登录名及密码登陆后才能使用此软件,以及查看本人的查询历史。2、用户注册,用户第一次使用此软件需要注册一个属于自己的账户。3、地图,用户可以对地图进行放大、缩小和移动查看地理位置。4、位置搜索,用户可以输入想要查询的位置名称来查看此位置的地图信息。5、路线搜索,用户可以输入出发点和目的地去查询两地的行程路线,可以选择公交和步行两种出行方式。6、天气查询,用户可以输入想要查询的地方的名称来查询当地的天气状况。系统流程图10启动程序启动动画界面登陆界面用户验证路线搜索位置搜索天气查询定位本地搜索地名公交车线路步行线路该地区天气状况结束程序关于免费注册输入地名点击返回键点击MenuYN输入用户密码5秒后自动跳转11公交查询步行查询用户注册登陆界面用户登陆地名主界面位置查询路线搜索天气查询记录列表结束界面搜索信息初始类图(上图)详细类图(下图)123.2接口设计1、外部接口(用户界面)启动动画当用户点击此软件图标打开软件时,会有一个启动动画,此动画主要是美化功能,动画出现几秒后自动跳转到主界面,预期效果如图:注册界面用户使用此软件需要登录,没有账户的用户可以通过登陆界面下方的注册按钮进行注册,输入用户名,密码,确认密码,点击立即注册后,系统会自动将用户信息存储到数据库中,下次登录系统会将输入的用户名和密码与数据库中的进行比较,匹配成功则登录成功。注册界面效果图如下:Timer控制跳转时间利用Intent跳转界面13主界面此款软件功能比较少,比较单一,因此所有的功能的操作都集中在主界面上,主界面的主要的部分用来显示地图,屏幕最下方有两个文本输入,主要输入起点与终点,用来查询路线,在这两个文本栏下方有两个按钮,分别是公交查询与步行查询,最下面是一个文本输入和一个按钮,是查询天气功能,在屏幕最上方有搜索栏,主要进行位置查询,输入地名查询该地地图。大概效果图如图(只是预期效果图):查询结果的显示用户在进行完查询后,如果是位置搜索,在地图上回用一个鲜艳颜色的点标注出来,线路查询,会用区别于其他颜色的线将其标注出来。查询天气时,地图显示将会消失,将天气情况显示在屏幕上。143.3数据设计(张道辉)数据库设计我们的数据库主要存储用户信息和地点及路线查询的记录,以方便用户下次查询时直接查找记录,所以设计的表有三个,用户表,地点表,路线表,表User字段名数据类型允许为空主键备注UserNameChar(10)NOTNULL是PasswordChar(10)NOTNULLAddress字段名数据类型允许为空主键备注AddressNameChar(10)NOTNULL是经度Int(10)NOTNOLL纬度Int(10)NOTNOLLPath字段名数据类型允许为空主键备注起点char(10)NOTNOLL是终点char(10)NOTNOLL153.4过程设计3.4.1用户登录功能的实现用户登录功能流程图输入用户名输入密码验证用户登录界面提示账户不存在Y显示登录成功提示密码错误16用户登录活动图用户登陆时序图17:user:userLoginFormLoginFormBusinessRule:UsersBusinessRule:UsersDataAccess:UsersDBDataAccess:UsersDB1:btnLogin_Click()2://获得登录信息3:Login(string,string)4://对密码进行加密5:CheckLogin(string,strin