谷歌Proximity Alerts教程

2221 查看

智能手机正在逐渐统治整个手机世界,这是一个显而易见的事实。自从GPS设备被普遍的内嵌到智能手机中,它给那些利用地理定位的应用程序提供了极大的帮助。 其中一类程序是采用基于定位的服务(Location Based Service),它是利用数据来计算用户所在位置的。程序通常用的技术是geocoding(从地理数据中寻找相关的地理坐标,如一条街的位置)和reverse geocoding(根据提供的坐标来提供信息)。另一类程序则采用Proximity Alerts。像它的名字那样,当用户的位置接近某个特定的Point of Interest(POI)时会进行提示。随着大量的程序打算应用这项技术,并伴有宣传精彩的示例,Proximity alert将会是接下来几年的热点。在这个教程中,我将展示怎样去利用Android的内嵌Proximity alert功能。

在开始之前,简单的了解一下基于定位的程序或geocoding会对接下来的阅读带来极大的帮助。你可能需要要读一下我之前的几篇教程,如 “Android Location Based Services Application – GPS location”和“Android Reverse Geocoding with Yahoo API – PlaceFinder”。另一个需要提醒的是,这篇教程是受“Developing Proximity Alerts for Mobile Applications using the Android Platform”这篇文章启发而生。 这篇文章分为四个部分,对于初学者一些地方可能会稍显复杂并带来一些困难。基于这些原因,我决定写一篇相对更短更易懂的教程。

我们将会创建一个简单的程序,它存储的一个点坐标会被用户触发并且当用户接近这个点推送消息。 当用户到达那个点坐标时会根据需求获取消息。

我们首先创建一个Eclipse项目开始,并命名为“AndroidProximityAlertProject”。接下来,为程序创建一个Main Activity然后命名为ProxAlertActivity。 下面是程序的主页面:

01-main-ui01-main-ui

这里是UI界面的布局,命名为main.xml

现在我们开始做一些有意思的东西。首先,我们需要一个到LocationManager class的引用,提供系统的位置服务。你可以通过getSystemService方法从activity中获得。然后,(如果用户的位置发生改变)可以通过requestLocationUpdates方法来获得通知。在开发Proximity Alerts的时候,这并不是必须的要求,但是在这里我需要用它计算POI和用户位置之间的距离。在我们的示例中,设备在任何时候都可以调用getLastKnownLocation方法获取某个指定提供者的最后位置。最后,我们会用到addProximityAlert方法设定一个proximity alert。它可以指定你想要坐标(纬度、经度)和半径。 如果我们想要在一段特定的时间监视某个alert,还可以给那个alert设置过期时间。我们还可以提供PendingIntent,当设备进入或者离开一个监测到的alert区域时发出intent。

示例代码如下: