移动终端中基于位置的应用服务开发毕业论文_第1页
移动终端中基于位置的应用服务开发毕业论文_第2页
移动终端中基于位置的应用服务开发毕业论文_第3页
移动终端中基于位置的应用服务开发毕业论文_第4页
移动终端中基于位置的应用服务开发毕业论文_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 移动终端中基于位置的应用服务开发 【摘要】 为了让智能手机用户能够随时随地查询互联网所提供的服务,让手机能够通过移动网以及互联网访问web网站并处理各种各样的业务。因此,智能手机的应用软件及其需要的服务将有广阔的发展前景。本程序实现程序的gps定位功能,能从网上获取现在所在地点的经纬度,让使用者了解自己所在大致位子,并对当前的经纬度进行储存。然后设置再次到改地点的一定范围内,手机会进行相应的提醒,类似于闹钟。提示的手段多种多样,可以使用手机震动或者出现一些之前写的备忘文字。本文就在分析讨论android手机软件开发技术原理的基础上,通过gps全球定位系统为用户提供更好的基于位置的应用开发服务

2、。【关键词】 android,gps,智能手机 mobile terminal location-based application service development【abstract】 in order to allow smartphone users to query the services provided by the internet anytime, anywhere, your phone through the mobile network and the internet to access the web site and to deal with a wide

3、variety of business. therefore, the smart phone application software and its service will have broad prospects for development.this program implements procedures for gps positioning function, from the internet to retrieve the current location latitude and longitude, so that users know roughly where

4、their seats, and the current latitude and longitude for storage. then set again to change locations within a certain range, the phone will make the appropriate alert, similar to an alarm clock. prompted a variety of means, you can use the phone vibrates or some text memo written before.this paper an

5、alyzed and discussed the principle of android mobile phone software development technology based on gps global positioning system to provide users with location-based application development services.【key words】 android,gps,smartphone目录第1章 绪论11.1 选题的背景和意义11.2 gps国内外研究现状11.3 gps发展趋势21.4 gps存在问题41.5 a

6、ndroid系统4第2章 系统分析62.1 需求分析62.1.1基本框架62.1.2 研究的重点和难点82.1.3拟解决的关键问题92.2 android的相关技术介绍及分析92.2.1 android的api92.2.2 android应用程序结构解析112.2.3 intent的详细解析13第3章 系统开发环境及设计143.1 android开发环境介绍143.1.1 android平台的搭建143.2 编程前的准备153.2.1 android界面设计153.2.2 android的权限问题153.3 gps的获取153.3.1 gps获取153.3.2 gps获取的权限163.4数据存

7、储163.4.1 文件存储173.5 趋近警告183.5.1 趋近警告的添加183.5.2 广播的使用193.5.3 权限相关代码20第4章 系统测试224.1 模拟器的测试224.2 gps获取的测试224.3 文件存储与读取的测试244.4 趋近警告及广播器的测试26结论28参考文献29附录31致谢51图目录图2.1 系统功能结构图7图2.2 手机定位的数据流程图7图2.3 数据存储的数据流程图8图2.4 系统数据流程图8图4.1 主界面23图4.2 gps的获取24图4.3 文件储存功能25图4.4 文件读取功能26图4.5 趋近警告以及广播器的测试27第1章 绪论1.1 选题的背景和意

8、义全球定位系统(global positioning system)是美国第二代卫星导航系统。全球定位系统由空间部分、地面监控部分和用户接收机三大部分组成。随着社会的发展,gps在我们日常生活中的用处越来越大,大到可以运用gps信号进行海、空和陆地的导航,导弹的制导,大地丈量和工程丈量的精细定位,时刻的传递和速度的丈量等,小到个人寻路,都可能使用到gps1。gps最早使用于军事方面,随着科技发展,gps应用技术逐渐向民用开放,现在民用gps技术基本有两大方面,一是结合手机,位用户提供位置信息,另一方面是结合汽车,为驾驶员提供导航信息。gps可以应用在公共和安全的行业,如医疗应急服务;跟踪行业,

9、如车队管理,个性化信息产业,如查询最近的餐馆,导航产业,如数字地图,付款等。 随着gps应用技术逐渐向民用开放以来,gps应用在导航领域发展尤其迅猛,而伴随着gps产品的在世界范围内逐渐普及,gps应用已经开始走向细分化阶段,一方面结合手机等移动终端设备为用户提供位置信息服务,另一方面在汽车应用领域gps技术已经逐渐开始现身于驾驶辅助系统、交通信息实时互动等领域。1.2 gps国内外研究现状gps起始于1958年美国军方的一个项目,1964年投入使用。到1994年,全球覆盖率高达98%的24颗gps卫星己布设完成。gps研究方向多种多样,现在最流行的就是手机上安装gps,对自己进行定位1。其中

10、,android平台是一个比较大的手机gps平台。android是一种以linux为基础的开放源代码操作系统,主要使用于便携设备。gps可以应用在公共和安全的行业,如医疗应急服务;跟踪行业,如车队管理,个性化信息产业,如查询最近的餐馆,导航产业,如数字地图,付款等。它可以通过其他用户的个人信息,为客户提供个性化和位置,这种形式称为上下文感知系统2。 紧急情况下,安全和医疗,健康服务:许多国家的政府正在要求手机运营商发展的能力,在紧急情况下,可自动识别用户的位置。然后将这些数据转发给相应的公共安全应答点,协调调度应急人员。 信息服务:查询有关当地的剧院只关于那些扮演一个特定的影片,可能会延长。或

11、者,而不是寻找特定类型的企业,客户可以输入特定的产品,并要求所有企业在该地区进行。如果该数据库包括其他产品的信息,如价格和其他条款,甚至在店铺内实时比较,然后可以进行购物3。导航,路由:除了确定不同的目的地的位置,lbs还可以沿着最佳行车路线,引导用户。如果集成了实时交通数据,这样的路线引导服务,了解目前的交通状况,也可能使路线通畅。追踪:最后一分钟的交付变化,可根据卡车的库存和位置,提高工作效率和客户服务。也可以结合跟踪与导航服务,以帮助优化送货路线。1.3 gps发展趋势1.3d地图趋于虚拟实境化通过最新的3d地图,用户可以有身临其境的体验,而在经过一些十字路口等复杂路段的时候,一些产品还

12、配置有一些辅助功能,通过这种功能用户能够在屏幕上看到这些路段的虚拟真实场景,画面非常直观。2.语音操作gps导航装置易用与否现在已经是衡量一款gps装置是否优秀的重要指标,直观的人机交互界面、方便的触控操作、越来越贴近实境化的电子地图都是为了让用户操作使用更加方便的途径,不过触控操作虽然让用户不再用通过复杂的按键来一步步实现功能操作,但是还是需要手指去点击屏幕,这在驾驶过程中尤其危险,所以用户需要停车进行操作,这样一来又变得非常麻烦。在这种情况下,语音控制的gps产品出现则让以上麻烦不复存在,受到人们普遍青睐。通过这项技术,用户不用在用手指点来点去,只要通过声音就能实现对导航仪的操作,大大提升

13、了开车的安全系数。3.基于位置服务gps技术应用除了能够定位导航之外,还能够为用户提供位置信息,通过gps技术使用者可以跟踪、定位目标。通过这款产品用户可以随时留意宠物、亲人或者其他物品的位置,让这项技术惠及普通大众成为可能。gps个人追踪装置为用户提供了一个基于web的专用界面,使用者可以在控制台管理界面实现对于gps装置的功能设置,设置相应的活动界限来规划出目标活动范围,在超过这个范围之内,这款追踪装置将向提前设置好的紧急联络人发送信息报警,而用户则可以根据这款装置配套的软件来轻松了解当前目标所在具体位置、时间、日前等信息。4.导航服务智能现实化当前gps产品虽然能够方便的为使用者在陌生环

14、境中规划出行驶路线,但是由于地图更新问题或者实际问题往往出现规划路线与现实状况并不相符的尴尬情况,其智能规划路径技术,可以根据数以百万计使用者反馈信息计算出每天某个时段最接近现实的道路信息,让使用者在规划路径时更加贴近实际的最佳路线;而在辅助功能方面,该机还提供了实时交通信息广播服务,用户通过语音或者屏幕显示获得最新的实时交通信息,然后避开一些道路繁忙路段。5.网络服务经过几年的发展,gps产品网络增值服务已经不再新鲜,通过网络用户可以方便的了解航班信息;新增的多普勒气象图可以让用户了解当前包括气压、温度、湿度、风力等天气状况,并提供三天内的天气预报;实时交通信息可以让用户在行驶过程中随时了解

15、前方是否有道路封闭、建设施工、交通事故等等意外状况,规划出最佳行驶路线;增强的信息列表功能除了提供电影院名称之外还能够为用户显示电影星级、流派、演员以及到影院路线等;另外,还提供了更详尽的油料价格信息、本地活动、新闻股市以及“发送到gps”功能。1.4 gps存在问题其中一个严重的问题是gps测量时的误差。首先,卫星在天上,总会有或多或少的偏差。其次,无线电波的传播速度每秒大约是30万公里,如果时间误差了0.00001秒,那距离差就会出现3公里的偏差。无线电波在空气中的传播也会受到很多因素的影响,比如天气。以上的影响还不是最主要的,更重要的影响原因是收到多少卫星信号。定位是不是精确,卫星的分布

16、位置也是一个非常重要的影响因素,好的状态是强信号的卫星以等边三角形的状态分布于 被测试者的3个角落,相对距离尽量的大,不要排列在近似一条直线上,这是由gps的数学原理决定的6。另外gps还有安全问题,某些黑客可以软件,获得想要知道的人的gps实时信息。现在智能手机上基本都安装了gps的定位系统,而手机的黑客程序相对于电脑更为简单,因此,很多人通过手机软件,可以获得别人的位置信息。gps也有一定缺陷,可让黑客跟踪智能手机用户,甚至完全接管移动设备,甚至完全接管移动设备。大多数移动设备在定位时并非直接使用gps卫星,而是在手机网络的辅助下快速地确定大概位置,这便是“a-gps(assisted g

17、ps)”技术。这些a-gps消息是通过不安全的网络链接传送,因此可能会被攻击者截取并替换。android设备有这一漏洞的存在,黑客可以利用这个安全漏洞指示手机在每次发送a-gps消息时报告它的位置。同时因为这种消息不是经由手机中gps或无线信号芯片处理,而是由主cpu处理,这意味着黑客可以利用这些信息引发手机崩溃,然后再利用另一些手段来完全控制设备。1.5 android系统android是一种基于linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由google公司和开放手机联盟领导及开发。android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,

18、android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux内核层。应用程序:android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,sms短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用java语言编写的。应用程序框架:开发人员也可以完全访问核心应用程序所使用的api框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。系统运行库:android 包含一些c/c

19、+库,这些库能被android系统中不同的组件使用。它们通过 android 应用程序框架为开发者提供服务。第2章 系统分析2.1 需求分析实现程序的gps定位功能,能从网上获取现在所在地点的经纬度,让使用者了解自己所在大致位子,实现第一个定位功能。并有储存功能,对当前的经纬度进行储存,实现第二个,记录功能。然后设置再次到改地点的一定范围内,手机会进行相应的提醒,类似于闹钟,实现第三个判断功能以及第四个提示功能。闹钟是对于时间进行提示,而我所开发的程序是相对于地点进行提示。提示的手段多种多样,可以使用手机震动或者出现一些之前写的备忘文字。因此,本程序所需的是通过android模拟器来进行运行,

20、并且模拟器有提前设置的gps值,通过更改gps值来判断程序是否会执行提示。2.1.1基本框架1.定位功能,获取当前的经纬度,并显示给使用者。2.记录功能,记录所要提示的地点的经纬度,可以是当前地点获取的经纬度,也可以是手动输入的经纬度。这个功能使用文件存储予以实现。3.判断功能,判断使用者所携带的手机或系统是否进入所需要提示的规定范围内。这个功能使用趋近警告予以实现。4.提示功能,进入所需要提示的相应地点的时候系统对使用者进行相应的提示。这个功能使用广播器予以实现。根据本程序的基本框架,绘制出功能结构图如下:移动终端基于位置的程序相关位置提示位置记录手机定位图2.1 系统功能结构图用户主界面获

21、取gps查看当前gps手机数据库图2.2 手机定位的数据流程图用户获取gps存储gps读取gps文件存储图2.3 数据存储的数据流程图根据本程序的功能结构图,绘制系统的数据流程图如下图所示:用户主界面获取gps存储gps读取gps提示手机数据库文件存储图2.4 系统数据流程图2.1.2 研究的重点和难点本次的课题是移动终端基于位置的应用服务开发,也是就是说有2个重点,1个是移动终端,也就是我准备使用的安卓系统,另一个是位置,对于如何取得位置的信息,我使用gps全球定位系统。如何有效地使安卓系统与gps全球定位系统有效地结合并产生新的用处,就是本次系统的目的所在。本次研究的难点有:1.程序的可行

22、性:使程序在安卓系统的手机上能正常使用。 2.手机数据的调用:在android操作系统中,可以直接调用google map,以获得当前位置信息,也可以从手机直接读取当前的位置信息。3.数据库中数据的调用:本次任务需要数据匹配之后进行提示,因此要先把之前的数据先存储到数据库或文件夹上再调用。4.广播器的使用:由于本次任务是进入一定范围进行提示,因此,需要添加一个广播对进入一定范围时进行提示5.定时器的使用:本次任务需要对地点多次判断,直到达到指定地点,才能使用广播器,因此,需要使用定时器,对目标进行多次判断。2.1.3拟解决的关键问题1.了解当前所在位置的经纬度。因为本程序要记录当前的经纬度,所

23、以,每时每刻都需要对经纬度进行读取,因此要进行实时跟踪测定gps。在gps变化之后马上用数据进行反应。2.如何设置确定所要提示的地点,是手动输入经纬度,还是根据当前位置进行设置。可以根据当前的gps值进行位置设置。3.如何判断是否进入了所要提示的范围。因为gps本身存在误差,所以要多次测试,才能判断程序的可行性。4.如何对手机的用户进行提示。提示信息必须明显与原本界面区别,让用户了解到已经达到指定地点。2.2 android的相关技术介绍及分析2.2.1 android的apiandroid api主要包含了以下几个部分:(1)androidmanifest.xmlandroidmanifes

24、t.xml是系统的控制文件,它告诉系统如何处理所创建的所有应用组件(尤其是活动(activity),服务(service),意图接收器(intent receiver)和内容提供者(content provider)。(2)活动活动就是一个有生命周期的对象。一个活动就是完成某些工作的代码块,这部分工作还可能包括对用户ui界面的显示。不过这不是必须的,有些活动从不显示ui界面。(3)视图视图可以将其自身绘制到屏幕上。android的用户界面由一系列的视图树构成。接口都是由一组以树的形式出现的视图组成的。开发者可以通过创建一个新的视图的方法来使用自定义的图形处理技术(比如开发游戏,或者是使用了不常

25、用的用户图形窗口界面)。(4)意图意图是一个简单的消息对象,它表示程序想做某事的“意图”。比如应用程序想要显示一个网页,那么它可以通过创建一个intent实例并将其传递给系统来表示意图浏览这个uri。系统将定位到能处理这一intent的代码(在当前情况下就是浏览器),并运行之。意图也可以用于广播系统范围内的有效事件(例如通知事件)。(5)服务服务是运行在后台的代码段。它可以根据自身的需要运行在自己的进程,也可以运行其他应用程序的过程中。其他组件可以绑定到服务启动通过远程过程调用(rpc)来调用这个方法。如媒体播放器,媒体选择的服务,当用户退出界面,还是有希望的,音乐仍然可以继续发挥,那么你就可

26、以使用该服务,以确保用户界面关闭时,也继续播放音乐。(6)通知通知将出现在状态栏中的小图标的形式,与用户交互的图标接收消息。最常见的通知,包括短信,通话记录,语音信箱,但应用程序还可以创建自己的通知事件。(7)内容提供者用于内容提供商提供的移动设备上的数据的访问。一个典型的例子是使用一个内容提供商,访问联系人列表。应用程序也可以使用其他课程由内容提供商的数据,但也可以定义自己的其他应用程序提供数据访问服务的内容提供商。2.2.2 android应用程序结构解析通常由以下四个组件来构建一个完整的android应用程序。活动意图接收器服务内容提供者1.活动这四项活动是最常见的用于装配的每一个活动是

27、activity的一个子类,并实现了一些独特的功能,如管理ui显示和ui反馈事件。相当于应用程序用户界面的活动,并从事件的看法大多数应用程序通常包括多个接口,例如:文本聊天应用程序应该包含至少有一个联系人列表屏幕,聊天界面,设置界面,查询接口聊天和事实上的反应和其他组件,每个屏幕可以看作是一个活动。相当于生成一个相应的活动对象的一个新的接口,在某些情况下,该活动可以被返回到它的父接口的一个返回值,例如提供给用户所选择的照片活性可以返回来电图片文件的用户选择。当一个新的事件发生时,被中断以前的活动,并放置到历史堆栈中,用户可以使用返回键,以使前一个活动重现,当一个活动不再需要时,可以将它们从历史

28、堆栈中移除。默认情况下,android将保留历史堆栈中为每个应用程序的主屏幕。android通过一个特殊的类称为打算实现接口和接口之间的跳跃的意图描述应用程序想要做说明意向的结构,包含两个重要的数据结构:动作和动作数据对应的典型的动作类型包括main、view、pick、edit等,以及行动数据对应的uri形式的地方。例如:显示联系人信息界面,你可以创建一个意图,它的动作设定为观看,表示数据集的个人信息的uri。此外,有一个有效的对象请求时,意图过滤器是用来描述什么意图。上面的例子中所描述的,可以处理的事件,这个过程被称为意图过滤器(intentfiher)相关的类。您要显示一个正常的接口联系

29、信息,你必须声明一个意图过滤器,它表明当有联系人数据显示在屏幕上时,你知道如何处理它们。意图过滤器通常是要在androidmanifest.xml文件中注册。从一个界面跳转解析所有意图实现例如:另一个接口提供的startactivity(myintent)调用其他活动的活动,会发现系统已经安装的所有应用程序的意图过滤器,并挑选出的意向,到随后匹配myintent活动,这收到新的事件。意图(myintent),的通知,并开始运行的startactivity方法被调用时,随后解析过程的意图,这一机制具有以下两个明显的优势:活动可以产生在一个请求的形式与打算重复使用的功能的其他元件。活动可以在任何时

30、候是一个意图过滤器具有相当于新的活动所取代。2.意图接收器当想要编写代码来对外部事件做一些处理时,可以使用意图接收器。意图接收器并不显示ui界面,它是通过notificationmanager来通知用户他们感兴趣的事件发生了。意图接收器同样可以被注册在androidmanifest.xml文件中,同时也可以在代码中使用context.registerreceiver()来注册自己的意图接收器。当一个意图接收器被触发时,系统会根据需要来启动应用程序。3.服务服务是具有长生命周期并且没有用户界面的代码。4.内容提供者在android中,每个应用程序都有自己的用户id,并运行在自己的进程。它的优点是

31、可以保护系统和应用程序,以便其他应用程序,一般都不会影响。每个进程都可以被认为是作为一个黑盒子,不彼此交互,甚至在内存中的数据不能被共享。如果你想在应用程序之间共享数据,你需要使用一个内容提供商。内容提供商是一个类实现了一套标准的方法。其他应用程序可以使用这些方法来保存和检索内容提供商处理的数据。然而,并非所有的android应用程序必须有上述四个组成部分,由上述一个或几个构建。决定如何使用这些组件来构建android应用程序时,你需要注册在androidmanifest.xml文件中,这是一个xml配置文件,这个文件中可以声明应用程序组件和它们的属性和要求。这个配置文件为每个android应

32、用程序是必需的。2.2.3 intent的详细解析在一个android应用程序,主要由四部分组成。这四个组成部分是独立的,他们可以调用彼此之间的协调,并最终形成一个真正的android应用程序。这些组件之间的通信,主要目的是帮助完成。负责应用程序的操作,然后将动作对应的数据的额外数据说明,android的描述,按照这个打算,负责寻找合适的组件,并完成组件的调用。因此,意图在这里扮演的角色的媒体机构,专门提供组件互相调用的相关信息,实现调用者和被调用者之间的解耦。在android参考文件的意图来执行一个动作被定义为一个抽象的描述。的具体内容的抽象描述如下:首先,它是要执行的动作的简要描述,比如查

33、看,修改等,机器人定义了一组标准动作。此外,根据不同的应用需求,定义自己的行动,并定义相应的活动来处理自定义操作。其次,对数据进行操作来执行操作,android使用的uri指向的数据来实现。除了运动,这两个重要的属性的数据,也有某些附加属性:类型:动作被执行额外的信息。例如launcher_category的受助人的意图,应适用在launcher中作为顶级的出现;,而alternativecategory表明,当前的意图是一系列可选的行动,这些行动之一,可以执行相同的数据。数据类型:显式指定数据类型的意图。可以根据数据本身的数据类型的一般意图,但通过设置此属性,您可以强制使用指定的类型。组件:

34、指定目标组件类名称的意图。按照打算的android通常会包括其他属性,如动作,数据/数据类型,类查找,终于找到了一个匹配的目标组件。附加信息:这是一个集合的所有其他信息。更多的信息可以用于组件,以提供扩展信息,例如,如果你要执行“发送电子邮件”这个动作,你可以电子邮件的标题,文本等存储在附加信息,发送电子邮件组件。总之,议案,数据/数据类型,类和其他信息一起,形成语言。这种语言使系统能够理解,如“查看联系人的详细信息”之类的短语。随着应用不断添加到系统中,它们可以增加新的动作,数据/数据类型和类来扩展这种语言。应用程序可以提供自己的活动,例如现有的流程“短语”,从而改变了“短语”的行为。第3章

35、 系统开发环境及设计3.1 android开发环境介绍想要搭建android开发环境需要以下软件,从而进行android应用程序的开发。(1) java sdk(2) eclipse(3) android sdk(4) adt3.1.1 android平台的搭建android开发平台搭建步骤:1.首先到/downloads/下载eclipse集成开发环境并且解压,这里推荐下载java ee 集成版本,可以为平台的搭建省下不少工作。接着再去 站点下载sdk后安装,下载 sdk1.5后解压。第一步下载工序就结束了。2.双击eclipse解压后目录中的ecl

36、ipse.exe然后启动,选择eclipse菜单中的help- install new software- 选项卡上的available software,点击右侧的“add”输入http:/dl- with”下拉菜单中选择刚才输入的网址。过一会就会出现一个developer tools选项,勾上以后点击next以后eclipse会自动网上查找android 开发工具插件,然后找到android ddms和android development tools,选中这两个点击finish,eclipse就会自动下载并安装android插件了,最后会提示重启eclipse。3.重启后选择eclips

37、e菜单中的windows- preferences 在左侧的android项目中sdk location中填入android sdk解压后的目录,然后点击apply。4.在windowsxp的系统变量中的path变量中添加一个值,该值指向解压后的android sdk目录下的tools文件夹。3.2 编程前的准备android的编程与以前学习的c#和java有很大的差别。首先,android的界面的不可预览性,要在模拟器或者手机上才能看见。第二个是android的权限问题,许多程序编程上没有问题,但是运行的时候总是有问题,可能就是权限的设置上出现了问题。这个问题也是c#或者java中不存在的。

38、3.2.1 android界面设计在eclipse中对android程序进行界面设计与在visual studio 2005的界面设计有所不同,在设计时,是通过语言,对界面进行编排。要在运行界面上插入控件,必须在layout中的xml文件中添加相应控件名称,并设定控件的名字,宽度和高度以及其他控件一切属性。因此,android的界面设计只有在运行模拟器之后,才能看到之前设计的界面,没有预览。3.2.2 android的权限问题android权限分的很细,但的命名更加人性化。程序调试错误的地方可能androidpermission的访问控制在作怪,目的是确保防止手机病毒的地方。 android开

39、发网络接入,而无需购买昂贵的数字签名证书,权限由用户决定而不是手机制造商和平台供应商的消息来看,以下信息是需要在androidmanifest.xml中添加文件。本次添加的权限分别为添加新activity权限, gps获取权限,和广播器的使用权限。3.3 gps的获取3.3.1 gps获取在android的位置服务中,两个重要类是locationmanager和locationprovider。locationmanager位于android.location包中,该类提供了系统位置访问的方法。locationprovider定于了位置服务的提供方法。本程序第一件要做的是获取gps,有了gps

40、的数值,才能进行下一步的操作。获取gps值在android中有固定方法,就是locationmanager。想要获取gps数值,先注册locationmanager,然后就可以通过访问getlastknownlocation得到当前的gps坐标。其中,我们能获取目标经度,纬度,高度等,我们所需要的数值只有经度和纬度,因此只对目标的经纬度进行读取和显示。private void locate() stringbuilder builder = new stringbuilder(可利用的providers:); list providers = locationmanager.getprovid

41、ers(true); locationlistener ll = new locationlistener()public void onlocationchanged(location location) public void onproviderdisabled(string provider) public void onproviderenabled(string provider) public void onstatuschanged(string provider, int status,bundle extras) ; for(string provider:provider

42、s) locationmanager.requestlocationupdates(provider, 0, 1000, ll ); builder.append(provider).append(n); location location = locationmanager.getlastknownlocation(provider); if(location!=null) double lat = location.getlatitude(); double lng = location.getlongitude(); builder.append(); builder.append(la

43、t); builder.append(lng); builder.append(); else builder.append(没有位置信息); 3.3.2 gps获取的权限仅仅使用locationmanager获取gps值是不够的,因为没有权限,是无法获取当前gps值的,因此,我们要在androidmanifest.xml中添加权限,程序便可以正常读取手机的gps地址。权限代码如下:3.4数据存储本次数据存储使用的是文件存储,因为有多个需要存储的数据,因此使用多个文件进行存储,防止数据读取的错误。文件存储简单,方便,适合存储少量数据和图片,而且使用的过程中不容易出现错误。本次所需要存储的是目标

44、的经度和纬度,工作数据量较小,所以比较适合文件存储,因此不考虑数据库的使用。3.4.1 文件存储创建的文件保存在/data/data/files目录,通过点击eclipse菜单“window”-“show view”-“other”,在对话窗口中展开android文件夹,选择下面的file explorer视图,然后在file explorer视图中展开/data/data/files目录就可以看到该文件。文件储存代码如下:private void write1(string content)try fileoutputstream fos = openfileoutput(file_01,

45、mode_private);fos.write(content.getbytes();fos.close(); catch (exception e)e.printstacktrace();此次使用的是mode_private,对原有文件进行覆盖。文件获取代码如下:private string read1()try fileinputstream fis = openfileinput(file_01);byte buffer = new bytefis.available();fis.read(buffer);return new string(buffer); catch (excepti

46、on e)e.printstacktrace();return null;3.5 趋近警告3.5.1 趋近警告的添加如果有这样一种位置服务,能够对我们进入或退出某个设定的区域进行提示,这样的应用是很有意义的。locationmanager提供了这一方法实现这一功能:addproximityalert(double latitude, double longitude, float radius, long expiration, pendingintent intent),该方法有5个参数,前两个是经纬度,第三个是区域半径,第四个是是否过期,第五个一般是一个广播pendingintent。要实

47、现此功能需要两个步骤:一是获得locationmanager实例,调用其方法addproximityalert并添加趋近提示;二是定义一个广播接收器,当设备进入设定区域时提醒用户。locationmanager实例在之前获取gps信息时就使用过了,因此,直接调用方法就可以了。而广播之前没有使用过,所以,我们要添加一个广播,用于趋近警告的提示。趋近警告代码如下:private void set() / 定位服务常量 string locservice = context.location_service; / 定位服务管理器实例 locationmanager locationmanager;

48、/ 通过getsystemservice方法获得locationmanager实例 locationmanager = ( locationmanager ) getsystemservice ( locservice ); / 声明经度 double lat = a1; / 声明纬度 double lng = a2; / 声明半径(单位米) float radius = 50f; / 不过期 long expiration = -1; / 声明intent intent intent = new intent( proximity_alert_action_name ); / 声明pendi

49、ngintent pendingintent pi = pendingintent.getbroadcast ( this , -1, intent , 0); / 添加趋近警告 locationmanager.addproximityalert(lat, lng, radius, expiration,pi ); 当前位置离经度为a1,纬度为a2的坐标小于50米时,警告发动,使用广播器进行广播。3.5.2 广播的使用在android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理。这个广播跟我们传统意义中的电台广播有些相之处

50、。之所以叫做广播,就是因为它只负责“说”而不管你“听不听”,也就是不管你接收方如何处理。另外,广播可以被不只一个应用程序所接收,当然也可能不被任何应用程序所接收。广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的。android中广播的是操作系统中产生的各种各样的事件。例如,收到一条短信就会产生一个收到短信息的事件。而android操作系统一旦内部产生了这些事件,就会向所有的广播接收器对象来广播这些事件。在程序中添加一个activity,定义为广播。广播器在这里的作用是对用户进行提示。即在进入指定范围之后,广播器发出广播,使用户了解进入了指定的地点,以达到提

51、醒的效果。是否触发广播是有趋近警告来实现的。广播代码如下:public class proximityalertreciever extends broadcastreceiver public void onreceive(context context , intent intent) /趋近关键字 string key = locationmanager.key_proximity_entering; /从intent获得额外信息,判断是否进入设置区域 boolean isenter = intent.getbooleanextra(key, false); if(isenter) to

52、ast.maketext(context, 你已经进入预定区域!, toast.length_long).show(); 接收到趋近关键字后,马上进行广播。3.5.3 权限相关代码要使用广播,首先要在androidmanifest.xml中声明广播接收器,添加代码如下: 第4章 系统测试4.1 模拟器的测试首先打开eclipse,打开window,然后选中avd manger,会出现一个界面,显示着本机上现有的模拟器,选择所需模拟器并点击start,然后出现一个launch options界面,单击launch,就可以打开模拟器了,android的程序不能直接使用eclipse运行,必须在相应

53、的模拟器上才能运行。android2.1的兼容性强,适合运行许多程序,因此,本次使用的android系统是android2.1。4.2 gps获取的测试先打开程序,显示如下图:图4.1 主界面界面的主界面显示本程序的所有功能,分别为查看当前gps,查看目标地址,设置目标1地址,设置目标2地址。首先我们先测试gps的获取。点击进入gps获取,然后模拟器就能获取在eclipse中预先设置好的经纬度,即在emulator control中设定longitude和latitude的数值。图4.2 gps的获取获取的gps信息会在系统出的上方进行显示,gps信息以经度和纬度来表示。4.3 文件存储与读取

54、的测试点击进入设置目标1地址项目,根据以获取的gps信息输入,点击保存并覆盖原有记录之后,文件的存储就完成了,如下图所示:图4.3 文件储存功能完成文件的存储之后,下一步要进行读取,文件的读取程序在查看目标中,因此点击返回查看目标,便可以对目标进行查看。结果如下图所示:图4.4 文件读取功能4.4 趋近警告及广播器的测试完成了文件的存储和读取,最后一步是对gps进行匹配,然后进行提示,首先打开定点提示功能,才能对gps进行匹配,然后就是数据的对比,当2个gps点为距离为小与200米时,使用广播进行提示,如下:图4.5 趋近警告以及广播器的测试结论经过数个月的努力,移动终端中基于位置的应用服务开发终于完成了。由于android智能机广泛使用,引发了我对android的好奇心,从一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论