Geofencing API触发器在已经在区域中时input事件

我遇到了最新的Android Geofence API的这个问题。 用法与示例用法完全相同。 我设置了500米半径的Geofence.GEOFENCE_TRANSITION_ENTERtypes地理栅栏,截止date为Geofence.NEVER_EXPIRE 。 这工作正常,但如果我约10米经纬度,我设置geofence,立即触发。

那么我是否理解了Geofence.GEOFENCE_TRANSITION_ENTER这个词在这里是错误的,不应该只在我们在区域之外并且input时触发,而不是在我们已经在区域中时触发了吗?

谢谢。

  • 地理围栏在Android中完全无法使用吗?
  • 如何提高Android geofence进入/退出通知的一致性?
  • 如何在android geofences中实现“un-dwell”?
  • 设备重启后,Geofences是否在android中保持活动状态
  • 在Geofencing的Google教程中没有看到Geofence转换
  • 处理多个地理围栏过渡与公共区域
  • 设备重新启动后,地理围栏在android中保持活动状态
  • 我如何使用Android Geofencing API?
  • 那么,请考虑三维物体的地理空间:空间中的二维,时间上的一维。 在支票之间,如果一个地理围栏被击中,你的新围栏就会移动到位。

    不过,我只是保存添加栅栏的时间戳,并在几秒钟之内忽略所有的命中。

    如果您有以下设置,地理围栏将在创build后立即触发,如果您在围栏内。

     builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER); 

    但是,这也是默认的,所以触发器仍然会发生。 将触发器设置为INITIAL_TRIGGER_DWELL确实会阻止初始触发器发射:

    一个标志表明地理围栏服务应该在添加地理围栏的时刻触发GEOFENCE_TRANSITION_DWELL通知,并且该设备已经在地理围栏内已经存在一段时间了。

    我的testing设备已经在同一个位置超过了一个小时,并没有触发该地理栅栏。

    对不起,如果我正在回答一个老问题,但是因为我在find正确的答案之前使用了这个答案,所以我将把它留在这里。

    GeofencingRequest.Builder包含一个方法(setInitialTrigger),可以解决这个问题。

    https://developers.google.com/android/reference/com/google/android/gms/location/GeofencingRequest.Builder.html#setInitialTrigger%28int%29

    地理栅栏在跨越边界时不会完全触发。 当你在围栏内的任何地方被检测到时,它们被触发,并且没有以前的进入事件被发送。

    另外请注意,在更新地理围栏时,如果在其内部更新了地理围栏(再次添加相同的地理围栏),则会在更新时清除地理围栏的状态,从而获得另一个入口事件。

    这可能有所帮助: https : //developers.google.com/events/io/sessions/325337477在演示文稿幻灯片(链接在页面底部),GPS的准确性是~10米。