天天看点

【Android Developers Training】 103. 查询当前地点

注:本文翻译自google官方的android

developers training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。

原文链接:

样例代码:

地点服务自动维护用户当前的地点,所以你的应用所要做的事情就是在需要时去获取它。地点的精确度是基于你所申请的地点查询权限,以及当前设备上激活的的位置传感器。

地点服务会通过定位客户端(定位服务类的一个实例:),将当前的位置发送给你的应用,所有地点信息的请求都通过这一客户端。

note: 在你开始这节课之前,请确定你的开发环境和测试设备都已经配置正确。可以阅读获取更多这方面的信息。

使用位置服务的应用必须请求定位权限。android有两个定位权限:(粗定位)和(精定位)。你所选择的权限决定了定位的精度。如果你只请求粗定位,位置服务所范围的地点信息大致会精确到一个城市街区。

如果请求,它也暗含了的权限。

例如,要添加,将下面的代码作为元素的子元素:

二). 检查google

play服务

位置服务是google

play服务apk的其中一部分。由于用户设备的状态时难以预料的,你应该一直在你尝试连接定位服务之前,检查apk是否已经安装。要检查apk是否安装,可以调用,它会返回一个整形的结果码,其含义可以参阅:。如果你遇到了一个错误,可以调用,来获取一个本地的对话框,引导用户执行正确地行为,之后将这一对话框显示在一个上。这一对话框可能允许用户解决当前的问题,此时google

play服务会发回一个结果到你的activity中。要处理这一结果,需要覆写方法。

由于你一直需要在你的代码多个地方检查google

play服务,所以应该定义一个方法将检查行为进行封装,之后在每次连接尝试之前进行检查。下面的代码片段包含了检查google

play服务所需要的代码:

在后续章节的代码片段中,都会调用这一方法来验证是否可获取google play服务。

三).

定义位置服务回调函数

要获取当前的地点,创建一个地点客户端,将它连接至定位服务,之后调用它的方法。返回的值是最佳最新的地理位置,它基于你应用所请求的权限以及当前设备上已激活的定位传感器。

在你创建定位客户端之前,实现定位服务的接口,以和你的应用进行交互:

指定当定位连接上或者没有连接上时,定位服务调用的方法。

指定当尝试连接到定位客户端时,如果出现了错误,定位服务调用的方法。这一方法使用之前定义的showerrordialog方法来显示一个错误对话框,它尝试使用google

play服务来解决这一问题。

下面的样例代码展示了如何指定接口和定义相关的函数:

现在回调函数已经就位了,创建定位客户端并且连接它至定位服务。

你应该在方法中创建定位客户端,之后再方法中进行连接。这样定位服务就能在你的应用完全可见时维护当前的定位信息。在方法中关闭连接,这样当应用不可见时,定位服务就会停止更新地点。这样的连接方式还能节省电量。

只有在定位客户端连接到了定位服务后,当前的地点才能维护。假设没有其他应用连接到定位服务,如果你关闭了客户端,过一段时间后,调用了,获得的结果可能将是过期的。

例如:

五). 获取当前地点

要获取当前地点,调用,例如:

在下一节课中,将会向你展示从定位服务定期地接受地点更新的方法。