您是否需要连接的LocationClient来检测用户是否有地理围栏? 在我当前的代码中,我连接我的LocationClient,建立地理围栏,然后断开LocationClient。但是,它有时会检测到我已离开它,但在地理围栏之外的更远的位置。
答案 0 :(得分:2)
关于Google Play GeoFencing API的重要说明。我发现GeoFencing从未智能地从GPS硬件中检索位置。 GeoFence API将观察操作系统提供的最准确位置,或者如果没有最近的位置读数,则会导致从Wifi / Cellular计算位置。 (这很糟糕,因为蜂窝电话非常不准确,而且通常无法使用wifi)
因此,为了获得Geofencing API的所有响应或准确结果,您必须设置Geofences,然后在一定时间间隔内轮询GPS硬件,甚至不会对收到的结果做任何事情,以便在表面下为操作系统提供有价值的数据。
这可能是您的结果如此不准确的核心原因。地理围栏出口不会触发,直到操作系统确定您100%在围栏外 - 所以如果位置读数的准确度为500米(使用单元格地理位置时不太可能)并且您的围栏有半径距离你的围栏点至少550米,你必须在50米处才能出现退出事件。
TLDR;在一段时间内轮询GPS硬件而不对结果做任何事情,您将开始获得更准确的地理围栏。