获取最后可知位置

    使用Google Play services location APIs,我们的应用可以请求获得用户设备的最后可知位置。大多数情况下,我们会对用户的当前位置比较感兴趣。而通常用户的当前位置相当于设备的最后可知位置。

    特别地,使用fused location provider来获取设备的最后可知位置。fused location provider是Google Play services location APIs中的一个。它处理基本定位技术并提供一个简单的API,使得我们可以指定高水平的需求,如高精度或者低功耗。同时它优化了设备的耗电情况。

    这节课介绍如何通过使用fused location provider的)方法为设备的位置构造一个单一请求。

    使用位置服务的应用必须请求用户位置权限。Android拥有两种位置权限:ACCESS_COARSE_LOCATION 和 。我们选择的权限决定API返回的位置信息的精度。如果我们选择了ACCESS_COARSE_LOCATION,API返回的位置信息的精确度大体相当于一个城市街区。

    这节课只要求粗略的定位。在我们应用的manifest文件中,用节点请求这个权限,如下所示:

    为了连接到API,我们需要创建一个Google Play services API客户端实例。关于使用这个客户端的更详细的介绍,请看。

    实例应用定义了一个方法,这个方法在activity的onCreate()方法中被调用。方法包括下面的代码。

    一旦我们将Google Play services和location services API连接完成后,我们就可以获取用户设备的最后可知位置。当我们的应用连接到这些服务之后,我们可以用fused location provider的getLastLocation())方法来获取设备的位置。调用这个方法返回的定位精确度是由我们在应用的manifest文件里添加的权限决定的,如本文的部分描述的内容一样。

    为了请求最后可知位置,调用getLastLocation())方法,并将我们创建的对象的实例传给该方法。在Google API Client提供的onConnected())回调函数里调用)方法,这个回调函数在client准备好的时候被调用。下面的示例代码说明了请求和一个对响应简单的处理:

    下一课,获取位置更新,教你如何周期性地获取位置信息更新。