关于 Google Play GeoFencing API 的重要说明。我发现 GeoFencing 从不智能地从 GPS 硬件中检索位置。GeoFence API 将观察操作系统提供的最准确位置,或者如果没有最近的位置读数可用,它将导致从 Wifi / Cellular 计算位置。(这很糟糕,因为蜂窝网络非常不准确,而且 wifi 经常不可用)
因此,要从地理围栏 API 中获得所有响应或准确的结果,您必须设置地理围栏,然后每隔一段时间轮询 GPS 硬件,甚至不对收到的结果做任何事情,以便在表面下提供有价值的数据到操作系统。
我无法具体说明 LocationManager.addProximityAlert 的行为,但我怀疑它的行为有什么不同。您可以真正使用其中任何一个,结果和性能可能会相同,因为繁重的工作是通过手动唤醒 GPS 来完成的。
至于如何实现您与栅栏的当前距离,没有一个接近 API 有一个接口来为您确定这一点。在我上面描述的情况下,当 GPS 轮询发生时,我不会对结果不做任何事情,而是将它与 distanceBetween 一起使用来更新我自己与我设置 GeoFences 的点之间的距离。