Android Geofence示例代码中的Bug?有人能确认一下吗?

Android Geofence示例代码中的Bug?有人能确认一下吗?,android,maps,location,android-geofence,Android,Maps,Location,Android Geofence,我不确定这是否是一个新安卓GeoFence示例代码的bug,或者我对它应该做什么的理解是错误的。示例应用程序创建地理围栏,但在地理围栏被破坏时不发出警报。如果有人想尝试并确认,您可以从以下位置下载示例代码: 这就是我希望示例应用程序能够做到的: 设置2个不同的地理围栏。在我的情况下,我每英里拿2分 通过输入各自的纬度/经度进行分离。我还设置了半径 到250米 我一个接一个地开车去了这两个地方 我假设会弹出一个通知,表明地理围栏 已被违反 在本例中,未注册任何通知或任何日志消息,这意味着从未

我不确定这是否是一个新安卓GeoFence示例代码的bug,或者我对它应该做什么的理解是错误的。示例应用程序创建地理围栏,但在地理围栏被破坏时不发出警报。如果有人想尝试并确认,您可以从以下位置下载示例代码:

这就是我希望示例应用程序能够做到的:

  • 设置2个不同的地理围栏。在我的情况下,我每英里拿2分 通过输入各自的纬度/经度进行分离。我还设置了半径 到250米
  • 我一个接一个地开车去了这两个地方 我假设会弹出一个通知,表明地理围栏 已被违反
在本例中,未注册任何通知或任何日志消息,这意味着从未调用“ReceiveTransitionsIntentService”。一个观察结果是,当我开车到第一个位置,然后在该位置添加一个新的地理围栏时,会立即发出通知,,但我设置并开车到的任何其他位置(地理围栏)都不会发生任何事

知道为什么吗?我对示例应用程序功能的理解正确吗?

除了示例代码中的内容之外,我是否还需要执行其他操作才能在驾驶时违反地理围栏时收到警报地理围栏监控是否与创建地理围栏分开,我在这里遗漏了什么?

非常感谢您的任何意见,我们非常渴望在我们的应用程序中使用它,但现在我们被卡住了

谢谢,
Torri.

首先,您对应用程序功能的理解是正确的。无论何时进入/离开某个地理围栏,它都会在通知中向您显示(顺便说一句,它总是更新同一个通知,所以请注意它,否则您可能会错过其中一个事件)

其次,要小心,因为默认情况下,Geofence 1只会触发ENTER事件。所以,如果你在进入土工围栏区域后离开,你将不会收到通知!您可以在MainActivity.java上创建mUIGeofence1对象时更改此行为


最后,与所有与位置相关的事情一样,这个API并不完美。。从我的测试到目前为止,我从来没有看到它启动了GPS,所以当外面,它似乎很依赖于网络位置,可以很容易不落在500米半径地质公园,即使你正站在它的中间。在IO的一次演示中,Reto Meier提到API将足够聪明,能够以最佳方式处理电池电量消耗,因此只有当用户开始接近地理围栏时,它才会打开GPS——这是有道理的——但不幸的是,这似乎从未发生过

API永远不会“打开”GPS。你必须自己启动GPS。

还要确保你的半径设置得足够大。我建议把它改成1000只看看是否有效。我仍在玩弄它,但这里的示例代码确实工作得很好:


我尝试了GeofenceDetection示例代码,它正在工作。 我只使用Wifi和GPS,并将半径设置为15米。 当我走到该地区时,它并没有立即显示通知。 几秒钟后,我收到了“输入”通知。 此外,即使我在该地区站着不动,有时也会接到通知
我要离开这个地区。它让应用程序感觉像是在一个区域内来回跳跃。

我编写了一个测试应用程序,它同时使用了Google Play Services Location和Geofence API。我使用location API以1秒的速度获取当前位置。当我设置地理围栏时,我显示了从当前位置到地理围栏中心的距离,该距离在位置更新时更新

在设置地理围栏后,我立即获得进入事件。我清除了该事件,并在地球围栏半径外散步。显示的距离像疯了一样滞后。这个职位花了大约三分钟才赶上我。回家的路上也发生了类似的延迟


可惜Play服务是封闭源代码的,我很想了解他们算法的局限性。

起初我也这么认为。这是因为半径以米为单位,我认为应该以公里/英里为单位。所以我输入了非常小的值。经过几次实验,我发现了这一点。输入了更大的值,在我的Nexus 5上运行得很好,我确实打开了gps、wifi和4g,但示例代码没有发出通知。任何人都可以尝试一下,因为示例代码可以免费下载。如果您能尝试一下,让我知道示例代码中是否存在bug,我将不胜感激。您有证据证明这一点吗?根据@Rick的回答,API应该在用户接近地理围栏时打开GPS,这一点由I/O的Reto Meier确认。我不是说它工作正常(!)但您的回答意味着您认为这不是API的预期行为。我也有同样的问题-我只收到一个用户正在进入地理围栏的通知(在创建它时)。在那之后什么也没有发生-退出或重新进入地球围栏。托里-你找到解决这个问题的办法了吗?我一直在开发一个示例应用程序,通过将Geofence示例与新的位置API(融合位置提供程序)合并并刷新用户位置,我能够(在大多数情况下)实现正确的进入/退出转换。在后台/应用程序未打开的情况下运行时,它有不足之处,但在打开时,它大约90%位于现场,甚至可以在没有wifi或手机覆盖的情况下运行到10米。如果您仍然有问题,我可以与您分享我的示例代码。@Kyle-我和Torri遇到了同样的问题。请您分享您的工作代码好吗?@nitishpatel尝试一下-。使用示例应用程序构建&我添加了一个内容提供商googlemaps编辑器。使用“我的位置”图标触发