




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Android平台的主题图定位和搜索应用程序设计摘要随着Android[[]方哲然、韩伟丽、李英九.基于权限的Android安全:问题与对策[J].电脑与安全,2014,:.][]方哲然、韩伟丽、李英九.基于权限的Android安全:问题与对策[J].电脑与安全,2014,:.基于Android平台的地图定位和搜索现在应该成为最常见的移动互联网应用。定位搜索功能是指通过获取特定的经纬度坐标,在地图上显示地理坐标的相关信息。最大的优点是它具有丰富的硬件选择性和良好的数据开发能力。经过一周对手机地图其他app的观察,经过多次总结和修改,本次《基于Android平台的地图定位与搜索应用设计》的设计内容主要包括以下几个方面:系统需求分析、Android应用开发及运行环境、系统设计及处理流程、系统功能设计、Android系统应用架构、AndroidUI布局及人机界面、系统开发所需组件及数据存储技术、手机GPS卫星定位模块、地图加载功能、目标位置搜索和详细显示等关键词:安卓;地点;搜索;应用目录总结-1-摘要-2-1.前言-5-1.1。选题背景-5-1.2.题目的意义-5-1.3.Android的现状与前景-6-1.4.研究内容-7-2.技术支持和百度地图API-8-2.1。手机地图服务-8-2.2.定位技术-8-2.3.系统相关类-9-2.4.百度地图API-10-三、Android应用开发流程-13-3.1。Android应用运行流程-13-3.2.Android开发环境配置-14-3.3.关键技术与原理-14-4.系统分析与设计-16-4.1。需求分析-16-4.2.系统架构分析-16-4.3.确定UI布局-17-4.4.功能设计-18-4.5.数据库设计-19-五、系统主要功能的实现-21-5.1。主界面的实现-21-5.2.地图浏览功能的实现-22-5.3.地图模式选择功能的实现-24-5.4.定位功能的实现-25-5.5.搜索功能的实现-28-5.6.天气预报模块的实现-29-5.7.系统优化与发布-30-六、总结与展望-31-6.1。工作总结-31-6.2.问题与展望-31-参考文献-33-至-35-前言背景就国外而言,Android操作系统在手机市场占有相当大的比重。据统计,2012年全球Android手机销量约为4.8亿部,在智能手机市场的份额达到68.8%的高位。到2013年,全球Android手机销量飙升至7.812亿部。智能手机市场的市场占有率也达到了78.9%的新高[[]匿名。三星——移动互联网时代的下一个霸主[J].中国经济周刊,2013,(15):68-69。]。由于Android[]匿名。三星——移动互联网时代的下一个霸主[J].中国经济周刊,2013,(15):68-69。随着智能手机逐渐走进普通人的生活,它将成为人们获取外界信息的主要设备[[]舒宪华.基于Android平台的移动Web地图服务设计[D].大连海事大学,2009.DOI:10.7666/d.y1548258.]。因此,在Android[]舒宪华.基于Android平台的移动Web地图服务设计[D].大连海事大学,2009.DOI:10.7666/d.y1548258.主题的意义近代以来,数字通信技术的飞速发展,特别是3G通信技术的逐渐成熟,使得智能手机的应用越来越广泛。几乎十分之九的中国人拥有手机。2015年3月工信部最新发布的通信业经济运行报告显示,手机上网用户数创历史新高。目前,我国移动用户规模近13亿,移动互联网用户规模近9亿。增长5.7%。3月份,此时的4G用户仍保持高速增长,净增超过2300万。通信技术的发展不仅推动了智能手机的快速发展,也导致了近年来移动应用软件的快速发展,与移动地图服务相关的软件层出不穷。近年来,人们对LBS的关注度很高。LBS是一种基于位置的服务。主要以特定方式获取用户的GPS位置信息,在特定平台的支持下为用户提供增值服务。[]白凤文,许华彦.国家地理网格在数字城市建设中的应用[J].测绘公报,2012[]白凤文,许华彦.国家地理网格在数字城市建设中的应用[J].测绘公报,2012,(4):92-94。另一方面,Android移动操作系统于2007年11月5日由谷歌及其开放手机联盟(OHA)正式对外展示,是世界上第一个专门为移动终端开发而打造的平台。它具有免费、完整和开放的特点[[]刘婷.基于Android手机的地图服务系统设计与实现[D].邮电大学,2013.],这是一个真正具有划时代意义的移动设备开发平台。正是因为它的开源特性,Android刚推出就受到了众多开发者的高度关注。由于其免费和开源的特性,Android操作系统不仅限于手机,还支持在许多笔记本电脑或其他智能设备上安装和使用Android操作系统。因此,基于Android[]刘婷.基于Android手机的地图服务系统设计与实现[D].邮电大学,2013.[]王立生,叶希哲.基于Android的防火墙的研究与实现[J].计算机安全,2009,(10):36-38。DOI:10.3969/j.issn.1671-0428.2009.10.011。Android的现状与前景在中国,随着Android的逐渐兴起,国内的Android爱好者也越来越多,很多系统开发者都选择投身于Android的开发。据有关部门统计,近几个月来,中国Android手机数量急剧上升,用户对Android的态度也发生了翻天覆地的变化。总而言之,Android在中国的发展前景是无限的,但还是有一些小瑕疵,其中之一就是很多开发者只求自己的利益,而不是为了服务大众。Android的发展最终将不利于Android在中国的健康发展。在国外,Android目前正处于蓬勃发展的阶段。根据美国市场研究机构的最新报告,仅2012年,基于Android的手机在美国的销量就占到了总销量的28%,而本应拥有强大背景的iPhone仅占21%。充分说明Android在国外的市场主导地位高于其他智能系统。可以想象,随着Android的不断发展和推广,这个比例会越来越大。因此,进行Android系统开发的开发。用户会越来越多,越来越多的人会选择基于Android的手机,其在国外的统治地位将不可动摇。Android的英文原意是“机器人”。由于谷歌开发了基于linux的开源移动操作系统,现在,Android特指世界上第一个真正开源、完整、免费的移动操作系统。目前已经发布的版本从Android1.5到Android5.1,应该不少于十个版本。现在最高版本是5.1,但目前的市场份额是Android2.3,因为这个版本仍然是最稳定的版本。此外,Android3.0专用于平板电脑[[]严伟。基于Android平台的移动地图服务系统设计[D].[]严伟。基于Android平台的移动地图服务系统设计[D].浙江师范大学,2012.DOI:10.7666/d.y2193811.目前,Android平台在市场上仍有不少优势,其中最突出的就是免费和开源,这一点绝对是无可争辩的。它的免费意味着谷歌向全世界免费提供Android操作系统,所有移动供应商都可以免费使用Android操作系统,这将为他们节省大部分制造成本,大大降低智能手机的开发门槛。极大地推动了Android系统在全球智能手机市场的普及。所谓开源,是指Android系统的源代码对外开放,任何供应商都可以修改再开发,设计出适合自己的独特版本。提供了更广阔的发展空间。从以上信息不难看出,Android的发展前景是无限的。作为手机开发者,一定要抓住这个机会,因为根据iiMediaResearch(艾媒咨询)的统计,2008年到2013年,Android开发者的数量在快速增长,这对手机开发者来说也是一个机会,通过很多市场分析,或许大家都会明白,现在安卓的步伐还是很大的,能不能跟上它的步伐,就看你能不能把握住这个千载难逢的机会了。研究内容本文的研究内容主要包括:研究Android平台的开发过程,了解Android平台的结构框架,研究GPS定位的内容,研究Android平台应用程序的开发过程,结合百度地图API实现基于Android平台应用的地图定位和搜索服务。按照我的假设,这个地图应用应该包括以下几个模块:地图模块,可以进行主流的地图操作,如放大、缩小、拖动等;定位模块,可以通过GPS获取用户当前的地理坐标,并在地图上使用。标记;搜索模块:搜索模块分为两种情况,一种是定点搜索,用于搜索某个位置,另一种是环搜索,用于搜索具有一定周边区域的建筑物;采集模块,顾名思义,就是用来采集用户关心的地理位置信息;天气模块,天气模块是这个设计的延伸,实现的目的是为了方便用户了解当地的天气情况,选择合适的出行方式。技术支持和百度地图API既然要做地图相关的APP,首先要了解相关的技术支持。Android平台手机地图开发的相关技术主要有手机地图服务、GPS定位技术和本次使用的百度地图API。移动地图服务手机地图服务主要利用GPS技术准确定位移动用户的地理位置,帮助用户了解周边位置,方便用户通过客户端在移动互联网与手机地图服务器之间搜索和查询路线位置。手机地图服务不仅可以用相关词语表达查询信息,还可以通过地图信息将信息直观地表达给用户。友好的人机交互界面提供了良好的用户体验[[]崔杰.基于协议网关的企业级分布式即时通讯系统研究与实现[]崔杰.基于协议网关的企业级分布式即时通讯系统研究与实现[D].华南理工大学,2010.查询接口和服务器连接接口主要由手机地图客户端提供。手机地图可以进行放大、缩小、移动等操作,不仅可以通过文字表达方式将查询结果反馈给用户,还可以通过地图信息将查询结果直观地展示在地图上。客户端以提交的形式向服务端致请求,服务端对收到的请求进行相应的处理,并将处理后得到的地图数据以栅格数据[[]张艳芳.Android移动Web[]张艳芳.Android移动Web地图服务应用设计[D].XX大学,2010。DOI:10.7666/d.y1657049。客户端向服务器致请求;服务器端将光栅数据传输到客户端。图STYLEREF1\s2.1SEQ图\*ARABIC\s1地图查询流程图定位技术手机定位技术是一种可以获取和识别手机或终端用户在地图上的位置信息的技术和服务。业务实现手机定位。基站定位的原理是利用手机与基站的距离来确定手机的位置。基站定位方式不需要手机具备GPS功能[[]IT网络上的那些东西。2013.好搜百科。[[]IT网络上的那些东西。2013.好搜百科。[在线]2013.[引用日期:2015年4月我们也可以根据提供服务的方式不同,将定位系统大致分为两类:自有移动定位系统和公共定位服务[[]stefanie1007.2014[]stefanie1007.2014。百度百科。[在线]2014.[引用日期:2015年4自有手机定位:自有手机定位系统不仅灵活、易于控制,是目前手机定位系统的首选。自有手机定位系统一般接入企业或政府网络,为其提供的定位服务大多与自有手机定位系统相关。业务相关。使用我们自己的手机定位系统的主要业务有:货物和活动定位、人员考勤和基于地理位置的分析和统计。公共位置服务:公共位置服务历来由移动运营商提供。目前,市场上专门为某企业或政府部门服务的私有定位系统大多使用公共定位服务。目前,采用这种定位方式的商家或场所主要有:物流货物、公安执法、车辆或长途车辆定位、应急救援定位等。系统相关类地理位置服务包,可以实时获取当前设备的地理位置信息。不仅如此,它还提供网络和基于GPS的定位服务[[]埃内克,梅丹尼尔P.理解。安卓安全。IEEE计算机学会,2009年。]。GPS_ROVIDER可以定位当前设备的地理位置,一般用于设备自身定位等功能;NETWOR_PROVROER提供[]埃内克,梅丹尼尔P.理解。安卓安全。IEEE计算机学会,2009年。位置类地点定位管理类位置管理器位置提供者位置提供者_位置监控类位置监听器位置标准类标准表STYLEREF1\s2SEQ表\*ARABIC\s11定位相关类位置:提供地理位置信息、经纬度、海拔高度、测量速度等。getLongitude()方法获取经度信息,getLatitude()方法获取纬度信息,getAltyde()获取海拔信息,getSpeed()方法对应于获取速度信息。LocationManager:这是定位系统的核心组件,可以实时获取和更新地理位置信息。调用getLocationManager()方法返回最新的位置信息。调用requestLocationUpdates()方法注册位置更新事件。调用requestLocationUpdates(String,long,float,LocatonListeiier)方法注册一个接收位置和新事件的接收器。调用requestUpdates()方法删除注册信息并停止位置更新事件。LocationProvider:位置服务的抽象类。当前设备的地理位置信息可以周期性上报[[]夏国平.基于Android的车载智能导航系统研究与设计[]夏国平.基于Android的车载智能导航系统研究与设计[D].电子科技大学,2012.enableProvider()方法用于启动LocationProvider。disableProvider()方法用于关闭LocationProvider。LocationListener:用于实时监听LocationManager通知的位置变化。调用onLocationChanged()方法实时更新位置。实现一个LocationListener接口来获取GPS信息。当GPS位置信息发生变化时,会调用onLocationChanged()方法[[]崔旭凯.基于[]崔旭凯.基于Android手机的定位与信息检测应用开发[D].邮电大学,2013.当GPS的状态发生变化时,会调用onStartChanged()方法。Criteria:该类可以根据查询条件提供位置信息。例如地图解析精度、功耗、海拔高度、速度等,系统可以根据过滤条件选择合适的属性定位器。该方法主要由LocationProvider实现。百度地图API百度地图API是百度集团免费提供的基于百度地图服务的应用接口。它不仅为开发者提供地图展示、搜索定位、云存储检索等多种强大功能,还集成了AndroidSDK、定位SDK等多种开发工具和服务。百度地图API的应用范围非常广泛,不仅适用于PC端,也适用于移动端、服务器端等设备。是各种操作系统下的地图应用开发接口[[]杨刚.基于GPS的城市公交运营管理研究[]杨刚.基于GPS的城市公交运营管理研究[D].大连海事大学,2013.图STYLEREF1\s2SEQ图\*ARABIC\s12百度地图API系统架构图百度地图AndroidSDK是一个应用程序接口。基于Android2.1及以上设备,我们可以通过这个接口实现丰富的LBS功能:地图:提供地图(2D、3D)显示及缩放、平移、旋转、改变视角等地图操作;POI检索:根据关键词,可以检索周边、区域、城市三种类型的POI数据;地理编码:提供地理坐标和地址之间的转换能力;路线规划:支持公交换乘查询、公交信息查询、路线规划和路线检索;叠加层:提供多种地图叠加层(自定义标签、几何图形、文字绘制、地形图图层、热图图层等),满足开发者的各种需求;定位:使用多种定位方式,任务步骤是使用定位SDK获取当前或特定位置的定位信息,然后使用地图SDK显示定位信息;离线地图:支持使用离线地图,不仅可以节省大量的用户数据流量,还可以为用户体验地图提供更便捷的方式;导航:支持激活百度地图导航和网页导航,满足用户对导航功能的需求;LBS云端检索:支持用户检索并展示自己存储在LBS云端的POI数据;特点:提供短串分享、地点详情检索、热力图、百度地图激活等功能,帮助开发者构建更强大的应用;使用百度地图API进行开发,必须经过两个重要步骤:下载百度地图开发包在使用百度地图API之前,首先需要在创建的项目中引用百度地图API开发包。只有将开发包引用到我们的项目中,才能进一步使用百度地图API。开发包应该包含两个文件:libBMapApiEngine.so和baidumapapi.jar[[]张志清.基于[]张志清.基于Android的移动社交产品客户端设计与实现[D].交通大学,2012.首先在项目的libs文件夹中,将baidumapapi.jar复制到根目录下,然后在根目录下创建一个armeabi子目录,将libBMapApiEngine.so丢到这个目录下。最后,在项目属性Libraries中选择“AddExternalJARs”,然后选择baidumapapi.jar,并确认选择,这样就可以使用百度地图API了。请求API密钥在使用百度地图SDK提供的各种LBS能力之前,我们需要到百度地图开发首页获取百度地图API开发密钥,并将密钥与我们的百度账号关联[[]戴士磊.基于Android的路边停车位查询系统设计与实现[]戴士磊.基于Android的路边停车位查询系统设计与实现[J].华南理工大学,2013.在AndroidManifest中添加开发密钥、所需权限等信息:在应用程序中添加开发密钥:添加所需的权限:安卓应用开发流程每个Android应用程序的开发都有一定的过程,既相同又有自己的特点。本节将简要介绍Android应用程序的具体开发过程。Android应用运行流程Android应用程序在手机或虚拟机上运行。Android程序需要先打包成.apk文件才能运行。操作过程比较复杂,下面简单介绍一下。安装程序时,Android系统会为该程序分配一个私有存储空间,即“安全沙箱”,用于存储配置清单文件和二进制资源文件等,如图3-1所示。图3-1Android应用运行分析图同时,系统会为每个安装的应用程序分配一个唯一的ID,用于区分不同应用程序的文件和资源。系统还可以通过设置权限来限制每个应用程序只能访问自己的资源和文件。.设置权限可以保证应用程序之间的安全性和独立性。但是,有时一个应用程序可能需要访问其他应用程序的数据和系统资源。Android平台提供两种解决方案:一种方法是让多个应用程序使用一个ID,这样它们就可以相互访问其他应用程序的文件;当然,多个应用程序可以同时使用一个虚拟机并在一个进程中运行。另一种方法是让用户在安装应用程序时设置权限,然后每个应用程序都可以根据用户设置的权限访问其他程序的数据和系统资源。经过多次测试和相关资料验证,Android应用程序的运行会经历如下工作流程,如图3-2所示。通过这个示意图,我们可以清楚的了解Android应用运行的过程。图3-2Android应用编译流程安卓开发环境配置Android开发环境的建立是Android应用开发不可缺少的过程。环境的建立需要准备JavaJDK、Eclipse(或MyEclipse)、AndroidSDK和ADT。下载并安装JDK。JDK安装完成后,需要配置环境变量,JAVA_HOME、PATH、CLASSPATH。配置好环境变量后,运行命令提示符:java–version,javac如果返回信息,则设置成功[[]Android[]Android开发环境的安装[0L]:://cnblogs/leipei2352/archive/2011/08/01/2124333.html接下来安装Eclipse。用于Java和Android开发的EclipseIDE。安装Eclipse后,还需要安装AndroidSDK。SDK的中文翻译是软件开发工具包。顾名思义,这是软件开发人员可以使用的特定开发工具的集合。在谷歌官网上,我们可以根据不同的需求下载相应的SDK。最后安装和配置ADT。经过以上步骤,我们就可以创建我们的项目了。关键技术与原理Android应用开发不仅具有传统软件开发的特点,也有自己独特的地方,因为主要运行在手机上,所以需要考虑手机的运行速度,所以要尽量做到充分设计程序时使用手机硬件。资源,优化存储占用率,降低应用的功耗,还要考虑实际手机屏幕的大小,要适应常见屏幕的各种屏幕分辨率。要制作一个完美的Android应用程序必须掌握Android开发过程中的几项关键技术。1) 开发语言。目前的Android应用开发语言大多是基于Java语言的,所以Android开发需要熟练使用Java语言。当然Android不再局限于Java语言,很多应用都是用c/c++开发的,但是这种语言的开发主要是为了底层硬件的高效运行开发。目前主流的Android应用都是用Java语言开发的,所以掌握Java语言是Android开发的基础。2)省电技术。手机不处于待机状态时会消耗大量电量,因此Android开发必须考虑如何节省电池电量和提高电池寿命。研究表明,手机的耗电量与屏幕亮度、进程数量等多种因素有关,因此要降低电池耗电量,必须为程序选择合适的背景,尽量减少不必要的进程,并关闭已经完成处理任务的进程。另外,手机内置的震动、蓝牙等大部分功能都非常耗电,所以在不需要的时候尽量不要开启这些硬件模块。3)多线程技术。在Java语言中,多线程技术是一项重要的技术。对于需要用Java语言开发的Android应用,多线程技术也是必不可少的。在Android开发中使用多线程技术可以充分利用手机硬件资源,从而有效提高程序的执行效率。因此,多线程技术是Android开发过程中必不可少的技术。在静热的情况下,Android应用只有一个主线程,这意味着应用要处理的任务太多,在主线程中占用的时间过长,最终会导致主线程阻塞,从而会导致应用程序如果没有响应,用户体验会很差。为了解决这个问题,需要将那些占用线程时间较长的任务放到Android应用中新开启的子线程中。子线程任务处理完后,只需要向主线程致消息进行更新。例如,如果要下载的文件太大,等待下载的时间会很长,所以下载任务不能放在主线程上。向主线程致消息,通知主线程任务已完成。整个过程如图3-3所示。图3-3Android多线程示意图系统分析与设计在开发之前,我们需要对系统进行必要的分析和设计,然后根据分析和设计有计划地设计程序,可以有效避免盲目和无目的的设计操作。,为了实现有计划的设计,我将系统的分析分为几个模块:需求分析、系统架构分析、UI布局分析、功能分析,最后是数据库的设计分析。接下来,我将依次分析这些。这些模块进行详细的分析和设计。需求分析这个设计的目的很明确,就是在Android平台上设计一个集定位和搜索功能于一体的地图服务应用。通过对现有手机地图软件的结构和功能的分析发现,现有的手机地图大部分都是以盈利为目的的,很多普通用户使用起来非常不方便。虽然结构很复杂,但也会使内容复杂化。很多普通用户会很难理解。在此基础上,基于人性化的考虑和整个软件的功能需求,准确把握系统框架。系统架构分析本系统采用层次结构设计,其整体结构如图4-1所示,主要包括:UI层:也就是用户界面,就像我们身体表面可以看到的部分,比如四肢、皮肤等。主要用于用户操作,将用户操作数据致到底层,然后从底层获取用户需要的数据,通过各种方式表达给用户。UI层主要用于与用户交互和传递信息。UI层的设计在一定程度上是地图服务的基础。控制层:控制层就像我们人体的关节,神明的尽头。它位于UI层和业务逻辑层之间。它使用各种接口来控制两者之间的业务处理,并起到松耦合的作用,使代码能够更健壮,更高效地处理业务逻辑。业务逻辑层:业务逻辑层就像我们人体的大脑。它的主要任务是执行复杂的业务操作,例如事件处理、搜索和搜索。整个系统的协调操作是数据交互的媒介。数据访问层:这一层就像人的神经或血管。主要用于访问用户自己的数据或文件,并对其进行增删查改等操作。方便用户认证,也是客户端请求数据的支持。图4-1系统架构图确定UI布局布局问题是设计和开发Android应用软件的首要考虑因素。美观简洁的应用设计,一方面可以有效提升用户的用户体验,另一方面友好的交互界面可以有效提高程序执行效率。生成Android系统的用户界面主要有两种方式。一是使用interface接口和xml文件进行配置;另一种是通过代码控制生成。Activity是Android开发平台的四大组件之一。Activity通过绑定UI布局来实现用户交互界面。Activity实例不能直接显示在手机屏幕上,但是很多事情都可以在Activity中完成。Android平台上有五个主要的布局对象,它们是:线性布局(LinearLayout):LinearLayout的布局方式是将控制元素按垂直或水平顺序排列,每个控制元素占据一行或一列。如果是垂直排列,那么每个控制元素不管它的宽度,都会占据一行,并且依次向下排列;如果是水平排列,那么每个控件不管多高都会占据一列,依次向右排列。绝对布局(AbsoluteLayout):AbsoluteLayout布局方式是利用坐标指定每个控件元素相对于手机屏幕左上角(0,0)的绝对位置来实现布局。这种方法只适用于拖放控件的开发。在实际开发中,由于这种布局不适合适配各种屏幕分辨率,所以一般不会用到。RelativeLayout:RelativeLayout可以根据每个元素之间的相对位置关系来完成布局。在这个布局中,android:layout_below、android:layout_above等相对位置相关的属性都是有效的。子元素通过设置自己的ID和相关的位置属性来确定最终的布局。当然,在指定相对位置关系时,必须先定义相对子元素,否则会报异常。表格布局(TableLayout):在实际应用中,TableLayout通常与TableRow配合使用,TableLayout在底部,TableRow在TableLayout里面,其他空间元素在TableRow里面。当然,其他控件也可以单独放在TableLayout中。FrameLayout:FrameLayout布局是Android平台五种布局方式中最简单的布局。在布局中,所有子元素都添加在布局区域的左上角。后面添加的元素将覆盖前一个元素。在应用中,这种布局方式一般会与其他布局方式嵌套。在本次设计中,为了体现布局的美观和简洁,布局主要包括:系统主界面、地图界面布局、收藏列表布局、信息管理页面布局、位置搜索、周边查询界面和天气预报界面。(1)系统主界面:作为主界面,必须美观大方。主界面应该有程序设计的所有功能的界面,所以一个GridView可以用来展示所有的功能模块,不仅组织有序,而且方便用户使用。容易理解。(2)地图界面:该界面包括一张真实地图和多个菜单选项。菜单选项主要是系统需要实现的主要功能,用户可以选择进入相应的功能界面。(3)收藏列表界面:收藏列表主要使用一个ListView来显示用户收藏的地理位置。用户可以点击每个项目来定位对应的位置,并在地图上进行标记。(4)信息管理界面:主要存储和显示用户信息。设计这个功能的目的是体现程序的人性化,让用户觉得地图服务是自己的,在一定程度上提升用户体验。在界面设计中,多个TextView主要用于展示用户信息,用户可以点击修改自己的信息。(5)位置搜索界面:由于是用来实现搜索功能的,所以需要一个可以进入的编辑框供用户输入搜索关键词,还需要一个提交搜索的按钮来提交搜索关键字到后台,搜索完成。然后标记地图,在菜单选项中提供保存记录的功能。(6)周边查询界面:设置两个编辑框供用户输入搜索中心点和目的地,如中心点“大学泉城学院”和目的地“KTV”,然后点击“搜索”按钮即可显示相关的位置信息。通过ListView列出,用户可以通过点击在地图上进行标记。(7)天气预报界面:该界面用于显示搜索位置的天气情况。界面依次显示当天、明天、后天的天气情况,主要使用TextView。特色设计本系统的主要目的是建立Android手机地图定位和搜索服务。如图4-2所示,本系统主要包括六个功能模块,即:地图浏览、定位、周边查询、位置搜索和天气查询。以下是各个功能的详细说明:1)、地图浏览模块:此时本次设计最重要的界面就是实现通过在地图上查询并展示获取用户所在城市的任务。用户可以对地图进行拖动、放大、缩小等操作。并且还提供卫星、交通、街景三种地图模式供用户选择。2)定位模块:用户可以快速定位自己当前的位置,并在地图上用一个点进行标记。3)收藏列表模块:主要用于收集用户搜索和访问过的位置。收藏后会显示在收藏列表中。点击对应的位置信息,可以快速定位到位置。同时,用户可以简单地编辑收藏的位置。4)、周边查询模块:用户可以在设置中心点位置、搜索区域、搜索目的地后查询周边相关项目信息。5)、位置搜索模块:用户可以输入要搜索的位置的相关信息,系统可以粗略查询与其相关的位置的位置信息,显示在列表中供用户选择,并进行标记确定位置后在地图上,用户可以收藏该地点以备日后再次查找。6)、天气查询模块:主要用于查询您所在城市的天气情况。数据库设计Android为用户提供了四种访问数据的方式[[]帅东东。基于安卓手机的电子地图应用开发[D].南京邮电大学,2013.]。一种是SharedPreferences方法,主要用于保存用户在系统上的设置,数据会以xml文件的形式保存在手机内存中。二是文件存储方式。顾名思义,数据的存储和传输是以文件的形式进行的。第三种是网络存储方式,即Network方式,通过网络数据包来存储和传输数据。第四种是轻量级的嵌入式SQLite存储方式。与前三种存储方式相比,SQLite[]帅东东。基于安卓手机的电子地图应用开发[D].南京邮电大学,2013.基于以上分析,本系统将使用SQLite和SharedPreferences进行数据访问。在本系统中,主要使用地理位置数据信息,所以首先创建一个地理位置信息表,用于访问位置信息,如表4-1所示。场地类型评论ID整数自动生成主键标题细绳位置标题日期_细绳记录时间纬度整数纬度经度整数经度开始细绳评论表STYLEREF1\s4SEQ表\*ARABIC\s11位置信息表在天气系统中,还需要一个记录天气信息的表格。为了与ChinaWeather接口返回的数据对应,设计的天气表如表4-3所示。场地类型评论ID整数自动生成主键城市标识细绳城市代码城市细绳城市日期_y_细绳日期温度1细绳一天的温度范围温度2细绳第二天温度范围温度3_细绳第三天温度范围天气1细绳当天的天气天气2细绳第二天的天气伊瑟3_细绳第三天的天气风1细绳当天的风风2_细绳第二天风风3细绳第三日风表4-3天气信息表系统主要功能的实现本章介绍了本设计系统中主要功能的实现。主界面的实现服务启动后,会打开主界面,显示用户可以选择的功能。如图5-1所示,主界面使用一个GridView,将系统的所有功能直观的展示给用户,供用户选择。图5-1系统主界面主要接口实现流程如下:首先在Activity中调用setContentView(R.layout.main)绑定主界面,然后调用GridViewgridview=(GridView)findViewById(R.id.gridview)得到GridView对象。在GridView中,我们需要对其进行适配,然后我们需要加载一个Item,所以我们需要创建一个item.xml来显示功能图标和功能名称,所以我们需要在item.xml中添加两个相对布局的TextView和ImageView方法的名称和图标分别对应。下一步是使资源适应GridView。系统中所有的图片资源都存放在res/drawable目录下。首先,您需要将所有功能图标和功能名称存储在一个动态数组中,例如,存储一个“搜索”图标描述:HashMap<String,Object>map=newHashMap<String,Object>();map.put("ItemImage",R.drawable.icon_search);//添加图片资源的IDmap.put("ItemText","搜索");//通过序列号制作ItemText列出图片Item.add(map);存储完每个图标后,会生成一个适配器saImageItems,用于存储要显示的图片和文字,需要与上面刚刚生成的动态数组一一对应。然后调用gridview.setAdapter(saImageItems)添加并显示。SimpleAdaptersaImageItems=newSimpleAdapter(this,ListImageItem,R.layout.item,newString[]{"ItemImage","ItemText"},新的int[]{R.id.ItemImage,R.id.ItemText});接下来需要给GirdView设置onItemClick方法来监控Item是否被选中。方法中可以获取相关功能的属性和信息,通过Intener将信息传递给下一个活动页面,实现页面的动态效果,实现点击某个功能可以跳转到功能模块。然后我们需要给应用添加一个退出接口,我们可以把退出放在菜单中,代码如下:公共布尔onCreateOptionsMenu(菜单菜单){menu.add(1,1,0,"exit").setIcon(R.drawable.exit); 返回super.onCreateOptionsMenu(menu);}它的实现方法很简单,我们只需要重写系统提供的抽象方法,代码如下:publicbooleanonMenuItemSelected(intfeatureId,MenuItemitem){开关(item.getItemId()){案例1://退出结束();//结束当前Activity并退出系统休息;案例2://帮助意图意图=新Intent(GridViewActivity.this,Helpinfo.class);开始活动(意图);//跳转到帮助信息界面休息;}返回super.onMenuItemSelected(featureld,item);}当然也可以直接在首页添加退出按钮。这种方法比较直观方便,本次设计中采用了这种方法。地图浏览功能的实现点击地图浏览功能按钮后,页面跳转到如图5-2所示的地图界面,该界面的菜单选项包括“我的位置”、“通用地图”、“卫星地图”、“实时地图”交通》》四个菜单项。点击“我的位置”可以快速定位到当前位置,点击地图显示方式可以相应的方式显示地图。图5-2地图浏览界面map接口的实现过程如下:创建一个MapActivity并绑定一个视图map_main.xml。将加载百度地图的控件放在map_main.xml中:<.baidu.mapapi.map.MapViewandroid:id="+id/bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"安卓:可点击=“真”/>接口绑定后,里面的主要内容一定要实现。为了方便后续维护,可以写一个方法initView()。代码如下:私人无效initView(){ mMapView=(MapView)findViewById(R.id.bmapView); mBaiduMap=mMapView.getMap(); //导入地图并设置地图打开时的大小 MapStatusUpdatemsu=MapStatusUpdateFactory.zoomTo(15.0f); mBaiduMap.setMapStatus(msu); }地图浏览界面的代码比较简单,但是需要注意的是,这个页面的时间需要开发密钥和权限的支持,前面已经提过,这里不再赘述。地图模式选择功能的实现在地图浏览模式下,我们有时想查看当前位置的路况、街景或卫星云图。这时候我们可以点击“法线地图”以外的菜单选项,选择“实时路况”、“街景模式”,查看“卫星模式”选项。以卫星模式为例,效果如图5-3所示。图5-3卫星模式具体实施过程如下:实现方法很简单,因为我们是在菜单选项中选择,所以我们只需要设置onOptionsItemSelected()方法点击菜单就可以监控地图模式的选择。覆盖 publicbooleanonOptionsItemSelected(MenuItemitem){ 开关(item.getItemId()){ 案例R.id.id_map_common: mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); 休息; 案例R.id.id_map_site: mBaiduMap.setMapType(百度地图.MAP_TYPE_SATELLITE); 休息; 案例R.id.id_map_traffic: if(mBaiduMap.isTrafficEnabled()){ mBaiduMap.setTrafficEnabled(false); item.setTitle("实时交通(关闭)"); }else{ mBaiduMap.setTrafficEnabled(true); item.setTitle("实时交通(on)"); } break; R.id.id_map_locationbox: centerToMyLocation(); break; default: break; } returnsuper.onOptionsItemSelected(item); }功能的实现定位功能是本次设计的核心之一。主要功能是在地图上快速定位当前用户的具体位置,方便用户了解自己所在位置的基本情况。功能实现方法非常简单,只需要几个小步骤。可以完成。关键是如何获取用户的GPS信息,获取信息后根据信息在地图上打上覆盖物。也可以在我们前面提到的onLocationChanged()方法中更新位置信息,并在地图上实时显示位置变化。如图5-4所示,是定位固定时的界面。图5-4定位界面主要代码实现流程如下:定位功能的实现主要是在地图浏览界面,所以页面的布局就不做解释了。通过onLocationChanged()方法获取位置信息。我们还封装了一个方法。代码如下:私人无效initLocation(){ mLLocationClient=newLocationClient(this); mLLocationListener=newMyLocationListener(); mLocationClient.registerLocationListener(mLocationListener); LocationClientOption选项=newLocationClientOption(); option.setCoorType("bd09ll"); option.setIsNeedAddress(true); option.setOpenGps(true); option.setScanSpan(1000); mLocationClient.setLocOption(option); //初始化图标 mIconLocation=BitmapDescriptorFactory .fromResource(R.drawable.main_icon_nav); myOrientationListener=newMyOrientationListener(context); 我的方向监听器 .setmOnOrientationListener(新OnOrientationListener(){ 覆盖 公共无效onOrientationChanged(floatx){ mCurrentX=x; } }); }获取经纬度信息后,将信息反馈给用户,并在地图上叠加标注当前位置,并实时更新当前位置。代码如下:/** *定位我的位置 */ 私人无效中心ToMyLocation(){ LatLnglatLng=newLatLng(mLatitude,mLontitude); MapStatusUpdatemsu=MapStatusUpdateFactory.newLatLng(latLng); mBaiduMap.animateMapStatus(msu); } 私有类MyLocationListener实现BDLocationListener{ 覆盖 公共无效onReceiveLocation(BDLocation位置){ MyLocationDatadata=newMyLocationData.Builder()// .direction(mCurrentX)// .accuracy(location.getRadius())// .latitude(location.getLatitude())// .longitude(location.getLongitude())// 。建造(); mBaiduMap.setMyLocationData(数据); 我的位置配置配置=新的我的位置配置( LocationMode.NORMAL,true,mIconLocation); mBaiduMap.setMyLocationConfigeration(config); //更新经纬度 mLatitude=location.getLatitude(); mLontitude=location.getLongitude(); 如果(isFirstIn){ //第一次,定位我的位置 LatLnglatLng=新LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdatemsu=MapStatusUpdateFactory.newLatLng(latLng); mBaiduMap.animateMapStatus(msu); isFirstIn=假; } }搜索功能的实现地图搜索模块是该系统的另一个重要组成部分。接口部分看似简单,但后台实现过程却非常复杂。这个模块会使用子线程,主要是因为搜索是一个耗时的操作。线程阻塞,所以必须启动子线程来实现这个过程。功能实现过程如下:搜索界面布局采用线性布局排列一个EditText文本输入框和一个Button搜索按钮,比较简单,不会显示。值得一提的是搜索记录的实现,当点击输入框时,会显示搜索记录。关键是实现搜索框的监听事件。代码如下:searchTextView=(TextView)findViewByld(R.id.TextViewSearch);searchTextView.setOnClickListener(newOnClickListener(){publicvoidonClick(查看v)(onSearchRequested();}});}复杂的部分是搜索过程的实现。这部分主要在后台执行。因为是耗时操作,所以在子线程中进行。当子线程完成任务后,将数据返回给主线程。实施过程如下:线程t=newThread(newRunnable()( 公共无效运行() { 尝试{ PoiSearchpoiSearch=newPoiSearch(PoiSearchDemo.this, 新PoiSearch.Query(query,PoiTypeDef.All,"0579")); 结果=poiSearch.searchP2I(); }捕捉(lOExceptione){ e.打印堆栈跟踪(); } 如果(progDialog.isShowing()){ 如果(结果!=null){ handler.sendMessage(Message.obtain(handler, 常量.POISEARCH)); }别的{ handler.sendMessage(Message.obtain(handler, 常量。错误)); t.start(); }私人处理程序处理程序=新处理程序(){公共无效句柄消息(消息消息){if(msg.what==常量.POISEARCH){尝试{List<PoiTtem>poiltems=result.getPage(1); 如果(poiltems!=null||poiltems.size()>0){ mmapController.setZoom(13); mMapController.animateTo(poiltems.get(0).getPoint());接下来是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AGS-16C3F-AGS-16M8F-生命科学试剂-MCE
- 政策引导下的2025年医疗器械国产化产业政策优化研究报告
- 2025年食品冷链物流温控技术设备应用市场前景分析报告
- 2025年直播平台内容监管与行业自律发展策略研究
- 2025年线下演出市场复苏与演出市场可持续发展报告
- 深度解析2025年智能投顾平台风险控制与合规运营挑战与机遇报告
- 2025年城市公交枢纽无障碍设施建设社会稳定风险评估报告
- 血液净化医疗服务行业竞争格局分析及市场前景预测报告
- 2025年咖啡连锁品牌市场布局下的高铁站饮品品牌市场定位报告
- 新能源汽车废旧电池回收利用行业产业链上下游企业竞争力对比报告
- 《关于智能家居系统》课件
- 煤矿重大灾害治理顶层设计方案
- 从患者心理出发优化医患沟通
- 灰尘的旅行测试题及答案
- 孵化器员工合同协议
- 2024年云南省初中学业水平考试生物学试题卷
- 净含量管理制度
- 企业国际化人才队伍建设
- 智慧树知到《走进故宫(故宫研究院)》期末考试答案
- 2025年春季高一年级入学考试英语试卷
- 碧道施工方案
评论
0/150
提交评论