1

嗨,我在我的应用程序中实现了用于定位的 google play 服务(我使用的代码与来自 google 的示例代码几乎相同)。经过测试,该应用程序似乎没有按我的预期工作。

如果我将准确度设置为 PRIORITY_BALANCED_POWER_ACCURACYPRIORITY_NO_POWER,则当我没有连接到 wifi 时,The Location 根本不会获取任何内容。

获取位置的时间至少是我设置的时间间隔的两倍mLocationRequest.setInterval()

还有其他人有这个问题吗?还是我在这里遗漏了什么?

谢谢你。

4

2 回答 2

4

看看文档。粗体字的重点是我的。

在另一个极端,如果您想要忽略电源影响,但仍要在可用时接收位置更新,则创建一个将 setPriority(int) 设置为 PRIORITY_NO_POWER 的位置请求。有了这个请求,您的应用程序将不会触发(因此不会收到任何电源责任)任何位置更新,但会接收由其他应用程序触发的位置。这适用于对位置没有严格要求但可以在可用时利用的应用程序。

对于第二部分,PRIORITY_BALANCED_POWER_ACCURACY。如文档所述,该部分似乎没有响应。我需要更多地研究它。

在这两个极端之间是一个非常常见的用例,其中应用程序肯定希望以指定的时间间隔接收更新,并且可以在可用时更快地接收它们,但仍然希望低功耗影响。这些应用程序应考虑将 PRIORITY_BALANCED_POWER_ACCURACY 与更快的 setFastestInterval(long)(例如 1 分钟)和更慢的 setInterval(long)(例如 60 分钟)结合使用。它们只会在 setInterval(long) 设置的时间间隔内被分配电源责任,但仍可以接收由其他应用程序以高达 setFastestInterval(long) 的速率触发的位置。这种请求风格适用于许多位置感知应用程序,包括后台使用。

于 2013-05-30T23:31:20.380 回答
0

好的,我发现了问题,

我只添加了 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>但没有添加 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>(我以为这个只用于 GPS)我错了。

根据 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>Android 文档,给出了城市街区级别的精度。

使用位置服务的应用程序必须请求位置权限。Android 有两个位置权限:ACCESS_COARSE_LOCATION 和 ACCESS_FINE_LOCATION。您选择的权限控制当前位置的准确性。如果您只请求粗略的位置许可,位置服务会将返回的位置混淆到大致相当于城市街区的准确度。

所以在我的情况下,在短距离内它总是在同一个位置。

添加 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>解决了问题。

于 2013-06-02T06:26:51.050 回答