【问题标题】:LocationClient connection and GeofenceLocationClient 连接和地理围栏
【发布时间】:2014-05-02 15:49:06
【问题描述】:

您是否需要连接的 LocationClient 来检测用户是否留下了地理围栏? 在我当前的代码中,我连接了我的 LocationClient,建立了一个地理围栏,然后断开了 LocationClient。但是,它有时会检测到我已经离开了它,但在地理围栏之外更远的位置。

【问题讨论】:

    标签: android gps android-4.4-kitkat geofencing android-geofence


    【解决方案1】:

    关于 Google Play GeoFencing API 的重要说明。我发现 GeoFencing 从不智能地从 GPS 硬件中检索位置。 GeoFence API 将观察操作系统提供的最准确位置,或者如果没有最近的位置读数可用,它将导致从 Wifi / Cellular 计算位置。 (这很糟糕,因为蜂窝网络非常不准确,而且 wifi 经常不可用)

    因此,要从地理围栏 API 中获得所有响应性或准确的结果,您必须设置地理围栏,然后每隔一段时间轮询 GPS 硬件,甚至不对收到的结果做任何事情,这样您就可以在表面之下为操作系统提供有价值的数据。

    这可能是您的结果如此不准确的核心原因。直到操作系统确定您 100% 在围栏之外,地理围栏出口才会触发 - 因此,如果位置读数的准确度为 500 米(使用单元地理定位时不太可能)并且您的围栏半径为 50m,那么您d 必须距离您的围栏点至少 550m 才能产生退出事件。

    TLDR;每隔一段时间轮询 GPS 硬件而不对结果做任何事情,您将开始获得更准确的地理围栏。

    【讨论】:

    • 您是否知道我是否可以在应用程序在后台使用计时器时轮询 gps?
    • 是的,我的应用程序会这样做,在触发栅栏时发出通知。 Android 上的 Turn by turn 方向应用程序会做同样的事情。
    • 关于如何防止您的应用程序在后台被杀死的任何想法?我有一个广播接收器来处理我的地理围栏进入/退出,但它有时会被操作系统杀死,比如一夜之间。
    • 我认为我们有类似的配置,虽然我没有经历过我的应用程序被这样杀死。您是否扫描了系统日志以了解您的应用程序在夜间发生了什么?我没有在很长一段时间内进行大量测试,因为我的应用程序通常打算使用 8-10 小时,但在测试期间我已经让实例一次运行了好几天。
    猜你喜欢
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多