Google Play服务地点无法正常运行

时间:2013-05-30 22:42:49

标签: android location google-play-services

您好我在我的应用程序中实现了谷歌播放服务(我使用的是与谷歌相同的代码)。经过测试,该应用程序似乎没有像我期望的那样工作。

如果我将准确度设置为PRIORITY_BALANCED_POWER_ACCURACYPRIORITY_NO_POWER,则当我未连接到wifi时,位置根本无法获取任何内容。

获取位置的时间量至少是我在mLocationRequest.setInterval()

中设置的时间间隔的两倍

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

谢谢。

2 个答案:

答案 0 :(得分:4)

看看documentation。粗体的重点是我的。

  

在另一个极端,如果你想要可忽略不计的电力影响,但是   仍然会在可用时收到位置更新,然后创建一个位置   请求setPriority(int)设置为PRIORITY_NO_POWER。 有了这个   请求您的申请不会触发(因此不会   接受任何权力责备)任何位置更新,但将收到   由其他应用程序触发的位置。这是合适的   对于没有确定的位置要求的应用程序,但可以   在可用时充分利用。

对于第二部分,PRIORITY_BALANCED_POWER_ACCURACY。该部分似乎没有像文档描述的那样响应。我需要更多地了解它。

  

在这两个极端之间是一个非常常见的用例,其中   应用程序肯定希望在指定的接收更新   间隔,并且可以在可用时更快地接收它们,但仍然需要   低功率影响。这些应用应该考虑   PRIORITY_BALANCED_POWER_ACCURACY结合更快   setFastestInterval(long)(例如1分钟)和一个较慢的   setInterval(long)(例如60分钟)。他们只会被分配   由setInterval(long)设置的间隔的权力责备,但仍然可以   接收由其他应用程序触发的位置,速率最高为   setFastestInterval(长)。这种请求方式适合   许多位置感知应用程序,包括后台使用。是的   如果你执行,小心也要限制setFastestInterval(long)   收到更新后的重量级工作 - 例如使用   网络

答案 1 :(得分: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"/>解决了问题。