我在最新的Android Geofence API中遇到过这个问题。用法与示例用法完全相同。我将Geofence.GEOFENCE_TRANSITION_ENTER
类型地理围栏设置为半径500米,到期时间为Geofence.NEVER_EXPIRE
。这工作正常,但如果我经纬度大约10米并设置了地理围栏,它会立即触发。
所以我在这里理解Geofence.GEOFENCE_TRANSITION_ENTER
这个词是错误的,不应该只在我们在区域之外并且输入它时触发,而不是在我们已经在区域内时触发它吗?
感谢。
答案 0 :(得分:5)
好吧,想想3D物体的地理围栏:空间中的2个维度,时间上的一个维度。 在支票之间,如果Geofence被击中,你的新围栏就会移动到位。
但是,我只是在添加围栏时保存时间戳,然后在几秒钟内忽略所有命中。
答案 1 :(得分:4)
如果您有以下设置,地理围栏将在创建后立即触发,如果您在围栏内。
builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
但是,这也是默认值,因此触发器仍会发生。将触发器设置为INITIAL_TRIGGER_DWELL确实会停止触发初始触发器:
一个标志,指示地理围栏服务应在添加地理围栏时触发GEOFENCE_TRANSITION_DWELL通知,并且设备已经在该地理围栏中已有一段时间。
我的测试设备在同一地点停留了一个多小时,这并没有触发那个地理围栏。
答案 2 :(得分:3)
对不起如果我正在重新提出一个旧问题,但由于我在找到正确答案之前使用了这个答案,我将把它留在这里。
GeofencingRequest.Builder包含一个解决此问题的方法(setInitialTrigger)。
答案 3 :(得分:1)
Geofences不会在跨越周边时专门触发。当您在围栏内的任何位置检测到并且没有发送任何先前的入口事件时,将触发它们。
另请注意,当您在其中更新地理围栏时(再次添加具有相同ID的地理围栏),您将获得另一个入口事件,因为它会在更新时清除地理围栏的状态。
答案 4 :(得分:0)
这可能有所帮助:https://developers.google.com/events/io/sessions/325337477 在演示幻灯片(页面底部的链接)中,GPS的准确度约为10米。